You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -41,7 +42,6 @@ This document describes high level design details of SONiC's ICMP Hardware Offlo
41
42
-[State-DB](#state-db)
42
43
-[Command Line](#command-line)
43
44
-[Limitations](#limitations)
44
-
-[Warm Reboot Support](#warm-reboot-support)
45
45
-[Testing](#testing)
46
46
47
47
<!-- /code_chunk_output -->
@@ -66,13 +66,18 @@ Currently switching time after link state change is detected is around 25-50 mil
66
66
67
67
### High Level Component and Requirements
68
68
#### LinkMgrd Requirements
69
-
LinkMgrd is the central component that runs in MUX docker and is responsible for managing ICMP echo sessions and link state. Link prober sub-component in Linkmgrd is responsible for the ICMP echo sessions.
69
+
LinkMgrd is the central component that runs in MUX docker and is responsible for managing ICMP echo sessions and link state. Link prober sub-component in Linkmgrd is responsible for the ICMP echo sessions.
70
70
* Requirements
71
71
* Add / Remove Hardware ICMP echo session in App DB based on mux cable and link prober config entries.
72
72
* Consume ICMP echo session state from State DB produced by Orchagent and update mux state.
73
+
* Create two hardware sessions per mux port / interface one for self and another one to monitor the peer replies.
74
+
* Generate and handle ICMP packets with TLVs in software.
75
+
76
+
Following diagram shows the hardware ICMP echo sessions between the TORs and Server.
Currently orchagent creates tunnel at initialization and add / removes routes to forward traffic to peer ToR via a IpinIP tunnel when linkmgrd switches state to standby / active.
80
+
Currently orchagent creates tunnel at initialization and add / removes routes to forward traffic to peer ToR via a IpinIP tunnel when linkmgrd switches state to standby / active.
76
81
* Requirements
77
82
* Create / Remove hardware ICMP echo sessions by consuming entries in App DB.
78
83
* Consume ICMP echo session notification from SAI and update session state in State DB.
@@ -108,15 +113,18 @@ Hardware Link prober needs to know the peer session GUID to set the peer session
108
113
***ICMP echo session tx_interval setting:**
109
114
* tx_interval = probing interval
110
115
* Positive probing timer value = probing interval x positive signal count.
111
-
* LinkMgrd will start positive probing timer after receiving the first UP state notification for a session from State DB and move the link state from unknown to wait state. After this when positive timer expires it will transition the Link from wait state to Active state.
116
+
* LinkMgrd will start positive probing timer after receiving the first UP state notification for a session from State DB and link prober will conitnue to remain in unknown state until the expiry of this positive timer at which it will transition the Link prober to Active state.
112
117
***ICMP echo session rx_interval setting:**
113
118
* rx_interval = probing interval x negative signal count.
114
-
* LinkMgrd will directly transition the link to unknown state avoiding the wait state as opposed to what was done in case of software probing.
119
+
* LinkMgrd will directly transition the link prober to unknown state avoiding the negative probing timer as opposed to what was done in case of software probing.
115
120
116
-
#### Link State transitions
117
-
Following table shows the mux state transitions based on event when link_prober mode is set as hardware and icmp echo session is offloaded to NPU.
121
+
#### Link Prober State transitions
122
+
Following table shows the link prober state transitions based on event when link_prober mode is set as hardware and icmp echo session is offloaded to NPU.
ICMP packets with TLVs will not be generated by the hardware/NPU and LinkMgrd will generate these packets in software using the software cookie as currently done by software prober. Using the software cookie for TLV generation will make sure peer NPU will not consume these ICMP packets in hardware and LinkMgrd running on peer ToR will be able to receive and handle these TLV packets.
127
+
120
128
### Orchagent
121
129
#### IcmpOrch
122
130
IcmpOrch is a new component introduced which consumes icmp echo session entries from App DB ICMP_ECHO_SESSION_TABLE and programs the ICMP hardware offload sessions in NPU. It receives icmp echo session state notifications from SAI / NPU and produces session state in State DB ICMP_ECHO_SESSION_TABLE that is consumed by LinkMgrd.
@@ -143,7 +151,7 @@ This feature introduces a new config knob **switching_mode** to differentiate be
143
151
MuxOrch creates the IPinIP tunnel based on the peer_switch configuration. Currently IPinIP tunnel destination next hop is created when mux state changes to standby however with frr_protection switching_mode it will create the IPinIP tunnel destination next hop in advance and add this as the backup member of the next hop protection group.
144
152
145
153
#### MuxCableOrch
146
-
MuxCableOrch in orchagent is the component responsible for consuming mux state from App DB APP_MUX_CABLE_TABLE_NAME and switching traffic. Currently this component updates all routes whenever a traffic switchover is needed. When **switching_mode** will be set to **frr-protection** in MuxOrch, MuxCableOrch will program the routes with the nexthop protection group as destination. With frr-protection mode in the event of traffic switching, SONiC will just toggle the members of nexthop protection group and will no longer need to reprogram all routes.
154
+
MuxCableOrch in orchagent is the component responsible for consuming mux state from App DB MUX_CABLE_TABLE and switching traffic. Currently this component updates all routes whenever a traffic switchover is needed. When **switching_mode** will be set to **frr-protection** in MuxOrch, MuxCableOrch will program the routes with the nexthop protection group as destination. With frr-protection mode in the event of traffic switching, SONiC will just toggle the members of nexthop protection group and will no longer need to reprogram all routes.
147
155
148
156
Following diagram shows component level flow for traffic switching.
@@ -155,7 +163,7 @@ Currently when FDB changes or neighbor changes, neighbors are updated based on t
155
163
156
164
#### Config-DB
157
165
Two new knobs in MUX_CABLE config table to support these features:
158
-
***link_prober_type**
166
+
***link_prober_type**
159
167
* software : create software based icmp echo session. This is default value.
160
168
* hardware : create hardware based icmp echo session.
161
169
***switching_mode**
@@ -179,7 +187,7 @@ Two new knobs in MUX_CABLE config table to support these features:
179
187
```
180
188
181
189
#### App-DB
182
-
A new table, named **ICMP_ECHO_SESSION_TABLE**, will be introduced in the App DB to create hardware based icmp echo sessions. Entries in this table will be produced by LinkMgrd and consumed by Orchagent.
190
+
A new table, named **ICMP_ECHO_SESSION_TABLE**, will be introduced in the App DB to create hardware based icmp echo sessions. Entries in this table will be produced by LinkMgrd and consumed by Orchagent.
183
191
184
192
```
185
193
{
@@ -233,8 +241,8 @@ A new table **ICMP_ECHO_SESSION_TABLE** will be added in the State DB. Entries i
233
241
*`state`: mux mode configuration
234
242
*`auto`: enable failover logics for both self and peer
235
243
*`manual`: disable failover logics for both self and peer
236
-
*`active`: if current mux status is not `active`, toggle the mux to `active` once, then work in `manual` mode
237
-
*`standby`: if current mux status is not `standby`, toggle the mux `standby` once, then work in `manual` mode
244
+
*`active`: if current mux status is not `active`, toggle the mux to `active` once
245
+
*`standby`: if current mux status is not `standby`, toggle the mux `standby` once
238
246
*`detach`: enable failover logics only for self
239
247
*`ipv4`: mux server ipv4 address
240
248
*`ipv6`: mux server ipv6 address
@@ -258,7 +266,7 @@ $ show mux config
258
266
SWITCH_NAME PEER_TOR
259
267
----------------- ----------
260
268
lab-switch-2 10.1.0.33
261
-
port state ipv4 ipv6 cable_type soc_ipv4 link_prober_type switching_mode
269
+
port state ipv4 ipv6 cable_type soc_ipv4 link_prober_type switching_mode
0 commit comments