wucl202000 发表于 2012-11-21 14:26:59

关于eigrp的拓扑表的一个问题

本帖最后由 wucl202000 于 2012-11-21 15:40 编辑

我做了一个实验,拓扑如下



所有路由器都只是简单配置了接口ip,r1上配置loopback接口1.1.1.1,所有都运行eigrp 100,宣告了所有连接的网段,包括1.0.0.0,然后各个路由器之间建立的邻居关系正常,ping测试都正常。
但是我在r2上面,运行show ip eigrp topology all-links的时候,发现了一个问题,去往1.0.0.0网段和去往r5的路径都只有一条。这是什么原因呢??理论上去1.0.0.0不是应该还可以走r4-r3-r1的吗?

tea 发表于 2012-11-21 14:38:12

这是个好问题 :)
我只说一点:EIGRP尽管拓扑表里存有多条路径,但仅将successor传递给neighbor,也就是说FD最小的那条路由传递给邻居。分析一下吧,给出答案。

wucl202000 发表于 2012-11-21 14:48:47

本帖最后由 wucl202000 于 2012-11-21 14:54 编辑

tea 发表于 2012-11-21 14:38 static/image/common/back.gif
这是个好问题 :)
我只说一点:EIGRP尽管拓扑表里存有多条路径,但仅将successor传递给neighbor,也就是说F ...
我自己又琢磨了一下,也和网友讨论了,结果我们得出的结论是因为eigrp的水平分割。抓包看了也发现,r4也向r2通告了1.0.0.0网段的路由,正常通告。紧接着,r4应该是发现了自己前往1.0.0.0要经过r2,然后它又向r2发送了一个1.0.0.0的延迟为4294967295的路由将原先通告的那条路由抑制了。所以最后r2的拓扑表里没有通过r4到达1.0.0.0的路由。

tea 发表于 2012-11-21 14:57:29

wucl202000 发表于 2012-11-21 14:48 static/image/common/back.gif
我自己又琢磨了一下,也和网友讨论了,结果我们得出的结论是因为eigrp的水平分割。抓包看了也发现,r4也向 ...
有没有其他因素呢?

wucl202000 发表于 2012-11-21 15:03:53

本帖最后由 wucl202000 于 2012-11-21 15:24 编辑

tea 发表于 2012-11-21 14:57 static/image/common/back.gif
有没有其他因素呢?
还有其他因素???你之前说的只传递successor的问题,r4去往1.0.0.0网段的话,从r2和r3都是一样的,所以从r2走的那条肯定被通告过去了啊,然后因为水平分割又被抑制了。还有什么因素吗?想不出来了, 耿叔请赐教

附上我抓到的两个通告1.1.2.0的包

yiming505 发表于 2012-11-22 09:39:36

R4通过R2和R3去往R1的路径代价是相等的,所以这2条路径都会进入路由表,因此通告时必然会2条路径都向邻居通告。之所以R2只有1条路径则是受水平分割原则的影响,在R4上与R2相连的S口关闭水平分割,R2上马上可以学到第2条路径。
水平分割:不向发送该条路径的邻居网关发送包含该路径的更新。这样就很好理解R4并不会把通过R4-R3-R1到达1.1.1.1的路径通告给R2,因为R2已将通过R2-R1到达1.1.1.1这条路径通告给R4.
有些地方的水平分割原理是这么解释的“路由器从某个接口接收到的更新信息不允许再从这个接口发回去。 ”这个解释害了我很久

wucl202000 发表于 2012-11-22 13:51:59

yiming505 发表于 2012-11-22 09:39 static/image/common/back.gif
R4通过R2和R3去往R1的路径代价是相等的,所以这2条路径都会进入路由表,因此通告时必然会2条路径都向邻居通 ...

你看我抓到的两个包,r4其实已经向r2通告过通过r4-r3-r1去往1.1.1.0那条路径了。只是因为水平分割的原因,r4发现它去往1.1.1.0其实有一条路径是经过r2的,所以它又向r2发了一条关于通过r4-r3-r1去往1.1.1.0的那条路径的更新,只不过这次delay被通告为一个表示不可达的最大值,所以r2收到之后就把这条路径又给删除了。我是这样理解的。
页: [1]
查看完整版本: 关于eigrp的拓扑表的一个问题