I am trying to configure vrf-ilte, with kernel 4.6. But it seems that I am not able to make the multicast work.
- Kernel is standard 4.6 picked up from here
https://www.kernel.org/pub/linux/ker...nux-4.6.tar.gz
- It is topped up with chvrf patch viz
http://pastebin.com/UFWHvPHw
- and, I am testing the setup using this
http://pastebin.com/wM4WVUH7
Synopsis of the issue:
1. If the sender(S) & listener(L) are both on the same box, and *S* is bound to *vrf-purple* multicast works.
2. If the *S* is bound to *vrf-purple* and the *L* is started on a remote machine, it doesn't work.
3. Please note, the connectivity between the boxes are fine. Even the unicast vrf-bound ping goes through.
The boxes are setup as:
Code:
+-------------------+ +-------------------+
| R1 | | R2 |
| | | |
| | | |
+-------------------+ | |
| vrf-purple | | |
+-------------------+ +-------------------+
| enp0s8 o-------------------------o enp0s8 |
+-------------------+ +-------------------+
192.168.56.101 192.168.56.103
Running mcast client on R1
Code:
user@R1:~/vrf$ ./mcs -s -l 192.168.56.101
Creating Sender
sending Hello! I am R1 0x1292
sending Hello! I am R1 0x1292
mcast server on R1
Code:
user@R1:~/vrf$ sudo ./vrf vrf-purple ./mcs -i enp0s8
Rx : Hello! I am R1 0x1292
Rx : Hello! I am R1 0x1292
However the remote path is not working as expected
Code:
user@R2:~/vrf$ ./mcs -s -l 192.168.56.103
Creating Sender
sending Hello! I am R2 0x1265
NOTE: This is never received by the server@R1
Network setup on R1
Code:
Interfaces
-----------
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vrf-purple state UP group default qlen 1000
link/ether 08:00:27:38:ce:0e brd ff:ff:ff:ff:ff:ff
inet 192.168.56.101/24 scope global enp0s8
valid_lft forever preferred_lft forever
5: vrf-purple: <NOARP,MASTER,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 66:89:4a:12:5b:6d brd ff:ff:ff:ff:ff:ff promiscuity 0
vrf table 10 addrgenmode eui64
Ping remote
-----------
user@R1$ ping -I enp0s8 192.168.56.103
PING 192.168.56.103 (192.168.56.103) from 192.168.56.101 enp0s8: 56(84) bytes of data.
64 bytes from 192.168.56.103: icmp_seq=1 ttl=64 time=0.553 ms
Change Vrf & ping
-----------------
user@R1$ ./vrf vrf-purple ping 192.168.56.103
PING 192.168.56.103 (192.168.56.103) 56(84) bytes of data.
64 bytes from 192.168.56.103: icmp_seq=1 ttl=64 time=0.330 ms
Routes
------
user@R1$ ip route show table 10
prohibit default
broadcast 192.168.56.0 dev enp0s8 proto kernel scope link src 192.168.56.101
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.101
user@R1 192.168.56.101 dev enp0s8 proto kernel scope host src 192.168.56.101
broadcast 192.168.56.255 dev enp0s8 proto kernel scope link src 192.168.56.101
With *remote* multicast sending packets, I see the following:
Code:
> Can see the packets in tcpdump
user@R1:~/vrf$ sudo tcpdump -nni enp0s8
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s8, link-type EN10MB (Ethernet), capture size 262144 bytes
11:56:56.289027 IP 192.168.56.103.33879 > 239.0.4.1.59995: UDP, length 300
11:56:57.290189 IP 192.168.56.103.33879 > 239.0.4.1.59995: UDP, length 300
user@R1:~/vrf$ netstat -su
UdpLite:
IpExt:
InMcastPkts: 209 << In case of Local sender this increases,
In case of remote sender, this doesnt increase
InOctets: 675995 << Increases in both the cases
OutOctets: 480410
InNoECTPkts: 5029 << Increase in both the cases.
user@R1:~/vrf$ netstat -ui
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
enp0s8 1500 0 641 0 0 0 226 0 0 0 BMRU
vrf-purple 1500 0 744 0 0 0 6 0 0 0 OmRU
^^^
RX-OK increases
Need to understand why is it not working, and if I need to make some additional configuration. Please let me know, if any more information is required.