[Xorp-users] How to send Multicast to GRE tunnel interface

manuel peixoto ma_peixoto at yahoo.com
Sun May 17 14:18:30 PDT 2015


Hello, 


I am a Portuguese programmer, and i need some advise on to send a Multicast stream into one GRE tunnel.

I searched in several forums and also in this one, for some idea on how to do it.
I read a lot good posts, that put me in the right track, but I always get into some blocking situation.

I already tried pfSense with IGMP Proxy and SMCRoute.
On pfSense, I could receive the multicast for some short period of time on the other GRE endpoint, but then they stopped. And I could put it working again if I do a service restart to the IGMP Proxy, I was not able to figure out why.

On SMCRoute, I get and error indicating that it could not route the multicast to the GRE interface.

Now I am trying the XORP approach, but still have issues.

Let me explain what is my scenario:

My system has OS Ubuntu 15.04.
The other endpoint of the GRE tunnel is Debian OS.

My system (server) is a DELL R710 64Bits.

I have:

1) Ingest/Upstream interface (interface em2)

   I am receiving from it some Multicast: 239.1.1.x
   These multicast are video multicast, basically each multicast is a single video stream.

   

2) Downstream interface
   I have two interfaces
   a) One physical interface (interface em4), that is one of the network interfaces from the DELL.
   b) One GRE tunnel interface (interface GRE00), that is create between my Ubuntu and the remote Debian server.

I have done the following configurations on the Ubuntu server:

<Ubuntu server>

sudo ip tunnel add gre00 remote REMOTE_SERVER local 192.168.123.213 ttl 255 dev em1
sudo ip link set gre00 up
sudo ip link set gre00 multicast on 
sudo ip addr add My_EndPoint/30 broadcast My_EndPointBroadcast dev gre00

sudo iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o gre00 -j TCPMSS --clamp-mss-to-pmtu

sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

On sysctl set the variables:

net.ipv4.conf.all.mc_forwarding = 1
net.ipv4.conf.gre0.mc_forwarding = 1
net.ipv4.conf.eth0.mc_forwarding =
net.ipv4.conf.eth2.mc_forwarding = 1
net.ipv4.conf.eth3.mc_forwarding = 1
net.ipv4.conf.bovespa.mc_forwarding = 1
net.ipv4.conf.gre0.mc_forwarding = 1
</Ubuntu server>

I have installed the latest version of XORP (1.8.x) and I have configured  my interfaces on the config.boot file:

<Config.boot>

protocols {

fib2mrib {
disable: false
}/*fib2mrib*/ 
igmp {
disable: false
interface em2 {
vif em2 {
disable: false
version: 2
enable-ip-router-alert-option-check: false
query-interval: 125
query-last-member-interval: 1
query-response-interval: 10
robust-count: 2
}
}

interface gre00 {
vif gre00 {
disable: false
version: 2
enable-ip-router-alert-option-check: false
query-interval: 125
query-last-member-interval: 1
query-response-interval: 10
robust-count: 2
}
}
interface em4 {
vif em4 {
disable: false
version: 2
enable-ip-router-alert-option-check: false
query-interval: 125
query-last-member-interval: 1
query-response-interval: 10
robust-count: 2
}
}
traceoptions {
flag all {
disable: false
}
}
} /*IGMP*/

pimsm4 {
disable: false
interface em2 {
vif em2 {
disable: false
dr-priority: 1
hello-period: 30
hello-triggered-delay: 5
}
}

interface gre00 {
vif gre00 {
disable: false
dr-priority: 1
hello-period: 30
hello-triggered-delay: 5
}
}

interface em4 {
vif em4 {
disable: false
dr-priority: 1
hello-period: 30
hello-triggered-delay: 5
}
}
interface register_vif {
vif register_vif {

disable: false
dr-priority: 1
hello-period: 30
hello-triggered-delay: 5
}
}

/*static-rps {
rp 192.168.113.213 {

group-prefix 239.0.0.0/8 {
rp-priority: 192
hash-mask-len: 30
}
group-prefix 224.0.0.0/4 {
rp-priority: 192
hash-mask-len: 30
}
}
}*/

/*bootstrap {
disable: false
cand-bsr {
scope-zone 239.1.1.0/24 {
cand-bsr-by-vif-name: "gre00"
bsr-priority: 1
hash-mask-len: 30
}
}
cand-rp {
group-prefix 239.1.1.0/24 {
cand-rp-by-vif-name: "gre00"
rp-priority: 192
rp-holdtime: 150
}
}
}*/


traceoptions {
flag all {
disable: false
}
}
}
/*pimsm4*/


static {
disable: false
mrib-route 239.1.1.0/24 {
next-hop: 10.10.10.1
metric: 1 
}
/*
mrib-interface-route 239.0.0.0/8 {
next-hop-interface: 10.10.10.2
next-hop-vif: 10.10.10.2 
metric: 64 
} */
}

}/*Protocols*/
fea {
unicast-forwarding4 {
disable: false

}
}/*FEA*/
/*++++*/
interfaces {
restore-original-config-on-shutdown: false
/*interface lo {
description: "Loopback"
disable: false
discard: false
unreachable: false
management: false
default-system-config 
vif lo {
disable: false
}
}*/
interface em2 {
description: "upstream interface"
disable: false
discard: false
unreachable: false
management: false
default-system-config
vif em2 {
disable: false
/* address 192.168.113.213 {

prefix-length:24
multicast-capable: true
disable: false 
}*/
}
}
interface gre00 {
description: "downstream interface"
disable: false
discard: false
unreachable: false
management: false
default-system-config
vif gre00 {
disable: false
/*address 10.10.10.1 {
prefix-length:30
broadcast: 10.10.10.3
multicast-capable: true
disable: false
}*/
}
}
interface em4 {
description: "downstream interface"
disable: false
discard: false
unreachable: false
management: false
default-system-config
vif em4 {
disable: false
/*address 10.10.10.1 {
prefix-length:30
broadcast: 10.10.10.3
multicast-capable: true
disable: false
}*/
}
}



}/*interfaces*/
/*++++*/
plumbing {
mfea4 {
disable: false
interface em2 {
vif em2 {
disable: false
}
}

interface gre00 {
vif gre00 {
disable: false
}
}
interface em4 {
vif em4 {
disable: false
}
}
interface "register_vif" {
vif "register_vif" {
/* Note: this vif should be always enabled */
disable: false
}
}
traceoptions {
flag all {
disable: false
}
}
}
}/*plumbing*/



<Config.boot>



If I ask the Multicast on the physical interface (em4) I can see the multicast with no problem.

But on the GRE00 interface  I can not see them. I mean, i see the IGMP requests comming from the DEBIAN server, and I see that for some seconds the GRE00 interface stays in the routing table of the XORP, but then it is deleted.
And that repeats itself everytime I ask the multicast on the Debian server, using the IGMP request.

Can you advise me of what can be happening?
Is there a way where I can force XORP to route always the multicast to the GRE00 interface?


Thanks in advanced....

Manuel Silva



More information about the Xorp-users mailing list