免费邮箱 |加入收藏 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 服务器 > 路由技术 > 网络协议

BGP协议分析-报文、状态机

时间:2011-05-19 13:03:44  来源:站内  作者:潘春会

  
  ⑸LOCAL_PREF (Type Code = 5,公认自决属性)
  
  本地优先级属性。为一4字节无符合整数。它在AS区域内传播,用来帮助一个本AS区域内BGP伙伴选择进入其它AS区域的出口。
  
  ⑹ATOMIC_AGGREGATE (Type Code = 6,公认自决属性)
  
  元聚合属性。长度为零。它表示本地BGP在若干路由中选择了一个较抽象的(less specific)路由,而没有选择较具体(specific)的路由。
  
  ⑺AGGREGATOR (Type Code = 7,可选过渡属性)
  
  聚合者属性。长度为6字节,分别为最后进行路由聚合的路由器的AS号(2字节)和IP地址(4字节)。
  
  4、BGP协议的特点
  BGP是一种AS(自治区域)外部路由协议,主要负责本自治区域和外部的自治区域间的路由可达信息的交换。因此,它所关心的拓扑结构是AS(自治区域)的拓扑结构,BGP通过UPDATE消息中路由的AS属性来构造AS的拓扑结构图,进一步通过此结构图来选择路由。
  
  与OSPF,RIP等IGP协议相比,BGP的拓扑图要更抽象和粗略一些。因为IGP协议构造的是AS内部的路由器的拓扑结构图。IGP把路由器抽象成若干端点,把路由器之间的链路抽象成边,根据链路的状态等参数和一定的度量标准,每条边配以一定的权值,生成拓扑图。根据此拓扑图选择代价(两点间经过的边的权值和)最小的路由。这里有一个假设,即路由器(端点)转发数据包是没有的代价的。而在BGP中,拓扑图的端点是一个AS区域,边是AS之间的链路。此时,数据包经过一个端点(AS自治区域)时的代价就不能假设为0了,此代价要由IGP来负责计算。这体现了EGP和IGP是分层的关系。即IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费最小的路由。
  
  BGP作为EGP的一种,选择路由时考虑的是AS间的链路花费,AS区域内的花费(由BGP路由器配置)等因素。
  
  如上所述,内部网关协议IGP需引入AS自治区域内部网络拓扑图其它各点的路由,同时向其它端点发送本端点(路由器)所知的路由,如直接路由、静态路由等。作为外部网关协议,BGP发送和引入路由的单位是整个AS自治区域,即BGP要发送本地路由器所在的AS内部的所有路由,引入其它AS自治区域的所有路由(假设不使用路由策略控制发送和引入)。其路由数量显然要远远大于IGP发送和引入的路由数量。因此,类似于IGP那样定时对外广播路由信息是不可取的。BGP采用发送路由增量(Incremental)的方法,完成全部路由信息的通告和维护:初始化时发送所有的路由给BGP对端(BGP Peer),同时在本地保存了已经发送给BGP对端的路由信息。当本地的BGP收到了一条新路由时(如通过IGP注入了新路由或加入了新的静态路由),与保存的已发送信息进行比较,如未发送过,则发送,如已发送过则与已经发送的路由进行比较,如新路由花费更小,则发送此新路由,同时更新已发送信息,反之则不发送。当本地BGP发现一条路由失效时(如对应端口失效),如此路由已发送过,则向BGP对端发送一个退出路由消息。 [Page]
  
  总之,BGP不是每次都广播所有的路由信息,而是在初始化全部路由信息后只发送路由的变化量(增量)。这样保证了BGP和对端的最小通信量,但同时增加了BGP的复杂程度。因为对于IGP,本地路由协议只需发送发送时刻所知的全部路由,而不保存任何已发送信息,路由选择的工作由对端来完成;而BGP必须为每个BGP对端保存已经发送的路由信息,以便发送一条新路由前确认其是否真的应该发送。
  
  为了减小路由表的体积和发送路由的通信量,BGP还支持CIDR(Classless InterDomain Routing)。它使用带有较短的掩码(相对于自然掩码)的路由来在一条路由中表达更多的路由信息。如从202.112.1.0/24-202.112.254.0/24可以使用202.112.0.0/16表示,从而减小了路由表的体积和发送路由信息时的网络流量。
  
  同时,作为AS自治区域间的路由协议,由于政治的、经济的等原因,BGP需要按照不同的路由的属性控制路由的发送和引入。因此,BGP有丰富的路由策略控制手断。
  
  5、BGP协议中消息的应用
  BGP使用TCP建立连接,本地监听端口为179。和TCP建立相同,BGP连接的建立也要经过一系列的对话和握手。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有:BGP版本,BGP连接保持时间,本地的路由器标识(Router ID),授权信息等。这些信息都在OPEN消息中体现。
  
  BGP连接的具体过程参见BGP有限状态机。
  
  BGP连接建立后,如果有路由需要发送则发送UPDATE消息通告对端路由信息。UPDATE消息主要用来通告路由信息,包括失效(退出)路由。UPDATE消息发布路由时,还要指定此路由的路由属性,用以帮助对端BGP协议选择最佳的路由。需要注意的是,由UPDATE消息的格式可以看出每个UPDATE消息只可以发布一种路由属性,本地BGP如果有路由属性完全相同的路由(只有信宿地址不同),则可以由一条UPDATE消息发布,否则只能使用不同的UPDATE消息发布。关于路由属性在BGP选择路由时的应用,参见BGP协议路由属性的应用部分。
  
  在本地BGP路由变化时,也使用UPDATE消息修正对端BGP的路由表。
  
  经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定了。此时要定时发送KEEPALIVE消息以保持BGP连接的有效性。对于本地BGP,如果在超过保持时间的时间内,还未收到任何对端BGP消息,就认为此BGP连接已经无效,将此BGP连接断开。
  
  当本地BGP在运行中发现错误时,要发送NOTIFY消息通告BGP对端。如对端BGP版本本地不支持,本地BGP收到了结构非法的UPDATE消息等。本地BGP退出BGP连接时也要发送NOTIFY消息。BGP收到NOTIFY消息后,要作相应处理。
  
  6、BGP伙伴的有限状态机(FSM)
  BGP有限状态机有6种状态:
  
  1-Idle
  
  2-Connect
  
  3-Active
  
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
如何找出DHCP地址池里未使用的IP地址
如何找出DHCP地址池里
国内常用的DNS列表
国内常用的DNS列表
Linux邮件服务器软件比较
Linux邮件服务器软件比
学用纯CSS打造可折叠树状菜单
学用纯CSS打造可折叠树
相关文章
栏目更新
栏目热门