论剑BGP——初练神功(二)

2024-03-06 13:30
文章标签 bgp 论剑 神功 初练

本文主要是介绍论剑BGP——初练神功(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论剑BGP

  • 一、联盟
  • 二、路由反射器
  • 三、联盟和路由反射器比较

上期问题:逻辑全连接的方案弊端在于数量众多的IBGP连接难于管理,有什么办法可以缓解这个问题呢?有两个方案可以解决IBGP连接数量过多的问题:联盟(confederation)和路由反射器(Route Reflector)。本期我们就来详细解释下这两种方案。

一、联盟

让我们先来回忆一下,上期交换机碰到的难题:
在这里插入图片描述
如果采用逻辑全连接的方式,需要建立3个IBGP连接。这只是转接AS(这里为AS200)内只有3台设备的情况,事实上,转接AS内如果每增加一台设备,需要建立的IBGP连接数量将呈几何级数上升。

BGP联盟可以将AS分割为多个子自治系统,从而让大型转接AS变得更具管理性。被分割的AS本身将成为联盟,而分割后的子自治系统则成为成员自治系统。联盟之外的AS将整个联盟视为一个AS,看不见成员自治系统。由于成员自治系统对外界来说是隐而不见的,因而成员自治系统可以使用公有或私有AS号(建议采用私有AS号)。

联盟可以极大的降低IBGP连接的数量。在联盟中,只需要在成员自治系统内进行IBGP的全连接,而成员自治系统间使用一种特殊的EBGP连接,我们称之为联盟EBGP。下面看下具体配置。
在这里插入图片描述
如上图,我们将AS200分成2个成员AS:AS65535和AS65534。而对于R1和R5来说,他们看到的中间的转接AS仍然是AS200。下面截取了R3的一些关键配置:

R3:
#
bgp 65535  /本机AS为成员AS号confederation id 200  /联盟ID,外部路由器看来,连接AS仍然为200confederation peer-as 65534  /说明本机连接了其他哪些成员ASpeer 10.0.12.1 as-number 65534  /和成员AS65534建立联盟EBGP连接peer 10.0.23.1 as-number 65535  /和本成员AS内部设备建立IBGP连接#ipv4-family unicastundo synchronizationpeer 10.0.12.1 enablepeer 10.0.23.1 enablepeer 10.0.23.1 next-hop-local  /这个配置并不生效,详细会在下文提及。
#

这样,整个AS200内,只需要建立一个IBGP连接和一个EBGP连接,就可以实现路由的传递和数据包的转发。
需要注意的是:联盟AS内仍然需要保证IGP的连通性,才能保证数据包的正确转发。
在联盟内部应遵守以下规则:

    1. 联盟外部路由的NEXT-HOP在整个联盟中都是被保留的。
    1. 被宣告到联盟之内的路由的MED属性在整个联盟中都被保留。
    1. 路由的LOCAL_PREF属性在整个联盟中都被保留,而不仅仅是在为它们赋值的成员AS之内。
    1. 在联盟内部需要将成员AS的AS号加入到AS_PATH列表中,但这些AS号不能被宣告到联盟之外。在默认情况下,成员AS号被列在AS_PATH中作为AS_PATH属性类型4,即AS_CONFED_SEQUENCE。如果在联盟中使用了手动聚合命令(aggregate)并配置了关键字as_set,那么位于聚合点之后的成员AS号将被列在AS_PATH中作为AS_PATH属性类型3,即AS_CONFED_SET.
    1. AS_PATH中的联盟AS号用于实现环路避免功能,但是在联盟内部进行BGP路由选路过程中,选择最短AS_PATH时,不考虑这些联盟AS号。

上述规则的本质原因是整个联盟都被外界视为一个自治系统。对于规则2、3、4、5,将在后面说到AS_PATH属性和MED属性时,进行详细说明。本期我们通过一个具体例子说明规则1。仍旧以上面交换机的难题为例:

首先,我们在R1上通过Loopback1口发布一条路由:10.1.4.0/24,这条路由通过EBGP连接发送给R2时,NEXT-HOP为R1建立连接的接口地址10.0.14.4/24。正常来说,R2和R3建立的是EBGP连接,R2在将这条路由发送给R3时,会将这条路由的NEXT-HOP修改为自己和R3建立EBGP连接的接口地址10.0.12.1/24,但是我们发现并不是这样:
在这里插入图片描述
可以看到,R3上10.1.4.0/24路由的NEXT-HOP依然是10.0.14.4。这时,我们在R3上配置命令peer 10.0.23.1 next-hop-local。由于R3和R4之间是IBGP关系,正常来说配置了这条命令之后,R3在把该路由发送给R4时,会将NEXT-HOP设置为本设备接口地址。在R4上查看BGP路由发现,NEXT-HOP依然为10.0.14.4。
在这里插入图片描述
这就是由于外部路由的NEXT-HOP在联盟内部都是被保留的。这也解释了为什么我们之前说:联盟内部必须要保证IGP的连通性,如果联盟内部没有运行IGP,那么R4和R3上将没有到达10.0.14.0/24网段的路由,导致该BGP路由不生效。
接着我们在R5上也通过Loopback1接口引入一条路由10.1.5.0/24,并且在R4上配置命令peer 10.0.23.1 next-hop-local。查看R3上的BGP路由表:
在这里插入图片描述
可以看到,10.1.5.0/24这条路由的NEXT-HOP被修改为R4建立IBGP的接口地址10.0.23.1。这是因为,peer next-hop-local在仅仅在外部路由在联盟内部传递的情况下是不生效的。

二、路由反射器

下面是一个路由反射器的示例:
在这里插入图片描述
如图,左边组网内有5台设备,如果采用IBGP全连接方式,将会有众多连接需要管理,非常麻烦。上期我们说过,IBGP有一个防环机制,任何从IBGP收到的路由,都不会发给其IBGP对等体,这是为何我们要建立逻辑全连接的原罪。聪明的人们想到,能不能有条件的打破这个规则呢?

我们发现,对于左图,如果我们只允许任何一台设备转发从IBGP对等体收到的路由,都是不会产生路由环路的。于是,我们指定其中一台设备可以转发从IBGP对等体收到的路由,则其他设备只需要和该设备建立IBGP连接,就可以保证路由能够传递到所有的设备上。这就是路由反射器的思想。

根据右图,我们先介绍下路由反射器中的一些概念:

  • 路由反射器RR(Route Reflector):允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。
  • 客户机(Client):与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。
  • 非客户机(Non-Client):既不是RR也不是客户机的IBGP设备。在AS内部所有非客户机与所有RR之间仍然必须建立全连接关系。
  • 始发者(Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。这点会在后面详细介绍。
  • 集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。这点会在后面详细介绍。

RR向IBGP邻居发布路由规则如下:

  • 从非客户机学到的路由,发布给所有客户机。
  • 从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。
  • 从EBGP对等体学到的路由,发布给所有的非客户机和客户机。

我们根据交换机的难题来看下路由反射器的配置。
在这里插入图片描述
如上图,R2、R3、R4任何一台作为RR都可以,本例我们用R3作为RR。R3的关键配置如下:

#
bgp 200peer 10.0.12.1 as-number 200peer 10.0.23.1 as-number 200#ipv4-family unicastundo synchronizationreflector cluster-id 1  /配置cluster-id,缺省为设备router id,可选配置peer 10.0.12.1 enablepeer 10.0.12.1 reflect-client   /配置10.0.12.1为客户机peer 10.0.23.1 enablepeer 10.0.23.1 reflect-client
#

我们在R1上发布10.1.4.0/24这条路由,查看R4的路由表,发现R4已经收到这条路由,在R4上查看这条路由的详细信息:
在这里插入图片描述
这条路由的NEXT-HOP为10.0.23.2
这条路由的Cluster_list属性中,已经记录了0.0.0.1。集群使用AS内唯一的Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。

  • 一条路由第一次被RR反射的时候,RR会把本地Cluster ID添加到Cluster List的前面。如果没有Cluster_List属性,RR就创建一个。
  • 当RR接收到一条更新路由时,RR会检查Cluster List。如果Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地Cluster ID,将其加入Cluster List,然后反射该更新路由。

当AS内部存在多个集群时,可能会产生集群环路,当RR从其他集群收到Cluster_list中含有1的路由时,将其丢弃,从而防止了集群间的路由环路。

同样我们看到,这条路由的Originator已经被记录为10.0.1.1。这个ID是R2的Router ID。Originator_ID由RR产生,使用的Router ID的值标识AS内这条路由的始发者,这里,10.1.4.0/24这条路由在AS200内的始发者是R2。当RR收到这条路由时,会将R2的Router ID加在这条路由中作为Originator_ID属性。当设备接收到这条路由时,会比较Oringinator_ID和设备本身的Router ID,如果相同,则丢弃该路由。这样就防止了在集群内部的路由环路。

三、联盟和路由反射器比较

联盟和路由反射器都是在大规模自治系统中减少IBGP对等体数量的有效方法,和联盟相比,路由发射器有以下两个好处:

    1. 联盟中的所有路由器都必须理解和支持联盟机制,而路由反射方案只需要路由反射器了解路由反射机制即可,客户路由器和RR之间只建立不同的IBGP连接。
    1. 无论从所需的配置命令还是从拓扑结构的设计上说,路由反射器的实现都更加的简单。

如上面所述就是一个典型的例子,通过路由反射器,只需要在R3上增加一条配置命令,即可解决问题。但是如果希望用各种EBGP机制来管理大规模AS,那么联邦将是一个更优的解决方案。

当然,在某些场景下,联盟和路由反射器同时使用将更加事半功倍。一个简单的例子:
在这里插入图片描述

这篇关于论剑BGP——初练神功(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/780209

相关文章

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 10数据中心中的BGP

本章解答以下问题: ASN,团体(community),属性(attribute),最佳路径这些BGP术语是什么疑似?在数据中心中应该使用eBGP还是iBGP?在数据中心使用BGP时,应采用什么ASN编号方案?在数据中心使用BGP时,应如何修改BGP的计时器? BGP 基本概念 BGP协议概述 BGP 是一种路径矢量路由协议。“矢量”是一个数组或列表。因此,路径矢量路由协议是一种构建并分发

HCIP笔记9-BGP(3)

[r2]bgp 64512 [r2-bgp]peer 172.16.1.3 next-hop-local 该命令表面上意思为本地将路由传递给邻居172.16.1.3时,修改BGP条目中下一跳地址为本地R2的IP地址; 但实际仅针对R2从本地的EBGP 邻居学习到的路由传递给172.16.1.3时才修改;本地从其他IBGP邻居处学习到的所有路由在传递给172.16.1.3这个IBGP邻居时不修改

HCIP笔记10-BGP(3)

[r2]bgp 64512 [r2-bgp]peer 172.16.1.3 next-hop-local 该命令表面上意思为本地将路由传递给邻居172.16.1.3时,修改BGP条目中下一跳地址为本地R2的IP地址; 但实际仅针对R2从本地的EBGP 邻居学习到的路由传递给172.16.1.3时才修改;本地从其他IBGP邻居处学习到的所有路由在传递给172.16.1.3这个IBGP邻居时不修改

智扣物联,“论剑”长沙!2024全国大学生物联网竞赛火山引擎赛道获奖名单重磅揭晓

8 月 22-24 日,“2024 年全国大学生物联网设计竞赛”全国总决赛在湖南大学落下帷幕。全国大学生物联网设计竞赛(以下简称竞赛)是面向大学生的学科竞赛,于 2014 年创办,已连续举办十届,成为了国内物联网领域最具规模和影响力的学科竞赛。竞赛不仅激发了物联网相关专业学生的创新和创业活力,还促进了国内物联网相关专业建设和人才培养。 作为本次竞赛的支持企业之一,火山引擎以边缘智能及扣子

OSPF与BGP防环机制总结

目录 1)OSPF防环机制: 2)BGP的防环: 1)OSPF防环机制: LSA1类优于3类area 0的3类优于其他非骨干区域3类骨干区域不能分割OSPF非骨干区域必须和骨干区域相连,区域间路由必须经过区域0中转LSA-3 -- MPLS中DN bit位 ;LSA-5/7 --DN bit位和route tag ----- MPLS场景下转发地址防环(LSA-5/LSA-7)--

实验13 简单拓扑BGP配置

实验13 简单拓扑BGP配置 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统间的动态路由协议,用于在自治系统(AS)之间传递路由信息。BGP是一种路径向量路由协议,从设计上避免了环路的发生,支持CIDR和路由聚合。 在BGP中大致可分为两种邻居关系

徐州BGP服务器租用的好处有哪些?

BGP是一种路径矢量协议,能够维护不同主机、网络和网关的路由器的路径,并且可以根据BGP做出路由决定,将电信和联通等线路通过BGP互连技术,把不同的线路融合在一起。其中BGP服务器则是一种用于不同主机和互联网之间传输数据和信息的路由协议。 那么对于徐州BGP服务器租用都有哪些优势呢? BGP服务器自身的路由协议,使多个运营商能够共同接入一个IP,实现不同运营商的用户能够以最快的速度来访

使用 MPLS 解决 BGP 的路由黑洞

MPLS 协议并不会为通过 BGP 协议学习的路由条目分配标签号; 而是在访问这些 BGP 路由目标网段时,在流量中压入到达这些网段的 BGP 下一跳设备地址的标签号; 例:R2从BGP邻居5.5.5.5学习到6.6.6.0 网段的路由;R2在访问6.6.6.0 时,将在数据包中压入到达5.5.5.5ip 地址的标签号,来穿越中间没有运行 BGP 协议的设备;实现打破路由黑洞; 注:华为设备

配置调整BGP网络的收敛速度方法

配置调整BGP网络的收敛速度 通过配置BGP定时器、去使能EBGP连接快速复位和路由振荡抑制可以提高BGP网络的收敛速度,提高BGP的稳定性。 前置任务 在配置调整BGP网络的收敛速度之前,需完成以下任务: 配置BGP的基本功能 配置流程 如下配置任务为并列关系(不含“检查配置结果”),请根据应用环境选择配置即可。 配置BGP连接重传定时器 配置BGP存活时间和保持时间定时器 配置更新报文定

BGP的社团属性

也是——BGP 的扩展属性        默认大多数厂商的产品在 BGP 协议中不携带社团属性 例:控制传播范围的社团属性 [r1]route-policy com permit node 10 [r1-route-policy]apply community no-advertise    针对所有的流量修改属性 [r1]bgp 1 [r1-bgp]peer 12.1.1.2 ro