WOLF-LAB沃尔夫网络实验室中国网络精英的发源地!
24小时咨询热线:173-1636-2402

技术文档

Technical documentation

您当前位置: 首页 > 技术文档 > 详情

CCNP培训中怎么理解-EIGRP的查询机制-WOLF-LAB

发布日期:2023-05-06 浏览次数:675 来源:赵顺杰

CCNP培训中怎么理解-EIGRP的查询机制-WOLFLAB


WOLFLAB官方微信:17316362402,关注【WOLF-LAB网络技术实验室】思科认证CCNP培训(EI路由交换RS数通、Security)循环开班中,联系网站客服预约免费试听!

图片1(56).png

思科认证CCNP培训循环开班中,联系网站客服预约免费试听!

为了实现快速收敛.EIGRP需要主动搜索丢失的路由以实现快速收敛,这个过程称为查询过程,在前面几节中已简要讨论过。在查询过程中,当主路由丢失且没有可用的可行后继路由时发送查询。在此阶段,路由被称为处于active状态。

EIGRP的查询机制就在于当某一条路由丢因不可达/丢失时主动地去向所有的邻居发送query数据包. 去查询或询问关于这条路由不可达了之时邻居对于此路由的状态.

当EIGRP路由发生变化的时候,EIGRP向邻居发送query请求这条路由的信息,也就是EIGRP的查询机制。

邻居收到query数据包之后会立刻回复ACK,表示你发送的query数据包我收到了,接下来你就可以等待我的回复。也就是reply数据包。

ACK只有一种含义,表示你的数据包我收到了,真正的回复包含在reply数据包中

在这时的reply数据包分为三种情况

1. R2上根本就没有此路由的任何信息;回复reply告诉R1你查询的这条路有雀氏不可达了,这样R1会把路由条目从拓补表当中删除。 

2. R2上有此路由并且下一跳不是R1,所以会回复R1Reply告诉R1自己有这条路由,自己能到对应网段,这样R1就会把这条路由下一跳指向R2,因为R2能到达目的地址。

3. R2上有此路由,并且下一跳是R1,R2会依次类推,向后方的R3也发送query,请求这条路由的信息,那么R3会先回复ACK,后续得设备也只会回复ack,query包会一直在网络中中转,这样的查询会一直持续到边界路由器上(除了给自己发送query的邻居,没有别的邻居了)为止,之后查询到最后如果发现这条路有雀氏是不可达了,边界路由器就会回复reply表示这条路由雀氏不可达了,同样需要回复ack的确认的,直到回到R1,R1知道了这条路有雀氏不可达了之后就将路由条目从路由表删除。

这样的查询会持续到边界设备上。

 

验证方式

debug EIGRP packet query reply ack

R1 interface loopback 0 shutdown

信息很多,但是完全在100毫秒之内就能够解决了。

 

但是这样的查询机制正常情况下是很快的。那么当然也有不正常的情况。

如图,R1通告的1.1.1.0/24 的路由down了,它会往所有的邻居发送query,比如R1有10个邻居,那么就会发送出去10个query,但是如果只收到了9个reply,它不会自主的做出决定,是删除路由还是变更路由下一跳,有没有可能最后一个没有回复reply的邻居恰好有这条路由的下一跳?发送出去的query收到了9个reply,是不会自己做决定的,发出去多少个query就必须收到多少个reply。

如图,图中R1向R2发送query包,R2回复ACK经过查询发现这条路由下一跳是R1,因此向邻居R3发送query包,R3向R4,到了 边界路由器R4的时候R4发现没有别的邻居了,自己已经是边界了,便回复reply包表示这条路由不可达了。

但是,如果R4跟R3中间的链路发生问题,使得R4没法给R3回复reply数据包,R3没法给R2回,R2没法给R1回,如此一来,R1就始终收不到来自于R2这条线路上的reply,也就没法自助决定这条路由的处理方式,卡在active。

为此,对于query数据包,在发送此数据包的时候会在本机开启一个计时器,时间为3分钟,如果超过3分钟没有从这个邻居收到reply数据包回复,那么便会重置/断开 EIGRP邻居关系。

这样的情况有些殃及池鱼了,本身是R3和R4之间的链路问题,最后导致R1和R2的EIGRP邻居关系重置,R2和R3的EIGRP邻居关系重置。很显然是不合常理的。


思科认证CCNP培训循环开班中

演示

图片1(57).png

在R2这台设备上写access-list 100 deny eigrp 192.168.23.3 0.0.0.0 any 

access-list 100 permit ip any any

在接口下 ip access-group 100 in

但是这样子的话R2和R3之间的hello包也会被滤掉,导致邻居提前断开,为此,在R3上ip hold-time 改成 65535

使得R2只有在65535s之后收不到R3的eigrphello包才会断开邻居。

debug eigrp packet query reply ack

并在R1接口抓包

将R1的loopback接口shutdown

R1和R2分别show ip eigrp topology 会发现这条路由被置为active状态。

R2上等待一分钟show ip eigrp topology 会发现多了一个条目 SIA-stuck

在三分钟之后R2和R3的EIGRP邻居断开,但是R2和R1的EIGRP邻居没有断开。

R1和R2没有断开邻居的原因是,在开启三分钟计时器之后,超过一分半的时候会向R2发送一个SIA消息,R2会向R1发送SIA-reply,因此经过90s的SIA检测 ,使得R1和R2之间确认了他俩之间的链路,经过了SIA的检测发现R1和R2之间的链路没有问题,因此R1和R2之间的邻居并没有断开。

 

限制query查询的方式:

EIGRP的扩散查询机制可能会导致查询范围过大,为此我们需要限制它的查询范围.

1. 汇总

图片1(58).png

在R1向邻居通告路由的时候做个汇总,使它汇总成为100.1.0.0/22 的汇总路由,因为query查询机制是针对于路由表中完全匹配的明细路由,这样子的话,如果某一时刻,R1的loopback102down了,使得发出query查询,但是查询的是100.1.2.1/24的路由条目,然后由于汇总,R2路由表当中只有一条汇总成为100.1.0.0/22的汇总路由,当收到query查询这条明细路由的时候由于路由表没有完全匹配的路由,便直接回复reply消息表示自己路由表中没有这条路由.

1. stub

  通过命令把远程路由器配置成Stub路由器,Stub路由器会向所有邻居发送信息告之自已的状态,其他路由器将不会向Stub路由器发送查询。

  EIGRP stub

  检验方式: 开debug,将R3配置为stub

  stub命令的参数介绍: 

  eigrp stub connected //通告直连路由

 eigrp stub summary //通告汇总路由

 eigrp stub redistributed //通告重分布的路由

 eigrp stub static //通告静态路由

 eigrp stub receive-only //只接收不通告

 eigrp stub leak-map //路由泄露

思科认证CCNP培训循环开班,WOLFLAB网络技术实验室提供:

CCNA|CCNP|EI CCIE;HCIA|HCIP|HCIE Datacom|VMware等培训

https://www.wolf-lab.com/

WOLFLAB官方微信:17316362402

WOLFLAB官方QQ:2569790740

返回目录
在线咨询