Hoi,

I have a question about 'l2 flood' on egress versus ingress. Assume the following topolgy:

vpp0, bridge-doain 100             vpp1, bridge-domain 100
GigabitEthernet10/0/0 SHG 0  GigabitEthernet10/0/0 SHG 0
vxlan_tunnel0 SHG 1, L2 Learn disable          < v4 >  vxlan_tunnel0 SHG 1, L2 Learn disable vxlan_tunnel1 SHG 1, L2 Learn+*Flood disable*    < v6 >     vxlan_tunnel1 SHG 1, L2 Learn+*Flood disable*


Some BUM packet (eg ARP or IP6 neighbor discovery) comes in on vpp0 Gi10/0/0
- src MAC gets learned on Gi10/0/0, this is fine (learning is on)
- gets flooded to vxlan_tunnel0 (ipv4 packet A), this is fine (flooding is on) *- gets flooded to vxlan_tunnel1 (ipv6 packet B), I find this questionable (flooding is off)*

BUM now comes in on vpp1 twice
- ipv4 packet gets accepted and flooded, this is fine (flooding is on)
- ipv6 packet gets dropped, this is fine (flooding is off)

Looking at the packet trace on vpp0:
17:00:06:603931: l2-learn
  l2-learn: sw_if_index 3 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 bd_index 3
17:00:06:603932: l2-flood
  l2-flood: sw_if_index 3 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 bd_index 3   l2-flood: sw_if_index 3 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 bd_index 3
17:00:06:603934: l2-output
*  l2-output: sw_if_index 14 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 data 86 dd 60 07 03 49 00 40 3a 01 fe 80 *   l2-output: sw_if_index 15 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 data 86 dd 60 07 03 49 00 40 3a 01 fe 80
17:00:06:611511: vxlan6-encap
  VXLAN encap to vxlan_tunnel1 vni 20040 (Packet B)
17:00:06:611513: vxlan4-encap
  VXLAN encap to vxlan_tunnel0 vni 20040 (Packet A)

I am wondering, if "L2 Flooding" is off, should we be sending the packet to sw_if_index 14 (the one with flooding disabled)? No real harm is done, because on the remote side, on vpp1, the second packet is dropped:
Packet A:
23:39:08:908750: vxlan4-input
  VXLAN decap from vxlan_tunnel0 vni 20040 next 1 error 0
23:39:08:908752: l2-input
  l2-input: sw_if_index 13 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 [l2-flood ]
23:39:08:908753: l2-flood
  l2-flood: sw_if_index 13 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 bd_index 2
23:39:08:908761: l2-output
  l2-output: sw_if_index 4 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 data 86 dd 60 07 03 49 00 40 3a 01 fe 80

Packet B:
23:39:08:908748: vxlan6-input
  VXLAN decap from vxlan_tunnel1 vni 20040 next 1 error 0
23:39:08:908752: l2-input
  l2-input: sw_if_index 14 dst 33:33:00:00:00:01 src 52:54:00:f0:10:03 []
23:39:08:908753: feature-bitmap-drop
  feat_bitmap_drop: feature bitmap 0x00000001
23:39:08:908755: error-drop
  rx:vxlan_tunnel2
23:39:08:908762: drop
  feature-bitmap-drop: L2 feature forwarding disabled

We correctly drop the packet and refuse to flood on vpp1, end to end it works, although two packets are sent. I think it may be better to drop the packets before sending them, if the interface is marked as not FLOOD. This fix itself is quite simple, but can somebody think of a reason to flood /egress/ on L2 interfaces with the FLOOD bit disabled ?

groet,
Pim

--
Pim van Pelt<[email protected]>
PBVP1-RIPEhttps://ipng.ch/
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#26819): https://lists.fd.io/g/vpp-dev/message/26819
Mute This Topic: https://lists.fd.io/mt/117860165/21656
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/14379924/21656/631435203/xyzzy 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to