首页 > 其他 > 详细

EIGRP增强型内部网关路由协议(IGP)

时间:2020-07-15 00:45:18      阅读:52      评论:0      收藏:0      [点我收藏+]

EIGRP  增强型内部网络路由协议

 

RIP对比EIGRP

 

RIP                                    EIGRP

 距离矢量                           复合型

  最大15跳           最大255跳(可以适用于更大的网络)

 只针对跳数                针对带宽、延迟、可靠性、负载、MTU

                                  这里指的带宽是接口的实际带宽

 

 组播更新                        组播更新

 224.0.0.9                        224.0.0.10

 周期更新 30S                  触发更新,而且是增量更新

 

 管理距离                        管理距离

  120                                   90

所以,当RIP EIGRP同时出现一个条目的时候,EIGRP有更高的优先级

 

 邻居关系                    邻居关系

                                   

 

EIGRP中引入了邻居的概念

邻居之前使用HELLO包进行沟通,也就是说hello包的主要作用就是建立和维系邻居关系

5S/次,15S还没有收到邻居发过来的hello包,就认为这个邻居死掉了

这里需要注意的是,hello 包是不存在确认的,它不是组播的更新还需要ACKHELLO包是不需要确认的,只是在那里等,5S一次,收到就认为你活着,如果长时间没收到,那本设备就认为你这个邻居挂了。

 

组播更新

EIGRP 使用224.0.0.10进行更新,更新过去之后,对端必须给ACK回复确认,如果没有回复ACK,那本端设备会一直发,最多重传16次。

 

更新部份的区别

   RIP                          EIGRP

 全部路由表             增量更新(路由表)

    

EIGRP中有三张表:

          邻居表   neighbors

                   拓扑表  topology

                   路由表   ip route eigrp

邻居表:存在着邻居设备,通过show ip eigrp neighbors 查看

拓扑表:存放着邻居发过来的更新条目,以备快速收敛使用,也可以将拓扑表中的条目理解为备胎,在eigrp的主线路DOWN掉之后,如果在拓扑表中有合适的线路,那么不需要重新计算,直接进行切换,这也是eigrp为什么收敛速度快的原因之一

路由表:存放着去往目标网段的最优路径。

 

1)通过配置相同的自制系统编号,建立邻居关系,hello包负责维系邻居关系

2)邻居关系通过组播进行增量更新,收到的更新放到自己的拓扑表中。

3)在拓扑表中进行计算出最优的路径放到路由表中

 

进入拓扑表的原则

在一个网络拓扑中,全网运行EIGRP,肯定会存在着备用线路,但这个备用线路能否被EIGRP放到拓扑表中,进行快速切换使用呢?是有一个硬性的要求的。

规则: 备用线路的邻居,到达目标的距离 必须小于主线路的全程,这个条件,叫FC条件,可行性条件

 

为什么非要放进拓扑表中呢?就是为了能够实现EIGRP的快速收敛,拓扑表中有备用线路,就不用计算了,如果没有,还得重新进行计算,

 

EIGRP又使用的是哪种计算方式呢?

DUAL,弥散更新算法

详解如图

技术分享图片

 

 

 此图中所有设备运行EIGRP协议,所有链路带宽为100M,那么肯定会选择上面,R1-R2-R3-3.3.3.3 这样一条路径做为首选

这一点可以通过trace来验证,

 技术分享图片

 

 

 但是在R1的拓扑表里,现在是没有去往3.3.3.3的备用链路的

技术分享图片

 

 

 路由表中也只有这样一条去往3.3.3.3的条目

 技术分享图片

 

 

 现在将R2F0/0接口down掉,看会出现什么现象,

 技术分享图片

 

 

 在R1上看,会有提示信息,说邻居10.0.0.2 down了,等待时间超时

 技术分享图片

 

 

 而在R2上看,同样显示邻居10.0.0.1down,

 而在备选路径上的设备中,开启debug,会看到Query Reply的请求与回复包

 技术分享图片

 

 

当然做为被访问的目标网段设备上,也同样可以看到这样的包,

技术分享图片

 

 

 技术分享图片

 

 

 解读:

 当主线路DOWN掉之后,由于在R1的拓扑表中没有保存去往3.3.3.3的备用链路,只能进行重新计算,R1问他的邻居(也就是R4,R4收到之后再往下问,问自己的依据R5R5R6,R6再问R3。直到找到R3,这个找的过程,称为请求,Query

 找到目标地址后,进行回复,Reply回复包,当回到R1的时候,R1会将这个新的条目添加到自己的拓扑表以及路由表。

有图有真像

原去往3.3.3.3 条目,下一跳10.0.0.2  出口为F0/0

 技术分享图片

 

 

 而新的条目则是换了方向的,下一跳为

 技术分享图片

 

 

 486400/460800=FD / AD

486400 : FD 从当前设备到达目标网段的全程最优距离

460800 : AD 从我的邻居到达目标的全程距离

 技术分享图片

 

 

 同样,在路由表中也会进行更改

路由表中DEIGRP的表示方式,因为E被早期的协议给占了(EBGP)因为eigrp使用DUAL算法,所以就使用了D

 技术分享图片

 

 

 这里要讲一下,

 [90/486400]

 90eigrp的管理距离 EIGRP固定为90

 486400FD,度量值,也可以理解为metric,从当前设备到达目标网段的全程最优距离

 

以上就是DUAL算法在EIGRP链接发生故障后的运算过程

 

需要注意的是,按照DUAL的算法,如果没有找到去往3.3.3.3的路,在Query请求后,同样会给一个Reply回复,记住,不管有没有,都会给回复,而回复过后只有两种可能

1 找到目标网段,更新新的条目进拓扑表

2 没找到目标网,删除原条目,去往3.3.3.3,目的不可达

 

还有一种特殊的情况,

就是当原有链路故障后,会去选择备用链接,而在回复Reply包时,由于链接拥塞,导致这个包没有顺利的从R4发到R1,那么此时R4认为自己发了,也就不会再发了,R1则一直等

原有的最优条目被卡在A的状态上 在拓扑表中

 

这就是常提到的SIAstuck in active  卡在活动状态,后续会有SIA的计时器

可以通过show ip eigrp topology 可以查看EIGRP 的拓扑表以及状态

 技术分享图片

 

 

基本配置命令

r1(config)#router eigrp 1               

///自制系统号,两端必须一致,邻居关系才能起来

r1(config-router)#no auto-summary

    ///关闭系统的路由自动汇总功能

r1(config-router)#network 10.0.0.0 0.0.0.255

    ///宣告自己的网段,

r1(config-router)#network 30.0.0.0 0.0.0.255

///第二个接口的网段

 

EIGRP中,一定要加反掩码

r1(config)#

*Mar  1 00:00:50.075: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.0.0.2 (FastEthernet0/0) is up: new adjacency

 

查看命令

邻居表  show ip eigrp neighbors

 技术分享图片

 

 

 拓扑表 show ip eigrp topology

 技术分享图片

 

 

路由表

 技术分享图片

 

 

  

1、启用EIGRP,定义自制系统号

2、关闭路由自动汇总

3、宣告网段

  

最后再补充一下

EIGRP路由器,想要交换路由信息,必须是邻居,而建立邻居有以下要求

1)收到hello包,或者是更新ACK224.0.0.10hello包是不需要确认的

2)相同的自制系统号

3)相同的度量标准,度量值,两侧要一致

 

这种引入了邻居概念的路由协议,建立邻居是第一步

 

回顾EIGRP的相关名词

FD:可行距离,从当前设备到达目标的全程最优距离,[90/FD] 路由表中查看

AD:通告距离,从我的邻居到达目标的全程最优距离 (FD/AD)拓扑表中查看

FC条件(可行性条件):我的邻居到达目标的距离小于当前设备到达目标的全程最优距离 ,也就是AD<FD,

FS:可行后继站,可以放进拓扑表中的条目的设备

后继站:successors,可以理解为eigrp的下一跳设备有几个,拓扑表中查看

 

 


 

EIGRP高级特性

eigrp路由汇总

eigrp认证

eigrp默认路由

Eigrp 非等价负载

Eigrp 末节区域stub

 

 

 


 

1 eigrp 汇总

eigrp支持CIDR汇总,(也就是超网,之前的RIP是不支持的)

并且eigrp支持VLSM(可变长子网掩码,这一点可以在路由表中看到)

 技术分享图片

 

 

 R2进行cidr汇总

R3进行常规汇总 

先全都宣告进去,按照正常的方式,

R1上查看路由表

 技术分享图片

 

 

 可以看到有这么多的条目

 

现开始汇总

R2

路由条目出接口上配置汇总

R2(config)#inter f0/0      //同样是在接口下

R2(config-if)#ip summary-address eigrp 1 192.168.0.0 255.255.0.0

 

R3

R3(config)#inter f0/0

R3(config-if)#ip summary-address eigrp 1 172.16.0.0 255.255.0.0

 

而这时,再到R1上看下路由表有没有什么变化

 技术分享图片

 

 

 只剩下两条了 

测试icmp

 技术分享图片

 

 

 可以看到当ping 192.168.3.1 的时候直接 提示UUUUU,目标不可达,这是因为在eigrp 汇总的时候,会出现NULL 0

在汇总的路由表里可以看到

技术分享图片 技术分享图片 

R2-R3上都可以看到,

NULL0 保障机制,防止路由黑洞的产生,

 

路由转发的规则是  

          递归查询

                  最长掩码匹配,

                  如果没有明细到达指定目的地址,那么直接 进入最后一条,

                   NULL 0  直接丢弃,并提示地址不可达

 

 

 

 


 

2 eigrp认证

eigrp只支持密文认证,明文的方式,你可以配置,但是不生效

Eigrp 邻居身份认证

 技术分享图片

 

 

 全网运行EIGRP

宣告网段

R1 10.0.0.0 /24    1.1.1.0 /24

R2 10.0.0.0 /24    2.2.2.0 /24

 

配置EIGRP 邻居认证,

R1(config)#router eigrp 100

R1(config-router)#no auto-summary

R1(config-router)#network 10.0.0.0 0.0.0.255

R1(config-router)#network 1.1.1.0 0.0.0.255

 

*Mar  1 00:28:18.667: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 10.0.0.2 (FastEthernet0/0) is up: new adjacency

 

R2(config)#router eigrp 100

R2(config-router)#no auto-summary

R2(config-router)#network 10.0.0.0 0.0.0.255

R2(config-router)#network 2.2.2.0 0.0.0.255

*Mar  1 00:27:38.623: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 10.0.0.1 (FastEthernet0/0) is up: new adjacency

 

EIGRP 的邻居建立很快 

现在开始设置认证(RIP的基本一样

1 定义钥匙名称

2 定义钥匙号码

3 定义密码

4 接口调用

5 是否加密

 

这个EIGRP的认证还比较特殊,你配置好了认证以后,hello包里才包含authencation

如果没有配置是不包含的

 

 R1(config)#key chain ?

  WORD  Key-chain name

R1(config)#key chain wfy                   //定义钥匙名字

R1(config-keychain)#key ?

  <0-2147483647>  Key identifier

R1(config-keychain)#key 1                //定义钥匙号码 

R1(config-keychain-key)#key-string wfygadwiqpl3       //配置具体的密码

R1(config-keychain-key)#exit

R1(config-keychain)#exit

 

R1(config)#inter f0/0           进入接口      

R1(config-if)#ip authentication key-chain ?

  eigrp  Enhanced Interior Gateway Routing Protocol (EIGRP)

 

R1(config-if)#ip authentication key-chain eigrp ?

  <1-65535>  Autonomous system number   //想要给哪个EIGRP 加密

 

R1(config-if)#ip authentication key-chain eigrp 100 ?

  WORD  name of key-chain    //钥匙名字

 

R1(config-if)#ip authentication key-chain eigrp 100 wfy

R1(config-if)#ip authentication mode eigrp 100 md5     //定义加密为密文

 

R2配置

R2(config)#key chain wfy

R2(config-keychain)#key 1

R2(config-keychain-key)#key-string wfygadwiqpl3

R2(config-keychain-key)#exit

R2(config-keychain)#exit

R2(config)#inter f0/0

R2(config-if)#ip authentication key-chain eigrp 100 wfy

R2(config-if)#ip authentication mode eigrp 100 md5

 

这时两侧如果配置同样的认证密码,钥匙号,(钥匙名可以不同)就可以进行重新建立邻居了

查看具体的配置 

Show run | se key   //查询具体的密码

 技术分享图片

 

 

 Show run | se mode    //查询用的加密方式

 技术分享图片

 

 

 之前有朋友问我这样一个问题

 技术分享图片

 

 

 

如图所示,R1--R2EIGRP 1

          R2--R3EIGRP 2

两个进程的认证方式都不同,他问我为什么R1的条目可以传递到R3

 

对于此问题我是这样回答的,

1 EIGRP的认证和邻居关系是密不可分的,都是两两的关系,不会干涉到第三台设备

2 EIGRP的认证通过了,也就等于是可以传递和接收路由条目了,可以视做没有认证一样

3 至于路由为什么会传到R3,我想说,你运行了EIGRP,肯定会给你传啊~

 

 

 


 

eigrp默认路由

Eigrp 默认路由

技术分享图片

 

 

 R1 :ISP 只配置IP地址即可

R2 :GW  NAT地址转换  10.0.0.0

R2-R3运行eigrp 100 自制系统号 192.168.1.0

最终使R3能够到达ISP1.1.1.1

 

其它的配置不变,最主要的变化是在GW上,

我们都知道在GW上配置NAT地址转换要配置默认路由才可以出去

但是这里的默认路由要将下一跳接口地址,改为本设备的出接口

因为如果不改的话,默认路由是不会被标记到eigrp 内部的 (亲测)

 

1、路由指出接口配置方式

R2(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.1    //我们先用这个测试一下

R2(config)#inter f0/0

R2(config-if)#ip nat outside

R2(config-if)#inter f0/1

R2(config-if)#ip nat inside

R2(config-if)#exit

R2(config)#access-list 1 permit any

R2(config)#ip nat in so li 1 inter f0/0 overload

R2(config)#router eigrp 100

R2(config-router)#no auto-summary

R2(config-router)#network 192.168.1.0 0.0.0.255

R2(config-router)#network 0.0.0.0

 

R3(config)#router eigrp 100

R3(config-router)#no au

R3(config-router)#network 192.168.1.0 0.0.0.255

 接下来,在R3上来验证刚才的配置,看有没有eigrp 的默认路由

 技术分享图片

 

 

 很显然,并没有发生我们想要的去往1.1.1.1的条目,

是不是那条默认路由的问题呢?

我们改一下

R2(config)#no ip route 0.0.0.0 0.0.0.0 10.0.0.1

R2(config)#ip route 0.0.0.0 0.0.0.0 f0/0

将下一跳地址,改为本地出接口

 

R3技术分享图片

 

再次验证

技术分享图片

 

 D*  D*   D*   D*   D* 出现了

找任何地址都去往192.168.1.1

为什么会这样????非要是出接口吗??

 

2、还有另外一种方法,重分布,将默认路由重分布进EIGRP

就是将出接口的原始默认路由重分布到eigrp 中,让其显示为D*EX

但是要重分布的是static,静态路由,这里要注意一下

 

配置

R2(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.1    //改成下一跳地址

R2(config)#router eigrp 100

R2(config-router)#no network 0.0.0.0    ///把之前的宣告删除

R2(config-router)#redistribute static metric 100000 10 255 1 1500

                                     带宽 延迟 负载 可靠性 MTU

 

这样的话,在R3上就可以看到这样一个条目

 技术分享图片

 

 它的管理距离也是那么的与众不同,

EIGRP 的管理路由是90,而这里的管理距离变成了170

因为这时的eigrp 是一个外部的eigrp ,

内部90  

外部 170

 

还有另外一种方法,手动汇总式的默认路由

 技术分享图片

 

 

R2做正常的NAT部份,默认路由指出去到R1

向内部R3指定汇总的默认路由

 

R2(config)#inter f0/1

R2(config-if)#ip summary-address eigrp 1 0.0.0.0 0.0.0.0

 

R2R3之间运行EIGRP 协议

 技术分享图片

 

 可以看到,收到了一条D*的路由,下一跳是R2,

然后也可以pingR1NAT地址。

 


Eigrp 非等价负载

 

EIGRP 非等价负载均衡

 技术分享图片

 

 在配置之前,首先要弄明白一件事儿~

为什么要配置负载均衡?

如图中所示,如果没有配置任何的负载,那么在R2f0/0接口不down掉的情况下是不会有任何的数据从s2/0口出去的,因为它是不可能被eigrp 视为优选路径的,这样,也无形的造成了链路的浪费(只是举一个例子,现实中不会有这么大的悬殊的)

 

Eigrp 的前面配置是一样的,这里简写一下

R1(config)#router eigrp 1

R1(config-router)#no auto-summary

R1(config-router)#network 10.0.0.0 0.0.0.255

R1(config-router)#network 1.1.1.0 0.0.0.255

 

R2(config)#router eigrp 1

R2(config-router)#no auto-summary

R2(config-router)#network 10.0.0.0 0.0.0.255

R2(config-router)#network 20.0.0.0 0.0.0.255

 

R3(config-if)#router eigrp 1

R3(config-router)#no auto-summary

R3(config-router)#network 20.0.0.0 0.0.0.255

R3(config-router)#network 1.1.1.0 0.0.0.255

 

先来查看一下R2的路由表

 技术分享图片

 

 

去往1.1.1.0网段的只有一个条目,下一跳是10.0.0.1,这个没有问题,符合eigrp的选路原则,链路带宽优先,100M,肯定大于1.5M

 

配置非等价负载均衡,要在中间的路由器,有两个出口的路由器上,图中的R2

配置思路:

Show ip eigrp toplogy ,查看两个条目的FD,可行性距离

 技术分享图片

 

 (FD/AD)

FD:可行距离:当前设备到目标网络的全程最优距离  

AD:通行距离:当前设备的邻居到达目标网络的全程最优距离

 

这个时候就要计算出两个FD之间的倍数,用2297856除以409600,得到的数是5.6

那么再设置一个刚才比5.6大的整倍数,所得出的积,也就正好大于2297856了,

那么这个数为6,这样才能实现一种负载均衡,可是即使这样,也是非等价的负载,两条路径 传送的包数量是不一致的,(但是至少S口上也已经跑数据了,比以前闲置要强)

 

配置如下

R2(config)#no ip cef    //一定要关闭CEF才可以

R2(config)#router eigrp 1

R2(config-router)#variance 6    //设置倍数,其实这里写几都一样,也不是按这个走,而是系统会自己进行计算

 技术分享图片

 

 

可以看到这个时候1.1.1.0网段,出现了两条路由,

这也就实现了非等价负载均衡,

具体走数据包的数量 ,也是根据 二者相除的倍数而定。

这个有兴趣的小伙伴可以自己去测试一下,包儿实在是有些多,我就不测试了

 

那什么是等价呢?

就是两条链路所有的接口数据都是一样的,AD ,FD 都一样,

在路由表中也是显示两个

 技术分享图片

 

 等价就是这样儿的

 


 

Eigrp 末节区域stub

EIGRP STUB区域

 技术分享图片

 

 R1,为总GW

R2-R3为分别的IDC-GW,分别都下连着很多的终端,

 

两个问题引入eigrp stub区域

 1 两个IDCGW有必要知道总GW上的所有路由条目吗?要知道有可能此时GW上运行了BGP,有70多万条,什么概念,你一个小小的路由器,直接会被秒杀的

  答:没有必要,只要知道外出的条目找它就可以了

 2 两个IDCGW之间需要知道彼此的路由条目吗?

  答:同样是没有必要的,因为做为IDC,两个GW是相互独立的,不存在相互访问,只允许外部访问它们就可以了

 

那么这个时候,做为总的GW,它要做的,就是不下发路由条目,只接收路由条目就OK

  

配置很简单

在总的GW上面

 R1(config-router)#eigrp stub receive-only

                   //设置区域为只接收不发送

对于两个IDCGW而言,手动写上一条默认路由到总GW即可,(因为现在总的GW不再发送条目,如果在它上面配置eigrp的默认路由是无法传到两台IDCGW上的)

R2(config)#ip route 0.0.0.0 0.0.0.0 12.0.0.1

R3(config)#ip route 0.0.0.0 0.0.0.0 13.0.0.1

 

R3(IDCGW)上查看路由表,发现已经没有了EIGRP的条目,

 技术分享图片

 

 

但是eigrp有没有实际的运行呢?

 技术分享图片

 

 

Eigrp的配置还在,因为它要将自己的路由更新发送给总的GW

 技术分享图片

 

 那在gw上有没有什么变化呢?

可以看到,有这么一条特殊的命令,

 

 

所以,当检查eigrp条目没有更新的时候,别忘了检查这一项,(看看有没有只收不发,像那个貔貅一样,只进不出)

 

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

CCIE成长之路  ----  梅利

 

EIGRP增强型内部网关路由协议(IGP)

原文:https://www.cnblogs.com/meili333/p/13301759.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!