From 7ec50a1c5f0967e0902b629e8f5a24596bf8aef9 Mon Sep 17 00:00:00 2001 From: Gen-Hwa Chiang Date: Wed, 30 Sep 2020 22:02:58 +0000 Subject: [PATCH 1/2] HLD doc for SONIC TPID Configuration --- doc/tpid/FanoutPktFlow.png | Bin 0 -> 63360 bytes doc/tpid/SonicTPIDSettingHLD1.md | 401 ++++++++++++++++++++++++ doc/tpid/TPID_ConfigFlow.png | Bin 0 -> 49273 bytes doc/tpid/UntaggeTPID_Missmatch.png | Bin 0 -> 15004 bytes doc/tpid/untagged_tagged_pkt_format.png | Bin 0 -> 28965 bytes 5 files changed, 401 insertions(+) create mode 100644 doc/tpid/FanoutPktFlow.png create mode 100644 doc/tpid/SonicTPIDSettingHLD1.md create mode 100644 doc/tpid/TPID_ConfigFlow.png create mode 100644 doc/tpid/UntaggeTPID_Missmatch.png create mode 100644 doc/tpid/untagged_tagged_pkt_format.png diff --git a/doc/tpid/FanoutPktFlow.png b/doc/tpid/FanoutPktFlow.png new file mode 100644 index 0000000000000000000000000000000000000000..f599d2baef017a032fd6998ebc8d3586055db019 GIT binary patch literal 63360 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 BPv&(hzd#t%gauw&4AbyS~d^D`%6iMX7Z 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 hgetall \"SWITCH\_CAPABILITY\|switch\"* +*1) \"**PORT_TPID_CAPABLE**\"* +*2) \"**true**\"* +*3) \"**LAG_TPID_CAPABLE**\"* +*4) \"**false**\"* +*5) \"MIRROR\"* +*6) \"true\"* +*7) \"MIRRORV6\"* +*8) \"true\"* +*9) \"ACL\_ACTIONS\|INGRESS\"* +*10) \"PACKET\_ACTION,MIRROR\_INGRESS\_ACTION\"* +*11) \"ACL\_ACTIONS\|EGRESS\"* +*12) \"PACKET\_ACTION\"* +*13) \"ACL\_ACTION\|PACKET\_ACTION\"* +*14) \"DROP,FORWARD\"* +*127.0.0.1:6379\[6\]\>* +``` +127.0.0.1:6379[6]> hgetall "SWITCH_CAPABILITY|switch" + 1) "PORT_TPID_CAPABLE" + 2) "true" + 3) "LAG_TPID_CAPABLE" + 4) "false" + 5) "MIRROR" + 6) "true" + 7) "MIRRORV6" + 8) "true" + 9) "ACL_ACTIONS|INGRESS" +10) "PACKET_ACTION,MIRROR_INGRESS_ACTION" +11) "ACL_ACTIONS|EGRESS" +12) "PACKET_ACTION" +13) "ACL_ACTION|PACKET_ACTION" +14) "DROP,FORWARD" +127.0.0.1:6379[6]> +``` +For the STATE\_DB shown above this switch/router is only capable of handling PORT TPID setting but not for LAG TPID setting. + +**TPID Configuration Flow** +--------------------------- + +Port/LAG TPID is configured by either CLI or Restful API talking to CFG manager, which check against State DB to ensure that the corresponding +object TPID capability is "true" before proceed to update the corresponding port/LAG objects inside CFG DB. portsyncd once received +the CFG Update notification will then push the config into PORT\_TABLE/LAG\_TABLE inside APP DB. If there is any change with +PORT\_TABLE/LAG\_TABLE, its subscriber, PortsOrch, will write into ASIC DB and SYNCd will go through SAI to program the ASIC with the configured +TPID value for the specified Port/LAG object. + +The following diagram summarizes how TPID configuration is handled within SONiC: + +![TPID Config Flow](TPID_ConfigFlow.png) + + +**CFG Mgr TPID Setting Handling** +--------------------------------- + +As mentioned earlier, TPID config is only allowed if SAI capability check passes. Here is a sample CLI config attempt output on the config session +if the SAI capability is not yet available: +``` +admin@SONiC:~$ sudo config interface tpid Ethernet64 0x9200 +System not ready to accept TPID config. Please try again later. +``` + +Sample CLI config attempt output on the config session if the SAI capability for LAG is "false": +``` +admin@SONiC:~$ sudo config interface tpid PortChannel0002 0x9200 +HW is not capable to support PortChannel TPID config. +``` + +In case a port is already configured as part of a LAG, TPID config directly to the LAG member port is not allowed and will fail as following: +``` +admin@SONiC:~$ sudo config interface tpid Ethernet4 0x9200 +Ethernet4 is already member of PortChannel0002. Set TPID NOT allowed. +``` + +To simplify the handling of TPID setting to avoid complex TPID usage counters and validation checking, we have simplified it by restricting +the configurable values to the commonly used TPID values: 0x8100 (default), 0x9100, 0x9200, and 0x88A8. If user attempt to configure any +TPID value other than these 4 values, the request will be rejected: +``` +admin@SONiC:~$ sudo config interface tpid Ethernet64 0x0800 +TPID 0x0800 is not allowed. Allowed: 0x8100, 0x9100, 0x9200, or 0x88A8. +``` + + +### **TPID setting in Config DB** + +Before configuring TPID on Ethernet64: + +*admin\@SONiC:\~\$ redis-cli -n 4* +*127.0.0.1:6379\[4\]\> hgetall \"PORT\|Ethernet64\"* +*1) \"index\"* +*2) \"16\"* +*3) \"lanes\"* +*4) \"65,66,67,68\"* +*5) \"description\"* +*6) \"ARISTA01T0:Ethernet1\"* +*7) \"admin\_status\"* +*8) \"up\"* +*9) \"mtu\"* +*10) \"9100\"* +*11) \"alias\"* +*12) \"fortyGigE0/64\"* +*13) \"pfc\_asym\"* +*14) \"off\"* +*15) \"speed\"* +*16) \"40000\"* +***17) \"tpid\"*** +***18) \"0x8100\"*** +*127.0.0.1:6379\[4\]\>* +``` +admin@SONiC:~$ sudo config interface tpid Ethernet64 0x9200 +admin@SONiC:~$ redis-cli -n 4 +``` + +*127.0.0.1:6379\[4\]\> hgetall \"PORT\|Ethernet64\"* +*1) \"index\"* +*2) \"16\"* +*3) \"lanes\"* +*4) \"65,66,67,68\"* +*5) \"description\"* +*6) \"ARISTA01T0:Ethernet1\"* +*7) \"admin\_status\"* +*8) \"up\"* +*9) \"mtu\"* +*10) \"9100\"* +*11) \"alias\"* +*12) \"fortyGigE0/64\"* +*13) \"pfc\_asym\"* +*14) \"off\"* +*15) \"speed\"* +*16) \"40000\"* +***17) \"tpid\"*** +***18) \"0x9200\"*** +*127.0.0.1:6379\[4\]\>* + +Sample output for LAG after TPID configured: +``` +admin@SONiC:~$ sudo config interface tpid PortChannel0002 0x9100 +admin@SONiC:~$ redis-cli -n 4 +``` +*127.0.0.1:6379\[4\]\> hgetall \"PORTCHANNEL\|PortChannel0002\"* +*1) \"mtu\"* +*2) \"9100\"* +*3) \"admin\_status\"* +*4) \"up\"* +*5) \"members@\"* +*6) \"Ethernet0,Ethernet4\"* +*7) \"min\_links\"* +*8) \"2\"* +***9) \"tpid\"*** +***10) \"0x9100\"*** +*127.0.0.1:6379\[4\]\>* + +### **TPID setting in APP\_DB** + +Sample APP\_DB for Ethernet64 after TPID configured with 0x9200: + +*admin\@SONiC:\~\$ redis-cli -n 0* +*127.0.0.1:6379\> hgetall \"PORT\_TABLE:Ethernet64\"* +*1) \"index\"* +*2) \"16\"* +*3) \"lanes\"* +*4) \"65,66,67,68\"* +*5) \"description\"* +*6) \"ARISTA01T0:Ethernet1\"* +*7) \"admin\_status\"* +*8) \"up\"* +*9) \"mtu\"* +*10) \"9100\"* +*11) \"alias\"* +*12) \"fortyGigE0/64\"* +*13) \"pfc\_asym\"* +*14) \"off\"* +*15) \"speed\"* +*16) \"40000\"* +*17) \"oper\_status\"* +*18) \"up\"* +*19) \"ipredriver\"* +*20) \"0x1,0x1,0x1,0x1\"* +*21) \"preemphasis\"* +*22) \"0xa760,0xa760,0xa760,0xa760\"* +*23) \"idriver\"* +*24) \"0x1,0x1,0x1,0x1\"* +***25) \"tpid\"*** +***26) \"0x9200\"*** +*127.0.0.1:6379\>* + +Sample APP\_DB for Portchannel0002 after TPID configured with 0x9100 + +*admin\@SONiC:\~\$ redis-cli -n 0* +*127.0.0.1:6379\> hgetall \"LAG\_TABLE:PortChannel0002\"* +*1) \"mtu\"* +*2) \"9100\"* +*3) \"admin\_status\"* +*4) \"up\"* +*5) \"oper\_status\"* +*6) \"up\"* +***7) \"tpid\"*** +***8) \"0x9100\"*** +*127.0.0.1:6379\>* + +**Show interface tpid cmd** +--------------------------- + +A new show command is added so that user can display what are the configured TPID values for the port or LAG involved: +``` +admin@SONiC:~$ show interface tpid + Interface Alias TPID +--------------- -------------- ------ + Ethernet0 fortyGigE0/0 0x8100 + Ethernet4 fortyGigE0/4 0x8100 + Ethernet8 fortyGigE0/8 0x8100 + Ethernet12 fortyGigE0/12 0x8100 + Ethernet16 fortyGigE0/16 0x8100 + Ethernet20 fortyGigE0/20 0x8100 + Ethernet24 fortyGigE0/24 0x8100 + Ethernet28 fortyGigE0/28 0x8100 + Ethernet32 fortyGigE0/32 0x8100 + Ethernet36 fortyGigE0/36 0x8100 + Ethernet40 fortyGigE0/40 0x8100 + Ethernet44 fortyGigE0/44 0x8100 + Ethernet48 fortyGigE0/48 0x8100 + Ethernet52 fortyGigE0/52 0x8100 + Ethernet56 fortyGigE0/56 0x8100 + Ethernet60 fortyGigE0/60 0x8100 + Ethernet64 fortyGigE0/64 0x9200 + Ethernet68 fortyGigE0/68 0x8100 + Ethernet72 fortyGigE0/72 0x8100 + Ethernet76 fortyGigE0/76 0x8100 + Ethernet80 fortyGigE0/80 0x8100 + Ethernet84 fortyGigE0/84 0x8100 + Ethernet88 fortyGigE0/88 0x8100 + Ethernet92 fortyGigE0/92 0x8100 + Ethernet96 fortyGigE0/96 0x8100 + Ethernet100 fortyGigE0/100 0x88A8 + Ethernet104 fortyGigE0/104 0x8100 + Ethernet108 fortyGigE0/108 0x8100 + Ethernet112 fortyGigE0/112 0x8100 + Ethernet116 fortyGigE0/116 0x8100 + Ethernet120 fortyGigE0/120 0x8100 + Ethernet124 fortyGigE0/124 0x8100 +PortChannel0002 N/A 0x9100 +PortChannel0005 N/A 0x8100 +PortChannel0008 N/A 0x8100 +PortChannel0011 N/A 0x8100 +PortChannel0014 N/A 0x8100 +PortChannel0017 N/A 0x8100 +PortChannel0020 N/A 0x8100 +PortChannel0023 N/A 0x8100 +admin@SONiC:~$ +``` + +Alternatively, we could also add this TPID setting as part of the "show interface status" output. But usually not a good idea to touch the +output of an existing show cmd as it may cause parsing issues for existing applications that the user may already be running with. + +**SAI TPID Attributes/APIs** +---------------------------- +``` +sai_attribute_t attr; +attr.id = SAI_PORT_ATTR_TPID; +attr.value.u16 = tpid; + +sai_status_t status = sai_port_api->set_port_attribute(port_id, &attr); + +sai_attribute_t attr; +attr.id = SAI_LAG_ATTR_TPID; +attr.value.u16 = tpid; + +sai_status_t status = sai_lag_api->set_lag_attribute(lag_id, &attr); +``` + +**SAI Capability Query** +------------------------ +``` +sai_status_t status = sai_query_attribute_capability(gSwitchId, SAI_OBJECT_TYPE_PORT, SAI_PORT_ATTR_TPID, &capability); +sai_status_t status = sai_query_attribute_capability(gSwitchId, SAI_OBJECT_TYPE_LAG, SAI_LAG_ATTR_TPID, &capability); +``` + +**Testing** +=========== + +The following test cases are to be run manually (eventually as part of the pytest) to validate that the TPID setting feature functionality is correct: + +**Functional testing** +---------------------- + +- If SAI is not capable to handle TPID setting (for port, and/or LAG), those config attempts are rejected correctly. +- Ensure TPID values other than the 4 allowed values are rejected at configuration time. +- Ensure TPID can be changed multiple times on the same interface. +- Ensure TPID config cannot be applied to LAG member port directly. +- Set Port/LAG TPID and ensure tagged traffic for miss matched TPID are handled as untagged packet while TPID matched packets are + switched according to the VID correctly. +- Ensure all ports (except LAG member ports) and LAGs in the system can all be configured with non-default TPID values if SAI is capable + to handle TPID config. + +**Config Save Validation** +-------------------------- + +- Ensure that the TPID configured can be saved to startup config and properly applied when startup config replays at boot time. + +**WARM Boot/Fast Boot support** +------------------------------- + +- Ensure that after Warmboot/fastboot the configured TPID are kept correctly and that traffic are handled correctly after the + Warmboot/fastboot. +- Change existing TPID configuration after Warmboot to ensure TPID config is functioning correctly. +- Make new TPID configuration after warmboot to ensure TPID config is functioning correctly. +- Power cycle the DUT and ensure the startup config is applied correctly. + +**References** +============== + +a) SONiC Configuration Management +b) +c) diff --git a/doc/tpid/TPID_ConfigFlow.png b/doc/tpid/TPID_ConfigFlow.png new file mode 100644 index 0000000000000000000000000000000000000000..b1947ed7a5b4a8e3d1652ba710b92781fc14b4ac GIT binary patch literal 49273 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 literal 0 HcmV?d00001 diff --git a/doc/tpid/UntaggeTPID_Missmatch.png b/doc/tpid/UntaggeTPID_Missmatch.png new file mode 100644 index 0000000000000000000000000000000000000000..3312bdfb564dd035a6e9476c622126a58235f880 GIT binary patch literal 15004 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 WvoFIWe*RGg@JPq-e)*qIU;YR0^n-r@ literal 0 HcmV?d00001 diff --git a/doc/tpid/untagged_tagged_pkt_format.png b/doc/tpid/untagged_tagged_pkt_format.png new file mode 100644 index 0000000000000000000000000000000000000000..4526c90e7cfb6e325af0e2910d95bb696a27b6f5 GIT binary patch literal 28965 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 TgH-@NzS~;*H_Ly&|MY(XOX-M+ literal 0 HcmV?d00001 From 3f57d0304bda22222b01f2b90098e4d4d3b88f68 Mon Sep 17 00:00:00 2001 From: Gen-Hwa Chiang Date: Wed, 30 Sep 2020 22:17:33 +0000 Subject: [PATCH 2/2] Fixed markdown format issue --- doc/tpid/SonicTPIDSettingHLD1.md | 245 +++++++++++++++---------------- 1 file changed, 115 insertions(+), 130 deletions(-) diff --git a/doc/tpid/SonicTPIDSettingHLD1.md b/doc/tpid/SonicTPIDSettingHLD1.md index 54c2103a216..7fd348bc997 100644 --- a/doc/tpid/SonicTPIDSettingHLD1.md +++ b/doc/tpid/SonicTPIDSettingHLD1.md @@ -87,40 +87,24 @@ CLI config precheck, SONiC during boot up will query SAI using SAI capability qu PORT and LAG objects. This capability query result will be stored in the STATE\_DB so that the front-end CLI handler will be able to check and reject TPID setting on port/LAG if such capability is not supported by the SAI vendor running this HW platform. SONiC will be adding two entries in STATE\_DB under the existing "SWITCH\_CAPABILITY\|switch" table: -*127.0.0.1:6379\[6\]\> hgetall \"SWITCH\_CAPABILITY\|switch\"* -*1) \"**PORT_TPID_CAPABLE**\"* -*2) \"**true**\"* -*3) \"**LAG_TPID_CAPABLE**\"* -*4) \"**false**\"* -*5) \"MIRROR\"* -*6) \"true\"* -*7) \"MIRRORV6\"* -*8) \"true\"* -*9) \"ACL\_ACTIONS\|INGRESS\"* -*10) \"PACKET\_ACTION,MIRROR\_INGRESS\_ACTION\"* -*11) \"ACL\_ACTIONS\|EGRESS\"* -*12) \"PACKET\_ACTION\"* -*13) \"ACL\_ACTION\|PACKET\_ACTION\"* -*14) \"DROP,FORWARD\"* -*127.0.0.1:6379\[6\]\>* -``` -127.0.0.1:6379[6]> hgetall "SWITCH_CAPABILITY|switch" - 1) "PORT_TPID_CAPABLE" - 2) "true" - 3) "LAG_TPID_CAPABLE" - 4) "false" - 5) "MIRROR" - 6) "true" - 7) "MIRRORV6" - 8) "true" - 9) "ACL_ACTIONS|INGRESS" -10) "PACKET_ACTION,MIRROR_INGRESS_ACTION" -11) "ACL_ACTIONS|EGRESS" -12) "PACKET_ACTION" -13) "ACL_ACTION|PACKET_ACTION" -14) "DROP,FORWARD" -127.0.0.1:6379[6]> -``` + +*127.0.0.1:6379\[6\]\> hgetall \"SWITCH\_CAPABILITY\|switch\"* +*1) \"**PORT_TPID_CAPABLE**\"* +*2) \"**true**\"* +*3) \"**LAG_TPID_CAPABLE**\"* +*4) \"**false**\"* +*5) \"MIRROR\"* +*6) \"true\"* +*7) \"MIRRORV6\"* +*8) \"true\"* +*9) \"ACL\_ACTIONS\|INGRESS\"* +*10) \"PACKET\_ACTION,MIRROR\_INGRESS\_ACTION\"* +*11) \"ACL\_ACTIONS\|EGRESS\"* +*12) \"PACKET\_ACTION\"* +*13) \"ACL\_ACTION\|PACKET\_ACTION\"* +*14) \"DROP,FORWARD\"* +*127.0.0.1:6379\[6\]\>* + For the STATE\_DB shown above this switch/router is only capable of handling PORT TPID setting but not for LAG TPID setting. **TPID Configuration Flow** @@ -172,118 +156,118 @@ TPID 0x0800 is not allowed. Allowed: 0x8100, 0x9100, 0x9200, or 0x88A8. Before configuring TPID on Ethernet64: -*admin\@SONiC:\~\$ redis-cli -n 4* -*127.0.0.1:6379\[4\]\> hgetall \"PORT\|Ethernet64\"* -*1) \"index\"* -*2) \"16\"* -*3) \"lanes\"* -*4) \"65,66,67,68\"* -*5) \"description\"* -*6) \"ARISTA01T0:Ethernet1\"* -*7) \"admin\_status\"* -*8) \"up\"* -*9) \"mtu\"* -*10) \"9100\"* -*11) \"alias\"* -*12) \"fortyGigE0/64\"* -*13) \"pfc\_asym\"* -*14) \"off\"* -*15) \"speed\"* -*16) \"40000\"* -***17) \"tpid\"*** -***18) \"0x8100\"*** -*127.0.0.1:6379\[4\]\>* +*admin\@SONiC:\~\$ redis-cli -n 4* +*127.0.0.1:6379\[4\]\> hgetall \"PORT\|Ethernet64\"* +*1) \"index\"* +*2) \"16\"* +*3) \"lanes\"* +*4) \"65,66,67,68\"* +*5) \"description\"* +*6) \"ARISTA01T0:Ethernet1\"* +*7) \"admin\_status\"* +*8) \"up\"* +*9) \"mtu\"* +*10) \"9100\"* +*11) \"alias\"* +*12) \"fortyGigE0/64\"* +*13) \"pfc\_asym\"* +*14) \"off\"* +*15) \"speed\"* +*16) \"40000\"* +***17) \"tpid\"*** +***18) \"0x8100\"*** +*127.0.0.1:6379\[4\]\>* ``` admin@SONiC:~$ sudo config interface tpid Ethernet64 0x9200 admin@SONiC:~$ redis-cli -n 4 ``` -*127.0.0.1:6379\[4\]\> hgetall \"PORT\|Ethernet64\"* -*1) \"index\"* -*2) \"16\"* -*3) \"lanes\"* -*4) \"65,66,67,68\"* -*5) \"description\"* -*6) \"ARISTA01T0:Ethernet1\"* -*7) \"admin\_status\"* -*8) \"up\"* -*9) \"mtu\"* -*10) \"9100\"* -*11) \"alias\"* -*12) \"fortyGigE0/64\"* -*13) \"pfc\_asym\"* -*14) \"off\"* -*15) \"speed\"* -*16) \"40000\"* -***17) \"tpid\"*** -***18) \"0x9200\"*** -*127.0.0.1:6379\[4\]\>* +*127.0.0.1:6379\[4\]\> hgetall \"PORT\|Ethernet64\"* +*1) \"index\"* +*2) \"16\"* +*3) \"lanes\"* +*4) \"65,66,67,68\"* +*5) \"description\"* +*6) \"ARISTA01T0:Ethernet1\"* +*7) \"admin\_status\"* +*8) \"up\"* +*9) \"mtu\"* +*10) \"9100\"* +*11) \"alias\"* +*12) \"fortyGigE0/64\"* +*13) \"pfc\_asym\"* +*14) \"off\"* +*15) \"speed\"* +*16) \"40000\"* +***17) \"tpid\"*** +***18) \"0x9200\"*** +*127.0.0.1:6379\[4\]\>* Sample output for LAG after TPID configured: ``` admin@SONiC:~$ sudo config interface tpid PortChannel0002 0x9100 admin@SONiC:~$ redis-cli -n 4 ``` -*127.0.0.1:6379\[4\]\> hgetall \"PORTCHANNEL\|PortChannel0002\"* -*1) \"mtu\"* -*2) \"9100\"* -*3) \"admin\_status\"* -*4) \"up\"* -*5) \"members@\"* -*6) \"Ethernet0,Ethernet4\"* -*7) \"min\_links\"* -*8) \"2\"* -***9) \"tpid\"*** -***10) \"0x9100\"*** -*127.0.0.1:6379\[4\]\>* +*127.0.0.1:6379\[4\]\> hgetall \"PORTCHANNEL\|PortChannel0002\"* +*1) \"mtu\"* +*2) \"9100\"* +*3) \"admin\_status\"* +*4) \"up\"* +*5) \"members@\"* +*6) \"Ethernet0,Ethernet4\"* +*7) \"min\_links\"* +*8) \"2\"* +***9) \"tpid\"*** +***10) \"0x9100\"*** +*127.0.0.1:6379\[4\]\>* ### **TPID setting in APP\_DB** Sample APP\_DB for Ethernet64 after TPID configured with 0x9200: -*admin\@SONiC:\~\$ redis-cli -n 0* -*127.0.0.1:6379\> hgetall \"PORT\_TABLE:Ethernet64\"* -*1) \"index\"* -*2) \"16\"* -*3) \"lanes\"* -*4) \"65,66,67,68\"* -*5) \"description\"* -*6) \"ARISTA01T0:Ethernet1\"* -*7) \"admin\_status\"* -*8) \"up\"* -*9) \"mtu\"* -*10) \"9100\"* -*11) \"alias\"* -*12) \"fortyGigE0/64\"* -*13) \"pfc\_asym\"* -*14) \"off\"* -*15) \"speed\"* -*16) \"40000\"* -*17) \"oper\_status\"* -*18) \"up\"* -*19) \"ipredriver\"* -*20) \"0x1,0x1,0x1,0x1\"* -*21) \"preemphasis\"* -*22) \"0xa760,0xa760,0xa760,0xa760\"* -*23) \"idriver\"* -*24) \"0x1,0x1,0x1,0x1\"* -***25) \"tpid\"*** -***26) \"0x9200\"*** -*127.0.0.1:6379\>* +*admin\@SONiC:\~\$ redis-cli -n 0* +*127.0.0.1:6379\> hgetall \"PORT\_TABLE:Ethernet64\"* +*1) \"index\"* +*2) \"16\"* +*3) \"lanes\"* +*4) \"65,66,67,68\"* +*5) \"description\"* +*6) \"ARISTA01T0:Ethernet1\"* +*7) \"admin\_status\"* +*8) \"up\"* +*9) \"mtu\"* +*10) \"9100\"* +*11) \"alias\"* +*12) \"fortyGigE0/64\"* +*13) \"pfc\_asym\"* +*14) \"off\"* +*15) \"speed\"* +*16) \"40000\"* +*17) \"oper\_status\"* +*18) \"up\"* +*19) \"ipredriver\"* +*20) \"0x1,0x1,0x1,0x1\"* +*21) \"preemphasis\"* +*22) \"0xa760,0xa760,0xa760,0xa760\"* +*23) \"idriver\"* +*24) \"0x1,0x1,0x1,0x1\"* +***25) \"tpid\"*** +***26) \"0x9200\"*** +*127.0.0.1:6379\>* Sample APP\_DB for Portchannel0002 after TPID configured with 0x9100 -*admin\@SONiC:\~\$ redis-cli -n 0* -*127.0.0.1:6379\> hgetall \"LAG\_TABLE:PortChannel0002\"* -*1) \"mtu\"* -*2) \"9100\"* -*3) \"admin\_status\"* -*4) \"up\"* -*5) \"oper\_status\"* -*6) \"up\"* -***7) \"tpid\"*** -***8) \"0x9100\"*** -*127.0.0.1:6379\>* +*admin\@SONiC:\~\$ redis-cli -n 0* +*127.0.0.1:6379\> hgetall \"LAG\_TABLE:PortChannel0002\"* +*1) \"mtu\"* +*2) \"9100\"* +*3) \"admin\_status\"* +*4) \"up\"* +*5) \"oper\_status\"* +*6) \"up\"* +***7) \"tpid\"*** +***8) \"0x9100\"*** +*127.0.0.1:6379\>* **Show interface tpid cmd** --------------------------- @@ -396,6 +380,7 @@ The following test cases are to be run manually (eventually as part of the pytes **References** ============== -a) SONiC Configuration Management -b) -c) +a) SONiC Configuration Management +b) +c) +