[Xorp-users] Problems with PIM-SSM

Daniel Camara danielcamara at gmail.com
Mon Aug 30 02:58:21 PDT 2010


Hi,

 I new using XORP, and I am with a small problem, probably is
something very stupid like a configuration or a routing missing, but I
really can not see it :(.   I have a simple scenario with two linux
machines, neighbor ones in the same network, connected by a cable.
This is a small part of a bigger scenario. However I cannot manage to
make a simple Multicast PIM-SSM data traffic to be received in clients
of these two machines.

The scenario is as follows:
+-----------+                                                    +----------+
| machine1 |---eth02---------------------eth0---| machine2 |
+-----------+192.168.14.1      192.168.14.53  +----------+

The two machines are connected directly by a cable and they can ping
each other. However when I start a multicast traffic, in any of them,
I can not see the data arriving in the client. I am using the same
commands as described in http://www.columbia.edu/~alan/igmp/#SSM.
The line of the data source is:

root at machine1# iperf -u -c 232.5.6.7 -p 8910 -T 10 -b 1 -i 5 -t 1200

The line used at the client is (code get from
http://www.columbia.edu/~alan/igmp/rtpqual.c):

root at machine1# ./rtpqual 192.168.14.1 at 232.5.6.7 8910

root at machine2# ./rtpqual 192.168.14.1 at 232.5.6.7 8910


I tried to put the server in both machines, the odd thing is that when
I start the server at the machine 2  the client in the same machine
sees and receives the data traffic, the client in the other machine
don't. When I start  the iperf in the machine 1, none of the clients
sees the traffic, not even the one in the same machine.  Other thing
that I perceived is that when I start the traffic in the machine 2,
the XORP in machine 1 receives the data packets, even before the
register of the client. The inverse is not true, when I start the
server in Machine 1 the XORP instance in machine 2 does not receive
anything.

To be honest I really don't understand why this happens.  Shouldn't
the traffic of PIM-SSM stop at the first router, at least until some
client in another machine requests for the traffic? Well, in this case
the first router is the one in the same machine of the server, isn't
it?  I will add the logs and configurations of the machines below to
try to give you a better view of what is going on.

But, just to summarize, the main questions are:
 1.  Why the membership requests, from machine 1, does not arrive
 2.  Why, even when the membership request arrives, the data does not
 3.  Why, when the server is in machine 2 the client is able to
receive the data from the local server, but not when the server in
machine 1, and even stranger, why when I put the server in machine 1,
not even its local client is able to register
 4.  Why when I add the server at machine 2, machine 1 is aware of the
traffic and when I put the server in machine 1, machine 2 is not aware
of the traffic, what was supposed to be the correct?
 5. As far as I know the PIM-SSM does not requires a Rendezvous  Point
(RP) but when  I remove it  a warning message appears  saying that the
traffic  over the 232.5.6.7 address has no RP, why this happens?  Will
I always need a RP? Isn't the communication direct, since it has the
Group and Server?


  Just now I perceived the size of the e-mail. I am  Sorry for this
but I tried to add as much information as possible. At least when I am
trying to help some one I normally think, the more information the
better.

  Thanks in advance.

  Best regards....

    Daniel Camara

----------------------------------------------------------------------------

XORP LOGS:
----------
Server in machine 1:
----------------------------------------
// machine1 XORP log - Server and Client
(...)
[ 2010/08/30 10:00:38 TRACE xorp_igmp MLD6IGMP ] RX
IGMP_V3_MEMBERSHIP_REPORT from 192.168.14.53 to 224.0.0.22 on vif eth2

// here we see that the membership report for the request from machine
2 arrives but no data arrives to the client

[ 2010/08/30 10:00:38 TRACE xorp_igmp MLD6IGMP ] Notify routing add
membership for (192.168.14.1, 232.5.6.7) on vif eth2
[ 2010/08/30 10:00:38 TRACE xorp_pimsm4 PIM ] Add membership for
(192.168.14.1, 232.5.6.7) on vif eth2
[ 2010/08/30 10:00:39 TRACE xorp_igmp MLD6IGMP ] RX
IGMP_V3_MEMBERSHIP_REPORT from 192.168.14.53 to 224.0.0.22 on vif eth2
(...)


// even the delete membership arrives for the client in machine2, but
no membership arrived for the client in the same machine

[ 2010/08/30 10:00:55 TRACE xorp_igmp MLD6IGMP ] Notify routing delete
membership for (192.168.14.1, 232.5.6.7) on vif eth2
[ 2010/08/30 10:00:55 TRACE xorp_pimsm4 PIM ] Delete membership for
(192.168.14.1, 232.5.6.7) on vif eth2

//--------------------------------------------------
// machine2 XORP log - Just client for this scenario
(...)

[ 2010/08/30 10:02:18 TRACE xorp_igmp MLD6IGMP ] RX
IGMP_V3_MEMBERSHIP_REPORT from 192.168.14.53 to 224.0.0.22 on vif eth0

// the route membership for the client in the machine 2

[ 2010/08/30 10:02:18 TRACE xorp_igmp MLD6IGMP ] Notify routing add
membership for (192.168.14.1, 232.5.6.7) on vif eth0
[ 2010/08/30 10:02:18 TRACE xorp_pimsm4 PIM ] Add membership for
(192.168.14.1, 232.5.6.7) on vif eth0
(...)
[ 2010/08/30 10:02:35 TRACE xorp_pimsm4 PIM ] Delete membership for
(192.168.14.1, 232.5.6.7) on vif eth0



-----------------------------------
// SECOND CASE, server in machine 2
//---------------------------------
//
// machine1 XORP log

(...)
[ 2010/08/30 09:43:34 TRACE xorp_pimsm4 PIM ] RX PIM_REGISTER from
192.168.14.53 to 192.168.14.1 on vif eth2
[ 2010/08/30 09:43:34 TRACE xorp_pimsm4 PIM ] Add MFC entry:
(192.168.14.53, 232.5.6.7) iif = 2 olist = ... olist_disable_wrongvif
= OOO
[ 2010/08/30 09:43:34 TRACE xorp_pimsm4 PIM ] RX NOCACHE signal from
MFEA_4: vif_index = 0 src = 192.168.14.53 dst = 232.5.6.7
[ 2010/08/30 09:43:34 TRACE xorp_pimsm4 PIM ] Add dataflow monitor:
source = 192.168.14.53 group = 232.5.6.7 threshold_interval_sec = 210
threshold_interval_usec = 0 threshold_packets = 0 threshold_bytes = 0
is_threshold_in_packets = 1 is_threshold_in_bytes = 0 is_geq_upcall =
0 is_leq_upcall = 1
(...)

 // membership for the client in machine 2

[ 2010/08/30 10:13:19 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from
192.168.14.1 to 224.0.0.13 on vif eth2
// start membership

[ 2010/08/30 09:43:46 TRACE xorp_pimsm4 PIM ] Add membership for
(192.168.14.53, 232.5.6.7) on vif eth2
[ 2010/08/30 09:43:46 TRACE xorp_pimsm4 PIM ] Add MFC entry:
(192.168.14.53, 232.5.6.7) iif = 0 olist = ... olist_disable_wrongvif
= OOO
[ 2010/08/30 09:43:46 TRACE xorp_pimsm4 PIM ] RX PIM_REGISTER from
192.168.14.53 to 192.168.14.1 on vif eth2
[ 2010/08/30 09:43:46 TRACE xorp_pimsm4 PIM ] RX WRONGVIF signal from
MFEA_4: vif_index = 2 src = 192.168.14.53 dst = 232.5.6.7
(...)
[ 2010/08/30 09:43:50 TRACE xorp_pimsm4 PIM ] Add dataflow monitor:
source = 192.168.14.53 group = 232.5.6.7 threshold_interval_sec = 210
threshold_interval_usec = 0 threshold_packets = 0 threshold_bytes = 0
is_threshold_in_packets = 1 is_threshold_in_bytes = 0 is_geq_upcall =
0 is_leq_upcall = 1
(...)

// delete membership for client in machine 2

[ 2010/08/30 09:44:28 TRACE xorp_igmp MLD6IGMP ] Notify routing delete
membership for (192.168.14.53, 232.5.6.7) on vif eth2
[ 2010/08/30 09:44:28 TRACE xorp_pimsm4 PIM ] Delete membership for
(192.168.14.53, 232.5.6.7) on vif eth2



//---------------------------------
// machine2 XORP log - Server in this case
(...)
[ 2010/08/30 10:15:13 TRACE xorp_pimsm4 PIM ] Add dataflow monitor:
source = 192.168.14.53 group = 232.5.6.7 threshold_interval_sec = 210
threshold_interval_usec = 0 threshold_packets = 0 threshold_bytes = 0
is_threshold_in_packets = 1 is_threshold_in_bytes = 0 is_geq_upcall =
0 is_leq_upcall = 1
(...)
// adding membership
[ 2010/08/30 10:15:17 TRACE xorp_igmp MLD6IGMP ] Notify routing add
membership for (192.168.14.53, 232.5.6.7) on vif eth0
[ 2010/08/30 10:15:17 TRACE xorp_pimsm4 PIM ] Add membership for
(192.168.14.53, 232.5.6.7) on vif eth0
(...)
// deleting membership
[ 2010/08/30 10:15:31 TRACE xorp_pimsm4 PIM ] Delete membership for
(192.168.14.53, 232.5.6.7) on vif eth0

------------------------------
The Machines configuration:
------------------------------

- The routing configuration is as follows:

root at machine1# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
239.0.0.1       0.0.0.0         255.255.255.255 UH    0      0        0 eth2
224.0.0.161     0.0.0.0         255.255.255.255 UH    0      0        0 eth0
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 nasmesh0
192.168.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
192.168.12.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.12.100  0.0.0.0         UG    0      0        0 eth0

root at machine2# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.14.0    0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.14.1    0.0.0.0         UG    0      0        0 eth0


- The configurations of the interfaces are as follows:

root at machine1# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1C:23:2B:A8:3C
          inet addr:z`  Bcast:192.168.12.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:136925059 errors:0 dropped:0 overruns:0 frame:0
          TX packets:68475707 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1378720974 (1.2 GB)  TX bytes:371923242 (354.6 MB)
          Interrupt:17

eth2      Link encap:Ethernet  HWaddr 00:18:4D:6E:D1:3D
          inet addr:192.168.14.1  Bcast:192.168.14.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6552371 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3509 errors:2 dropped:0 overruns:0 carrier:4
          collisions:0 txqueuelen:1000
          RX bytes:2895093950 (2.6 GB)  TX bytes:248299 (242.4 KB)
          Interrupt:18 Base address:0x2000
(...)
nasmesh0  Link encap:UNSPEC  HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.0.1.3  Bcast:10.0.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:15 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:772 (772.0 b)  TX bytes:1700 (1.6 KB)

pimreg    Link encap:UNSPEC  HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          UP RUNNING NOARP  MTU:1472  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1498 (1.4 KB)  TX bytes:0 (0.0 b)

root at machine2# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1c:23:5a:0a:eb
          inet addr:192.168.14.53  Bcast:192.168.14.255  Mask:255.255.255.0
          inet6 addr: fe80::21c:23ff:fe5a:aeb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1486231 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13125988 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2071741977 (2.0 GB)  TX bytes:539869744 (539.8 MB)
          Interrupt:17
(...)
pimreg    Link encap:UNSPEC  HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          UP RUNNING NOARP  MTU:1472  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


- The operation system used are:
root at machine1# uname -a
Linux smell-laptop 2.6.20 #2 SMP Fri May 7 18:02:41 CEST 2010 i686 GNU/Linux

root at machine2# uname -a
Linux marconi 2.6.29.4 #2 SMP PREEMPT Mon Jun 28 18:28:42 CEST 2010
i686 GNU/Linux

------------------
XORP configuration
------------------

The configuration files are as follows:
// Machine1

/* $XORP: multicastExample1.boot */

interfaces {
    interface eth2 {
    vif eth2 {
        address 192.168.14.1 {
        prefix-length: 24
        }
    }
    }
    interface nasmesh0 {
    vif nasmesh0 {
        address 10.0.1.3 {
        prefix-length: 24
        }
    }
    }

}

fea {
    unicast-forwarding4 {
    disable: false
    }
}

plumbing {
    mfea4 {
    interface eth2 {
        vif eth2 {
        disable: false
        }
    }

    interface nasmesh0 {
        vif nasmesh0 {
        disable: false
        }
    }

    interface register_vif {
        vif register_vif {
        /* Note: this vif should be always enabled */
        disable: false
        }
    }

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

protocols {
    igmp {
    interface eth2 {
        vif eth2 {
        version: 3
        disable: false
        }
    }
    interface nasmesh0 {
        vif nasmesh0 {
        version: 3
        disable: false
        }
    }


    traceoptions {
        flag all {
        disable: false
        }
    }

    }
}


protocols {
    pimsm4 {
    interface eth2 {
        vif eth2 {
        disable: false
        }
    }
    interface nasmesh0 {
        vif nasmesh0 {
        disable: false
        }
    }

    interface register_vif {
        vif register_vif {
        /* Note: this vif should be always enabled */
        disable: false
        }
    }

    /* Note: static-rps and bootstrap should not be mixed */
/*    static-rps {
        rp 10.0.1.1 {
        group-prefix 239.0.0.0/8 {
        }
        group-prefix 232.0.0.0/8 {
        }
        }
    }
*/
    static-rps {
        rp 192.168.14.1 {
        group-prefix 232.0.0.0/8 {
        }
        }
    }

    switch-to-spt-threshold {
        /* approx. 1K bytes/s (10Kbps) threshold */
        disable: false
        interval: 100
        bytes: 102400
    }


    traceoptions {
        flag all {
        disable: false
        }
    }

    }
}

protocols {
    fib2mrib {
    disable: false
    }
}

--------------------
// machine 2

/* $XORP: multicastExample1.boot */

interfaces {
    interface eth0 {
    vif eth0 {
        address 192.168.14.53 {
        prefix-length: 24
        }
    }
    }
}

fea {
    unicast-forwarding4 {
    disable: false
    }
}

plumbing {
    mfea4 {
    interface eth0 {
        vif eth0 {
        disable: false
        }
    }
    interface register_vif {
        vif register_vif {
        /* Note: this vif should be always enabled */
        disable: false
        }
    }

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

protocols {
    igmp {
	interface eth0 {
	    vif eth0 {
		version: 3
		disable: false
	    }
	}


	traceoptions {
	    flag all {
		disable: false
	    }
	}

    }
}

protocols {
    pimsm4 {
	interface eth0 {
	    vif eth0 {
		disable: false
	    }
	}
	interface register_vif {
	    vif register_vif {
		/* Note: this vif should be always enabled */
		disable: false
	    }
	}

	/* Note: static-rps and bootstrap should not be mixed */
/*	static-rps {
	    rp 10.0.1.1 {
		group-prefix 239.0.0.0/8 {
		}
		group-prefix 232.0.0.0/8 {
		}
	    }
	}
*/
	static-rps {
	    rp 192.168.14.1 {
		group-prefix 232.0.0.0/8 {
		}
	    }
	}

	switch-to-spt-threshold {
	    /* approx. 1K bytes/s (10Kbps) threshold */
	    disable: false
	    interval: 100
	    bytes: 102400
	}


	traceoptions {
	    flag all {
		disable: false
	    }
	}

    }
}

protocols {
    fib2mrib {
	disable: false
    }
}



More information about the Xorp-users mailing list