Description

This KB is only for customers using 21.4R3-S4.
The customer reported AE interface was dropping all incoming packet after disabled a child port of AE in the VC member. This is Virtual Chassis and VXLAN+OVSDB environment, LAG is formed among different member switches. When disable a child port of AE in a VC member,

Symptoms

In this example, ae0 and ae1 is configured as OVSDB and they belongs to the same vlan. ae0 has ports ge-0/0/21 and ge-1/0/21 and ae1 has ports xe-0/0/24 and xe-1/0/24. When disabled ge-0/0/21 in ae0, ge-1/0/21 should forward the incoming packet to ae1 but ge-1/0/21 started dropping all incoming packets.

root@switch> show virtual-chassis

Preprovisioned Virtual Chassis
Virtual Chassis ID: 074c.e883.861a
Virtual Chassis Mode: Enabled
                                                Mstr           Mixed Route Neighbor List
Member ID  Status   Serial No    Model          prio  Role      Mode  Mode ID  Interface
0 (FPC 0)  Prsnt    XH3120212345 qfx5120-48y-8c 129   Master*      N  VC   1  vcp-255/0/54
                                                                           1  vcp-255/0/55
1 (FPC 1)  Prsnt    XH3120312345 qfx5120-48y-8c 129   Backup       N  VC   0  vcp-255/0/54
                                                                           0  vcp-255/0/55

{master:0}
root@switch>

set protocols ovsdb interfaces ae0
set protocols ovsdb interfaces ae1
set vlans Contrail-00bd5e59-8da4-46c3-80b0-9f8665d79c6f interface ae0.2049
set vlans Contrail-00bd5e59-8da4-46c3-80b0-9f8665d79c6f interface ae1.2049
set vlans Contrail-00bd5e59-8da4-46c3-80b0-9f8665d79c6f vxlan vni 1066

root@d23-31> show vlans Contrail-00bd5e59-8da4-46c3-80b0-9f8665d79c6f

Routing instance        VLAN name             Tag          Interfaces
default-switch          Contrail-00bd5e59-8da4-46c3-80b0-9f8665d79c6f NA
                                                           ae0.2049*
                                                           ae1.2049*

{master:0}
root@switch>

root@switch> show lacp interfaces ae0
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/21      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/21    Partner    No    No   Yes  Yes  Yes   Yes     Slow    Active
      ge-1/0/21      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-1/0/21    Partner    No    No   Yes  Yes  Yes   Yes     Slow    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/21                 Current   Slow periodic Collecting distributing
      ge-1/0/21                 Current   Slow periodic Collecting distributing

{master:0}
root@switch>

When disabled ge-0/0/21, ge-1/0/21 starts dropping all incoming packets.

root@switch# set interfaces ge-0/0/21 disable

{master:0}[edit]
root@switch# commit

root@switch# run show lacp interfaces ae0
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/21      Actor    No   Yes    No   No   No   Yes     Fast    Active
      ge-0/0/21    Partner    No   Yes    No   No   No   Yes     Fast   Passive
      ge-1/0/21      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-1/0/21    Partner    No    No   Yes  Yes  Yes   Yes     Slow    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/21           Port disabled     No periodic           Detached
      ge-1/0/21                 Current   Slow periodic Collecting distributing

{master:0}[edit]
root@switch#

Login vty in question. In this example, ge-1/0/21 is dropping so that we need to login to fpc1 from shell.
 

root@d23-31:RE:0% vty fpc1

FPC1(d23-31 vty)# show dcb ifd all
----------------------------------------------------------
ifd name     global-dev  local-dev   port-num   port-name
----------------------------------------------------------
et-1/0/48             1          0         87      xe44
ge-1/0/21             1          0         35       ge2
pfe-1/0/0             0          0          0      cpu0
pfh-1/0/0             0          0          0      cpu0
vcp-255/0/54          1          0        127       hg1
vcp-255/0/55          1          0        123       hg0
xe-1/0/24             1          0         44      xe23

FPC1(d23-31 vty)#

You will see "discard" is set to All int eh output by the following command from shell.

root@d23-31:RE:0% cprod -A fpc1 -c 'set dcbcm bcmshell "ps"' | egrep 'ge2|speed|port'
                 ena/        speed/ link auto    STP                  lrn  inter   max   cut   loop
           port  link  Lns   duplex scan neg?   state   pause  discrd ops   face frame  thru?  back   encap
       ge2( 35)  up     1    1G  FD   HW  No   Forward           All   FA  SGMII  9220    No          IEEE       <<<<< discrd is set to All.
root@d23-31:RE:0%


Solution

Some fixes are using the brcm_vxlan_port_discard_set() API and the fix of PR1738404 is needed with these fixes but it was not included in only 21.4R3-S4. In VXLAN environment that AE (LAG) is formed among different member switches in Virtual Chassis, when disabled a child port of AE in a VC member, the same port number
on other member in the VC may drop all incoming packet. This is because non-local members are also requested for update in child member port discard settings. 

For example, AE0 has ports ge-0/0/1 and ge-1/0/1. When disable ge-0/0/1 in AE0, ge-1/0/1 should not discard the incoming packet but ge-1/0/1 may drop all incoming packets. This PR1738404 addresses this issue by 
validating the port/unit.

Modification History

2023-11-02 : First Created