Closed Ragsboss closed 6 years ago
Tagged traffic from server does work fine.
ip link add link enp1s0f0 name enp1s0f0.500 type vlan id 500
ip link set enp1s0f0.500 up
ip addr add 12.12.10.6/26 dev enp1s0f0.500
ping 12.12.10.1
PING 12.12.10.1 (12.12.10.1) 56(84) bytes of data.
64 bytes from 12.12.10.1: icmp_seq=1 ttl=64 time=0.273 ms
64 bytes from 12.12.10.1: icmp_seq=2 ttl=64 time=0.406 ms
tcpdump from ToR interface
root@rack-1-leaf-1:~# tcpdump -i e101-024-0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on e101-024-0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:08:06.772738 LLDP, length 260: Rack-1-Leaf-1
21:08:07.243321 STP 802.1d, Config, Flags [none], bridge-id 2000.34:17:eb:f4:66:8d.8010, length 35
21:08:09.243331 STP 802.1d, Config, Flags [none], bridge-id 2000.34:17:eb:f4:66:8d.8010, length 35
21:08:11.243314 STP 802.1d, Config, Flags [none], bridge-id 2000.34:17:eb:f4:66:8d.8010, length 35
21:08:12.391968 IP 12.12.10.6 > 12.12.10.1: ICMP echo request, id 11487, seq 1, length 64
21:08:12.392034 IP 12.12.10.1 > 12.12.10.6: ICMP echo reply, id 11487, seq 1, length 64
21:08:13.243310 STP 802.1d, Config, Flags [none], bridge-id 2000.34:17:eb:f4:66:8d.8010, length 35
21:08:13.391218 IP 12.12.10.6 > 12.12.10.1: ICMP echo request, id 11487, seq 2, length 64
21:08:13.391287 IP 12.12.10.1 > 12.12.10.6: ICMP echo reply, id 11487, seq 2, length 64
21:08:14.391237 IP 12.12.10.6 > 12.12.10.1: ICMP echo request, id 11487, seq 3, length 64
21:08:14.391300 IP 12.12.10.1 > 12.12.10.6: ICMP echo reply, id 11487, seq 3, length 64
21:08:15.243325 STP 802.1d, Config, Flags [none], bridge-id 2000.34:17:eb:f4:66:8d.8010, length 35
21:08:15.391284 IP 12.12.10.6 > 12.12.10.1: ICMP echo request, id 11487, seq 4, length 64
21:08:15.391347 IP 12.12.10.1 > 12.12.10.6: ICMP echo reply, id 11487, seq 4, length 64
21:08:16.391283 IP 12.12.10.6 > 12.12.10.1: ICMP echo request, id 11487, seq 5, length 64
21:08:16.391342 IP 12.12.10.1 > 12.12.10.6: ICMP echo reply, id 11487, seq 5, length 64
21:08:17.243316 STP 802.1d, Config, Flags [none], bridge-id 2000.34:17:eb:f4:66:8d.8010, length 35
21:08:17.391326 IP 12.12.10.6 > 12.12.10.1: ICMP echo request, id 11487, seq 6, length 64
21:08:17.391396 IP 12.12.10.1 > 12.12.10.6: ICMP echo reply, id 11487, seq 6, length 64
21:08:18.391332 IP 12.12.10.6 > 12.12.10.1: ICMP echo request, id 11487, seq 7, length 64
21:08:18.391390 IP 12.12.10.1 > 12.12.10.6: ICMP echo reply, id 11487, seq 7, length 64
21:08:19.243318 STP 802.1d, Config, Flags [none], bridge-id 2000.34:17:eb:f4:66:8d.8010, length 35
21:08:19.391376 IP 12.12.10.6 > 12.12.10.1: ICMP echo request, id 11487, seq 8, length 64
21:08:19.391443 IP 12.12.10.1 > 12.12.10.6: ICMP echo reply, id 11487, seq 8, length 64
@Ragsboss You have to configure both tagged and untagged port on the server side also. I have one server which is connected to the switch. Below are the configurations I did.
Server Side
auto br500
iface br500 inet static
address 12.12.10.1/26
bridge_ports ens192 ens192.500
bridge_stp on
bridge_bridgeprio 8192
root@ubuntu-opx1:~# brctl show
bridge name bridge id STP enabled interfaces
br500 2000.000c29e2e790 yes ens192
ens192.500
`
Switch Side
Using CPS config , first add the tagged port to the bridge.
cps_config_vlan.py --add --id 500 --vlantype 1 --port e101-027-1 --tagged
Add the untagged port to the bridge next.
cps_config_vlan.py --addport --name br500 --port e101-027-1
root@AG1:~# ifconfig br500
br500 Link encap:Ethernet HWaddr f4:8e:38:1c:0c:56
inet addr:12.12.10.6 Bcast:12.12.10.63 Mask:255.255.255.192
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:356 errors:0 dropped:0 overruns:0 frame:0
TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:19024 (18.5 KiB) TX bytes:5158 (5.0 KiB)
root@AG1:~# brctl show br500
bridge name bridge id STP enabled interfaces
br500 8000.f48e381c0c56 no e101-027-1
e101-027-1.500
root@AG1:~# opx-switch-shell 'vlan show 500'
vlan 500 ports xe56 (0x0000000000000000000000000000000000000000200000000000000000000000), untagged xe56
(0x00000000000000000000000000000000000000200000000000000000000000)MCAST_FLOOD_UNKNOWN
`
root@AG1:~# cps_config_vlan.py --show --name br500
Key: 1.19.44.2883617.2883612.2883613.
dell-base-if-cmn/if/interfaces/interface/if-index = 291
dell-if/if/interfaces/interface/phys-address = f4:8e:38:1c:0c:56
base-if-vlan/if/interfaces/interface/id = 500
dell-if/if/interfaces/interface/untagged-ports = e101-027-1
if/interfaces/interface/type = ianaift:l2vlan
if/interfaces/interface/name = br500
dell-if/if/interfaces/interface/vlan-type = 1
dell-if/if/interfaces/interface/learning-mode = 1
dell-if/if/interfaces/interface/mtu = 1532
if/interfaces/interface/enabled = 0
dell-if/if/interfaces/interface/tagged-ports = e101-027-1
root@AG1:~# ifconfig br500
br500 Link encap:Ethernet HWaddr f4:8e:38:1c:0c:56
inet addr:12.12.10.6 Bcast:12.12.10.63 Mask:255.255.255.192
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:395 errors:0 dropped:0 overruns:0 frame:0
TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:20974 (20.4 KiB) TX bytes:5158 (5.0 KiB)
root@AG1:~# ping 12.12.10.1 PING 12.12.10.1 (12.12.10.1) 56(84) bytes of data. 64 bytes from 12.12.10.1: icmp_seq=1 ttl=64 time=2003 ms 64 bytes from 12.12.10.1: icmp_seq=2 ttl=64 time=994 ms 64 bytes from 12.12.10.1: icmp_seq=3 ttl=64 time=0.260 ms 64 bytes from 12.12.10.1: icmp_seq=4 ttl=64 time=0.319 ms 64 bytes from 12.12.10.1: icmp_seq=5 ttl=64 time=0.254 ms ^C --- 12.12.10.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 0.254/599.700/2003.184/800.442 ms, pipe 2 `
@madhu222 thank you for your response. The use case here is a server that wants to and can send only untagged traffic. Additionally, we can't ask server guys to configure bridge or tagged ports on the server. Server side should be oblivious to ToR model and standard interfaces/bonds with properly configured IPs should just work. Any configurations including (but ideally no) workarounds are possible to be done only on ToR side.
I did notice that use of cps_config_vlan.py
does fix the issue without requiring server to have bridge or tagged port. I'll need to test this little more tomorrow and will share my findings. However ideally I'm looking for a solution that involves only /etc/network/interfaces
file because that give us a unified way to manage all configurations for interfaces, it's idempotent and complete. By complete, I mean removing bridges from that file and doing an ifreload
will add/remove bridges appropriately[1].
Footnotes: [1] Although, I'm noticing bridge removal is not happening upon removal of entries in interfaces - for which I'll file a separate issue after further investigation.
Hi @Ragsboss -- you won't be able to configure an untagged VLAN in /etc/network/interfaces because of a limitation in the kernel. The kernel doesn't generate netlink messages for the Linux CPS Adapter to read and install the VLAN into the NPU, so configuring untagged VLANs in OPX must be done via cps_config_vlan.py.
@madhu222 , would it be possible to add "cps_config_vlan.py" lines to the /etc/network/interfaces file to get the untagged VLANs created?
@Ragsboss you can use only untagged on the server side. Example configurations below.
auto br500
iface br500 inet static
address 12.12.10.1/26
bridge_ports ens192
bridge_stp on
bridge_bridgeprio 8192
On the switch side configurations below.
auto br500
iface br500 inet static
address 12.12.10.6/26
bridge_ports e101-027-1 e101-027-1.500
bridge_stp on
bridge_bridgeprio 8192
Please let me know if that worked for you.
@Ragsboss does @madhu222 's suggestion work for you?
Closing the issue for now.
I have a leaf-spine network, where a VLAN is created on the leaf (aka ToR) and server facing interfaces are added as members to the bridge corresponding to this VLAN. An IP address is configured on this bridge to represent the SVI. On server, IP is configured on a physical interface and sending untagged packets to ToR SVI IP is not working. Below are further details
OPX version is
Contents of
/etc/network/interfaces
file areOutput of
ip addr
on ToROutput of
brctl show
Output of
opx-switch-shell 'vlan show'
Output of
cps_config_vlan.py --show
on ToROutput of
ip addr
on serverPing from server to ToR SVI IP
tcpdump from server interface
tcpdump from ToR interface