(others)BGP4

BGP理论知识

 (2010-03-04 08:40:53)

标签: 

bgp

 

杂谈

分类: BGP

,简介
   
 BGP-4(边界网关协议版本4,以下简称BGP)是主要用来在自治系统之间路由IPv4流量的域间路由协议。使用TCP(端口号179)作为底层传输机制。由于BGP建立在TCP之上,所以需要每个对等体建立独立的点到点连接。BGP是一种距离矢量协议,每个BGP节点都依赖下游邻居从其路由表中传递路由,而BGP却使用数据包到达特定目的地所经过的一个AS号列表,所以也将BGP成为路径矢量路由协议。
BGP
会话有两种类型:内部BGPI-BGP)和外部BGPE-BGP)。
二,BGP消息类型
 
 1 Open(打开):当TCP会话建立之后,两个邻居都要发送Open消息,每个邻居利用该消息标识自己并指定其BGP操作参数。
Open
消息包括以下信息:
BGP
版本号
自治系统号
保持时间:表示路由器在收到keepalive消息和update消息之前可以等待的最长时间。保持时间必须是0秒(不发送keepalive消息)或至少3秒,思科默认为180秒。如果邻居双方的保持时间不一致,那么一较短的时间为准。
BGP
标识符:该字段标识邻居IP地址。思科IOS确定BGP标识符的过程和确定OSPF路由器ID的过程完全一致。
可选参数
 
 2 Keepalive(保活)
思科默认每60秒发送一条keepalive消息。或者以已协商一致的保持时间的1/3为周期发送keepalive消息。
 
 3 Update(更新)
NLRI
(网络层可达性信息):该字段是一个或多个宣告IP地址前缀及其长度的二元组。
路径属性
已撤销路由(withdrawn routes):描述那些已不可达的目的地的二元组。
注意:虽然NLRI字段中可能会包含多个前缀,但是每条update消息仅描述单条BGP路由(这是因为路径属性仅描述单条路由,不过该路径可能会通往多个目的地)。
 
 4 Notification(通知)
路由器只要检测到差错,就会发送notification消息,并关闭BGP连接。
三,BGP有限状态机
   
 IdleBGP总是以idle状态为起点。BGp会初始化所有资源,启动连接重试定时器,初始化去往邻居的TCP连接,侦听来自邻居的TCP初始化并将状态改为connect状态。
         
 如果发生差错,BGP进程将迁移到空闲状态。在第一次迁移到空闲状态后,路由器会设置连接重试定时器,定时器到期才会重启BGO。思科的初始连接重试时间为60s,以后每次连接重试时间都是之前的两倍。
   
 Connect:该状态下,BGP进程一直等待TCP连接的完成。如果连接建立成功,BGP进程向邻居发送open消息进入opensent状态。如果建立不成功,BGP进程将继续侦听由邻居的初始化连接,重置连接重试定时器,并迁移到active状态。
            
 重置定时器到期时如果仍处于连接状态,则重置定时器,并再次尝试,进程也将继续维持在连接状态,其他输入事件将会让BGP进程迁移到idle状态。
   
 Active:该状态下,BGP进程会尝试与其邻居初始化TCP连接。如果TCP连接建立成功,BGP进程会清除连接重试定时器,完成初始化进程,想起邻居发送open消息,并迁移到opensent状态。保持定时器被设置为4分钟。
如果连接重试定时器到期时仍处于激活状态,则进程返回connect状态并重置连接重试定时器。
   
 OpenSent:该状态下,BGP一直等待侦听来自邻居的open消息,收到open消息后,检查每个字段,如果存在差错,则会发送notification消息并迁移到空闲状态。
如果检查没有差错,则发送keepalive消息消息并设置keepalive定时器。此外,还要协商保持时间。根据对等体的AS号,可以确定对等连接时内部还是外部连接,并迁移到openconfirm状态。
   
 OpenConfirm:该状态下,BGP进程将等待keepalive消息或notification消息。如果收到keepalive消息,则迁移到established状态。
   
 Established:该状态下,BGP对等连接已完全建立,对等体之间可以相互交换update,keepalivenotification消息。
四,路径属性
   
 路径属性有以下四类:
     
 周知强制属性:ORIGINAS_PATHNEXT_HOP
     
 周知自选属性:LOCAL_PREFATOMIC_AGGREGATE
     
 可选传递性属性:AGGREGATORCOMMUNITY
     
 可选非传递性属性:MULTI_EXIT_EDSC(MED)ORIGINAOTR_IDCLUSTER_LIST
 
 1 ORIGIN
   
 起源属性指定了路由更新的来源。指定的路由来源有以下几种:
     
 IGP:如果路由是通过network语句从IGP路由表中学到的,那么路由的原就是IGP
     
 EGPNLRI是从外部网关协议中学到的。EGP的优先级次于IGP
     
 IncompleteNLRI是通过其他渠道学习到的。没有IGPEGP优先。
 
 2 AS_PATH
   
 该属性利用一串AS号来描述去往由NLRI指定的目的地的AS间路径或路由。当BGP发言人发起一条路由时,将在AS_PATH中增加自己的AS号。同样,后续的BGP发言者再将路由宣告给外部对等体时,都会将自己的AS号加入到AS_PATH中。
   
 也就是说,只有在EBGP对等体之间宣告路由时才会在AS_PATH中追加AS号。
   
 这个属性的另外一个功能就是预防环路,其实现机制非常简单:如果某台BGP路由器从其他外部对等体接收到的某条路由的AS_PATH中包含自己的AS号,那么路由器就知道出现了环路,因而丢弃该路由。
 
 3 NEXT_HOP
   
 该属性描述了下一条路由器的IP地址。该属性描述的IP地址并不总是邻居路由器的IP地址,规则如下:
     
 *如果宣告路由器和接收路由器位于不同AS中(外部对等体),那么NEXT_HOP是宣告路由器的接口IP地址;
     
 *如果宣告路由器与接收路由器位于同一AS中(内部对等体),且Update消息的NLRI志向的是同一AS内的目的地,那么NEXT_HOP是宣告该路由的邻居的IP地址;
     
 *如果宣告路由器和接收路由器是内部对等体,且Update消息的NLRI指向的是不同AS内的目的地,那么NEXT_HOP是外部对等体(通过该对等体学到该路由)的IP地址。
   
 IBGPEBGP对下一跳的处理不同,除非使用next-hop-self命令特别指定,IBGP路由器不会修改下一条属性,EBGP邻居回吧下一跳地址修改为到达它们的EBGP对等体的出口地址。
 
 4 LOCAL_PREF
   
 本地优先级属性是周知自选属性,仅用于内部对等体之间的update消息,而不会被传递给其他AS。该属性用来向BGP路由器通告某被宣告路由的优先等级。LOCAL_PREF最高的路由将被选中。
   
 默认值是100,取值范围0~4 294 967 295
 
 5 MED
   
 LOCAL_PREF属性仅影响离开AS的流量,为了对入站流量加以影响,就需要MED属性。该属性承载在EBGP Update消息中,可以让某AS向其他AS说明其优选的入口点。与LOCAL_PREF不同的是,优选MED值最小的路由,这是因为MED被视为一种度量值。MED仅用于影响两个直连AS之间的流量。MED仅用于单个AS内,他在某个AS存在多个入口时用于说明不同入口点的优先的等级。
   
 默认值是0,范围04 294 967 295
 
 6 ATOMIC_AGGREGATEAGGREGATOR
   
 原子聚合属性只是Update消息中的一个标志位。
   
 原子聚合属性用于向下游路由器告知已经出现了路径丢失。任何接收到带有原子聚合属性的路由的下游BGP发言者都无法获得该路由更精确的NLRI信息,而且在将该路由宣告给其他对等体时,必须加上原子聚合属性。
当设置原子聚合属性时,BGP发言者还可附加聚合者属性。该属性包含了AS号及发起路由聚合的路由器的IP地址,因为提供了路由聚合的相关信息。思科的BGP实现将路由器ID作为IP地址插入在该属性中。
 
 7 COMMUNITY
   
 团体属性是一个32位共48位组的值,格式为AA:NN;而思科默认格式为NN:AA,可以利用命令ip bgpcommunity new-format改为标准格式。
   
 团体属性将目的地视为某些共享一个或多个公共特性的目的地的一个成员。
   
 0x00000000~0x0000FFFF0xFFFF0000~0xFFFFFFFF是保留的团体值,在保留取值范围外,定义了以下周知团体:
     
 INTERNETinternet团体无任何值,所有路由在默认情况下都属于该团体。
     
 NO_EXPORT0xFFFFFF01):如果接收到的路由携带该值,则不能将该路由宣告给外部对等体;如果配置了BGP联盟,则不能将该路由宣告到联盟之外。
     
 NO_ADVERTISE0xFFFFFF02):如果接收到的路由携带该数值,则根本就不能宣告该路由,包括EBGPIBGP对等体。
     
 LOCAL_AS0xFFFFFF03):如果接收到的路由携带该数值,那么将不能宣告给EBGP对等体,包括统一联盟内的其他AS中的对等体。
 
 8 ORIGINATOR_IDCLUSTER_LIST
   
 这两个属性是路由反射器使用的属性,都被用来防止路由环路。起源者ID是一个有路由反射器创建的32bit的值,该数值是本地AS中路由发起方的路由器ID,如果发起方发现其RID在所接收到的路由的起源者ID中,那么就知道发生了环路,因而忽略该路由。
   
 簇列表是一串路由传递所经过的路由反射簇ID,如果路由反射器发现其本地簇ID在其所接受到的路由的簇列表中,那么就知道出现了环路,因而忽略该路由。
五,管理性权值
   
 Administrative Weight是思科专有的BGP参数,仅用于单个路由器内的路由,该数值不与其他路由器交换。范围0~65535,值越高表示路由越优。在所有路由特性中,该权值是BGP判定进程在选择最佳路径是最重要的判断因素。默认情况下所有从对等体学习到的路由的权值都为0,而所有由本地产生的路由的权值都为32768
六,AS_SET
   
 实际存在两种AS_PATH
     
 AS_SEQUENCE:一个有序的AS号列表
     
 AS_SET:一个无序的AS号列表。
   
 如果AS_PATH中包含了AS_SET,那么就不需要在聚合路由中包含原子聚合属性了。这是因为AS_SET不但可以向下游路由器通告已经发生了路由聚合,而且还包含了比原子聚合更多的信息。
七,路由阻尼
   
 为了防止路由翻动,出现了路由阻尼。开启路由阻尼机制的路由器会为每条路由分配一个动态的特征值,用以反映该路由的稳定程度。当某条路由出现翻动时,会给该路由分配一个惩罚值,翻动次数越多,累加的惩罚值就越大。路由阻尼中引入了半衰期的概念,惩罚值以一定的速率衰减到每个半衰期初值的一半,当惩罚值超出了预设的值(抑制门限),该路由就被抑制,即不再对外宣告该路由。直到该路由的惩罚值降到另一个值(重用门限)时,才会再次对外宣告该路由。
   
 思科默认的各种路由阻尼变量如下:
惩罚值:1000/路由翻动
抑制门限:2000
重用门限:750
半衰期:15分钟
最大抑制时间:60分钟或半衰期的4
八,IBGPIGP同步
   
 IBGP必须保持全连接的原因如下:防止在AS内形成BGP路由环路;确保BGP路由路径上的所有路由器都知道如何将数据包转发到目的地。
   
 同步规则如下:学习自IBGP邻居的路由在进入IGP路由表或被宣告给BGP对等体之前,必须首先通过IGP来知晓该路由。
   
 要保证IBGP正常工作,必须满足以下条件之一:必须将外部路由重分发到IGP中,以确保IGP能够和BGP同步;必须在IBGP路由器之间建立全连接关系,且关闭同步机制。
九,对等体组
   
 当一台路由器上配置多个BGP对等体关系是可能会很复杂,可以是哟欧诺该对等体组来简化配置和故障排查过程。对等体组通过建立组并将具有相同策略的邻居放入组中来创建,对等体组中的成员继承了组的策略。
十,团体
   
 与对等体组是对一组路由器实施策略不同,团体是对一组路由实施路由策略。路由器将其团体舒心设置为某个标识自己为某团体成员的值之后,就可以将路由加入预先配置的团体中,之后,邻居路由器就可以基于团体属性值将其策略应用于特定路由。
十一,路由反射器
   
 AS内包含大量IBGP对等体时,路由反射器将非常有用。除非EBGP路由倍重分发进IGP,否则所有IBGP对等体检必须建立全连接关系。
   
 路由反射器为全连接的IBGP对等体提供了一种可替选方案:将某台路由反射器配置为RR,其他IBGP路由器则称为客户,客户不再需要与每台IBGP路由器都建立对等关系,只要与RR建立对等关系即可。
路由反射器机器客户被共同成为簇。
十二,联盟
   
 联盟是在一个主自治系统内创建子自治系统,通过这种方式来减少IBGP对等体间需要的BGP连接数量。
BGP
会为联盟分配一个联盟ID,该联盟ID被联盟外的对等体视为整个联盟的AS号。外部对等体无法看见联盟内部结构,他们将联盟视为一个AS
   
 预留的AS号:64512~65535
   
 联盟增加了两种类型的AS_PATH
     
 AS_CONFED_SEQUENCE:一个有序AS号列表
     
 AS_CONFED_SET:一个无序AS号列表
     
 它们与AS_SEQUENCEAS_SET的区别在于它们仅用于本地联盟中的自治系统。
   
 与路由反射器环境下仅需要路由反射器支持路由反射不同,联盟中的所有路由器都必须支持联盟功能,这是因为联盟内的所有路由器都必须能识别AS_PATH属性中的AS_CONFED_SEQUENCEAS_CONFED_SET

 

你可能感兴趣的:(计算机网络)