I have bonded together two ports on a CRS-309 via 802.3ad and enabled IGMP snooping on the bridge interface. There is no routing involved as although the CRS-309 is a 10G router, it can't route at even 1G so I'm just using it as a hardware switch. Unicast TCP and UDP traffic work fine - according to Wireshark on the client machine, each packet only arrives once as expected.
However once I try sending IPv4 multicast traffic, each packet arrives on the machine twice, corrupting video streams and causing iperf to complain:
Code: Select all
client1$ iperf -c 224.1.1.1 -u -T 32 -t 3 -i 1
------------------------------------------------------------
Client connecting to 224.1.1.1, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
Setting multicast TTL to 32
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 198.18.0.100 port 56520 connected with 224.1.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 131 KBytes 1.07 Mbits/sec
[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec
[ 3] 0.0- 3.0 sec 385 KBytes 1.05 Mbits/sec
[ 3] Sent 268 datagrams
Code: Select all
client2$ iperf -s -u -B 224.1.1.1 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 224.1.1.1
Joining multicast group 224.1.1.1
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 224.1.1.1 port 5001 connected with 1.2.3.4 port 56520
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 258 KBytes 2.12 Mbits/sec 0.030 ms 0/ 90 (0%)
[ 3] 0.0000-1.0000 sec 90 datagrams received out-of-order
[ 3] 1.0- 2.0 sec 256 KBytes 2.09 Mbits/sec 0.025 ms 0/ 89 (0%)
[ 3] 1.0000-2.0000 sec 89 datagrams received out-of-order
[ 3] 2.0- 3.0 sec 256 KBytes 2.09 Mbits/sec 0.021 ms 0/ 89 (0%)
[ 3] 2.0000-3.0000 sec 89 datagrams received out-of-order
[ 3] 0.0- 3.0 sec 769 KBytes 2.10 Mbits/sec 0.021 ms 0/ 268 (0%)
[ 3] 0.0000-3.0046 sec 268 datagrams received out-of-order
[ 4] local 224.1.1.1 port 5001 connected with 1.2.3.4 port 56520
[ 4] 0.0- 0.0 sec 1.44 KBytes -nan bits/sec 0.000 ms 267/ 268 (1e+02%)
I started off with SwOS for a while and there was no problem with bonding or multicast traffic, but now I am trying RouterOS, except that I can't figure out how to tell it not to duplicate multicast traffic over all interfaces in a bonded link.
I've tried a bonded and non-bonded link as the source for the multicast packets but it makes no difference, so it's not the client machine sending the packets out of both interfaces because I still see the problem when the packets originate from a machine with only one NIC.
Have I just configured my bonding links improperly? I tried a few different things and the only thing that changes anything is switching it to balance-rr mode which kills the bandwidth. Everything else still delivers multicast packets twice.
Code: Select all
/interface bonding print
Flags: X - disabled, R - running
0 R name="bonding12" mtu=1500 mac-address=2C:C8:1B:A6:AB:CE arp=enabled arp-timeout=auto slaves=sfp-sfpplus1,sfp-sfpplus2 mode=802.3ad primary=none link-monitoring=mii arp-interval=100ms arp-ip-targets="" mii-interval=100ms down-delay=0ms up-delay=0ms lacp-rate=1sec
transmit-hash-policy=layer-2-and-3 min-links=0
1 R name="bonding34" mtu=1500 mac-address=2C:C8:1B:A6:AB:D0 arp=enabled arp-timeout=auto slaves=sfp-sfpplus3,sfp-sfpplus4 mode=802.3ad primary=none link-monitoring=mii arp-interval=100ms arp-ip-targets="" mii-interval=100ms down-delay=0ms up-delay=0ms lacp-rate=1sec
transmit-hash-policy=layer-2-and-3 min-links=0
2 R name="bonding56" mtu=1500 mac-address=2C:C8:1B:A6:AB:D2 arp=enabled arp-timeout=auto slaves=sfp-sfpplus5,sfp-sfpplus6 mode=802.3ad primary=none link-monitoring=mii arp-interval=100ms arp-ip-targets="" mii-interval=100ms down-delay=0ms up-delay=0ms lacp-rate=1sec
transmit-hash-policy=layer-2-and-3 min-links=0