以实例分析 IGP中更新源检测失败丢弃路由更新包

遇到的BGP中更新源检测失败现象

在iBGP建立邻居关系时,往往会采用单播方式的环回口建立邻居,这样做是因为环回口有永不Down的特点。在这种情况下即使是在一个接口出现问题之后,仍然可以通过其他的可用接口保持BGP邻居。然而这种建立方式也存在问题——更新源检测失败。什么是更新源检测失败?

默认下路由器在封装源IP的时候会用自己的发包出接口地址封装源IP,并不使用互相指的单播地址作为源IP。在对端路由器收到Hello报文(建立邻居的数据报)时,路由器会出现更新源检测不通过的情况,因为在对端路由器收到该Hello数据包时会检查数据包中源IP地址是否和对端所指的对端的单播IP相同,如果不是则会被路由器认为是非法报文而丢包,所以我们会用如下的命令修改更新源,使得对端设备的更新源检测通过来建立IBGP邻居。

Router(config) router bgp XX
Router(config-router) neighbor X.X.X.X update-source X.X.X.X

IGP中依然存在更新源检测失败丢弃路由更新包的现象

在IGP双方建邻居的时候,通常是用network命令把接口宣告进入IGP进程中(例如OSPF,RIP,EIGRP等),由于在使用network命令后路由协议都是使用组播建立邻居,所以不需要管理员手动指定对方的地址,就不会出现环回口建立后手动修改更新源的问题,甚至IGP也没有必要用环回口建立邻居,即使在用neighbor命令在建立单播邻居的时候也不会需要修改更新源。

但是不容易发现IGP的更新源检测并不代表着IGP路由器不会进行更新源检测,从而盲目信任对端传路由器过来的更新路由。

下图是以RIP为例,由于RIP更新报文的目的地址是224.0.0.9,所以对端R2会收到R1的RIP的路由更新报文,但是可以看到R2却把这个路由更新报文丢弃了(如下图)。

实例的分析

为什么会丢弃这个报文?通过抓取R1发包到R2的RIP更新包我们可以看见的是,源IP的地址13.0.0.1并不在R1和R2所处在12.0.0.0/24的网段中,出现了更新源检测失败的情况,即源IP和接收报文所在接口的网段不一致(这就是IGP中更新源检测失败的情况),所以R2路由器认为R1发来的路由更新报文是非法报文,而丢弃了这个数据包。

问题的解决

在IGP中出现这种现象往往是由于接口地址配错导致,当重新修改接口IP地址后,等待RIP的重新收敛之后,R1的路由表项正常,说明R1能够正常收到邻居R2\R3传过来的路由。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值