BGP 的反射和联盟

参考

基础介绍

1. 各种协议的关系

  • 动态路由协议可以按照工作范围分为IGP以及EGP。IGP工作在同一个AS内,主要用来发现和计算路由,为AS内提供路由信息的交换;而EGP工作在AS与AS之间,在AS间提供无环路的路由信息交换,BGP则是EGP的一种
  • OSPF 属于 IGP (内部网关协议),主要作用是在网络内部发现
  • BGP是一种增强的路径矢量路由协议,同时BGP是拥有丰富的策略控制技术的外部网关协议。多运行于AS与AS之间
  1. IGP: Interior Gateway Protocol内部网关协议,主要作用是发现和计算自治域内的路由信息,包括RIP,OSPF,IS-IS,IGRP等

  2. EGP:Exterior Gateway Protocol外部网关协议,一种自治系统相邻两个网关之间交换路由信息的协议,BGP是最新的外部网关协议

  3. BGP:Border Gateway Protocol,边界网关协议,运行在自制系统间的路由协议,主要作用交换域间路由协议;

    • IBGP:Internel BGP,内部边界网关协议,如果两个交换BGP报文的对等实体属于同一个自治系统,那么这两个对等实体就是IBGP对等实体;
    • EBGP:Externel BGP,外部边界网关协议,如果两个交换BGP报文的对等实体属于不同的自治系统,那么这两个对等实体就是EBGP对等实体;
  4. AS 自治系统英文全称(autonomous system),意思是一组内部管理下的网络,它们之间共享同一个路由选择方法。它由地区再划分并必须由IANA分配一个单独的16位数字。地区通常连接到其他地区,使用路由器创建一个自治系统。作用就是在运行BGP等外部路由协议时用于区分不同自治系统

2. 为什么要有IBGP

  1. IGP的能力限制
    • IGP处理路由的条目有限,而目前internet上核心路由器的路由表已经超过10万条。假如没有IBGP,那么这些路由只能采取重分发的方式直接导入到IGP中,这样做的缺点很明显:
      • 第一,IGP协议的作者并没有打算让IGP来处理如此大量的路由,IGP本身也无法处理这样大的路由数量
      • 第二,如果非要让IGP来处理,那么根据IGP的处理原则,假如这10万路由中任何一条路由发生变化,那么运行IGP的路由器就不得不重新计算路由,更为严重的是,假如其中某一条路由出现路由抖动的情况,例如端口反复UP/DOWN,这会导致所有的IGP路由器每时每刻都不得不把10万条路由重新计算一遍,这种计算量对于绝大多数路由器来说是无法负担的
      • 另外对于运行RIP V1的路由器来说,10万条路由的定期更新,这根本就是无法接受的事情,除去带宽占用率不谈,我想,也只有少量高端的GSR以及TSR能够有这样的性能吧。很显然,我们不可能让网络中所有的路由器都是GSR和TSR,如果真是这样,那么Cisco、juniper以及华为等厂家就要偷笑了。例如:AS100----AS200—AS300,假定AS100/200/300各有100台路由器,而AS100中有1W条路由要传递要AS300中,而AS200的路由器不需要学习AS100的路由。如果没有IBGP的话,那么这1W条路由都必须被重分发到AS200的IGP中去,这样的话,相当于AS200中所有的100台路由器都增加了1W条路由。如果利用IBGP的话,那么AS200中只有运行IBGP的路由器会学习到这1W条路由,其它运行IGP的路由器都不会学习到这1W条路由。并且由于BGP的路由控制能力大大强于IGP的路由控制能力,因此运行IBGP的路由器比运行IGP的路由器能更好的对这1W条路由做一些路由策略的处理,从而保证整个AS内部的路由器学习到的路由数目可以控制在可接受的范围之内。
  2. 路由环路的问题
    • BGP是靠路由属性来防止路由环路的,例如AS_PATH属性,假如说没有IBGP协议,那么当所有BGP路由重分发到IGP中后,路由属性必然丢失,这就破坏了BGP的路由环路防止机制,产生了路由环路的隐患

3. IBGP能够传送所有的路由前缀,为什么还需要IGP(如OSPF)

img

  • IBGP 基于 TCP,逻辑连接,不一定存在实际的物理链路,所以需要 IGP(如OSPF)提供路由

  • BGP 协议本身只注重路由的控制,并不发现路由

  1. IBGP之间是TCP连接,也就意味着IBGP邻居采用的是逻辑连接的方式,两个IBGP连接不一定存在实际的物理链路。所以需要有IGP来提供路由,以完成BGP路由的递归查找。
  2. BGP协议本身实际上并不发现路由,BGP将路由发现的工作全部移交给了IGP协议,它本身着重于路由的控制。因此,如果没有IGP,那么BGP也就毫无用处了。

4. EBGP与IBGP的区别

  1. 路由环路的避免措施不一样,IBGP强制规定ibgp speaker不允许把从一个ibgp邻居学习到的前缀传递给其它ibgp邻居,因此IBGP要求逻辑全连接。EBGP没有这样的要求,EBGP对路由环路的避免是通过AS_PATH属性来实现的。
  2. 使用的BGP属性不同,例如IBGP可以传递LOCAL_PREF(本地优先属性),而EBGP不行。
  3. IBGP有同步的要求,而EBGP没有同步的要求
  4. IBGP不需要IBGP邻居之间有物理连接,只需要逻辑连接即可,而EBGP下一般情况下都要求EBGP邻居之间存在物理连接。

BGP反射和联盟引入

为了实现路由信息的交互, BGP要求一个AS内的所有BGP Speacker相互形成IBGP对等体互联(见路由宣告原则四,IBGP从EBGP学到的路由不发往相邻IBGP,为了避免环路;同时也是为了实现在一个AS能够转发其他AS的EBGP路由到另一个AS(全部设备是IBGP才能保证AS内BGP网络通)), 而这一要求使得IBGP的扩展成为了一个很大的问题。BGP反射器以及BGP联盟则是为了解决这个问题而提出的BGP拓展技术, 都是在同一个AS内的操作。

BGP防止环路的方式

  1. EBGP: 通过AS-PATH属性, 丢弃从EBGP对等体接收到的在AS_PATH属性里包含自身AS号的任何更新信息
  2. IBGP:BGP路由器不会将任何从IBGP对等体接收到的更新信息传给其他IBGP对等体。这就要保证更新信息可以到达所有IBGP对等体,即要求一个AS内的所有IBGP设备实现全互联。

IBGP防环带来的问题: IBGP Speaker之间保证会话全互联带来IBGP会话数n(n-1)/2的问题, 可以采用路由反射解决

路由反射: 降低对指定路由器IBGP路哟通告机制的限制, 允许将从IBGP对等体接收到的更新信息传递给某些IBGP对等体

联盟: 将大的AS分成若干小的AS,小的AS之间建立EBGP对等体关系

BGP 反射

1. 概括性介绍

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工的逆袭之路

路由反射器RR(Route Reflector):允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。

1.1 角色

路由反射中的不同角色, IBGP对等体可以有几种角色

  1. 路由反射器(Route Reflector):只对路由条目做转发, 不是对数据做转发。
  2. 客户机(Client):路由反射器的客户机(与RR形成反射邻居关系的IBGP设备
    • 启用OSPF 建立连接,之后再建立EBGP邻居(Peer关系)
  3. 非客户机(Non-Client): 普通的BGP路由器(既不是RR也不是客户机的IBGP设备)
    • 启用OSPF 建立连接
  4. 始发者(Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。
  5. 集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。
1.2 关系

对等体之间的关系

  1. Client只需维护与RR之间的IBGP会话
  2. RR与RR之间需要建立IBGP的全互联
  3. Non-Client与Non-Client之间需要建立IBGP全互联
  4. RR与Non-Client之间需要建立IBGP全互联
1.3 RR的作用:

1、从客户机收到的路由,反射给其他的客户机。

2、从客户机收到的路由,反射给其他的非客户机。

3、从非客户机收到的路由,反射给其他的客户机。

4、从非客户机收到的路由,不反射给非客户机。

1.4 总结:

RR只传递最优的BGP路由,除了非客户机之间的路由不反射,其他的都反射。

2. 详细介绍

2.1 反射:
  • 只有打破了IBGP路由只传一跳特征的才叫做反射,反射不会修改IBGP路由的任何属性。

  • RR将路由反射出去的时候添加两个属性:Originator ID、Cluster list 用于防止环路。

2.2 起源ID:
  1. RR将路由反射出去的时候添加Orignator ID,取值为IBGP邻居的Router id。(意思是添加来源的 Router id)

  2. 当BGP设备接受一条路由之后,起源ID和自身RouterID相同,则拒绝接受该路由(反射器会发给所有相连的 BGP 设备,若 BGP 设备发现是自己发的,那么就丢弃)

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工的逆袭之路_02
2.3 BGP路由反射器原理

同一集群内的客户机只需要与该集群的RR直接交换路由信息,因此客户机只需要与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少了IBGP连接数量。

如上图1所示,在AS65000内一台设备作为RR,三台设备作为客户机,形成Cluster1。此时AS65000中IBGP的连接数从配置RR前的10条(5*4/2)减少到4条,不仅简化了设备的配置,也减轻了网络和CPU的负担。

RR突破了“从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。”的限制,并采用独有的Cluster_List属性和Originator_ID属性防止路由环路

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

  1. 从非客户机学到的路由,发布给所有客户机。
  2. 从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。
  3. 从EBGP对等体学到的路由,发布给所有的非客户机和客户机。
2.4 BGP Cluster_List属性

路由反射器和它的客户机组成一个集群(Cluster),使用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,然后反射该更新路由。

2.5 BGP Originator_ID属性

Originator ID由RR产生,使用的Router ID的值标识路由的始发者,用于防止集群内产生路由环路。

当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。

当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同,则不接收此路由。

3. 路由反射器的几种架构

3.1 BGP备份路由反射器

为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。

由于RR打破了从IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,所以同一集群内的RR之间中可能存在环路。这时,该集群中的所有RR必须使用相同的Cluster ID,以避免RR之间的路由环路。
在这里插入图片描述

如上图,路由反射器RR1和RR2在同一个集群内,配置了相同的Cluster ID。

  1. 当客户机Client1从EBGP对等体接收到一条更新路由,它将通过IBGP向RR1和RR2通告这条路由。

  2. RR1和RR2在接收到该更新路由后,将本地Cluster ID添加到Cluster List前面,然后向其他的客户机(Client2、Client3)反射,同时相互反射。

  3. RR1和RR2在接收到该反射路由后,检查Cluster List,发现自己的Cluster ID已经包含在Cluster List中。于是RR1和RR2丢弃该更新路由,从而避免了路由环路。

3.2 BGP多集群路由反射器

一个AS中可以存在多个集群,各个集群的RR之间建立IBGP对等体。当RR所处的网络层不同时,可以将较低网络层次的RR配成客户机,形成分级RR。当RR所处的网络层相同时,可以将不同集群的RR全连接,形成同级RR。

3.2.1 BGP分级路由反射器

BGP RR反射器理论实验,BGP联盟详解 纯干货!_华为网工_04

在实际的RR部署中,常用的是分级RR的场景。如上图,ISP为AS100提供Internet路由。AS100内部分为两个集群,其中Cluster1内的四台设备是核心路由器,采用备份RR的形式保证可靠性。

3.2.2 BGP同级路由反射器

BGP RR反射器理论实验,BGP联盟详解 纯干货!_企业网络搭建_05

如上图4,一个骨干网被分成多个集群。各集群的RR互为非客户机关系,并建立全连接。此时虽然每个客户机只与所在集群的RR建立IBGP连接,但所有RR和客户机都能收到全部路由信息。

二、BGP联盟

解决AS内部的IBGP网络连接激增问题,除了使用路由反射器之外,还可以使用联盟(Confederation)。

联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。配置联盟后,

原AS号将作为每个路由器的联盟ID。

这样有两个好处:一是可以保留原有的IBGP属性,包括Local Preference属性、MED属性和NEXT_HOP属性等;二是联盟相关的属性在传出联盟时会自动被删除,即管理员无需在联盟的出口处配置过滤子AS号等信息的操作。

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工干货_06

如上图所示,AS100使用联盟后被划分为3个子AS:AS65001、AS65002和AS65003,使用AS100作为联盟ID。此时IBGP的连接数量从10条减少到4条,不仅简化了设备的配置,也减轻了网络和CPU的负担。而AS100外的BGP设备因为仅知道AS100的存在,并不知道AS100内部的联盟关系,所以不会增加CPU的负担。

  • 联盟AS:大AS,部署了联盟的AS叫做联盟AS。

  • 成员EBGP邻居:在成员AS之间建立的EBGP邻居叫做**「成员EBGP邻居」**。

  • 联盟EBGP邻居:EBGP邻居,与其他常规AS建立的EBGP邻居,叫做**「联盟EBGP邻居」**。

联盟AS内部存在多个成员AS,成员AS之间建议使用相同的IGP协议

联盟命令:

confederation id 123 所在的大的AS号

confederation peer-as 45 3 //自己所连接的子as就配置多少

基于成员EBGP邻居之间传递路由,当做IBGP等同对待原则:从成员EBGP邻居接受到的路由,传递给其他成员EBGP邻居和IBGP邻居时,无法使用Next-hop-local修改下一跳属性。也基于这一特征,所以建议联盟AS内部存在多个成员AS时,成员AS之间建议使用相同的IGP协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值