BGP route processing

2023-11-01

路由协议,套用IT里面的术语,实际上就是分布式数据库系统,它包含了节点间的数据传递和节点内的数据处理。对于BGP来说,节点间基于TCP(端口179)的连接,在这个基础上,可以构建AS间的EBGP,AS内的IBGP,IBGP有full mesh,BGP路由反射器等,这些都是BGP节点之间的连接方式,这次看看BGP router内部是如何处理数据。

BGP是一种path vector路由协议,对比其他类的路由协议,path vector随路由携带的辅助信息更多,处理也稍微复杂一些。BGP内部处理流程简单的画了一下,如下所示,各家的实际实现可能略有不同,但应该大同小异。

在看这个处理流程前,先看看一些相关概念。

Path Attribute(PA)

Path对应的就是route,那顾名思义,这是BGP Route的一些参数属性。Path Attribute是BGP的基础组成元素,它贯穿了整个BGP 路由处理的过程。

首先,BGP节点间传递的BGP message就是由NLRI(Network Layer Reachability Information)和PA组成。这个可以从BGP Update Message看出来。如果只考虑IP路由,那么NLRI就是IP prefix。

其次,BGP policy engine的处理是围绕着Path Attribute展开的。第三,BGP best path selection,是根据PA做的算法。

Path attribute分为4类:

  1. Well-known Mandatory: 所有的BGP router必须识别这个属性,并且所有的BGP Message必须包含这个属性
  2. Well-known Discretionary: 所有的BGP router必须识别这个属性,BGP Message可以不包含这个属性
  3. Optional Transitive: BGP router可以不识别这个属性,如果不识别直接无视这个属性
  4. Optional Non-transitive: BGP router可以不识别这个属性,如果不识别要将这条BGP Message丢弃

常见的BGP Path Attribute如下表所示:

这里NEXT_HOP也属于Path Attribute,BGP处理过程中可以修改NEXT_HOP。EBGP router默认会修改NEXT_HOP为自己,IBGP router默认不会修改NEXT_HOP,这在上一篇讲过。

Routing Information Base(RIB)

RIB其实是设备商的术语。或许不太恰当,但是Global RIB可以对应操作系统里面的路由表。Global RIB和路由表都决定IP packet的三层转发的路径。RIB除了存放路由条目,还保存一些路由协议相关的辅助信息。除了Global RIB,每个路由协议都有自己的RIB,这样,路由协议可以将一些生(Raw)数据与真正应用的数据进行隔离。BGP维护几个RIB,包括了:

  • BGP Adjacent In RIB:保存所有接收到的BGP Message,这里可能存在多条BGP Message指向同一个目的IP prefix
  • BGP Local RIB:保存经过处理和运算得到的最优BGP Message,对于同一个目的IP prefix,只存在一条最优的BGP Message
  • BGP Adjacent out RIB:保存将要发送给BGP Peer的BGP Message

BGP协议收发的数据不会直接写到Global RIB里,而是放到了BGP自己的RIB里面,在适当的时候写入Global RIB,前面说过,这样可以实现数据隔离,有选择的将BGP数据写入主路由表。BGP的三个RIB保存着不同处理阶段的BGP Message,为不同阶段的操作提供数据。接下来过一下BGP路由处理过程。

Route Processing

1. BGP Adjacent in RIB

这一步比较简单,来者不拒,所有收到的BGP Message都存到了BGP Adjacent in RIB。

2. Input Policy

Input policy会完成两部分工作,filtering和manipulation。

Filtering会根据Path Attribute过滤BGP Message,这里需要注意两个内置的过滤,一个是判断当前二手手机号码买卖的AS是否在BGP Message的AS_PATH中,如果在的话,那么这是一条之前已经经过当前AS的Message,这条Message会被过滤。另一个会判断BGP Message里的NEXT_HOP是否可达,如果不可达,那么这条Message会被标成Invalid,也会被过滤。除了内置的过滤,用户(对,就是网工)和控制程序也可以添加过滤规则,例如通过route-map,access-list,distribution-list等。

Manipulation会修改BGP Message的Path Attribute,这样可以控制后面的步骤,例如Best path selection。举个例子,BGP Router从两个邻居收到同一个IP Prefix的BGP Message,那么可以通过修改某一个邻居的BGP Message的PA,使得其中一条BGP Message在下一步中胜出。

3. Best path Selection

Local Route是本地的并且希望通过从BGP发布出去的路由。例如思科的设备,通过network命令可以发布本地路由,也可以通过redistribution,将IGP的路由重分布到BGP。这些Local Route都将转换成了BGP Message,和经过Input policy过滤和修改过的BGP Message,一起参与Best Path Selection。

Best Path Selection是一个根据Path Attribute运算,从指向同一个目的IP prefix的,多条BGP Message中选出一条最优的过程。这个过程不复杂,但是比较繁琐,相应的介绍也很多了,限于篇幅我就不展开了,感兴趣可以看看思科的文档BGP Best Path Selection Algorithm。

4. BGP Local RIB

Best Path Selection能确保指向同一个IP prefix只有一条(其实也可以多条,取决于multipath)最优的BGP Message,这些BGP Message会存到BGP Local RIB。接下来的处理会分两条路径。

第一个是写入到Global RIB,也就是全局路由表。当路由器中,没有其他的路由协议生成了指向相同目的IP prefix的路由,或者有的话,该路由协议的Administrative Distance(AD)大于BGP的AD值,那么这个时候BGP Local RIB的路由才会写入到Global RIB。EBGP的AD值是20,小于大部分路由协议,IBGP的AD值是200,大于大部分路由协议。

第二个是输出到Output Policy,进而发往其他的BGP Peer。

这两个路径互不影响,就算BGP没有竞争过其他路由协议,没有将路由写到全局路由表,也不影响路由传递给其他的BGP Peer。

5. Output Policy

与Input Policy类似,这里也做filtering和manipulation。

Filtering会根据Path Attribute过滤BGP Message,可以自己定义,也有BGP程序自带的过滤。还是以AS_PATH为例,如果目的BGP Peer的AS在BGP Message的AS_PATH中,那么这条BGP Message不会生成对应的发往该BGP Peer的BGP Message。

Manipulation会修改BGP Message的Path Attribute,例如修改MED值,进而生成发往BGP Peer的BGP Message。

经过Output Policy之后,一条BGP Message,会生成针对每一个可以送达的BGP Peer的,多条BGP Message。虽然来自同一个BGP Message,但是这里的每个BGP Message里面包含的Path Attribute可能因为定义策略不一样。

6. BGP Adjacent out RIB

类似于第一步,这部分也简单,生成好的BGP Message发往对端的BGP Peer。

最后

以上就是BGP路由处理过程,可以看出都是围绕Path Attribute。如果说BGP基于TCP传输,给BGP router间的传输带来可靠性,那么Path Attribute给BGP的应用带来了灵活性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BGP route processing 的相关文章

  • 虚拟服务器和vdi,如何搭建高效虚拟桌面架构(VDI)

    一个典型的VDI 虚拟桌面架构 可以帮助项目在密度 性能和成本间取得平衡 密度是指项目所涉及的基础架构 硬件 软件 网络等 能够支持的最佳用户数量 性能指从可用性角度衡量的用户体验 成本自然就是指项目预算 下面我列出的几点建议可以帮助你发挥
  • HTML5-3-表格

    文章目录 属性 边框属性 标题 跨行和跨列 单元格边距 HTML 表格由 table 标签来定义 tr tr 是 table row 的缩写 表示表格的一行 td td 是 table data 的缩写 表示表格的数据单元格 th th 是
  • MS coco数据集下载

    登录ms co co数据集官网 一直不能进入 翻墙之后开看到下载链接 有了下载链接下载还是很快的 在我这儿晚上下载 速度能达到7M s 所以也不上传到网盘了 有需要的人等夜深人静的时候下载效果更佳哦 我把2017的数据集下载链接贴上来 li

随机推荐

  • Windows下进程中每个线程占用CPU查看

    工具 进程资源管理器process explorer 安装 无需安装 下载后双击即可运行 具体方法 查看想要观察的进程 选择属性 每个线程占用CPU查看 这里的TID号是以下QT获取线程ID号后转为十进制得到的 QThead current
  • springboot微信公众号发送模板消息

    springboot微信公众号发送模板消息 1 准备工作 申请你所需要模板 配置ip白名单 你所需要部署的服务器ip 2 编写模板消息的请求参数封装类 import java util HashMap import java util Ma
  • Netty 实现http请求 并响应

    什么是Netty Netty 是一个利用Java 的高级网络的能力 隐藏其背后的复杂性而提供一个易于使用的API 的客户端 服务器 框架 Netty 与 Tomcat Netty与tomcat 最大的区别在于通信协议 Tomcat 是基于H
  • mysql视图的作用(详细)

    MySQL视图是一个虚拟表 其内容由查询定义 同真实的表一样 视图包含一系列带有名称的列和行数据 但是 视图并不在数据库中以存储的数据值集形式存在 行和列数据来自由定义视图的查询所引用的表 并且在引用视图时动态生成 对其中所引用的基础表来说
  • Centos7 网卡无法连接

    借用一下某个博主的图 因为我忘记截图了 礼貌附上链接 错误信息应该是这样的 大家可以先去看一下这个博主的错误 如果不行的话可以再换这种方法 在确认了ONBOOT的属性设置为 yes的情况下我进行了 网络重启 service network
  • Imagination在GDC 2022上推出下一代移动游戏解决方案

    借助于O3DE引擎展示采用硬件加速的全域光照光线追踪解决方案 英国伦敦 2022年3月23日 Imagination Technologies在 2022游戏开发者大会 GDC 2022 上推出了其下一代移动游戏图形处理解决方案 借助于Op
  • keil mdk 常见警告解析

    1 warning Deprecated declaration 函数 give arg types 该函数如果没有参数就要在括号里加 void 例如 函数定义 void TP GetAdXY int adx ady adx Read X
  • linux qt cmake错误的解决方法

    QT错误 新建项目后显示项目未配置 在工具 选项 kits中先要把kits clone一个到Manual中 在项目中使用Clone of Desktop这一个 极其坑 安装cmake sudo apt get install cmake 编
  • python-flask-sqlalchemy

    1 flask sqlalchemy 集成的两种方式 1 通过flask app初始化 from flask sqlalchemy import SQLAlchemy flask db SQLAlchemy from flask impor
  • 安装nltk_data数据包的问题:[Errno 11004] getaddrinfo failed

    问题 安装nltk时 在python shell中输 import nltk nltk download 会出现以下问题 这是因为nltk download 下载连接不上 在C Windows System32 drivers etc中找到
  • 图解fork函数机制(简单易懂)

    fork函数机制十分难以理解 尤其涉及到循环fork时就更难搞清楚 例如 for i 0 i lt 3 i pid fork if pid gt 0 std cout lt lt pid lt
  • 经常访问的站点

    色色日语网 www qianxunjp com 日本软件 www flatworld jp
  • MySQL执行计划解读

    Explain语法 EXPLAIN SELECT 变体 1 EXPLAIN EXTENDED SELECT 将执行计划 反编译 成SELECT语句 运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2 EXPLAIN
  • 首看世界杯

    首看世界杯 不谈技术 只聊自己的几点感受 纯属个人感想 今年是第一次关注世界杯 本来对足球是没有什么兴趣的 如果说对足球有什么了解的话 大部分还是来自小时候的动画片 足球小将 但是看现实中的足球比赛 半天进一个球 甚至一个球都不会进 感觉没
  • 【技术碎片】jcraft.jsch 文件传输工具与方法

    目录 前言 依赖 ChannelSftp功能 实现 JschUtil java ImageInfoService java ImageInfoServiceImpl java 参考资料 前言 SFTP相当于SSH FTP 其中FTP则协议通
  • 2023第一个重大漏洞,几乎影响所有组织

    Dark Reading 网站披露 微软修复了 Outlook 中存在的零日漏洞 漏洞被追踪为 CVE 2023 23397 是一个权限提升漏洞 攻击者可以利用该漏洞访问受害者的 Net NTLMv2 响应身份验证哈希并冒充用户 安全研究人
  • 集训一月小结

    暑假集训过了4个周了 仔细想想这4个周我都做了些什么 学到了什么 又有什么让我感到开心 有什么令我绝望 不管是谁都必须承认在板凳上每天坐上9个小时以上 学习那些算法 有时候会让我感到兴奋 有时候又会让我不愿意在电脑前坐一分钟 想想过程 究其
  • 中国智能卡车“遥遥领先”:卡车NOA落地5000万公里0事故,全球首个

    贾浩楠 发自 副驾寺智能车参考 公众号 AI4Auto 成熟的 擎天柱 已经可以自己出去赚钱了 此时此刻 遍及华东 华北 华南 西北 几乎全国所有主要货运干线上 都有智能重卡承运商单 高速路段由卡车智能驾驶系统完全承担驾驶任务 自主控制油门
  • chinesecalendar报错:no available data for year 2022, only year between [2004, 2021] supported

    Error no available data for year 2022 only year between 2004 2021 supported 解决 更新最新chinesecalendar 每年年底需更新最新版本的chineseca
  • BGP route processing

    路由协议 套用IT里面的术语 实际上就是分布式数据库系统 它包含了节点间的数据传递和节点内的数据处理 对于BGP来说 节点间基于TCP 端口179 的连接 在这个基础上 可以构建AS间的EBGP AS内的IBGP IBGP有full mes