前言

为了实现路由信息的交互,BGP要求一个AS内的所有BGP Speaker相互形成IBGP对等体全互连,而这一要求使得IBGP的扩展成为了一个很大的问题。BGP反射器以及BGP联盟则是为了解决该问题而提出的BGP扩展技术。

IBGP扩展性的问题

  • BGP是怎样防止环路的?
     EBGP
       通过AS-Path属性,丢弃从EBGP对等体接收到的在AS-Path属性里包含自身AS号的任何更新信息
     IBGP
       BGP路由器不会将任何从IBGP对等体接收到的更新信息传给其它IBGP对等体
  • IBGP防止环路机制带来的问题
     为保证更新信息可以到达所有IBGP对等体,可使用全互联,而IBGP Speaker与IBGP Speaker之间要保证会话的全互连从而又带来IBGP会话数n(n-1)/2的问题
  • 引入新概念
    路由反射 (RFC2796)
    联盟 (RFC3065)

IBGP扩展问题解决方案

  • 路由反射 (RFC 2796)
  • 降低对指定路由器IBGP路由通告机制的限制,允许将从IBGP对等体接收到的更新信息传给某些IBGP对等体
  • 联盟 (RFC3065)
  • 将大的AS分成若干小的AS,而小AS之间建立EBGP对等体关系

BGP路由反射器 (Route Reflector)

BGP防止建立带环路径_BGP防止建立带环路径

不同角色的对等体

  • IBGP对等体可以有三种角色
  • 路由反射器 (Route Reflector)
  • 客户机 (Client)
  • 非客户机 (Non-Client)
  • 对等体之间的关系
  • Client只需维护与RR之间的IBGP会话
  • RR与RR之间需要建立IBGP的全互连
  • Non-Client与Non-Client之间需要建立IBGP全互连
  • RR与Non-Client之间需要建立IBGP全互连

路由反射宣告原则

当RR收到BGP对等体发来的路由,首先使用BGP选路策略来选择最佳路由。RR在发布学习到的路由信息时,按照RFC2796中的规则发布路由:

1、从非客户机IBGP对等体学到的路由,发布给此RR的所有客户机

BGP防止建立带环路径_List_02

2、从客户机学到的路由,发布给此RR的所有非客户机和客户机(发起此路由的客户机除外)

3、从EBGP对等体学到的路由,发布给所有的非客户机和客户机

BGP防止建立带环路径_网络架构_03

路由反射簇 (Cluster)

当一个AS内存在多台RR为Client提供冗余时,RR间的路由更新很有可能会形成环路,为防止该现象,引入了Cluster的概念

BGP防止建立带环路径_List_04

  • 什么是簇?
  • 通过4字节的Cluster_ID来标识Cluster,通常会使用Loopback地址作为Cluster_ID
  • 一个Cluster里可以包括一个或多个RR;一个Client可以同时属于多个Cluster

路由反射环路防止机制-Originator_ID

  • Originator_ID属性用于防止在反射器和客户机/非客户机之间产生环路
  • Originator_ID属性长4字节,可选非过渡属性,属性类型为9 ,是由路由反射器(RR)产生的,携带了本地AS内部路由发起者的Router ID
  • 当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入到这条路由,标识这条路由的始发路由器。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID
  • 当其它BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP Speaker会忽略掉这条路由,不做处理

路由反射环路防止机制-Cluster_List

  • Cluster_List属性用于防止AS内部的环路
  • Cluster_List是可选非过渡属性,属性类型编码为10
  • Cluster_List由一系列的Cluster_ID组成,描述了一条路由所经过的反射器路径,这和描述路由经过的As路径的AS_Path属性有相似之处,Cluster_List由路由反射器产生
  • 当RR在它的客户机之间或客户机与非客户机之间反射路由时,RR会把本地Cluster_ID添加到
    Cluster_List的前面。如果Cluster_List为空,RR就创建一个
  • 当RR接收到一条更新路由时,RR会检查Cluster_List。如果Cluster_List中已经有本地Cluster_ID,丢弃该路由;如果没有本地Cluster_ID,将其加入Cluster_List,然后反射该更新路由

BGP防止建立带环路径_多级_05

BGP联盟 (Confederation)

BGP防止建立带环路径_BGP防止建立带环路径_06

联盟与反射的比较

参考因素

比较

多层次

两种方法都支持多层次来进一步增强扩展性。路由反射器支持多级路由反射结构。联盟允许在成员AS内使用路由反射。

策略控制

两者都提供路由选择策略控制,不过联盟可以提供更大的灵活性。

常规IBGP迁移的复杂性

路由反射的迁移复杂性非常低,因为总体网络配置几乎很少发生改变。然而,从IBGP到联盟的迁移需要对配置和网络架构做很大的改变。

能力支持

联盟内的所有路由器必须支持联盟配置能力,因为所有路由器需要支持联盟AS-PATH属性。在路由反射的架构中,只需要反射器支持路由反射能力。然而,在新的分簇设计中,客户也必须支持反射器属性。

IGP扩展

路由反射在AS内需要单一的IGP,而联盟支持单一的或分开的IGP。这可能是联盟比路由反射所具有的最明显的优势。如果IGP达到了其扩展性限制,或者是因为范围太大而难于处理管理任务,那么可以使用联盟来减小IGP路由表的大小。

部署经验

由于更多的服务提供商已经部署了路由反射而非联盟,因此从路由反射中已经获得了更多的经验。

AS合并

实际上AS合并与IBGP扩展性是无关的,但在这里讨论是因为它是联盟的特点之一。一个AS可以和一个已存的联盟合并,这是通过把新的AS作为联盟的一个子AS对待来完成的。

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

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

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

路由反射规则:
从非客户机IBGP对等体学到的路由,发布给此RR的所有客户机
从客户机学到的路由,发布给此RR的所有非客户机和客户机(发起此路由的客户机除外)

从EBGP对等体学到的路由,发布给所有的非客户机和客户机

路由反射器中的BGP的防环:1、Cluster List(簇列表) 2、起源ID