Wednesday, November 23, 2011

EIGRP Packet Format

EIGRP sends out the following 5 types of packets:

Hello Used to discovery neighbor before establishing adjacency. EIGRP Hellos are sent as multicasts and contain an acknowledgment number of 0. EIGRP routers must form neighbor relationships before exchanging EIGRP updates.
Update Used to communicate the routes that a particular router has used to converge. EIGRP Updates are sent as multicasts when a new route is discovered or when convergence is completed (the route becomes passive); and are sent as unicasts when synchronizing topology tables with neighbors upon the EIGRP startup. They are sent reliably between EIGRP routers.
Query Used to query other EIGRP neighbors for a feasible successor when DUAL is re-computing a route in which the router does not have a feasible successor. EIGRP Queries are sent reliably as multicasts.
Reply Sent as the response to an EIGRP Query packet. EIGRP Replies are sent reliably as unicasts.
Acknowledge Used to acknowledge EIGRP Updates, Queries, and Replies; Hello and ACK packets do not require acknowledgment. ACKs are Hello packets that contain no data and a non-zero acknowledgment number and are sent as unicasts.

An EIGRP router sends Hello packets out all EIGRP-enabled interfaces. The EIGRP multicast address is 224.0.0.10. An EIGRP router only establishes neighbor relationships (adjacencies) with other routers within the same autonomous system.

EIGRP Hello packets are sent every 5 seconds on LANs (eg: Ethernet, Token Ring, and FDDI) and point-to-point links (eg: PPP, HDLC, Frame Relay and ATM point-to-point subinterfaces, and multipoint circuits with bandwidth greater than T1 (eg: ISDN PRI, ATM, and Frame Relay), and 60 seconds on T1 or low-speed interfaces (eg: ISDN BRI, X.25, ATM, and Frame Relay). The ip hello-interval eigrp {as-num} {sec} interface subcommand configures the Hello interval for an EIGRP routing process running upon an interface.

The EIGRP neighbor table also maintains the hold time – the amount of time a router considers a neighbor is up without receiving a Hello or any EIGRP packet from the particular neighbor. The ip hold-time eigrp {as-num} {sec} interface subcommand configures the hold time interval for an EIGRP routing process. The hold time interval is recommended to be at least 3 times the Hello interval. In fact, the hold time interval is 3 times the Hello interval by default. The hold time interval is not automatically adjusted upon the change of the Hello interval. Once the Hello interval is changed, the hold time interval must be manually configured according to the new Hello interval.
Note: The newly configured hold time value affects neighbor routers instead of local router! Verify the newly configured hold time interval with the show ip eigrp neighbors EXEC command on neighbor routers. The hold time value is a parameter in the Hello packet; therefore a neighbor router which receives the Hello packet will be in effect.

If an EIGRP packet is not received before the expiration of the hold time interval, the neighbor adjacency is deleted, and all topology table entries learnt from the neighbor will be removed, as well as send out an update indicating that the routes are unreachable. If the neighbor is a successor for some destination networks, those networks are removed from the routing table, and alternative paths will be recomputed via DUAL.

A route is considered passive when the router is not performing recomputation for that route; while a route is considered active when the router is performing recomputation to seek for a new successor when the existing successor has become invalid.

EIGRP Packet Format

The EIGRP header comprises of the following fields:

Field
Description
Version Identifies the EIGRP process version. The current EIGRP version is 2.
Opcode Identifies the EIGRP packet type – Update (0x01), Query (0x03), Reply (0x04), Hello (0x05). It determines the TLVs that follow the EIGRP header.
Note: ACKs are Hello packets that contain a non-zero ACK number.
Checksum The checksum of the entire EIGRP packet, excluding the IP header.
Flags 1st LSB bit (0x00000001) – Init bit, used indicate the first set of routing updates upon establishing a new neighbor relationship.
2nd LSB bit (0x00000002) – Conditional Receive bit, used in the Cisco-proprietary reliable multicast protocol – Reliable Transport Protocol (RTP). Other bits are not being used.
SEQ and ACK Used by RTP for reliable EIGRP message exchange.
AS Number Identifies the autonomous system of an EIGRP packet. An EIGRP process only process EIGRP packets within an EIGRP domain (same AS number).
Type / Length / Value (TLV) TLVs are comprise of a 16-bit Type field, a 16-bit Length field, and a vary number of fields depends on the type of TLV.
General TLVs:
0x0001 – EIGRP parameters – K values and hold time. Size of 12 bytes.
0x0002 – Message Digest 5 (MD5) authentication data. Size of 40 bytes.
0x0003 – Sequence. Used by RTP.
0x0004 – Software versions – IOS and EIGRP release versions. Size 8 bytes.
0x0005 – Next Multicast Sequence. Used by RTP.
0x0006 – EIGRP stub parameters.
IP TLVs:
0x0102 – IP internal route. Size of 28 bytes.
0x0103 – IP external route. Size of 48 bytes.

An internal route contains a destination network within an EIGRP domain; while an external route contains a destination network outside an EIGRP domain, eg: redistributed routes from other routing processes into an EIGRP domain.

EIGRP IP internal routes have a Type field of 0x0102. EIGRP metric information is similar to IGRP, with 2 new fields – Next Hop, which can specify a different next-hop router than the advertising router to send packets destined to the Destination/Prefix Length; and Prefix Length (for VLSM support). The TLV triplets Value fields contain the information as in the figure below.

EIGRP IP Internal Route Packet Format

In IGRP, when RT2 sends an update to RT1 with a destination network number 10.0.0.0, the next-hop of RT1 to the 10.0.0.0 network is RT2. With EIGRP, RT2 can send an update to RT1 with a Next Hop field of RT3. Ex: RT2 and RT3 are running RIP and RT2 is redistributing RIP routes into EIGRP. When RT2 sends an update to its neighbors on a shared network, RT2 can tell them (RT1) to send traffic directly to RT3 instead of RT2. This saves RT2 from having to accept and reroute the packets to RT3. Note: This setup is not being verified yet!

EIGRP IP External Route Packet Format

The Originating Router, Originating AS, External Protocol Metric, and External Protocol ID fields specify the information about the source (router and routing protocol) from which an external route is derived. The common external routing protocol identifiers are 0x01 – IGRP, 0x02 – EIGRP (from different AS), 0x03 – Static Route, 0x04 – RIP, 0x06 – OSPF, 0x07 – IS-IS, 0x08 – EGP, 0x09 – BGP, 0x0A – ISO IDRP, and 0x0B – directly connected link.
Note: The Inter-Domain Routing Protocol (IDRP) which is defined for OSI-based environments is similar to Border Gateway Protocol (BGP) in the TCP/IP environments. Cisco IOS Software does not support IDRP!
Note: The eigrp router-id {ip-addr} EIGRP router subcommand configures the Router ID for an EIGRP router. However, the EIGRP show commands seldom display the Router ID. The EIGRP Router ID is used only when redistributing external routes into EIGRP.

The Arbitrary Tag field is used to carry a tag set by route maps – route tagging.

A delay of 0xFFFFFFFF or 4294967295 (infinite distance) indicates an unreachable route.

1 comment:

  1. Thanks for explaining in very nicely manner. EIGRP Packet in so much detail. Well done!! Great Job...

    ReplyDelete