EIGRP的原理

EIGRP的原理,第1张

EIGRP是Cisco专有的一种路由协议,它集成了链路状态算法和距离向量算法的优点,是一种混合的算法它包括以下一些特点:
更快的收敛速度
EIGRP使用扩散更新算法DUAL(Diffusing Update Algorithm)获得更快的收敛速度一台运行EIGRP的路由器在本地存储备份路由,需要时可快速的变为侯选路由,在本地路由表中找不到所需的路由或备份路由时,EIGRP向其邻居发出请求以获得侯选路由,这些请求不断地被复制直到找到侯选路由
降低带宽利用率
EIGRP不做周期性的刷新,只有在一条路由的路径或度量发生变化时它才把变化的部分发送出去当路径信息变化时,DUAL算法只发送关于该连接的更新,而不是整个路由表另外,这些信息只发送给需要它的路由器,不像链路状态算法那样发给域内所有的路由器
多种网络层协议支持
EIGRP支持Apple Talk , IP, Novell NetWare等多种协议

EIGRP的hello时间在T1一下的线路是60s,在T1以上的线路是5s,而它的保持时间(hold timer)是hello时间的3倍。
hello时间和保持时间不一致,也可以形成邻居关系,但是可能会出现一些问题,如:一边的hello时间大于另一边的保持时间这种情况。
这种情况下,EIGRP的邻居关系现实为:up downup down
这样会断断续续的。
EIGRP的hello时间不同不影响EIGRP建立邻居关系。

我们上节,做了实验,现在再来梳理几个点,之前AS1和AS234进行互联线路(R1-->R2)中,我们并没有将R2的g0/0/0接口加入到IGP协议中,然后我们在R2、3、4路由配置ISIS协议,并且将R2和R4安置在AS234的BGP环境中,R3不运行BGP协议。AS之间走EBGP,以此来模拟EBGP、IBGP、IGP之间的联系。
R1创建一条环回口路由,利用network发布到BGP,此时R1的BGP路由表中插入了一条关于该路由的最优标识,利用

R2的BGP路由表也可以查看到该路由。
R2在路由表中查看有去往该路由下一跳的唯一路由,所以该路由在R2的BGP路由表中名副其实的也是带>的有效最优路由,符合

R4于此同时也可以收到R1产生的这条路由,但是这条路由在路由表中是否是最优的?还有待商榷。
我们查看R4路由表发现BGP路由表中该路由的下一跳并不在IGP路由表中,因此它在存放时没有有效符号标识更谈不上最优,由此对外的表现就是当这条路由到R4在路由表中命中的时候,会查询该路由的下一跳,发现下一跳竟然还是101121,查询路由表,并没有找到相关记录,下一跳不可达就无法转发。原来我们少了解了一个原则,从EBGP邻居传过来的路由传给IBGP邻居时,下一跳默认不变。为什么会出现这种情况呢,这和我们开头做的限制也有一定的关系,就是我们并没有将R2的g0/0/0接口加入到IGP协议中,如果我们把R2 g0/0/0加入到IGP协议中,那么同在IGP协议下的R4的g0/0/0就可以算出到R2g0/0/0的路由,这样就不会产生这个下一跳不可达的现象。其实在生产环境中也是如此,我们默认在EBGP的AS之间的互联口不加入IGP协议。
解决方案1:
路由不可达,我们就做一条路由让它可达,也就是在R4上将这个下一跳指向自己的g0/0/0接口配置的101344,这样通过IBGP协议我们就可以轻松的进行路由选择。
缺陷:BGP路由一般是十万条起步,这么庞大的路由我们无法进行逐条的手工配置。
解决方案2:
我们可以利用R2这个路由,针对IBGP邻居做一条next-hop-local

该命令仅对IBGP邻居生效,将从EBGP邻居得到的路由传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址,
再次查看R4、R5的BGP路由表,如预想的一般。

我们看R2的路由,发现虽然R4收到了R2发过来的最优路由,但是并没有向R2再次发送,这样就避免了产生环路,!!!也就是

继续我们的猜想,R4通过EBGP将最优的路由传递给了它的BGP邻居。R5上现在可以从BGP路由表中查到去往1110的路由,而且下一跳也是对的。

此时我们以为现在总可以访问R1的环回口了吧,我们进行ping命令,wac为啥不通???
我们往上查,看下R4是否可以ping通。R4此时也不可以,为什么会出现这个原因呢?
我们看它的下一跳所在路由表的路由,发现了一切
在这个拓扑图中,BGP传播路由是可以跨路由器传递的,A路由器可以将路由通过EBGP传递给B,B可以通过IBGP传递给D,因为B路由器到D路由器有运行OSPF协议,路由可达,D再次通过EBGP传递给E。
但是C路由器上却没有A路由器1000oo的路由,因为C路由器没有运行BGP协议。
这样就会导致E路由器在回包的时候,将1000oo的路由先发送给D,D继续转发给C,C直接丢弃。这就出现了BGP的路由黑洞。最终导致R3上没有去往1110的路由。
对的!路由黑洞了,这个时候我们会想起来,
哦哦,我们需要进行

我们在R2上做一个同步
第一种方案,我们将BGP引入到IGP协议中,

此时我们继续测试ping 1111 发现还是不通,
观察R4BGP的配置,发现其中有一个命令是,

其实,同步功能在华为设备中一直都是关闭的状态,没有开启的命令,同步同步并不影响R4的BGP路由1111传递给R5

此时我们在R5上也创建一个环回口

R4:与R1 的1110一样,利用next-hop-local 将R4发往R2的下一跳改变,
peer 2222 next-hop-local
isis协议中引入BGP
[R4-isis-1]dis this
[V200R003C00]

isis 1
is-level level-2
network-entity 49000400000000000400
import-route bgp

向所有BGP邻居手动触发路由更新
<R4>refresh bgp all export

我们通过R5

1、同步功能只能通过bgp路由黑洞检测机制,但是并不是解决路由黑洞。
2、这种方法目前已经被淘汰,如果BGP路由表产生振荡,会对IGP造成影响。
第二种方案:
我们将R2、R4上引入配置IGP配置取消

R4同

R3\ R4自己配
三条命令缺一不可

只要解决路由黑洞问题,BGP同步检查功能开启或者关闭无足轻重。
我们再做个小测试,我们现在可以通过1111 访问到5555,
是因为在几个BGP AS中,路由是通的,但是1111 可以访问4444 么?
测试之后 发现不可以。为什么呢?因为在BGP AS:234中4444并没有发布出去
所以BGP路由访问的基本逻辑,你要是想别人能访问你,你就要把这条路由发布出去,然后再避免路由黑洞。我们发布出去,ping 4444 1111 还是不通,我们就需要自己再思考思考了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13351041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存