[PATCH] zcip: add support for DoIP/ISO 13400 timings
Ricardo Leite
ricardo.leite at criticaltechworks.com
Wed Mar 10 09:23:33 UTC 2021
DoIP requires fast IP assignment, faster than what RFC 3927 can
guarantee, and so it defines its' own AutoIP timing parameters
Add a compile-time option to use DoIP timing parameters instead of
default RFC 3927 parameters. This option is useful for use of zcip in
automotive use-cases. In pratice, it decreases AutoIP allocation time
from ~10s to ~2s, at the expense of less resilience to collisions
Signed-off-by: Ricardo Leite <ricardo.leite at criticaltechworks.com>
---
configs/TEST_nommu_defconfig | 1 +
configs/TEST_noprintf_defconfig | 1 +
configs/TEST_rh9_defconfig | 1 +
configs/android2_defconfig | 1 +
configs/android_502_defconfig | 1 +
configs/android_defconfig | 1 +
configs/android_ndk_defconfig | 1 +
configs/cygwin_defconfig | 1 +
configs/freebsd_defconfig | 1 +
networking/zcip.c | 25 ++++++++++++++++++++++++-
10 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/configs/TEST_nommu_defconfig b/configs/TEST_nommu_defconfig
index 415f5a802..3f8ca40d7 100644
--- a/configs/TEST_nommu_defconfig
+++ b/configs/TEST_nommu_defconfig
@@ -769,6 +769,7 @@ CONFIG_FEATURE_WGET_STATUSBAR=y
CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_ZCIP=y
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
CONFIG_TCPSVD=y
CONFIG_TUNCTL=y
CONFIG_FEATURE_TUNCTL_UG=y
diff --git a/configs/TEST_noprintf_defconfig b/configs/TEST_noprintf_defconfig
index 9b378fd55..5cfd5b3d7 100644
--- a/configs/TEST_noprintf_defconfig
+++ b/configs/TEST_noprintf_defconfig
@@ -781,6 +781,7 @@ CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
# CONFIG_ZCIP is not set
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
#
# Print Utilities
diff --git a/configs/TEST_rh9_defconfig b/configs/TEST_rh9_defconfig
index 4ac62b9da..1fe074e79 100644
--- a/configs/TEST_rh9_defconfig
+++ b/configs/TEST_rh9_defconfig
@@ -791,6 +791,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_FEATURE_WGET_TIMEOUT=y
CONFIG_ZCIP=y
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
#
# Print Utilities
diff --git a/configs/android2_defconfig b/configs/android2_defconfig
index d4b8f1616..eceabbc20 100644
--- a/configs/android2_defconfig
+++ b/configs/android2_defconfig
@@ -828,6 +828,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
CONFIG_FEATURE_WGET_TIMEOUT=y
# CONFIG_ZCIP is not set
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
#
# Print Utilities
diff --git a/configs/android_502_defconfig b/configs/android_502_defconfig
index 503157c12..c5600fecc 100644
--- a/configs/android_502_defconfig
+++ b/configs/android_502_defconfig
@@ -970,6 +970,7 @@ CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
CONFIG_UDPSVD=y
CONFIG_VCONFIG=y
# CONFIG_ZCIP is not set
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
#
# Print Utilities
diff --git a/configs/android_defconfig b/configs/android_defconfig
index 92a66048a..c1d38328b 100644
--- a/configs/android_defconfig
+++ b/configs/android_defconfig
@@ -858,6 +858,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
CONFIG_FEATURE_WGET_TIMEOUT=y
# CONFIG_ZCIP is not set
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
#
# Print Utilities
diff --git a/configs/android_ndk_defconfig b/configs/android_ndk_defconfig
index 03d497d2e..641807585 100644
--- a/configs/android_ndk_defconfig
+++ b/configs/android_ndk_defconfig
@@ -885,6 +885,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
CONFIG_FEATURE_WGET_TIMEOUT=y
# CONFIG_ZCIP is not set
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
#
# Print Utilities
diff --git a/configs/cygwin_defconfig b/configs/cygwin_defconfig
index c09bc9281..30c90d587 100644
--- a/configs/cygwin_defconfig
+++ b/configs/cygwin_defconfig
@@ -831,6 +831,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_FEATURE_WGET_TIMEOUT=y
# CONFIG_ZCIP is not set
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
#
# Print Utilities
diff --git a/configs/freebsd_defconfig b/configs/freebsd_defconfig
index 6cbd54895..c09197be3 100644
--- a/configs/freebsd_defconfig
+++ b/configs/freebsd_defconfig
@@ -810,6 +810,7 @@ CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_FEATURE_WGET_TIMEOUT=y
# CONFIG_ZCIP is not set
+# CONFIG_ZCIP_USE_ISO_13400_TIMINGS is not set
#
# Print Utilities
diff --git a/networking/zcip.c b/networking/zcip.c
index 311dfbe4c..5116483d9 100644
--- a/networking/zcip.c
+++ b/networking/zcip.c
@@ -24,6 +24,15 @@
//config:
//config: See http://www.zeroconf.org for further details, and "zcip.script"
//config: in the busybox examples.
+//config:
+//config:config ZCIP_USE_ISO_13400_TIMINGS
+//config: bool "Use ISO 13400 (DoIP) timings"
+//config: default y
+//config: depends on ZCIP
+//config: help
+//config: Use timings from ISO 13400-2 (for DoIP) instead of RFC 3927,
+//config: which dramatically speeds up AutoIP allocation time at the cost
+//config: of less resilience to collisions.
//applet:IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP))
@@ -73,12 +82,26 @@ struct arp_packet {
enum {
/* 0-1 seconds before sending 1st probe */
PROBE_WAIT = 1,
+
+#if ENABLE_ZCIP_USE_ISO_13400_TIMINGS
+ /**
+ * DoIP-specific timings, see ISO 13400-2, Section 9.1.2.2, Table 15
+ */
+ /* 0-1 seconds between probes */
+ PROBE_MIN = 0,
+ PROBE_MAX = 1,
+ PROBE_NUM = 1, /* total probes to send */
+ ANNOUNCE_INTERVAL = 1, /* 1 seconds between announces */
+ ANNOUNCE_NUM = 1, /* announces to send */
+#else
/* 1-2 seconds between probes */
PROBE_MIN = 1,
PROBE_MAX = 2,
PROBE_NUM = 3, /* total probes to send */
- ANNOUNCE_INTERVAL = 2, /* 2 seconds between announces */
+ ANNOUNCE_INTERVAL = 2, /* 2 seconds between announces */
ANNOUNCE_NUM = 3, /* announces to send */
+#endif
+
/* if probe/announce sees a conflict, multiply RANDOM(NUM_CONFLICT) by... */
CONFLICT_MULTIPLIER = 2,
/* if we monitor and see a conflict, how long is defend state? */
--
2.30.0
More information about the busybox
mailing list