EIGRP原理及配置

EIGRP原理及其配置

  • EIGRP原理及其配置
    • EIGRP的特点
    • EIGRP操作描述
      • EIGRP报文
      • EIGRP建立邻居的过程
      • EIGRP的基本配置
      • 修改EIGRP计时器
    • 构建EIGRP拓扑表

EIGRP的特点

  1. EIGRP同时支持IPv4与IPv6,有类与无类(vlsm与cidr)。
  2. EIGRP支持等价负载均衡与不等价负载均衡。
  3. EIGRP是一种无环的路由协议。
  4. EIGRP是一种无周期更新的增量更新型路由协议(只有区域内发生变化时才触发更新)。
  5. 封装:IP,协议号:88
    封装示意图
  6. IP协议是不可靠传输协议,但EIGRP内置一种可靠的传输方式,成为RTP(类似TCP)。
    设置有ACK 确认报文。
  7. EIGRP使用DUAL(扩散更新算法)。

EIGRP操作描述

EIGRP拥有三张表:邻居表,拓扑表和路由表,储存在邻居表中的是所有与此设备建立邻居关系的设备,用主IP地址和指向这个邻居的接口标识。储存在拓扑表中的是所有邻居设备宣告的所有目的路由,并且记录他们的度量值与这台邻居设备到达目的网络的度量值,而到达目的网络最优的度量值的路由叫后继路由,此路由会放在路由表中并通告给其他邻居。路由表就不必多说了,由EIGRP协议选出的后继路由会插入到现有路由表中,协议标识为D,管理距离有90, 170和5三种。

EIGRP报文

  1. Hello报文:用于建立邻居关系以及维护建立好的邻居关系,每5秒发送一次Hello包,Hello包等待时间为15秒(EIGRP会等待三倍的发送时间),若超过15秒还没有收到Hello包,会解除邻居关系。
  2. Update报文:用于传递更新信息,接收到之后存入拓扑表。
  3. Query报文:用于查询拓扑变化,每当区域内拓扑发生变化时,会触发查询,便会发送Query包。
  4. Reply报文:用于回复Query包。
  5. ACK报文:ACK确认(RTP可靠传输协议引出),只对Update,Query,Reply报文进行确认,不对Hello报文进行确认。

EIGRP建立邻居的过程

EIGRP邻居建立过程示意图
1. R1发送Hello包
2. R2收到R1 发送的Hello包,并且向R1 发送Hello包将R1作为自己的邻居
3. R2向自己的邻居(R1)发送Update包,包括自己的完整路由信息
4. R1收到R2的Hello包,并把R2作为自己的邻居
5. R1收到R2的Update包,将其中信息存入拓扑表并对此数据包回应,发送ACK确认包
6. R1向自己的邻居(R2)发送Update包,包括自己的完整路由信息
7. R2收到R1的ACK确认包,确定R1收到了自己的路由信息
8. R2收到R1的Update包,将其中信息存入拓扑表并对此数据包回应,发送ACK确认包

EIGRP的基本配置

我们以以下拓扑图为例:
配置拓扑图
对R1进行基本配置:

R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown 
R1(config-if)#exit 

R1(config)#interface loopback 0
R1(config-if)#ip address 1.1.1.1 255.255.255.0
R1(config-if)#no shutdown 
R1(config-if)#exit

对R2进行基本配置:

R2(config)#interface fastEthernet 0/0
R2(config-if)#ip address 192.168.1.2 255.255.255.0
R2(config-if)#no shutdown 
R2(config-if)#exit 

R2(config)#interface fastEthernet 0/1
R2(config-if)#ip address 192.168.2.1 255.255.255.0
R2(config-if)#no shutdown 
R2(config-if)#exit 

R2(config)#interface loopback 0
R2(config-if)#ip address 2.2.2.2 255.255.255.0
R2(config-if)#no shutdown 
R2(config-if)#exit

对R3进行基本配置:

R3(config)#interface fastEthernet 0/1
R3(config-if)#ip address 192.168.2.2 255.255.255.0
R3(config-if)#no shutdown 
R3(config-if)#exit 

R3(config)#interface fastEthernet 0/0
R3(config-if)#ip address 192.168.3.1 255.255.255.0
R3(config-if)#no shutdown 
R3(config-if)#exit 

R3(config)#interface loopback 0
R3(config-if)#ip address 3.3.3.3 255.255.255.0
R3(config-if)#no shutdown 
R3(config-if)#exit

对R4进行基本配置:

R4(config)#interface fastEthernet 0/0
R4(config-if)#ip address 192.168.3.2 255.255.255.0
R4(config-if)#no shutdown 
R4(config-if)#exit 

R4(config)#interface loopback 0
R4(config-if)#ip address 4.4.4.4 255.255.255.0
R4(config-if)#no shutdown 
R4(config-if)#exit

以上就是这四台路由器的基本配置,接下来我们进行EIGRP实验,首先在R1,R2,R3三台路由器上启动EIGRP,配置命令如下:
R1上的配置命令:

R1(config)#router eigrp 100
R1(config-router)#no auto-summary 
R1(config-router)#network 1.1.1.1 0.0.0.255
R1(config-router)#network 192.168.1.0 0.0.0.255

R2上的配置命令:

R2(config)#router eigrp 100
R2(config-router)#no auto-summary   
R2(config-router)#network 2.2.2.2 0.0.0.255
R2(config-router)#network 192.168.1.0 0.0.0.255
R2(config-router)#network 192.168.2.0 0.0.0.255

R3上的配置命令:

R3(config)#router eigrp 100
R3(config-router)#no auto-summary 
R3(config-router)#network 192.168.2.0 0.0.0.255
R3(config-router)#network 3.3.3.3 0.0.0.255
R3(config-router)#network 192.168.3.0 0.0.0.255

我们使用router eigrp as号 这条命令来进入EIGRP配置,no auto-summary用来关闭自动汇总(稍后介绍),使用network 网段ip 反掩码(通配符掩码)来宣告想要让其他设备知道的路由,反掩码就是与掩码相反,即1,0互换。
进行这般配置之后我们来查看一下R1的路由表:

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     1.0.0.0/24 is subnetted, 1 subnets
C       1.1.1.0 is directly connected, Loopback0
     2.0.0.0/24 is subnetted, 1 subnets
D       2.2.2.0 [90/409600] via 192.168.1.2, 00:06:03, FastEthernet0/0
     3.0.0.0/24 is subnetted, 1 subnets
D       3.3.3.0 [90/435200] via 192.168.1.2, 00:05:23, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0
D    192.168.2.0/24 [90/307200] via 192.168.1.2, 00:05:53, FastEthernet0/0
D    192.168.3.0/24 [90/332800] via 192.168.1.2, 00:02:44, FastEthernet0/0

标识为D的路由条目为通过EIGRP学习获得,由此可见我们已经将(R2,R3)所有通过network宣告的路由学习到了。

D 192.168.2.0/24 [90/307200] via 192.168.1.2, 00:05:53, FastEthernet0/0为例这里D表示此条路由通过EIGRP学习,90为EIGRP的管理距离,307200为此条路由的度量值(FD) via 192.168.1.2为下一跳路由器,后面FastEthernet0/0是出接口

我们再R2上查看一下邻居关系:

R2#show ip eigrp neighbors 
IP-EIGRP neighbors for process 100
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
1   192.168.2.2             Fa0/1             14 00:07:44   87   522  0  6
0   192.168.1.1             Fa0/0             13 00:08:16  709  4254  0  4

H为会话建立顺序,Address为对端的IP地址,Interface为连接对端的端口,Hold为在没有收到对方消息以至于宣布邻居不可达之前等待的总时间,Uptime为邻居建立的总时间,SRTT为(数据包)平均往返时间,RTO为重传超时,若路由器发送了需要ACK应答的数据包但并没有收到回应,会等待RTO的时间后重新发送(最多16次),若还是没有收到,那么就会取消邻居关系。RTO时间根据种种因素计算而出,并不确定。

也可以使用以下语句查询:

R2#show ip eigrp neighbors detail 
IP-EIGRP neighbors for process 100
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
1   192.168.2.2             Fa0/1             13 00:21:24   87   522  0  6
   Version 12.4/1.2, Retrans: 1, Retries: 0, Prefixes: 2
0   192.168.1.1             Fa0/0             10 00:21:57  709  4254  0  4
   Version 12.4/1.2, Retrans: 0, Retries: 0, Prefixes: 1

Retrans为数据包重传的次数,Retries为尝试重传的次数,Prefixes为收到前缀的数量。

使用以下语句可以查看活跃的EIGRP端口:

R2#show ip eigrp interfaces 
IP-EIGRP interfaces for process 100

                        Xmit Queue   Mean   Pacing Time   Multicast    Pending
Interface        Peers  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes
Lo0                0        0/0         0       0/1            0           0
Fa0/0              1        0/0       709       0/2         3444           0
Fa0/1              1        0/0        87       0/2          376           0

修改EIGRP计时器

EIGRP有Hello计时器和保持计时器两种计时器,Hello计时器控制的是发送Hello包的时间(默认为5s),保持计时器控制的是未收到Hello包后超出计时器范围就会取消邻居关系(默认为15s,三倍发送时间)。在低速NVMA链路上Hello计时器和保持计时器分别为60s和180s。
需要注意的是链路两端必须要拥有相同的计时器才能建立邻居关系,打个比方,假如一方A的Hello计时器和保持计时器为5s和15s,而另一方B的Hello计时器和保持计时器为20s和60s,那么就会在已经超出A的保持计时器时间而B还没有到下一个Hello包发送时间。这样邻居关系就会被A取消。
我们可以再R2上使用以下命令来查看Hello包发送情况:

R2#debug eigrp packets hello 
EIGRP Packets debugging is on
    (HELLO)
R2#
*Mar  1 00:42:26.395: EIGRP: Sending HELLO on FastEthernet0/1
*Mar  1 00:42:26.395:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
R2#
*Mar  1 00:42:27.799: EIGRP: Received HELLO on FastEthernet0/1 nbr 192.168.2.2
*Mar  1 00:42:27.803:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:42:28.575: EIGRP: Sending HELLO on Loopback0
*Mar  1 00:42:28.575:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
*Mar  1 00:42:28.583: EIGRP: Received HELLO on Loopback0 nbr 2.2.2.2
*Mar  1 00:42:28.583:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0
R2#
*Mar  1 00:42:30.483: EIGRP: Sending HELLO on FastEthernet0/0
*Mar  1 00:42:30.483:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
*Mar  1 00:42:30.731: EIGRP: Received HELLO on FastEthernet0/0 nbr 192.168.1.1
*Mar  1 00:42:30.735:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:42:31.343: EIGRP: Sending HELLO on FastEthernet0/1
*Mar  1 00:42:31.343:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
R2#
*Mar  1 00:42:32.595: EIGRP: Received HELLO on FastEthernet0/1 nbr 192.168.2.2
*Mar  1 00:42:32.599:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

由此可见默认情况确实是每5s发送一次EIGRP Hello包。
我们使用如下命令来修改EIGRP计时器:

R2(config)#int f0/0
R2(config-if)#ip hello-interval eigrp 100 10
R2(config-if)#ip hold-time eigrp 100 30
R2(config-if)#exit 
R2(config)#exit

R2#show ip eigrp interfaces detail fastEthernet 0/0
IP-EIGRP interfaces for process 100

                        Xmit Queue   Mean   Pacing Time   Multicast    Pending
Interface        Peers  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes
Fa0/0              1        0/0       709       0/2         3444           0
  Hello interval is 10 sec
  Next xmit serial <none>
  Un/reliable mcasts: 0/4  Un/reliable ucasts: 3/3
  Mcast exceptions: 2  CR packets: 1  ACKs suppressed: 0
  Retransmissions sent: 0  Out-of-sequence rcvd: 0
  Authentication mode is not set
  Use multicast

可见已经修改成功。

构建EIGRP拓扑表

拓扑表中储存的是所有的从邻居收到的路由信息,而一条路由想要被插入路由表中,就必须满足可行性条件,这个条件就是EIGRP防止网络出现环路的方法。到达相同路径的路由中,度量最低的路由成为后继路由,而其他路由只有满足一定条件才可以成为备用的路由,在这里称为可行后继路由,旨在当后继路由出现故障无法到达目的地时代替后继路由转发数据以保持网络畅通。
称为可行后继路由器的条件为AD FD和AD如下图所示

  • FD(Feasible Distance):可行距离,即到达目的网络的最优路径,对R1来说有两条路到达目的网络,而通过R3的距离(12)小于通过R2的距离(30)所以通过R3的距离12就是通往目的网络的FD。
  • AD(Advertised Distance):通告距离,通告距离是下一跳路由器发送给自己的它到达目的网络的最优距离,即下一跳的FD,对于R1来说R2的AD就是20,R3的AD就是10。

FD与AD示范
所以最优路径成为后继路由之后,满足条件的路由会变成可行后继路由,这个条件就是可行后继路由的AD必须小于到达目的网络的FD。如果有多个路由到达目的网络的度量值相同,则可能出现多个后继路由,EIGRP会将他们都插入到路由表中并且等价负载均衡(默认最多4个)。而可行后继路由是一个度量值大于FD但它的AD小于FD的路由(保证无环路),对应的路由器称为可行后继路由器。

你可能感兴趣的:(网络)