1.简介

  BGP(Border Gateway Protocol,边界网关协议)是一种既可以用于不同AS(Autonomous System,自治系统)之间,又可以用于同一AS内部的动态路由协议。当BGP运行于同一AS内部时,被称为IBGP(Internal BGP);

  当BGP运行于不同AS之间时,称为EBGP(External BGP)。AS是拥有同一选路策略,属于同一技术管理部门的一组路由器。当前使用的BGP版本是BGP-4。

2.BGP的特点  

·     BGP是一种EGP(Exterior Gateway Protocol,外部网关协议),与OSPF、RIP等IGP(Interior Gateway Protocol,内部网关协议)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。

·     BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性。

·     BGP是一种路径矢量(Path-Vector)路由协议,它采用到达目的地址所经过的AS列表来衡量到达目的地址的距离。

·     BGP支持CIDR(Classless Inter-Domain Routing,无类域间路由)。

·     路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。

·     BGP路由通过携带AS路径信息彻底解决路由环路问题。

·     BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。

·     BGP易于扩展,能够适应网络新的发展。

3.BGP的发言者和对等体

  运行BGP协议的路由器称为BGP发言者。BGP发言者接收或产生路由信息,并将路由信息发布给其它BGP发言者。相互之间存在TCP连接、相互交换路由信息的BGP发言者互为BGP对等体。

  根据对等体所在的AS,可以将对等体分为以下两种:

·     IBGP对等体:对等体与本地路由器位于同一AS。

·     EBGP对等体:对等体与本地路由器位于不同AS。

  根据对等体的IP地址类型,可以将对等体分为以下两种:

·     IPv4对等体:通过IPv4地址创建的对等体。

·     IPv6对等体:通过IPv6地址创建的对等体。

4.BGP的5个消息类型  

·     Open:TCP连接建立后发送的第一个消息,用于在BGP对等体之间建立会话。

·     Update:用于在对等体之间交换路由信息。一条Update消息可以发布具有相同路径属性的多条可达路由,也可以同时撤销多条不可达路由。

·     Keepalive:BGP周期性地向对等体发送Keepalive消息,以保持会话的有效性。

·     Route-refresh:用来要求对等体重新发送指定地址族的路由信息。

·     Notification:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP会话会立即中断。

5.BGP的路由属性 

  BGP路由属性是跟随路由一起发布出去的一组参数。它对特定的路由进行了进一步的描述,使得路由接收者能够根据路由属性值对路由进行过滤和选择。下面将介绍几种常见的路由属性。

  1) 源(ORIGIN)属性

  ORIGIN属性定义了路由信息的来源,标记一条BGP路由是怎么生成的。它有以下三种类型:

· IGP:优先级最高,表示路由产生于本AS内。

· EGP:优先级次之,表示路由通过EGP学到。

· Incomplete:优先级最低,表示路由的来源无法确定。例如,从其它路由协议引入的路由信息。

  2)AS路径(AS_PATH)属性

  AS_PATH属性记录了某条路由从本地到目的地址所要经过的所有AS号。当BGP路由器将一条路由通告到其他AS时,会把本地AS号添加在AS_PATH列表中。收到此路由的BGP路由器根据AS_PATH属性就可以知道到达目的地址所要经过的AS。

  AS_PATH属性有以下两种类型:

· AS_SEQUENCE:AS号按照一定的顺序排列。如下图所示,离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。

· AS_SET:AS号只是经过的AS的简单罗列,没有顺序要求。

   

  AS_PATH属性具有如下用途:

·     避免路由环路的形成:缺省情况下,如果BGP路由器接收到的路由的AS_PATH属性中已经包含了本地的AS号,则BGP路由器认为出现路由环路,不会接受该路由。

·     影响路由的选择:在其他因素相同的情况下,BGP会优先选择路径较短的路由。比如在上图中,AS 50中的BGP路由器会选择经过AS 40的路径作为到目的地址8.0.0.0的最优路由。

  用户可以使用路由策略来人为地增加AS路径的长度,以便更为灵活地控制BGP路径的选择。

·     对路由进行过滤:通过配置AS路径过滤列表,可以针对AS_PATH属性中所包含的AS号来对路由进行过滤。

  3)下一跳(NEXT_HOP)属性

  BGP的NEXT_HOP属性取值不一定是邻居路由器的IP地址。如下图所示,NEXT_HOP属性取值情况分为几种:

·     BGP发言者把自己产生的路由发给所有邻居时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;

·     BGP发言者把接收到的路由发送给EBGP对等体时,将该路由信息的NEXT_HOP属性设置为自己与对端连接的接口地址;

·     BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的NEXT_HOP属性。如果配置了负载分担,等价路由被发给IBGP邻居时则会修改NEXT_HOP属性。

   

  4)MED(Multi-Exit Discriminator,多出口区分)属性  

  MED属性仅在相邻两个AS之间交换,收到此属性的AS不会再将其通告给其它AS。

  MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入AS时的最佳路由。当一个BGP路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,

  将优先选择MED值较小者作为最佳路由。如下图所示,从AS 10到AS 20的流量将选择Router B作为入口。

   

  通常情况下,BGP只比较来自同一个AS的路由的MED属性值。在某些特殊的应用中,用户也可以通过配置compare-different-as-med命令,强制BGP比较来自不同AS的路由的MED属性值。

  5)本地优先(LOCAL_PREF)属性

  LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。

  LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。

  如下图所示,从AS 20到AS 10的流量将选择Router C作为出口。

   

  6)团体(COMMUNITY)属性

  BGP将具有相同特征的路由归为一组,称为一个团体,通过在路由中携带团体属性标识路由所属的团体。团体没有物理上的边界,不同AS的路由可以属于同一个团体。

  根据需要,一条路由可以携带一个或多个团体属性值(每个团体属性值用一个四字节的整数表示)。接收到该路由的路由器可以通过比较团体属性值对路由作出适当的处理(比如决定是否发布该路由、在什么范围发布等),

  而不需要匹配复杂的过滤规则(如ACL),从而简化路由策略的应用和降低维护管理的难度。

  公认的团体属性有:

·     INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。

·     NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。

·     NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。

·     NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。

  除了公认的团体属性外,用户还可以使用团体属性列表自定义团体属性,以便更为灵活地控制路由策略。

  7)扩展团体属性

  随着团体属性的应用日益广泛,原有四字节的团体属性无法满足用户的需求。因此,BGP定义了新的路由属性——扩展团体属性。扩展团体属性与团体属性有如下不同:  

·     扩展团体属性为八字节,提供了更多的属性值。

·     扩展团体属性可以划分类型。在不同的组网应用中,可以使用不同类型的扩展团体属性对路由进行过滤和控制。与不区分类型、统一使用同一个属性值空间的团体属性相比,扩展团体属性的配置和管理更为简单。

  目前,设备支持的扩展团体属性有VPN Target属性和SoO(Site of Origin,源站点)属性。

  SoO扩展团体属性用来标识路由的原始站点。路由器不会将带有SoO属性的路由发布给该SoO标识的站点,确保来自某个站点的路由不会再被发布到该站点,从而避免路由环路。在AS路径信息丢失时,可以通过SoO属性来避免发生环路。

  SoO属性有三种格式:  

·     16位自治系统号:32位用户自定义数,例如:101:3。

·     32位IP地址:16位用户自定义数,例如:192.168.122.15:1。

·     32位自治系统号:16位用户自定义数,其中的自治系统号最小值为65536。例如:65536:1。

6.BGP的选路规则

  1)丢弃下一跳(NEXT_HOP)不可达的路由;

  2)优选首选值(Preferred-value)最大的路由;

  3)优选本地优先级(LOCAL_PREF)最高的路由;

  4)依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;

  5)优选AS路径(AS_PATH)最短的路由;

  6)依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;

  7)优选MED值最低的路由;

  8)依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;

  9)优选IGP Metric值最小的路由;

  10)优选迭代深度值小的路由;

  11)如果当前的最优路由为EBGP路由,则BGP路由器收到来自不同的EBGP邻居的路由后,不会改变最优路由;

  12)优选Router ID最小的路由器发布的路由。如果路由包含RR属性,那么在路由选择过程中,就用ORIGINATOR_ID来替代Router ID;

  13)优选下一跳地址为IPv4地址的路由。

  14)优选CLUSTER_LIST长度最短的路由;

  15)优选IP地址最小的对等体发布的路由。

 

posted on 2021-12-17 15:39  星痕1216  阅读(654)  评论(0编辑  收藏  举报