Roye2012 发表于 2012-12-6 16:43:47

帧中继下EIGRP邻接关系建立

本帖最后由 Roye2012 于 2012-12-6 16:48 编辑

最近在SPOTO开始了CCNP课程的学习,遇到以下一个问题,希望大大们帮忙解答下:
拓扑:帧中继下Hub and Spoke网络结构,运行EIGRP动态路由协议,R1的S0/1关闭水平分割。


【步骤一】取消帧中继动态映射,手动配置帧中继静态映射,如下:R1(config)#int s0/1R1(config-if)#no frame-relay inverse-arpR1(config-if)#frame-relay map ip 172.16.123.1 102 broadcastR1(config-if)#frame-relay map ip 172.16.123.2 102 broadcastR1(config-if)#frame-relay map ip 172.16.123.3 103 broadcast
R2(config)#int s0/2R2(config-if)#no frame-relay inverse-arpR2(config-if)#frame-relay map ip 172.16.123.1 201 broadcastR2(config-if)#frame-relay map ip 172.16.123.3 201 broadcastR2(config-if)#frame-relay map ip 172.16.123.2 201 broadcast

R3(config)#int s0/3R3(config-if)#no frame-relay inverse-arpR3(config-if)#frame-relay map ip 172.16.123.1 301 broadcastR3(config-if)#frame-relay map ip 172.16.123.2 301 broadcastR3(config-if)#frame-relay map ip 172.16.123.3 301 broadcast
结果:此时EIGRP中,R1和R2、R1和R3建立邻接关系。
【步骤二】在步骤一基础上取消所有静态映射条目的broadcast参数
结果:此时EIGRP中,R1、R2、R3之间互相无法建立邻接关系。
【步骤三】在步骤二基础上手动指Neighbor,如下:R1(config)#router eigrp 100R1(config-router)#neighbor 172.16.123.2 s0/1R1(config-router)#neighbor 172.16.123.3 s0/1
R2(config)#router eigrp 100R2(config-router)#neighbor 172.16.123.1 s0/2
R3(config)#router eigrp 100R3(config-router)#neighbor 172.16.123.1 s0/3
结果:此时EIGRP中,R1和R2、R1和R3建立邻接关系,结果同步骤一。
【步骤四】在步骤三基础上在R2和R3上手动互指Neighbor,如下:R2(config)#router eigrp 100R2(config-router)#neighbor 172.16.123.3 s0/2
R3(config)#router eigrp 100R3(config-router)#neighbor 172.16.123.2 s0/3
结果:此时EIGRP中,R1和R2、R1和R3、R2和R3之间建立邻接关系。
【步骤五】回到步骤一的状态,手动在R2和R3上互指Neighbor,如下:R2(config)#router eigrp 100R2(config-router)#neighbor 172.16.123.3 s0/2
R3(config)#router eigrp 100R3(config-router)#neighbor 172.16.123.2 s0/3
结果:此时EIGRP中,R1不和任何路由器建立邻接关系,R2和R3建立邻接关系,R1学习不到EIGRP路由条目。
疑问:步骤五的结果产生的原因??

tea 发表于 2012-12-6 16:59:56

eigrp的neighbor命令,与OSPF及RIP都不太相同,
在EIGRP如果使用了neighbor命令,就有点单播更新的意思,并且该路由器EIGRP进程将忽略组播的hello包,
因此,如果在某台路由器上的 EIGRP进程中,使用neighbor指一个邻居,在对方那,也需要neighbor指回来,否则对方将一直发组播的hello,而本地却一个劲忽略这些组播报,邻居自然是建立不起来的,

排错的过程很简单,楼主可以在R2上debug一下eigrp packets,即可看到现象,解决的办法,你懂的 :)

楼主独立思考和深入探究的能动性非常强,赞一个,好样的。

tea 发表于 2012-12-6 17:17:03

楼主有这份探索精神,大可继续坚持,并且积累起自己的知识库,做个笔记本模板,把自己的实验结果、所学的知识全部记录和积累下来,就像这样:



“在完成基本的eigrp配置后,R1、R2、R3都能发现并建立EIGRP邻居关系,这时,如果在R2上的EIGRP进程中,neighbor 1.1.1.3,那么R2将忽略任何组播的EIGRP hello包,包括R3发来的组播HELLO,并且开始向R3发送单播的hello包,而单播的hello包,也被R3所忽略,因此R2将无法与任何邻居建立EIGRP邻接关系,
那么如果在R3上也添加neighbor 1.1.1.2,R2、R3就建立起了EIGRP邻接关系,但是R1就跟谁也建不了 :)”

这是我在看到楼主的问题后,在我的EIGRP笔记中搜索到的,之前做过的测试。
楼主加油。

紫川凌 发表于 2012-12-6 17:46:30

撸主,您好:
               对你的问题我敲了一下实验,开了一下debug 和 抓包。
R1上的debug
R1#debug eigrp packets
EIGRP Packets debugging is on
    (**, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)
R1#
*Mar1 00:08:55.827: EIGRP: Sending HELLO on Serial0/0
*Mar1 00:08:55.827:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
R1#
*Mar1 00:09:00.687: EIGRP: Received HELLO on Serial0/0 nbr 172.16.123.3
*Mar1 00:09:00.687:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
R1#
*Mar1 00:09:08.479: EIGRP: Received HELLO on Serial0/0 nbr 172.16.123.2
*Mar1 00:09:08.483:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar1 00:09:08.483:      Inteface goodbye received
R1#
*Mar1 00:09:08.483: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 172.16.123.2 (Serial0/0) is down: Interface Goodbye received   //收到R2的 goodbye消息 当然断开连接
*Mar1 00:13:35.419: EIGRP: Sending HELLO on Serial0/0
*Mar1 00:13:35.419:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
R1#
*Mar1 00:14:28.959: EIGRP: Sending HELLO on Serial0/0
*Mar1 00:14:28.959:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
R1#
*Mar1 00:15:27.307: EIGRP: Sending HELLO on Serial0/0
*Mar1 00:15:27.307:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0

我们看到,R1同学还是一直在坚持不懈的发送HELLO包。而且是以组播的形式发送滴。


当然,你会看到经过R1端口发送的还有下面这些包


R2、R3之间发送的HELLO包,都经过R1的接口发送(这是因为你FR的配置导致的)

R3#debug eigrp packets
EIGRP Packets debugging is on
    (**, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)
R3#
*Mar1 00:32:39.651: EIGRP: Received HELLO on Serial0/0 nbr 172.16.123.2
*Mar1 00:32:39.655:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
R3#
*Mar1 00:32:48.103: EIGRP: Sending HELLO on Serial0/0 nbr 172.16.123.2
*Mar1 00:32:48.103:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
R3#
*Mar1 00:33:10.003: EIGRP: Received HELLO on Serial0/0 nbr 172.16.123.1
*Mar1 00:33:10.007:   AS 100, Flags 0x0, Seq 0/0 idbQ 0/0
*Mar1 00:33:10.007: EIGRP: Ignore multicast Hello Serial0/0 172.16.123.1
R3上的debug我们看到,有收到R1组播发送的HELLO包,但是呢, Ignore multicast Hello Serial0/0 172.16.123.1(忽略172.16.123.1发送的组播HEELO包)。

这是因为neighbor 172.16.123.2 Serial0/0敲上之后,EIGRP的所有包都将以单播的方式发送,并且不对EIGRP的组播包做回应。


Roye2012 发表于 2012-12-6 23:49:36

楼上两位真厉害啊,我明白了,谢谢~
感恩!-biggrin-

victor_huang 发表于 2012-12-10 10:09:48

一句话,如果协议需要在接口上发组播,那么二层上要有关键词 broadcast,如果接口是非广播,那么要手工指邻居。
页: [1]
查看完整版本: 帧中继下EIGRP邻接关系建立