[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