[LARTC] [HELP] Mutlicast over GRE tunnel

Zhuang Yuyao mlistz at gmail.com
Mon Sep 11 05:03:58 CEST 2006


Hi,

I got a problem similar to this one 
(http://mailman.ds9a.nl/pipermail/lartc/2005q4/017614.html), GRE tunnel 
can forward normal IP packets such as ICMP but failed to tunnel 
multicast traffics.

Here's the setup:

                        192.168.20.0/24
 LAN-A--------------RtrA-------------RtrB--------------LAN-B
      192.168.50.0/24                     192.168.60.0/24

RtrA interfaces:
eth0 192.168.20.100
eth1 192.168.50.1

HOSTA in LAN-A
eth0 192.168.50.250

RtrB interfaces:
eth0 192.168.20.98
eth1 192.168.60.1

HOSTB in LAN-B
eth0 192.168.60.250

Here is the setup script on RtrB:

      1 #!/bin/sh
      2
      3 END_L=192.168.20.98
      4 END_R=192.168.20.100
      5 GRE_L=10.0.0.4
      6 GRE_R=10.0.0.3
      7 MGROUP=224.0.55.55
      8 SUBNET_R=192.168.50.0/24
      9
     10 /usr/sbin/iptables -F
     11 /usr/sbin/iptables -F -t nat
     12 /usr/sbin/iptables -P FORWARD ACCEPT
     13
     14 ip tunnel del gretun
     15 ip tunnel add gretun mode gre remote $END_R local $END_L ttl 255
     16 ip link set gretun up multicast on
     17 ip addr add $GRE_L peer $GRE_R/24 dev gretun
     18
     19 ip route del $SUBNET_R via $GRE_R
     20 ip route add $SUBNET_R via $GRE_R
     21
     22 /usr/sbin/smcroute -k
     23 /usr/sbin/smcroute -d
     24 sleep 3
     25 /usr/sbin/smcroute -a eth1 192.168.60.250 $MGROUP gretun
     26 /usr/sbin/smcroute -j gretun $MGROUP

and the setup script on RtrA:
      1 #!/bin/sh
      2
      3 END_L=192.168.20.100
      4 END_R=192.168.20.98
      5 GRE_L=10.0.0.3
      6 GRE_R=10.0.0.4
      7 MGROUP=224.0.55.55
      8 SUBNET_R=192.168.60.0/24
      9
     10 /usr/sbin/iptables -F
     11 /usr/sbin/iptables -F -t nat
     12 /usr/sbin/iptables -P FORWARD ACCEPT
     13
     14 ip tunnel del gretun
     15 ip tunnel add gretun mode gre remote $END_R local $END_L ttl 255
     16 ip link set gretun up multicast on
     17 ip addr add $GRE_L peer $GRE_R/24 dev gretun
     18
     19 ip route del $SUBNET_R via $GRE_R
     20 ip route add $SUBNET_R via $GRE_R
     21
     22 /usr/sbin/smcroute -k
     23 /usr/sbin/smcroute -d
     24 sleep 3
     25 /usr/sbin/smcroute -a eth1 192.168.60.250 $MGROUP gretun
     26 /usr/sbin/smcroute -j gretun $MGROUP

On RtrB (while running #ping 192.168.50.250 on HOSTB):
/usr/sbin/tcpdump -i eth0 -n
10:46:21.470623 IP 192.168.20.98 > 192.168.20.100: GREv0, length 88: IP 
192.168.60.250 > 192.168.50.250: ICMP echo request, id 44558, seq 1, 
length 64
10:46:21.476843 IP 192.168.20.100 > 192.168.20.98: GREv0, length 88: IP 
192.168.50.250 > 192.168.60.250: ICMP echo reply, id 44558, seq 1, length 64
10:46:22.487867 IP 192.168.20.98 > 192.168.20.100: GREv0, length 88: IP 
192.168.60.250 > 192.168.50.250: ICMP echo request, id 44558, seq 2, 
length 64
10:46:22.491629 IP 192.168.20.100 > 192.168.20.98: GREv0, length 88: IP 
192.168.50.250 > 192.168.60.250: ICMP echo reply, id 44558, seq 2, length 64
10:46:23.473064 IP 192.168.20.98 > 192.168.20.100: GREv0, length 88: IP 
192.168.60.250 > 192.168.50.250: ICMP echo request, id 44558, seq 3, 
length 64
10:46:23.473711 IP 192.168.20.100 > 192.168.20.98: GREv0, length 88: IP 
192.168.50.250 > 192.168.60.250: ICMP echo reply, id 44558, seq 3, length 64
10:46:24.452719 IP 192.168.20.98 > 192.168.20.100: GREv0, length 88: IP 
192.168.60.250 > 192.168.50.250: ICMP echo request, id 44558, seq 4, 
length 64
10:46:24.453209 IP 192.168.20.100 > 192.168.20.98: GREv0, length 88: IP 
192.168.50.250 > 192.168.60.250: ICMP echo reply, id 44558, seq 4, length 64
10:46:25.470861 IP 192.168.20.98 > 192.168.20.100: GREv0, length 88: IP 
192.168.60.250 > 192.168.50.250: ICMP echo request, id 44558, seq 5, 
length 64
10:46:25.478632 IP 192.168.20.100 > 192.168.20.98: GREv0, length 88: IP 
192.168.50.250 > 192.168.60.250: ICMP echo reply, id 44558, seq 5, length 64

As you can see, the ICMP packets are encapsulated by GRE tunnel.

Now I started to run multicast test by running "iperf -c 224.0.55.55 -u 
-T 32 -t 1000 -i 1" on HOSTB
On RtrB:
/usr/sbin/tcpdump -i eth0 -n
/usr/sbin/tcpdump -i gretun -n
both captured nothing !!!

I am really confused. Any help will be appreciated!

Thanks very much!

Best regards,

    Zhuang Yuyao




More information about the LARTC mailing list