您的位置:首页 > 职场人生

EIGRP邻居建立解析

2008-04-07 23:07 316 查看
[align=left]网络拓扑: Router A (S1/0) -------------(S1/0) Router B[/align]

在Router A上: (部分命令)
int s1/0
ip address 10.1.1.1 255.255.255.0
no shut
router eigrp 10
net 10.1.1.0 255.255.255.0

在Router B上:
int s1/0
ip address 11.1.1.1 255.255.255.0
no shut
router eigrp 10
net 11.1.1.0 255.255.255.0

这时A上会显示:Neighbor 11.1.1.1 not . common subnet for Serial1/0
B上会显示:Neighbor 10.1.1.1 not . common subnet for Serial1/0

然后在Router A的S1/0上启用Secondary IP :ip address 11.1.1.2 255.255.255.0 secondary

这时A上出现浮动(每隔80s就Down一次然后马上Up):

*Apr 7 22:40:39.239: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 11.1.1.1 (Serial1/0) is up: new adjacency
Left(config-if)#
*Apr 7 22:41:58.751: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 11.1.1.1 (Serial1/0) is down: retry limit exceeded
Left(config-if)#
*Apr 7 22:42:03.251: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 11.1.1.1 (Serial1/0) is up: new adjacency

B上仍显示为:IP-EIGRP(Default-IP-Routing-Table:10): Neighbor 10.1.1.1 not . common subnet for Serial1/0

接下来在B的S1/0上启用Secondary IP :ip address 10.1.1.2 255.255.255.0 secondary

这时B上显示:*Apr 7 22:44:50.719: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 10.1.1.1 (Serial1/0) is up: new adjacency

A相应显示为:*Apr 7 22:44:49.071: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 11.1.1.1 (Serial1/0) is up: new adjacency

从实验现象和相关资料,进行如下解释:

1.EIGRP通过Hello包完成邻居发现和邻接关系建立,Hello包发送到224.0.0.10,所有启用EIGRP进程的路由器监听该地址。

2.EIGRP邻居建立是“一厢情愿”的过程:在实验中,Router A上建立Secondary IP后把B放入邻接表(可用show ip eigrp neighbor查看),但是B却没有这样做,理由是不在同一子网,那么由此我们可以推断是A在收到B的Hello包后,经过自己的逻辑判断,认为B是自己的邻居,具体判断过程我认为是这样:

1)首先要明确的是邻接表的内容,应该包括下一跳路由器和直连接口,其中下一跳路由器就是对端路由器对应接口的主IP地址,即Primary IP,在路由选择协议中,数据流都是
通过主地址传送的,EIGRP当然也是如此,这个看似有问题,但实际上与实验现象并不冲突,我们接着往下看。

2)既然通过Hello包可以完成邻接关系建立,并记录在邻接表中,那么我们可以推断hello包中包含发送端的接口信息和主IP地址(且不带子网掩码,这个我们另行验证),因为我没能查到EIGRP Hello包的具体字段,可能是Cisco私有的缘故吧。

3)在实验中,双方都没有配Secondary IP的时候,接口主地址不在同一网段,无法形成邻居,这没问题,关键是A配上与B的Primary IP在同一网段的Secondary IP的时候,A把B当成了自己的邻居,这是何解,不是数据流都通过主地址传输吗?

4)推断邻居建立的过程如下:B通过自己的主地址发送Hello包给A,其中Hello包记录的是11.1.1.1,A通过自己的主地址10.1.1.1接收后查看这个Hello包,发现源地址是11.1.1.1,然后将该地址与自己主地址的子网掩码进行AND运算,得出网络地址11.1.1.0,接着查看自己的路由表,在没有配Secondary IP以前,A的路由表中直连网段只有10.1.1.0,这样A就认为B并不与自己直连,所以显示Neighbor 11.1.1.1 not . common subnet for Serial1/0,但是在配了Secondary IP 11.1.1.2后,A的直连网段就有11.1.1.0,就会认为B是与自己直连的,并将其放进邻接表,但是B并没有因此将A放进邻接表,因为B在没有配与A在同一网段的Secondary IP 10.1.1.2前,与A一开始的情况是一样的。

5)而A在实验中每隔80s(hold-time)浮动一次(实验得证),down了又up,其原因在于在A把B当作邻居后,发送自己的路由Update作为对B的Hello包的回应,这时期待的就是B的Ack,但是B现在都不把A当邻居,更不可能发Ack确认,所以A在等80s之后超时,认为链路不可用,要重新建立与B的邻居关系,邻居关系Down掉,而这时A期待的数据包就是B的Hello以重新建立邻居,这个B还是满足的,每隔5s就有一个发过来,A收到后加以判断又把B当邻居,并重蹈覆辙,由此形成浮动。

关于Hello中发过来的路由器接口主IP地址是否有子网掩码的信息,我没有查阅到相关内容,只知道由于EIGRP支持CIDR,所以发送的路由更新信息都是有子网掩码的,由此我们进行验证,验证基于我前述的邻居建立的逻辑判断。

还是Router A和Router B

1)A的S1/0设为23.1.1.1 255.255.255.0,B的S1/0设为23.1.1.2 255.255.255.0 并用EIGRP进行通告,这时邻居能形成。

2)然后将A的S1/0改为 23.1.1.1 255.255.255.128,B不变,仍为23.1.1.2 255.255.255.0, 调整后邻居依然形成

PS:地址变动后会有短时间内的down又Up,还有Graceful Shutdown现象,B上可以看到:*Apr 7 23:58:54.203: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 23.1.1.1 (Serial1/0) is down: Interface Goodbye received
*Apr 7 23:58:58.823: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 23.1.1.1 (Serial1/0) is up: new adjacency

3)接着将B的地址改为 23.1.1.129 255.255.255.0 ,这时A上会显示*Apr 8 00:01:27.555: IP-EIGRP(Default-IP-Routing-Table:10): Neighbor 23.1.1.129 not . common subnet for Serial1/0

由实现现象我们可以推断:
1.如果Hello包中含有子网掩码,是将收到的源IP地址与收到的子网掩码进行AND运算再与自己的直连网段进行比较的话,在步骤2中,A在收到B发的Hello后就会发现B是在网段23.1.1.0/24,而自己是在23.1.1.0/25,是不形成邻居的,与实际现象不符。

2.再者,若发送的只有IP地址,是与接收端口的Primary IP的子网掩码进行AND运算,那么B发给A,A将23.1.1.129与自己的子网掩码255.255.255.128进行AND运算得到23.1.1.128/25,而自己的直连接口是23.1.1.0/25,不在同一网段,不与B形成邻居,这是符合实验现象的。

最后我们进行以下总结:

1.EIGRP通过端口的Primary IP传输数据流并形成Neighbor ID(代表一个接口)

2.Secondary IP使得一个接口上可以配不同网段地址,并在路由表中通过直连网段体现出来.

3.Router在接收到EIGRP Hello后会用自己的Primary IP的子网掩码与Hello中的Neighbor ID进行AND运算,得出网络地址后与自己路由表中的直连网段进行匹配,有则认为对方是邻居,并将其放进邻接表中,没有就会以不在同一子网为由来拒绝形成邻居。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息