[Xorp-users] IGMP/PIM question ?
Vikram KAUL
vkaul at research.telcordia.com
Tue Jul 18 08:55:22 PDT 2006
Thanks for the responses. My comments interspersed...
pavlin>> In essence, I want to be able to run PIM (however ineffective it might
pavlin>> be) in an ad-hoc network where each router is a host as well. As a simple
pavlin>> setup, consider R1, R2, R3, R4 and R5 in a simple chain
pavlin>>
pavlin>> The config.boot is fairly simple on all 5 nodes, (it is the same
pavlin>> actually) with PIM and IGMP running on the single interface.
pavlin>
pavlin>When you say "PIM ... running on the single interface", do
pavlin>you mean that you have configured PIM-SM only on a single interface
pavlin>on each router?
Nope. I mean there exists only one interface and that is the interface on
which I have enabled PIM.
pavlin>
pavlin>You cannot use PIM-SM for any effective multicast forwarding with a
pavlin>single network interface. For example, every multicast forwarding
pavlin>entry (as installed in the kernel) has an incoming interface, and a
pavlin>set of outgoing interfaces. An incoming interface is automatically
pavlin>excluded from the oifs set. Hence, with a single enabled interface
pavlin>the oifs set is always empty.
pavlin>
But is that not controlled by the "oifs_ttl" in the MfeaNode::add_mfc()
function which first sets all oifs_ttl to ZERO and then after performing a
test on oiflist (oiflist.test(i)) mask, sets the TTL to MINTTL of 1.
And then the MfeaRouter::add_mfc() function is called to actually
implements the setsockopt() to tell the kernel about it.
In MfeaRouter::add_mfc() the first thing that is done is
oifs_ttl[iif_vif_index] = 0; // Pre-caution
This precludes the kernel from using the iff as one of the legitimate
interfaces for output.
What I wonder is if this "Pre-caution" statement were commented, would
that be sufficient for the kernel to use the iff as one of the oif ??
Or is it more compilcated where I have to look into the
XrlPimNode::add_mfc_to_kernel()
which invokes
XrlPimNode::send_add_delete_mfc()
which invokes
XrlMfeaNode::mfea_0_1_add_mfc4()
Essentially, where exactly is the first step where the iff_vif_index is
set to disable in the oiflist
Any pointers in this direction ?
pavlin>
pavlin>Are you using Linux?
pavlin>There is a bug in the Linux kernel such that when you start a local
pavlin>receiver on the multicast router, a bogus (S,G) upcall message
pavlin>(NOCACHE?) is generared to userland (XORP), and this triggers the
pavlin>generation of a (S,G) routing entry. This entry should be harmless,
pavlin>but its generation/existence could be confusing, because such
pavlin>upcalls should be generated only when there is data traffic.
Yes I am using Linux Kernel 2.6.9. I know it is relatively old, but that
is what I have to work with. Alright, I will not concentrate on this bogus
(S,G) entry from now on.
pavlin>
pavlin>A PIM Join toward the RP (R4) should have been generated
pavlin>though. Could you send the output of the following commands:
pavlin>
pavlin> show pim join
pavlin> show pim mrib
pavlin> show pim interface
pavlin> show pim neighbors
pavlin> show pim rps
pavlin> show igmp group
I have attached the following txt files:
xorpsh_before_receiver-app-started.txt
xorp_after_receiver-app-started.txt
xorpsh_after_receiver-app-started.txt
xorp_after_receiver-app-stopped.txt
xorpsh_after_receiver-app-stopped.txt
regards..
Vikram
pavlin>
pavlin>Regards,
pavlin>Pavlin
pavlin>
pavlin>> path available and ready. Subsequent kill and restarts of the
pavlin>> receiver-applications merely add_memberships and delete_memberships, but
pavlin>> no PIM joins are initiated from R1 towards R4 via R2 and R3
pavlin>>
pavlin>> There are issues with the register as well, but let me resolve this one
pavlin>> issue at a time.
pavlin>>
pavlin>> If someone needs, I could send in logs, etc of the debug statements and
pavlin>> outputs of "show pim mfc" etc
pavlin>>
pavlin>> Please advise
pavlin>>
pavlin>> regards..
pavlin>> vikram
pavlin>
-------------- next part --------------
root at mobile17>
root at mobile17> show pim interface
Interface State Mode V PIMstate Priority DRaddr Neighbors
vf0 UP Sparse 2 NotDR 1 192.168.100.21 1
register_vif UP Sparse 2 DR 1 192.168.100.17 0
root at mobile17> show pim neighbors
Interface DRpriority NeighborAddr V Mode Holdtime Timeout
vf0 1 192.168.100.21 2 Sparse 105 80
root at mobile17> show pim rps
RP Type Pri Holdtime Timeout ActiveGroups GroupPrefix
192.168.100.21 static 192 -1 -1 0 224.0.0.0/4
root at mobile17> show igmp group
Interface Group Source LastReported Timeout
vf0 224.0.0.2 0.0.0.0 192.168.100.17 240
vf0 224.0.0.13 0.0.0.0 192.168.100.17 236
root at mobile17> show pim mrib
DestPrefix NextHopRouter VifName VifIndex MetricPref Metric
0.0.0.0/0 192.168.100.254 vf0 0 254 65535
192.168.100.0/24 192.168.100.17 vf0 0 0 0
192.168.100.17/32 0.0.0.0 vf0 0 254 65535
192.168.100.21/32 0.0.0.0 vf0 0 254 65535
root at mobile17> show pim join
Group Source RP Flags
root at mobile17>
-------------- next part --------------
root at mobile17> show igmp group
Interface Group Source LastReported Timeout
vf0 224.0.0.2 0.0.0.0 192.168.100.17 147
vf0 224.0.0.13 0.0.0.0 192.168.100.17 142
root at mobile17>
root at mobile17>
root at mobile17> show pim mfc
Group Source RP
224.5.6.7 192.168.100.17 192.168.100.21
Incoming interface : vf0
Outgoing interfaces: ..
root at mobile17>
root at mobile17> show pim join
Group Source RP Flags
224.5.6.7 192.168.100.17 192.168.100.21 SG DirectlyConnectedS
Upstream interface (S): vf0
Upstream interface (RP): vf0
Upstream MRIB next hop (RP): 192.168.100.21
Upstream MRIB next hop (S): UNKNOWN
Upstream RPF'(S,G): UNKNOWN
Upstream state: NotJoined
Register state: RegisterNoinfo RegisterNotCouldRegister
Join timer: -1
KAT(S,G) running: true
Local receiver include WC: ..
Local receiver include SG: ..
Local receiver exclude SG: ..
Joins RP: ..
Joins WC: ..
Joins SG: ..
Join state: ..
Prune state: ..
Prune pending state: ..
I am assert winner state: ..
I am assert loser state: ..
Assert winner WC: ..
Assert winner SG: ..
Assert lost WC: ..
Assert lost SG: ..
Assert lost SG_RPT: ..
Assert tracking SG: ..
Could assert WC: ..
Could assert SG: ..
I am DR: .O
Immediate olist RP: ..
Immediate olist WC: ..
Immediate olist SG: ..
Inherited olist SG: ..
Inherited olist SG_RPT: ..
PIM include WC: ..
PIM include SG: ..
PIM exclude SG: ..
root at mobile17>
root at mobile17>
-------------- next part --------------
root at mobile17>
root at mobile17> show pim interface
Interface State Mode V PIMstate Priority DRaddr Neighbors
vf0 UP Sparse 2 NotDR 1 192.168.100.21 1
register_vif UP Sparse 2 DR 1 192.168.100.17 0
root at mobile17>
root at mobile17>
root at mobile17> show pim neighbors
Interface DRpriority NeighborAddr V Mode Holdtime Timeout
vf0 1 192.168.100.21 2 Sparse 105 88
root at mobile17>
root at mobile17> show pim rps
RP Type Pri Holdtime Timeout ActiveGroups GroupPrefix
192.168.100.21 static 192 -1 -1 1 224.0.0.0/4
root at mobile17>
root at mobile17> show igmp group
Interface Group Source LastReported Timeout
vf0 224.0.0.2 0.0.0.0 192.168.100.17 173
vf0 224.0.0.13 0.0.0.0 192.168.100.17 48
vf0 224.5.6.7 0.0.0.0 192.168.100.17 181
root at mobile17>
root at mobile17>
root at mobile17> show pim mrib
DestPrefix NextHopRouter VifName VifIndex MetricPref Metric
0.0.0.0/0 192.168.100.254 vf0 0 254 65535
192.168.100.0/24 192.168.100.17 vf0 0 0 0
192.168.100.17/32 0.0.0.0 vf0 0 254 65535
192.168.100.21/32 0.0.0.0 vf0 0 254 65535
root at mobile17>
root at mobile17>
root at mobile17> show pim mfc
Group Source RP
224.5.6.7 192.168.100.17 192.168.100.21
Incoming interface : vf0
Outgoing interfaces: ..
root at mobile17>
root at mobile17> show pim join
Group Source RP Flags
224.5.6.7 0.0.0.0 192.168.100.21 WC
Upstream interface (RP): vf0
Upstream MRIB next hop (RP): 192.168.100.21
Upstream RPF'(*,G): 192.168.100.21
Upstream state: NotJoined
Join timer: -1
Local receiver include WC: O.
Joins RP: ..
Joins WC: ..
Join state: ..
Prune state: ..
Prune pending state: ..
I am assert winner state: ..
I am assert loser state: ..
Assert winner WC: ..
Assert lost WC: ..
Assert tracking WC: ..
Could assert WC: ..
I am DR: .O
Immediate olist RP: ..
Immediate olist WC: ..
Inherited olist SG: ..
Inherited olist SG_RPT: ..
PIM include WC: ..
224.5.6.7 192.168.100.17 192.168.100.21 SG DirectlyConnectedS
Upstream interface (S): vf0
Upstream interface (RP): vf0
Upstream MRIB next hop (RP): 192.168.100.21
Upstream MRIB next hop (S): UNKNOWN
Upstream RPF'(S,G): UNKNOWN
Upstream state: NotJoined
Register state: RegisterNoinfo RegisterNotCouldRegister
Join timer: -1
KAT(S,G) running: true
Local receiver include WC: O.
Local receiver include SG: ..
Local receiver exclude SG: ..
Joins RP: ..
Joins WC: ..
Joins SG: ..
Join state: ..
Prune state: ..
Prune pending state: ..
I am assert winner state: ..
I am assert loser state: ..
Assert winner WC: ..
Assert winner SG: ..
Assert lost WC: ..
Assert lost SG: ..
Assert lost SG_RPT: ..
Assert tracking SG: ..
Could assert WC: ..
Could assert SG: ..
I am DR: .O
Immediate olist RP: ..
Immediate olist WC: ..
Immediate olist SG: ..
Inherited olist SG: ..
Inherited olist SG_RPT: ..
PIM include WC: ..
PIM include SG: ..
PIM exclude SG: ..
root at mobile17>
-------------- next part --------------
[ 2006/07/18 11:42:06 TRACE xorp_igmp MLD6IGMP ] RX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.5.6.7 on vif vf0
[ 2006/07/18 11:42:07 TRACE xorp_igmp MLD6IGMP ] TX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.5.6.7
[ 2006/07/18 11:42:07 TRACE xorp_igmp MLD6IGMP ] RX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.5.6.7 on vif vf0
[ 2006/07/18 11:42:08 TRACE xorp_pimsm4 PIM ] Delete membership for (0.0.0.0, 224.5.6.7) on vif vf0
[ 2006/07/18 11:42:11 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:42:14 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:42:41 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:42:44 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:43:11 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:43:14 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:43:31 TRACE xorp_igmp MLD6IGMP ] TX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.0.0.1
[ 2006/07/18 11:43:31 TRACE xorp_igmp MLD6IGMP ] RX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.0.0.1 on vif vf0
[ 2006/07/18 11:43:34 WARNING xorp_fea MFEA ] proto_socket_read() failed: RX packet from 192.168.100.21 to 224.0.0.1: no vif found
[ 2006/07/18 11:43:41 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:43:44 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:44:11 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:44:14 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:44:41 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:44:44 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:45:11 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:45:14 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:45:24 TRACE xorp_fea MFEA ] RX dataflow message: src = 192.168.100.17 dst = 224.5.6.7
[ 2006/07/18 11:45:24 TRACE xorp_pimsm4 PIM ] RX DATAFLOW signal: source = 192.168.100.17 group = 224.5.6.7 threshold_interval_sec = 210 thr eshold_interval_usec = 0 measured_interval_sec = 210 measured_interval_usec = 0 threshold_packets = 0 threshold_bytes = 0 measured_packets = 0 measured_bytes = 0 is_threshold_in_packets = 1 is_threshold_in_bytes = 0 is_geq_upcall = 0 is_leq_upcall = 1
[ 2006/07/18 11:45:24 TRACE xorp_pimsm4 PIM ] Delete MFC entry: (192.168.100.17, 224.5.6.7) iif = 0 olist = ..
[ 2006/07/18 11:45:24 TRACE xorp_fea MFEA ] Delete MFC entry: (192.168.100.17, 224.5.6.7)
[ 2006/07/18 11:45:36 TRACE xorp_igmp MLD6IGMP ] TX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.0.0.1
[ 2006/07/18 11:45:36 TRACE xorp_igmp MLD6IGMP ] RX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.0.0.1 on vif vf0
[ 2006/07/18 11:45:39 WARNING xorp_fea MFEA ] proto_socket_read() failed: RX packet from 192.168.100.21 to 224.0.0.1: no vif found
[ 2006/07/18 11:45:41 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:45:44 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:46:11 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:46:14 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
-------------- next part --------------
[ 2006/07/18 11:35:44 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:36:11 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:36:14 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:36:39 TRACE xorp_fea MFEA ] RX kernel signal: message_type = 1 vif_index = 0 src = 192.168.100.17 dst = 224.5.6.7
[ 2006/07/18 11:36:39 TRACE xorp_igmp MLD6IGMP ] RX IGMP_V2_MEMBERSHIP_REPORT from 192.168.100.17 to 224.5.6.7 on vif vf0
[ 2006/07/18 11:36:39 TRACE xorp_pimsm4 PIM ] RX NOCACHE signal from MFEA_4: vif_index = 0 src = 192.168.100.17 dst = 224.5.6.7
[ 2006/07/18 11:36:39 TRACE xorp_pimsm4 PIM ] Add MFC entry: (192.168.100.17, 224.5.6.7) iif = 0 olist = .. olist_disable_wrongvif = OO
[ 2006/07/18 11:36:39 TRACE xorp_pimsm4 PIM ] Add dataflow monitor: source = 192.168.100.17 group = 224.5.6.7 threshold_interval_sec = 210 t hreshold_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
[ 2006/07/18 11:36:39 TRACE xorp_pimsm4 PIM ] Add membership for (0.0.0.0, 224.5.6.7) on vif vf0
[ 2006/07/18 11:36:39 TRACE xorp_fea MFEA ] Add MFC entry: (192.168.100.17, 224.5.6.7) iif = 0 olist = ..
[ 2006/07/18 11:36:41 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:36:44 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:36:48 TRACE xorp_igmp MLD6IGMP ] RX IGMP_V2_MEMBERSHIP_REPORT from 192.168.100.17 to 224.5.6.7 on vif vf0
[ 2006/07/18 11:36:56 TRACE xorp_igmp MLD6IGMP ] RX IGMP_V2_MEMBERSHIP_REPORT from 192.168.100.17 to 224.5.6.7 on vif vf0
[ 2006/07/18 11:37:11 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:37:14 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:37:16 TRACE xorp_igmp MLD6IGMP ] TX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.0.0.1
[ 2006/07/18 11:37:16 TRACE xorp_igmp MLD6IGMP ] RX IGMP_MEMBERSHIP_QUERY from 192.168.100.17 to 224.0.0.1 on vif vf0
[ 2006/07/18 11:37:17 TRACE xorp_igmp MLD6IGMP ] RX IGMP_V2_MEMBERSHIP_REPORT from 192.168.100.17 to 224.0.0.2 on vif vf0
[ 2006/07/18 11:37:19 WARNING xorp_fea MFEA ] proto_socket_read() failed: RX packet from 192.168.100.21 to 224.0.0.1: no vif found
[ 2006/07/18 11:37:25 TRACE xorp_igmp MLD6IGMP ] RX IGMP_V2_MEMBERSHIP_REPORT from 192.168.100.17 to 224.5.6.7 on vif vf0
[ 2006/07/18 11:37:41 TRACE xorp_pimsm4 PIM ] TX PIM_HELLO from 192.168.100.17 to 224.0.0.13 on vif vf0
[ 2006/07/18 11:37:44 TRACE xorp_pimsm4 PIM ] RX PIM_HELLO from 192.168.100.21 to 224.0.0.13 on vif vf0
More information about the Xorp-users
mailing list