BGP-4中关于路由聚合的相关介绍

简介: 当 BGP 发言者为了向特定对等体通告的目的而聚合多个路由时,聚合路由的 AS_PATH 通常包括一个 AS_SET,该 AS_SET 由形成聚合的 AS 集合形成。在许多情况下,网络管理员可以确定是否可以在没有 AS_SET 且不形成路由环路的情况下安全地通告聚合。

640.gif


BGP-4 提供了一套新的机制来支持无类域间路由 (Classless Inter-Domain Routing,CIDR) [RFC1518, RFC1519]。这些机制包括支持将一组目的地作为 IP 前缀进行通告,并消除 BGP 中网络“类”的概念。BGP-4 还引入了允许聚合路由的机制,包括 AS 路径的聚合。


ATOMIC_AGGREGATE


ATOMIC_AGGREGATE的路径属性的类性值为6,是一个众所周知的长度为 0 的任意属性。


当 BGP 发言者为了向特定对等体通告的目的而聚合多个路由时,聚合路由的 AS_PATH 通常包括一个 AS_SET,该 AS_SET 由形成聚合的 AS 集合形成。在许多情况下,网络管理员可以确定是否可以在没有 AS_SET 且不形成路由环路的情况下安全地通告聚合。


如果聚合排除了由于丢弃 AS_SET 而聚合的路由的 AS_PATH 中存在的至少一些 AS 编号,则聚合路由在通告给对等体时,应该包括 ATOMIC_AGGREGATE 属性。


接收具有 ATOMIC_AGGREGATE 属性的路由的 BGP 发言者在将路由传播到其他发言者时不应删除该属性。


接收具有 ATOMIC_AGGREGATE 属性的路由的 BGP 发言者在向其他 BGP 发言者通告此路由时,不得使该路由的任何 NLRI 更具体。


接收具有 ATOMIC_AGGREGATE 属性的路由的 BGP 发言者需要了解这样一个事实,即到达目的地的实际路径(如路由的 NLRI 中指定的那样)虽然具有无环属性,但可能不是在路由的 AS_PATH 属性。


AGGREGATOR


AGGREGATOR的路径属性的类性值为7,是一个长度为 6 的可选传递属性。


该属性包含形成聚合路由的最后一个 AS 编号(编码为 2 个八位字节),后跟形成聚合路由的 BGP 发言者的 IP 地址(编码为 4 个八位字节)。这应该与用于发言者的 BGP 标识符的地址相同。


它可以包含在由聚合形成的更新中。执行路由聚合的 BGP 发言者可以添加 AGGREGATOR 属性,该属性应包含其自己的 AS 编号和 IP 地址。IP 地址应该与发言者的 BGP 标识符相同。


如果 BGP 发言者接收到重叠路由,决策过程必须根据配置的接受策略考虑两条路由。如果一个更少和更具体的路由都被接受,那么决策过程必须在 Loc-RIB 中安装更少和更具体的路由,或者聚合这两个路由并在 Loc-RIB 中安装聚合的路由,前提是两条路由具有相同的 NEXT_HOP 属性值。


如果 BGP 发言者选择聚合,那么它应该在 AS_SET 中包含所有用于形成聚合的 AS,或者将 ATOMIC_AGGREGATE 属性添加到路由中。这个属性现在主要是信息性的。随着不支持无类路由的 IP 路由协议的消除,以及不支持无类路由的路由器和主机实现的消除,不再需要去聚合。路由不应该被取消聚合。特别是,携带 ATOMIC_AGGREGATE 属性的路由绝不能去聚合。也就是说,这条路由的 NLRI 不能再具体了。沿着这样的路由转发并不能保证 IP 数据包实际上只会遍历路由的 AS_PATH 属性中列出的 AS。


路由信息的高效组织


在选择了它要通告的路由信息后,BGP 发言者可以利用多种方法以有效的方式组织该信息。


信息缩减


信息缩减可能意味着策略控制粒度的减少——信息缩减后,相同的策略将应用于等价类中的所有目的地和路径。


决策过程可以通过以下任何一种方法选择性地减少将放置在 Adj-RIBs-Out 中的信息量:


a) 网络层可达性信息(Network Layer Reachability Information,NLRI):


目标 IP 地址可以表示为 IP 地址前缀。在地址结构与自治系统管理员控制的系统之间存在对应关系的情况下,可以减小 UPDATE 消息中携带的 NLRI 的大小。


b) AS_PATHs:


AS 路径信息可以表示为有序的 AS_SEQUENCE 或无序的 AS_SET。AS_SET 用于上一节中描述的路由聚合算法。它们通过仅列出每个 AS 编号一次来减少 AS_PATH 信息的大小,而不管它可能在聚合的多个 AS_PATH 中出现了多少次。


AS_SET 意味着 NLRI 中列出的目的地可以通过穿过至少一些组成自治系统的路径到达。AS_SET 提供了足够的信息来避免路由信息环路;但是,它们的使用可能会修剪潜在的可行路径,因为这些路径不再以 AS_SEQUENCE 的形式单独列出。在实践中,这不太可能成为问题,因为一旦 IP 数据包到达一组自治系统的边缘,BGP 发言者可能拥有更详细的路径信息,并且可以区分各个路径与目的地。


聚合路由信息


聚合是将多个不同路由的特征组合在一起的过程,从而可以发布单个路由。聚合可以作为决策过程的一部分发生,以减少将放置在 Adj-RIBs-Out 中的路由信息量。


聚合减少了 BGP 发言者必须存储和与其他 BGP 发言者交换的信息量。可以通过将以下过程分别应用于相同类型的路径属性和网络层可达性信息来聚合路由。


不应聚合具有不同 MULTI_EXIT_DISC 属性的路由。


如果聚合路由有一个 AS_SET 作为其 AS_PATH 属性中的第一个元素,则发起该路由的路由器不应使用该路由通告 MULTI_EXIT_DISC 属性。


具有不同类型代码的路径属性不能聚合在一起。同类型代码的路径属性可以按照以下规则进行聚合:


NEXT_HOP:当聚合具有不同 NEXT_HOP 属性的路由时,聚合路由的 NEXT_HOP 属性应标识执行聚合的 BGP 发言者上的接口。


ORIGIN属性:如果聚合路由中的至少一条路由具有值为 INCOMPLETE 的 ORIGIN,则聚合路由必须具有值为 INCOMPLETE 的 ORIGIN 属性。否则,如果聚合路由中的至少一条路由具有值为 EGP 的 ORIGIN,则聚合路由必须具有值为 EGP 的 ORIGIN 属性。在所有其他情况下,聚合路由的 ORIGIN 属性的值为 IGP。


AS_PATH 属性:如果要聚合的路由具有相同的 AS_PATH 属性,则聚合路由与每个单独的路由具有相同的 AS_PATH 属性。


为了聚合 AS_PATH 属性,我们将 AS_PATH 属性中的每个 AS 建模为元组 <type, value>,其中“type”标识 AS 所属的路径段的类型(例如,AS_SEQUENCE、AS_SET),并且“ value”标识 AS 编号。如果要聚合的路由具有不同的 AS_PATH 属性,则聚合的 AS_PATH 属性应满足以下所有条件:


- 聚合的 AS_PATH 中的所有 AS_SEQUENCE 类型的元组应出现在要聚合的初始路由集中的所有 AS_PATH 中。


- 聚合 AS_PATH 中所有类型为 AS_SET 的元组应出现在初始集合中的至少一个 AS_PATH 中(它们可能出现为 AS_SET 或 AS_SEQUENCE 类型)。


- 对于聚合 AS_PATH 中任何类型为 AS_SEQUENCE 的元组 X,它在聚合 AS_PATH 中的元组 Y 之前,在包含 Y 的初始集合中的每个 AS_PATH 中,X 在 Y 之前,无论 Y 的类型如何。


- 具有相同值的 AS_SET 类型的元组不得在聚合的 AS_PATH 中出现多次。


- 只有当与另一个相同类型和值的元组相邻时,具有相同值的多个 AS_SEQUENCE 类型的元组才会出现在聚合的 AS_PATH 中。


实现可以选择符合这些规则的任何算法。至少,符合要求的实现应能够执行满足上述所有条件的以下算法:


- 确定要聚合的路由的所有 AS_PATH 属性共有的最长前导元组序列(如上定义)。将此序列作为聚合 AS_PATH 属性的前导序列。


- 从要聚合的路由的 AS_PATH 属性中将其余元组的类型设置为 AS_SET,并将它们附加到聚合的 AS_PATH 属性中。


- 如果聚合的 AS_PATH 具有多个具有相同值的元组(无论元组的类型如何),则通过从聚合的 AS_PATH 属性中删除类型为 AS_SET 的元组来消除除一个之外的所有元组。


- 对于聚合的 AS_PATH 中的每一对相邻的元组,如果两个元组具有相同的类型,则将它们合并在一起,只要这样做不会导致生成长度大于 255 的段。


ATOMIC_AGGREGATE:如果要聚合的至少一条路由具有 ATOMIC_AGGREGATE 路径属性,则聚合路由也应具有此属性。


AGGREGATOR:来自要聚合的路由的任何 AGGREGATOR 属性不得包含在聚合路由中。执行路由聚合的 BGP 发言者可以附加一个新的 AGGREGATOR 属性。


与 RFC 1267相比,RFC4271引入了一个新属性 LOCAL_PREF,它有助于路由选择过程以及简化配置。还引入了一个新属性 ATOMIC_AGGREGATE 以确保某些聚合不会被取消聚合。另一个新属性 AGGREGATOR 可以添加到聚合路由中,以通告哪个 AS 以及该 AS 内的哪个 BGP 发言者配置了聚合。


为确保保持定时器是对称的,现在基于每个连接协商保持定时器。现在支持零保持计时器。


附录:复杂的 AS_PATH 聚合


选择提供保留大量路径信息的路径聚合算法的实现可能希望使用以下过程:


为了聚合两个路由的 AS_PATH 属性,我们将每个 AS 建模为一个元组 <type, value>,其中“type”标识该 AS 所属的路径段的类型(例如,AS_SEQUENCE,AS_SET),“value " 是 AS 编号。如果两个 AS 对应的 <type, value> 元组相同,则称它们相同。


聚合两个 AS_PATH 属性的算法工作如下:


a) 在每个 AS_PATH 属性中标识相同的 AS(如上定义),它们在两个 AS_PATH 属性中具有相同的相对顺序。如果满足以下任一条件,则称两个 AS X 和 Y 具有相同的顺序:


- 在两个 AS_PATH 属性中 X 在 Y 之前,或者

- 在两个 AS_PATH 属性中 Y 在 X 之前。


b) 聚合的 AS_PATH 属性由 (a) 中标识的 AS 组成,其顺序与它们在要聚合的 AS_PATH 属性中出现的顺序完全相同。如果 (a) 中标识的两个连续 AS 在要聚合的两个 AS_PATH 属性中没有立即相互跟随,则将两个属性中的中间 AS(位于两个相同的连续 AS 之间的 AS)组合成一个AS_SET 路径段,由来自两个 AS_PATH 属性的中间 AS 组成。然后将该段放置在聚合属性的 (a) 中标识的两个连续 AS 之间。如果在 (a) 中标识的两个连续 AS 在一个属性中立即彼此跟随,但在另一个属性中不跟随,则后者的中间 AS 组合成一个 AS_SET 路径段。然后将该段放置在聚合属性的 (a) 中标识的两个连续 AS 之间。


c) 对于聚合 AS_PATH 中的每一对相邻元组,如果两个元组具有相同的类型,则将它们合并在一起,如果这样做不会导致生成长度大于 255 的段。


如果作为上述过程的结果,给定的 AS 编号在聚合的 AS_PATH 属性中出现多次,则应从聚合的 AS_PATH 属性中删除该 AS 编号的最后一个实例(最右边的出现)之外的所有实例。

相关文章
快递鸟/菜鸟电子面单接口的申请方法
电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务。通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍。电子面单以接口形式嵌入到自己的系统、网站上,可以在自己的平台操作打印电子面单。 一.电子面单接口类型及定义 快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必须快递公司上门做系统对接,使用一家快递则需要对接一次,比较麻烦,而且后期对接成本也较高。
|
存储 缓存 算法
数据结构-链表(一)
链表(Linked List)是一种常见的数据结构,用于存储和组织数据。与数组不同,链表的元素(节点)在内存中不必连续存储,而是通过指针链接在一起。 链表由多个节点组成,每个节点包含两部分:数据(存储实际的元素值)和指针(指向下一个节点的引用)。链表的第一个节点称为头节点,最后一个节点称为尾节点,尾节点的指针通常指向空值(null)。
817 1
|
网络协议 Go
curl --resolve参数的作用
curl --resolve参数的作用
1401 0
|
8月前
|
JSON 编解码 Go
Go 新一代网络请求resty!,比net/http好用10倍
resty 是 Go 语言高性能 HTTP 客户端,比 net/http 简洁 10 倍、比 axios 更 Go 风。零依赖、支持链式调用、自动 JSON 编解码、重试/拦截器/Mock/文件上传下载等,Go 1.18+ 可用,一行代码发起请求,大幅提升开发效率与可维护性。(239 字)
916 1
|
存储 安全 API
技术经验解读:公钥和私钥的区别
技术经验解读:公钥和私钥的区别
1186 0
|
Linux 虚拟化 iOS开发
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
2438 0
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
|
存储 Unix Linux
进程间通信方式-----管道通信
【10月更文挑战第29天】管道通信是一种重要的进程间通信机制,它为进程间的数据传输和同步提供了一种简单有效的方法。通过合理地使用管道通信,可以实现不同进程之间的协作,提高系统的整体性能和效率。
|
人工智能 自然语言处理 并行计算
大模型面经:任务、clip、diffusion
本文简要介绍了文本生成的常见预训练任务(如MLM、CLM、NSP等),多模态模型中的SOTA模型及CLIP的优势,以及多模态大模型如Stable Diffusion的原理。重点解析了Stable Diffusion的扩散机制与图像生成流程,帮助理解其高效性和广泛应用的原因。
817 5
|
NoSQL 数据库 uml
draw.io:开源款白板/图表绘制利器
draw.io 是一款开源免费的图表绘制工具,支持流程图、思维导图、网络拓扑图等多种图表类型。它在 GitHub 上已有 52.6k Star,提供在线版、自托管 Docker 部署和桌面版安装方式。无论你是学生、教师还是工程师,draw.io 都能极大提高你的工作效率。官方网站:[https://www.drawio.com](https://www.drawio.com),GitHub 地址:[https://github.com/jgraph/drawio-desktop](https://github.com/jgraph/drawio-desktop)。
3493 6
draw.io:开源款白板/图表绘制利器
|
SQL 关系型数据库 MySQL
GORM V2 安装和连接 MySQL
GORM V2 安装和连接 MySQL
1419 0

热门文章

最新文章