Saturday, March 15, 2014

EIGRP Intro


Lessons Learned:

 

HYBRID IGP  

-Properties of both link-state and distance vector

-forms active adjacencies but still uses split-horizon (link state)

-Dual, guaranteed loop free but still “routing by rumor” (split-horizon)

 

Uses its own transport protocol

-IP Protocol 88

-Multicast to 224.0.0.10 to establish adjacencies

-unicast and multicast to synchronize the topology

 

--------------------------------------------------------------------- 

 

EIGRP –

Not as complicated as OSFP and BGP but more complicated than RIP. Is still considered a distance vector because it uses properties like Split-horizon and it doesn’t have an overall view of the entire network like OSPF.

It also only forms adjacencies with its connected neighbors. Must make sure protocol 88 is allowed between neighbor to form adjacencies.

 

Note: By default EIGRP uses multicast to form neighbors – beyond that most communication will be unicast to sycn topology. Multicast will be used for incremental updates.

If there is acls between neighbors we would need to permit the IP protocol and the multicast address.

 

ENABLE EIGRP:

#Router eigrp (AS #)

AS number must match to be adjacent

 

Enable the interface process

#network (address) (wildcard) – similar to OSPF network statement.
Note: If you enter the network statement under the interface then add the subnet instead of an wildcard mask. The IOS parser will convert that to a wildcard mask. EIGRP can run multiple processes globally on a single router.

 

The most accurate way would be to match the actual address. Example: if I have an address of 192.168.5.5 and I enter that into EIGRP as, “network 192.168.5.5 0.0.0.0” this does not mean I just entered a /32 address it means I’m now running and forming adjacencies on any interface with that specific address. The interface has the protocol running on it. Every router must agree on the AS number to form and adjacency.

 

EIGRP can run multiple processes in the global routing table. The AS # is significant throughout the entire network.

Once enabled -
we can verify EIGRP enabled:

# sh ip protocols  - will show what links the process is running on.

#sh ip eigrp interfaces detail – will show the timers, adj and attributes on a per link basis.


Verify EIGRP Transport.

#debug eigrp packet (hello | ACK | updates | query | reply )

 

Note: use this output for debugging eigrp, debug eigrp packet  – NOT – debug IP EIGRP. Even though EIGRP is an IP based protocol, EIGRP was originally written to route multiple protocol stacks. Ipv4 , IPX and AppleTalk.

Debug eigrp is specific to the multiprotocol process

Debug IP eigrp – is specific to the IPv4

 

Note: the establishment of the EIGRP adjacency is independent of IPv4.

 

Verifying EIGRP neighbors:

#sh ip eigrp neighbors (detail)

 

Note: Queue count shout be at 0 if converged. This indicates how many updates are waiting in the queue waiting to be sent to the neighbor. If this is anything but 0 the routes are in the process of converting. Also means there’s an issue with the adjacency.

 

Verify EIGRP topology one adjaceny’s have formed.

#sh ip eigrp topology (all-links)

#sh ip eigrp topology (prefix/len)

 

Note: In EIGRP – similar to BGP - we only advertise the paths EIGRP is actually using. Unlike OSPF which will advertise every possible link in the network.

 

EIGRP will only advertise the routes that will be actively installed in the routing table. If there’s a case where there’s a routing in the topology but not in the routing table, it means that particular prefix cannot be advertised (same for RIP).

 

Note: in EIGP if the feasible distance is “inaccessible” for a particular prefix, it means for some reason it wi not getting installed in the routing table. Which mean then the route cannot be advertised.

 

 

LAB:

Show commands and verifications:

 



 

Configure EIGRP on all interfaces:

You could configure EIGRP on any interface in the network with the command

Network 0.0.0.0 255.255.255.255 = any interface that has an IP Address.

The problem with this is if we add another interface later – a loopback for testing – it will automatically be installed into the EIGRP process. In a production network you want as much control as possible.

 

#Sh ip eigrp interfaces  - Will show which interface the process is enabled on.

 

IP-EIGRP interfaces for process 550

                        Xmit Queue   Mean   Pacing Time   Multicast    Pending

Interface        Peers  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes

Fa0/0              2        0/0      1305       0/1         7736           0

Fa0/1              2        0/0       642       0/1         3848           0

R3#

 

Peers = The number of peers that are on the interface. So off interfaces FA0/0 and 0/1 there are two peers each speaking EIGRP.

 

 

Note: We can get more information by adding the keyword “detail”

R3#sh ip eigrp interfaces detail

 

IP-EIGRP interfaces for process 550

                        Xmit Queue   Mean   Pacing Time   Multicast    Pending

Interface        Peers  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes

 

Fa0/0              2        0/0      1305       0/1         7736           0

  Hello interval is 5 sec   = Show the hello onterval

  Next xmit serial <none>

  Un/reliable mcasts: 0/1  Un/reliable ucasts: 6/6

  Mcast exceptions: 2  CR packets: 1  ACKs suppressed: 0

  Retransmissions sent: 0  Out-of-sequence rcvd: 0

  Authentication mode is not set  -- Show the Auth mode is not set, so we’re not running MD5

  Use multicast                                      -- Says we CAN use multilink on this interface

Note: For A LAN interface we should be using Multicast because there’s more than one neighbor.

 

 

Fa0/1              2        0/0       642       0/1         3848           0

  Hello interval is 5 sec

  Next xmit serial <none>

  Un/reliable mcasts: 0/1  Un/reliable ucasts: 5/7

  Mcast exceptions: 2  CR packets: 1  ACKs suppressed: 0

  Retransmissions sent: 1  Out-of-sequence rcvd: 0

  Authentication mode is not set

  Use multicast

R3#

 

Note: the key is we need both the multicast and unicast transport for the adjacencies to establish. If we were to filter out the unicast we would see the adjacencies form but the topology’s would not sync and we would not have routes in the routing table.

 

R3#sh ip eigrp neighbors

IP-EIGRP neighbors for process 550

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

                                            (sec)         (ms)       Cnt Num

3   192.168.123.2           Fa0/1             12 00:15:57   24   200  0  6

2   192.168.45.4            Fa0/0             13 00:15:57 1312  5000  0  6

1   192.168.123.1           Fa0/1             14 00:15:57 1261  5000  0  6

0   192.168.45.5            Fa0/0             13 00:15:57 1299  5000  0  6

R3#

 

From the IP EIGRP Neighbors command:

We can see the neighbors addresses, what are the interfaces that they’re running on. What is the hold time that is left  - whether to declare the neighbor down.

Most importantly what is the queue count. If the Queue count is “0”, it means the adjacencies are converged.

Normally when the Queue count is not “0” there’s a transport issue between the neighbors. There’s a K value mismatch, ACL, etc between the neighbors.

 

Debug eigrp packet.

 

This is a good verification that there’s good bi-directional traffic between the neighbors.

 

R3#debug eigrp packet

EIGRP Packets debugging is on                                                   

    (UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)

R3#

*Mar  1 01:15:17.131: EIGRP: Received HELLO on FastEthernet0/1 nbr 192.168.123.1

*Mar  1 01:15:17.135:   AS 550, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

*Mar  1 01:15:17.819: EIGRP: Received HELLO on FastEthernet0/0 nbr 192.168.45.4

*Mar  1 01:15:17.819:   AS 550, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

*Mar  1 01:15:18.119: EIGRP: Received HELLO on FastEthernet0/1 nbr 192.168.123.2

*Mar  1 01:15:18.123:   AS 550, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

R3#

*Mar  1 01:15:19.323: EIGRP: Sending HELLO on FastEthernet0/1

*Mar  1 01:15:19.327:   AS 550, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0

*Mar  1 01:15:19.427: EIGRP: Received HELLO on FastEthernet0/0 nbr 192.168.45.5

*Mar  1 01:15:19.431:   AS 550, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

*Mar  1 01:15:19.543: EIGRP: Sending HELLO on FastEthernet0/0

*Mar  1 01:15:19.543:   AS 550, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0

 

Shows the sending and receiving the interfaces. Once the adjacencies are establish then the routers will exchange the topology information and run the DUAL calculation and decide on how to route the traffic.

 

Sh IP eigrp topology

 

R3#sh ip eigrp topology

IP-EIGRP Topology Table for AS(550)/ID(34.34.34.34)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

       r - reply Status, s - sia Status

 

P 192.168.123.0/24, 1 successors, FD is 28160

        via Connected, FastEthernet0/1

P 192.168.45.0/24, 1 successors, FD is 28160

        via Connected, FastEthernet0/0

R3#

 

Note: This command will show all the current routes that can be used to reach the destinations.

This doesn’t mean all these links will be installed into the routing table.

Normally only the prefix that has the lowest feasible distance – which is the composite metric value – is going to be installed into the routing table.

 

Sh ip eigrp topology all-links

 

R3#sh ip eigrp topology all-links

IP-EIGRP Topology Table for AS(550)/ID(34.34.34.34)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

       r - reply Status, s - sia Status

 

P 1.1.1.0/24, 1 successors, FD is 156160, serno 8

        via 192.168.123.1 (156160/128256), FastEthernet0/1

P 2.2.2.0/24, 1 successors, FD is 156160, serno 7

        via 192.168.123.2 (156160/128256), FastEthernet0/1

P 3.3.3.0/24, 1 successors, FD is 128256, serno 5

        via Connected, Loopback3

P 4.4.4.0/24, 1 successors, FD is 156160, serno 4

        via 192.168.45.4 (156160/128256), FastEthernet0/0

P 5.5.5.0/24, 1 successors, FD is 156160, serno 3

        via 192.168.45.5 (156160/128256), FastEthernet0/0

P 192.168.123.0/24, 1 successors, FD is 28160, serno 2

        via Connected, FastEthernet0/1

P 34.34.34.0/24, 1 successors, FD is 128256, serno 6

        via Connected, Loopback34

P 192.168.45.0/24, 1 successors, FD is 28160, serno 1

        via Connected, FastEthernet0/0

R3#

 

Shows – also all paths that you’re not using. These could potentially be paths that are non-loop free patch that are being excluded from the routing table.

 

EIGRP Basic logic:

Eigrp say – tell me, what metric are you advertising to me for the destination, and what is my metric to reach you? Eigrp will take what is being advertised to the local router and the local routers metric to get to the destination – add those together – this becomes the full metric to get through the destination.

 

Note: if another neighbor is also advertising the same route to me and the value they’re advertising to me is lower than my local end-to-end cost. It mean that they have to be a loop free path because they are closer to the destination.

 

Example:

 

 

The image shows two paths from R1 to reach the cloud.

The path from R2 is a cost of 10 – the path from R1 to R2 is 20 – so the total cost is 30 through R2.

Also, the path from R3 to R1 is a cost of 5. The path back from R1 through R3 id 105. The preferred path

To reach the cloud would be through R2. However there’s no way that R3 can be routing back though R1 because then R3’s metric would be higher. Based on this simple logic, EIGRP says if your metric to the destination is better than mine. Then you’re actually closed to the destination than I am.

 

Basically R3 is closed to the destination that R1 is locally. This is known as the feasibility condition in EIGRP.

 

This is how EIGRP can have sub-second convergence, by having recalculated loop-free paths as backup in the topology.

 

P 192.168.123.0/24, 1 successors, FD is 33280, serno 17

        via 192.168.56.5 (33280/30720), FastEthernet0/1

        via 192.168.46.4 (286720/30720), FastEthernet0/0

P 34.34.34.0/24, 1 successors, FD is 158720, serno 19

        via 192.168.56.5 (158720/156160), FastEthernet0/1

        via 192.168.46.4 (412160/156160), FastEthernet0/0

P 192.168.45.0/24, 1 successors, FD is 30720, serno 16

        via 192.168.56.5 (30720/28160), FastEthernet0/1

        via 192.168.46.4 (284160/28160), FastEthernet0/0

 

Note: the values we need to look at are the first number in the parenthesis  verses the second number (via 192.168.56.5 (33280/30720), FastEthernet0/1 ) In this case the first number is 33280.

 

The first number is the total metric that we would use to route through the neighbor. This is the combined number of what they are advertising and my metric to get to them.

 

The router first – looks at all the values that are listed in the parenthesis for all the possible paths.

In this case the number 33280 is better than 286720 – this is now the feasible distance – basically the metric.

 

Next – the router will look at what the other neighbors are advertising to the local router. That is the second value. Example for the (via 192.168.46.4 (286720/30720), FastEthernet0/0 ) the second value of 30720. This metric is lower than the feasible distance. This says based on this number you are closer to the destination and are a loop free path.

 

No comments:

Post a Comment