BGP是怎样防止环路的:

  1. EBGP:通过AS-PATH属性,丢弃从EBGP对等体接收到的包含自身AS号的任何更新信息。

  2. IBGP:BGP路由器不会将从IBGP对等体接收到的更新信息传递给其他IBGP对等体。

IBGP防止环路机制带来的问:为了保证更新信息可以到达所有IBGP对等体

解决方案:

  1. IBGP路由器与IBGP路由器之间要保证会话的全互联,从而又带来IBGP会话数n(n-1)/2的问题

  2. 路由反射

  3. 联盟

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

  • 联盟:将大的AS划分为若干个小的AS,小AS之间建立EBGP邻居关系。

IBGP对等体的三种角色:

  1. 路由反射器(RR)

  2. 客户机

  3. 非客户机

对等体之间的关系:

  1. 客户机只需维护与RR之间的IBGP会话

  2. RR与RR之间需要建立IBGP的全互联

  3. 非客户机与非客户机之间需要建立IBGP全互联

  4. RR与非客户机需要建立IBGP全互联

路由反射器宣告原则:

  1. 当RR收到非客户机发来的更新信息后,先通过BGP策略选择最优的路由,然后将从非客户机对等体学到的路由更新到所有客户机。

  2. 从客户机学到的路由,发布给此RR的所有客户机和非客户机

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

路由反射簇:当一个AS内存在多台RR时为客户机提供冗余时,RR之间的路由更新很有可能形成环路,为防止该现象,引入了cluster的概念。

通过四字节的cluster_ID来标识cluster,通常使用loopback地址作为cluster_ID,一个cluster里可以包括一个或多个RR;一个客户机可以同时属于多个cluster


路由反射防环机制:originator_ID

  1. Originator_ID用于防止在反射器和客户机/非客户机之间产生环路

  2. Originator_ID属性长4字节,可选非过渡属性,属性类型为9,是由路由反射器RR产生的,携带了本地AS内部路由发起者的router-id。

  3. 当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入到这条路由,标识这条路由的始发路由器。如果一条路由中已经存在了Originator_ID属性,则RR不会创建新的Originator_ID。当其他BGP路由器接收到这条路由的时候,将比较Originator_ID和本地的Router-id,如果两个ID相同,则忽略掉这条路由,不做处理。

路由反射防环机制:cluster_list

  1. cluster_list属性用于防止AS内部的环路

  2. cluster_list属性是可选非过渡属性,属性类型编码为10

  3. cluster_list由一系列的cluster_ID组成,描述了一条路由经过反射器的路径,cluster_LIST由路由反射器产生。当RR在它的客户机与非客户机之间反射路由时,RR会把本地的cluster_ID添加到cluster_list前面,如果cluster_list为空,就创建一个。当RR接收到一条更新路由时,RR会检查cluster_list,如果cluster_list中已经有本地cluster_ID,就丢弃该路由,如果没有本地cluster-id,将其加入cluster-list,然后反射该更新路由。

AS-PATH的四种类型:

  1. AS_SET

  2. AS_SEQUENCE

  3. AS_CONFED_SEQUENCE

  4. AS_CONFED_SET

联盟与反射的比较:

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

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

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

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

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