2010/04/14 Found a bug in the mrinfo
command:
For routers with a large number of interfaces and/or neighbors,
the
mrinfo reply may become quite big.
For each local address (= interface) there is a block of 12
bytes (if
there is at most one neighbor for this interface),
plus 4(n-1) bytes if there are n neighbors through this
interface
(switch connecting n+1 routers)
In addition there is the IP header (20 bytes) and the IGMP
header (8
bytes).
1) Case of Juniper routers: they build a single big IP packet
that is
fragmented by the sending interface
Since 122 interfaces give a packet of size 20
+ 8 +
122*12 = 1492,
more than 123 interfaces (or even less if there are switches)
will give rise to fragmentation.
Example: router 130.79.20.13 has a fragmented
output
PROBLEM: in some cases (at least on a BSD
host),
fragments are not
correctly reassembled by mrinfo, and the corresponding router is
"lost". This bug does not show up on mrinfo for MacOSX (probably
more
an OS bug
than a mrinfo bug?)
NOTE: it seems that Juniper behaviour is not
correct
according to
draft-ietf-idmr-dvmrp-v3-11(mrinfo messages are described in the
dvmrpv3 draft):
The maximum packet length of any DVMRP message should be the maximum
packet size required to be forwarded without fragmenting. The use of
Path MTU Discovery [Mogu90] is encouraged to determine this size. In
the absence of Path MTU, the Requirements for Internet Hosts [Brad89]
specifies this number as 576 octets.
2) Case of cisco routers
When the reply is too big, cisco routers
build
several packets,
according to the draft above. Since 45 interfaces take
20 + 8 + 45 * 12 = 568 bytes, routers with
more than
45 interfaces
(or less interfaces if there are switches) generate
several IGMP
packets.
Example: router 151.6.105.106 or 213.254.0.69
have
multipacket
replies
PROBLEM: There is no "continuation
flag" in
these messages, and
BSD (and MacOSX) implementation do not wait for additional
replies
Consequence : all big cisco routers are
truncated at
45 or less
interfaces (note that this bug does not show up if mrinfo is
executed
on a cisco router, one could launch the script from a
router :-))
COMMENT: looking back at our datasets, the consequences are that
the
"real" degree distribution is more heavy tailed than observed
since
Junipers with more than 122 interfaces and cisco with more than
45 are
not correctly mapped. Also this explain why most "big routers"
are
Juniper in our dataset.