Bugzilla – Full Text Bug Listing |
Summary: | IPv4 multicast forwarding not going to all output interfaces in route | ||
---|---|---|---|
Product: | ns-3 | Reporter: | Ken Renard <kenneth.renard> |
Component: | internet | Assignee: | Tom Henderson <tomh> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | ns-bugs, tomh |
Priority: | P5 | Keywords: | bug |
Version: | pre-release | ||
Hardware: | All | ||
OS: | All | ||
Attachments: | Sample program to demonstrate multicast packets sent out on only 1 of N output interfaces |
Will commit something after testing. fixed in changeset 2666c1d862ef |
Created attachment 868 [details] Sample program to demonstrate multicast packets sent out on only 1 of N output interfaces ns-3.8 and potentially earlier In Ipv4L3Protocol::IpMulticastForward(), we loop around the output interfaces associated with this multicast route. However, after we hit the first valid output interface, we return instead of continuing to consider other output interfaces. This results in no more than 1 of the N outputInterfaces defined by the multicast route being used to forward a multicast packet. Looks like the same goes for Ipv6L3Protocol::IpMulticastForward (). An example network: // // n0 ====== n1 ====== n2 // | // ======n3 // // Multicast source is n0 // Multicast is forwarded by n1 to n2 and n3 // In this case, n1 has been assigned a multicast route from its interface to n0 that is forwarded out its interfaces to both n2 and n3. As seen in a resulting packet trace, the packet only shows up at n2 and not at n3. Attached sample program demonstrates this network. Simple patch that seems to work for me (will need to do something similar for IPv6): Index: ipv4-l3-protocol.cc =================================================================== --- ipv4-l3-protocol.cc (revision 469) +++ ipv4-l3-protocol.cc (working copy) @@ -755,7 +755,7 @@ rtentry->SetGateway (Ipv4Address::GetAny ()); rtentry->SetOutputDevice (GetNetDevice (i)); SendRealOut (rtentry, packet, h); - return; + continue; } } } Thanks! -Ken Renard