Tuesday, December 22, 2009

B.2 PIM Version 1 Packet Formats













B.2 PIM Version 1 Packet Formats


PIMv1 is the result of the collective work of Steve Deering, Deborah Estrin, Dino Farinacci, and Van Jacobsen. The packet formats are described in section 4 in the specification, which is included here in its entirety (it has been reformatted for consistency).


4 Packet Types


RFC-1112 specifies two types of IGMP packets for hosts and routers to convey multicast group membership and reachability information. An IGMP-Host-Query packet is transmitted periodically by routers to ask hosts to report which multicast groups they are members of. An IGMP-Host-Report packet is transmitted by hosts in response to received queries advertising group membership.


This document introduces new types of IGMP packets that are used by PIM routers. The packet format is shown in Figure 1


Figure 1. (Figure 8 in orig.) IGMP packet format




  • Version: This memo specifies version 1 of IGMP. Version 0 is specified in RFC-988 and is now obsolete.


  • Type: There are five types of IGMP messages:


    - 1 = Host Membership Query

    - 2 = Host Membership Report

    - 3 = Router DVMRP Messages

    - 4 = Router PIM Messages

    - 5 = Trace Messages


  • Code: Codes for specific message types. Used only by DVMRP and PIM. PIM codes are:


    - 0 = Router-Query

    - 1 = Register

    - 2 = Register-Stop

    - 3 = Join/Prune

    - 4 = RP-Reachability

    - 5 = Assert

    - 6 = Graft (dense-mode PIM only)

    - 7 = Graft-Ack (dense-mode PIM only)

    - 8 = Mode


  • Checksum: The checksum is the 16-bit one's complement of the one's complement sum of the entire IGMP message. For computing the checksum, the checksum field is zeroed.


  • Group Address: In a IGMP-Host-Query message, the group address field is zeroed when sent, ignored when received. In an IGMP-Host-Report message, the group address field holds the IP host group address of the group being reported. PIM-Join/Prune, PIM-Assert, and PIM-Mode messages have the group address field zeroed when sent to a point-to-point link and have the next-hop router address in it when sent to a multiaccess LAN. PIM-Register and Register-Stop messages have the group address field zeroed when sent. (See section 4.2 for RP-Reachability format.) PIM-Query message has the first 30 bits in the group address zeroed. The thirtieth bit carries the sparse mode reset flag, if 1, the modes of entries in the downstream routers are reset to periodic join mode. The thirty-first bit carries the mode of the interface where the PIM-Query is sent, if 1, the mode on the interface is configured as sparse mode only; if 0, the mode on the interface is configured as dense mode acceptable.



4.1 PIM-Join/Prune, PIM-Assert and PIM-Mode Messages

PIM-Join/Prune, PIM-Assert, and PIM-Mode messages have the following additional information appended to the fixed header (RP-Reachability message type will be described in section 4.2). The format of the additional information is shown in Figure 2


Figure 2. (Figure 9 in orig.) Additional packet format for PIM-Join/Prune




  • Reserved: Unused field, zeroed when sent, ignored when received.


  • Addr Length: The length in bytes of the encoded source addresses in the Join and Prune lists.


  • Maddr Length: The length in bytes of the encoded multicast addresses.


  • Number of Groups: The number of multicast group sets contained in the message.


  • Multicast group address: For IP, it is a 4-byte Class D address.


  • Multicast group address mask: A bit mask used against the multicast group address. This is the method to describe a range of multicast addresses. If the multicast group address field describes a single group address, the value must be 255.255.255.255.


  • Number of Join Sources: Number of join source addresses listed for a given group. For PIM-Assert message, this is the number of assert source addresses listed for a group. For PIM-Mode message, this is the number of source addresses listed for a group whose modes are changed.


  • Join Source Address-1 .. n: This list contains the sources that the sending router will forward multicast datagrams for if received on the interface this message is sent on. The address 0.0.0.0 indicates a Join for all sources.


  • Number of Prune Sources: Number of prune source addresses listed for a given group. PIM-Assert and PIM-Mode messages only use the join list, so the number of prune sources should always be 0.


  • Prune Source Address-1 .. n: This list contains the sources that the sending router does not want to forward multicast datagrams for when received on the interface this message is sent on. The address 0.0.0.0 indicates a prune for all sources.



4.1.1 Source Address Format

In PIM messages, all source addresses have the format shown in Figure 3


Figure 3. (Figure 10 in orig.) Source address format




  • Reserved: Unused field, zeroed when sent, ignored when received.


  • MD: Used when sending Mode messages. An upstream router indicates to downstream neighbor(s) if the specific group should operate in periodic join mode. If the bit is clear, the routers should operate in implicit join mode, which means they do not send periodic join messages to the upstream router. The Source Address should be set to 0.0.0.0 in Mode messages with the WC bit and RP bit set to 0 if wildcarding is used.




  • WC: The WC bit is a 1 bit value. If 1, the Join or Prune applies to the (*,G) entry. If 0, the Join or Prune applies to the (S,G) entry where S is Source Address. Joins and Prunes sent toward the RP should have this bit set.


  • RP: The RP bit is a 1 bit value. If 1, the information about (S,G) is sent toward the RP. If 0, the information should be sent about (S,G) toward S, where S is Source Address.


  • Mask Length: Mask length is 6 bits. The value is the number of contiguous bits left-justified used as a mask which describes the address. The mask length must be less than or equal to Addr Length * 8.


  • Source Address: The address length is indicated from the Addr Length field at the beginning of the header. For IP, the value is 4 octets. This address is either an RP address (WCbit = 1) or a source address (WCbit = 0). When it is a source address, it is coupled with the group address to make (S,G).



Represented in the form of <WCbit><RPbit><Mask length><Source address>:


A source address could be a host IP address :


< 0 >< 0 >< 32 >< 192.1.1.17 >


A source address could be the RP's IP address :


< 1 >< 1 >< 32 >< 131.108.13.111 >


A source address could be a subnet address to prune from the RP-tree :


< 0 >< 1 >< 28 >< 192.1.1.16 >


A source address could be a general aggregate :


< 0 >< 0 >< 16 >< 192.1.0.0 >




4.2 RP-Reachability Message

RP-Reachability messages have the packet format shown in Figure 4


Figure 4. (Figure 11 in orig.) RP-Reachability message packet format



Each RP will send RP-Reachability messages to all routers on its distribution tree for a particular group. These messages are sent so routers can detect that an RP is reachable. Routers that have attached host members for a group will process the message.


The RPs will address the RP-Reachability messages to 224.0.0.2.


Routers that have state for the group with respect to the RP distribution tree will propagate the message. Otherwise, the message is discarded. If an RP address timer expires, the router should attempt to send an PIM Join message toward an alternate RP provided for that group if one is available.



  • Group Address: Group address associated with RP.


  • Group Address Mask: A bit mask that allows the description of group ranges. Must be set to 255.255.255.255 when Group Address describes a single group address.


  • RP Address: The rendezvous point IP address of the sender.



Finally, in a future version of this document we will specify a new IGMP message type that allows hosts to advertise a list of 1 to n RP addresses associated with a particular group address.













    No comments: