Detailed look at EIGRP Neighbor Adjacency

In another lesson, I explained the different EIGRP packets and their function. In this lesson, we’ll take a close look at the EIGRP neighbor adjacency to see what exactly happens when EIGRP routers become neighbors. This is what happens when you enable EIGRP on two routers:

eigrp neighbor hello

We have two routers called R1 and R2, and they are configured for EIGRP. As soon as we enable it for the interface, they will start sending hello packets. In this example, R1 is the first router to send a hello packet.

eigrp neighbor hello update

As soon as R2 receives the hello packet from R1 it will respond by sending update packets that contain all the routing information that it has in its routing table. The only routes not sent on this interface are the ones that R2 learned on this interface because of split horizon. The update packet R2 will send has the initialization bit set, so we know this is the “initialization process.”  At this moment, there is still no neighbor adjacency until R2 has sent a hello packet to R1.

eigrp neighbor hello update hello

R1 is, of course, not the only one sending hello packets. As soon as R2 sends a hello packet to R1 we can continue to set up a neighbor adjacency.

eigrp neighbor ack

After both routers have exchanged hello packets, we will establish the neighbor adjacency. R1 will send an ACK to let R2 know he received the update packets. The routing information in the update packets will be saved in the EIGRP topology table.

eigrp neighbor update

R2 is anxious to receive routing information as well, so R1 will send update packets to R2, which will save this information in its EIGRP topology table.

eigrp neighbor ack return

After receiving the update packets, R2 will send an ACK back to R1 to let him know everything is ok.

Configuration

Want to see what this looks like on a real router? Let’s use the following topology and see what happens:

eigrp neighbor adjacency lab

This is the topology I’m going to use to configure EIGRP. My goal is to have full connectivity, and here are the configurations:

R1(config)#router eigrp 1
R1(config-router)#no auto-summary 
R1(config-router)#network 1.1.1.0 0.0.0.255
R1(config-router)#network 192.168.12.0
R1(config-router)#exit
R2(config)#router eigrp 1
R2(config-router)#no auto-summary 
R2(config-router)#network 2.2.2.0 0.0.0.255
R2(config-router)#network 192.168.12.0
R2(config-router)#exit

Let’s break this one down. Router eigrp 1 will start up EIGRP using AS (autonomous system) number 1. This number has to match on both routers, or we won’t become EIGRP neighbors.

No auto-summary is needed because, by default EIGRP will behave like a classful routing protocol which means it won’t advertise the subnet mask along the routing information. In this case, that means that 1.1.1.0/24 and 2.2.2.0/24 will be advertised as 1.0.0.0/8 and 2.0.0.0/8. Disabling auto-summary will ensure EIGRP sends the subnet mask along.

Network 1.1.1.0 0.0.0.255 means I’m advertising the 1.1.1.0 network with wildcard 0.0.0.255. If I don’t specify the wildcard, you’ll find “network 1.0.0.0” in your configuration. Does it matter? Yes and no. The same thing applies to “network 2.2.2.0 /24”. It will work but it also means that every interface that falls within the 1.0.0.0/8 or 2.0.0.0/8 range is going to run EIGRP. Network 192.168.12.0 without a wildcard mask is fine since I’m using a /24 on this interface which is Class C.

If you are working on a lab and are lazy, you can also type in network 0.0.0.0, which will activate EIGRP on all of your interfaces.

Let’s do a debug on R2 to see what is going on:

R2#debug eigrp packets ?
  SIAquery  EIGRP SIA-Query packets
  SIAreply  EIGRP SIA-Reply packets
  ack       EIGRP ack packets
  hello     EIGRP hello packets
  ipxsap    EIGRP ipxsap packets
  probe     EIGRP probe packets
  query     EIGRP query packets
  reply     EIGRP reply packets
  request   EIGRP request packets
  retry     EIGRP retransmissions
  stub      EIGRP stub packets
  terse     Display all EIGRP packets except Hellos
  update    EIGRP update packets
  verbose   Display all EIGRP packets
  <cr>

As you can see, we have many debug options for EIGRP. I want to see the hello packets:

R2#debug eigrp packets hello 
EIGRP Packets debugging is on
    (HELLO)

R2# EIGRP: Received HELLO on FastEthernet0/0 nbr 192.168.12.1
  AS 1, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

This is looking good. It seems we have received a hello packet from R1. R2 sends a hello packet to R1 as well:

R2# EIGRP: Sending HELLO on FastEthernet0/0
  AS 1, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0

A little later, we have an EIGRP neighbor adjacency:

R1# %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 192.168.12.2 (FastEthernet0/0) is up: new adjacency
R2# %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 192.168.12.1 (FastEthernet0/0) is up: new adjacency

If you look closely at the debug, you can see something interesting:

R2# EIGRP: Sending HELLO on Loopback0
AS 1, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0

EIGRP: Received HELLO on Loopback0 nbr 2.2.2.2
AS 1, Flags 0x0, Seq 0/0 idbQ 0/0

It seems R2 is schizophrenic and sending and receiving hello packets on its loopback interface.

This behavior is normal because the network command does two things:

  • Send EIGRP packets on the interface that falls within the network command range.
  • Advertise the network that is configured on the interface in EIGRP.

So what do you have to do when you want to advertise a network without sending EIGRP packets on the interface and forming EIGRP neighbors?

We're Sorry, Full Content Access is for Members Only...

If you like to keep on reading, Become a Member Now!

  • Learn any CCNA, CCNP and CCIE R&S Topic. Explained As Simple As Possible.
  • Try for Just $1. The Best Dollar You’ve Ever Spent on Your Cisco Career!
  • Full Access to our 804 Lessons. More Lessons Added Every Week!
  • Content created by Rene Molenaar (CCIE #41726)
478 Sign Ups in the last 30 days
satisfaction-guaranteed

  • 100% Satisfaction Guaranteed!
  • You may cancel your monthly membership at any time.
  • No Questions Asked!

Forum Replies

  1. Hi ,
    I did not understand this
    “As soon as router John receives the hello packet from Jack it will respond by sending update packets that contain all the routing information that it has in its routing table. The only routes that are not sent on this interface are the one that John learned on this interface because of split-horizon”

    router will send an UPDATE without forming a neighbor relationship??
    Jack has not shared any update to john, then how john will come to know the prefix of jack so there is no point of split horizon here.
    please correct me if am wrong…

  2. Hi Praveen,

    You would expect that the routers would send 1 hello, receive 1 hello and then exchange routing information but it’s not the way it works with EIGRP. Once an EIGRP-enabled router receives a hello packet, it will send an update packet. A good way to see this in action is to configure EIGRP on two routers and then use an inbound access-list on one router that filters traffic destined for 224.0.0.10. If you do this, one router will filter all hello packets and you’ll see that its neighbor will still send update packets.

    Forming the neighborship doesn’t

    ... Continue reading in our forum

  3. Hi Rene,

    On below config advertisement

    John(config)#router eigrp 1
    John(config-router)#no auto-summary 
    John(config-router)#network 2.2.2.0 0.0.0.255
    John(config-router)#network 192.168.12.0
    John(config-router)#exit
    

    if i add below config on it

    John(config)#router eigrp 1
    John(config-router)#passive-interface loopback 0
    

    That means traffic for network 2.2.2.0/24 and 192.168.12.0 won’t pass on interface loop back 0 ?

  4. Thank You very much Rene for a nice elaboration. kindly share also the detail on how redistribute and connected command work on EIGRP.

50 more replies! Ask a question or join the discussion by visiting our Community Forum