遇到的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传过来的路由。

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

  1. fedora设置更新源_fedora设置例程已更新

    fedora设置更新源 Post-installation setup guide. Dotfiles available on Gitlab. 安装后设置指南. 点文件在Gitlab上可用. 1.系 ...

  2. 红帽linux怎么更新源,redhat Linux配置yum更新源

    redhat Linux配置yum更新源 (2011-11-19 20:23:04) 标签: 杂谈 YUM是RedHat Linux在线安装更新及软件的工具,但是这是RHEL5的收费功能,如果没有购买 ...

  3. kali2021更新源(最全的更新源)

    目录 1.安装leafpad 2.切换root 3.配置更新源 4.获取最新软件包列表信息,并更新 5.删除安装包 1.安装leafpad sudo apt install leafpad 2.切换r ...

  4. STL(C++标准库,体系结构及其内核分析)(STL源码剖析)(更新完毕)

    文章目录 介绍 Level 0:使用C++标准库 0 STL六大部件 0.1 六大部件之间的关系 0.2 复杂度 0.3 容器是前闭后开(左闭右开)区间 1 容器的结构与分类 1.1 使用容器Arra ...

  5. android hook 实例,代码实例分析android中inline hook

    以下内容通过1.实现目标注入程序,2.实现主程序,3.实现注入函数,4.thumb指令集实现等4个方面详细分析了android中inline hook的用法,以下是全部内容: 最近终于沉下心来对着书把 ...

  6. python中定义一个类、实例化时传入的参数如何传递_用实例分析Python中method的参数传递过程...

    什么是method? function就是可以通过名字可以调用的一段代码,我们可以传参数进去,得到返回值.所有的参数都是明确的传递过去的. method是function与对象的结合.我们调用一个方法 ...

  7. python method_用实例分析Python中method的参数传递过程

    什么是method? function就是可以通过名字可以调用的一段代码,我们可以传参数进去,得到返回值.所有的参数都是明确的传递过去的. method是function与对象的结合.我们调用一个方法 ...

  8. 实例分析SQL中除法的三种写法

    首先请看 http://topic.csdn.net/u/20070821/15/8a2dac05-51b8-4eb1-b41d-4fbe8a232c85.html 帖中从实际问题出发,讨论SQL语句 ...

  9. 水库大坝安全检测平台实例分析+辽阳市水库大坝安全检测平台+志豪未来科技有限公司+陈志豪

    案例一 案例二 案例三 案例四 案例五 重要记录 学习参考 http://blog.zhulong.com/u10290003/blogdetail7267589.html http://www.da ...

最新文章

  1. 51 nod 机器人走方格
  2. ORA-28002: the password will expire within 7 days 解决方法(后面部分为拷贝,前面加上了自己遇到的问题的时候解决方案)
  3. 算法导论-排序(四)计数排序(线性时间排序)
  4. 重写Object类的equals方法
  5. rhel5.8安装oracle10g,RHEL 5.8 安装Oracle 10g r2 clusterware 报错
  6. [常用命令]Git命令
  7. 2018年手机摄像头模组市场调研报告
  8. 带有参数的输出存储过程
  9. 缺少链接库报错:ld: symbol(s) not found for architecture x86_64
  10. Python学习笔记之爬虫
  11. 普中开发板白屏_普中开发板送的12864为什么程序写进去,屏幕不显示?
  12. 康末otdr测试软件丢失,利用OTDR快速定位光缆线路故障-测试测量-与非网
  13. Learning AV Foundation(二)AVAudioPlayer
  14. 2017存钱计划(python实现)
  15. JavaScript中的模块化之AMD和CMD
  16. SOLIDWORKS如何实现放样折弯
  17. zblog mysql修改_zblog数据库批量替换https的方法
  18. 深度可分离卷积(计算过程及代码实现)
  19. LLVM系列(三)小插曲---Clang的常用命令
  20. matlab三相短路电流计算程序_三相短路电流计算

热门文章

  1. [附源码]计算机毕业设计Python基于Web的软考题库平台(程序+源码+LW文档)
  2. html如何让文字变斜体,CSS中如何让文字变成斜体
  3. 这台计算机没有连接到网络怎么办,通过路由器连接电脑连不上网怎么办_台式连接路由器没有网解决方法-系统城...
  4. 微信默认表情符号的代码对照表
  5. python后面空格报错_python空格报错
  6. 双线macd指标参数最佳设置_经典实用的双线MACD指标
  7. SParC: Cross-Domain Semantic Parsing in Context 论文解读
  8. echarts绘制地理坐标/地图
  9. docker镜像启动后端口号是多少_RSS、智能家居、个人博客、维基百科……Docker 入门指南...
  10. 《前沿》(Frontiers)系列英文学术期介绍