Subject: [magma] Checksum verification for IGMPv1 messages

From: Pavlin Radoslavov <[email-masked]>
Date: Wed, 12 Mar 2003 18:01:49 -0800

I have a question regarding the checksum verification for IGMPv1
messages by IGMPv2,v3 capable routers/hosts:

RFC 2236 (IGMPv2) and RFC 3376 (IGMPv3) say that:
<cite>
   The checksum is the 16-bit one's complement of the one's complement
   sum of the whole IGMP message (the entire IP payload).
</cite>

and

<cite RFC 2236>
   Note that IGMP messages may be longer than 8 octets, especially
   future backwards-compatible versions of IGMP.  As long as the Type is
   one that is recognized, an IGMPv2 implementation MUST ignore anything
   past the first 8 octets while processing the packet.  However, the
   IGMP checksum is always computed over the whole IP payload, not just
   over the first 8 octets.
</cite RFC 2236>

and

<cite RFC 3376>
   If the Packet Length field in the IP header of a received Query
   indicates that there are additional octets of data present, beyond
   the fields described here, IGMPv3 implementations MUST include those
   octets in the computation to verify the received IGMP Checksum, but
   MUST otherwise ignore those additional octets.
</cite RFC 3376>

However, RFC 1112 (IGMPv1) says:
<cite RFC 1112>
         The checksum is the 16-bit one's complement of the one's
         complement sum of the 8-octet IGMP message.
</cite RFC 1112>

Then, my question is:
If an IGMPv1 message is received (e.g., lets say by a multicast
router that implements IGMPv1,2,3, but is running in IGMPv1
compatibility mode on one of the interfaces), and somehow the
message is longer than 8 octets, should the checksum verification be
done:

 (a) over the whole IGMP message as specified in the IGMPv2 and v3
     specs?
 (b) only over the first 8 octets as specified in the IGMPv1 spec?
 (c) by using both lengths and accept the message if either checksum
     is valid (e.g., as a compromise, and an IGMPv1 backward-compatible
     solution)?

Thanks,
Pavlin
_______________________________________________
magma mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/magma

---

From: Bill Fenner <[email-masked]>
Date: Thu, 13 Mar 2003 11:47:07 -0800

Glib answer: if it's longer than 8 bytes, then it's not an IGMPv1 message.

  Bill

---

From: Erik Nordmark <[email-masked]>
Date: Sun, 16 Mar 2003 19:38:19 +0100 (CET)

>          complement sum of the 8-octet IGMP message.

Oops. But 1112 also allows for longer than 8 octet messages by saying:
	To be valid, the Query message
        must be at least 8 octets long, have a correct IGMP
        checksum and have an IP destination address of 224.0.0.1.

>      is valid (e.g., as a compromise, and an IGMPv1 backward-compatible

Are the implementations that do something other than (a)?
That is what all other protocols over IP do AFAIK (which is to checksum
to the end where the end is indicated by the IP length field).

  Erik