加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

BGP-4 Theory

(2006-08-26 10:54:11)
分类: ~~~ BGP ~~~
BGP路由表相关:
  Adj-RIB-in
  Adj-RIB-out
  Loc-RIB
  Main-routing table
 
BGP同步(synchronization):
  全网状可消除路由黑洞,此时不用IGP路由的辅助,同步相应的也可以关闭,属于纯BGP网络。
  在非全网状环境中,开启同步可以消除路由黑洞。
  
BGP同步规则:
  如果边界路由器从I-BGP session中学到未同步的路由,它不会将其广播到E-BGP邻居
  如果一个I-BGP路由同其上运行的IGP路由不相一致,则此路由无效。
  同步经常在同时运行I-BGP和E-BGP的路由上被disable
 
----------------------------------------
BGP Messages:
    OPEN message            用来启用BGP会话
    UPDATE message      用来对已建立的BGP会话提供路由更新信息
    NOTIFICATION message   错误提示
    KEEPALIVE message    BGP邻居间的keepalive
    ROUTE-REFRESH message   可选信息,被用来请求邻居发送路由更新
 
一、OPEN message:
    version    BGP版本号,一般为4,可动态协商,向下兼容
    My As     指定本AS号,如两端不同则表示EBGP关系
    Hold Timer  相关配置命令:default timers bgp,要求双方一致
    BGP ID     类似OSPF中的router-id,配置命令:bgp router-id
    Optional    marker,capabilities
 
二、UPDATE message:
    Unfeasible Route Length    指明需要撤消的路由条目数
    Withdrawn Routes        按[length,prefix]说明方式详细路由条目
    Total Path Attribute Length  说明path attribute字段总长度
    Path Attributes         共19个path attribute
    Attribute Type(a subsection of the path attributes field)
    NLRI      network layer rechability information,路由更新条目
 
PATH ATTRIBUTE:
    1、ORIGIN      源点属性,指明路由来自:i-bgp/e-bgp/incomplete
    2、AS_PATH        指明路由穿过的AS
    3、NEXT_HOP     指明下一跳地址
    4、MULTI-EXIT-DISC    MED属性,当一台路由器上有两条出口时决定选哪条
    5、LOCAL-PREF     本地优先权属性,当两台路由器分别有出口时决定哪条
    6、ATOMIC-AGGREGATE   
    7、AGGREGATOR
    8、COMMUNITY
    9、ORIGINATOR_ID
    10、CLUSTER_LIST
 
三、NOTIFICATION message:
    1、message header error   一般为marker错误或包长度不一致
    2、open message error      
    3、update message error
    4、hold timer expired     在180秒内未收到keepalive或update message
    5、finite-state machine error    unexpected error
    6、cease       indicates the immediately terminate bgp session
 
每个NOTIFICATION message包含3个子域:
    error code       the type of NOTIFICATION error
    error subcode    an more detailed explanation of the error
    data   包含有助于排错的相关信息
 
1、MESSAGE header error:
    0、no error subcode
    1、connection not synchronized    marker field不一致
    2、bad message length 包头长度不一致:open 29,update 23,keepalive 19
    3、bad message type    unrecognized message type
 
2、OPEN message error:
    1、unsupported version    版本号不一致,此时data中含有支持的最高版本号
    2、bad peer as            AS号不一致,邻居路由器配置错误
    3、bad BGP ID             BGP ROUTER ID不一致,配置错误
    4、unsupported optional   双方optional域不符,此域被用来route fresh
    5、authentication failure    bgp authentication failure
    6、unacceptable hold time    hold-timer value不一致,检查配置
 
3、UPDATE message error:
    1、malformed attribute list
        unfeasible route length :  2
        total attribute length :   2
        fixed update header size : 19                               
    2、unrecognized well-known attribute
    3、missing well-known attribute
    4、attribute flag error
    5、attribute length error
    6、invalid origin attribute      
    7、AS routing loop            AS环路
    8、invalid next-hop attribute         语法错误
    9、optional attribute error
    10、invalid network field             NLRI语法错误
    11、malformed AS_PATH                 语法错误
 
四、KEEPALIVE message:
    一般为1/3的hold timer值,它的取值范围在3-4294967295之间,0表明双方不会交换keepalive消息,1和2是非法值,此时会收到NOTIFICATION ERROR MESSAGE:connection refused by remote host。
  这里要提到默认hold timer为180秒
  keepalive的包长度为19
 
五、ROUTE-REFRESH message:
  在12.0(6)T之前的版本,BGP-SPEAKING路由器必须手动重置BGP session来应用新的本地策略!
  在此之后情况有了改观,可通过soft reconfiguration在不打断BGP session的情况下达到同样的效果,原理是将上游路由器传至Adj-RIB-In的路由条目全数传至内存,这无疑会消耗有限的路由器资源。方法如下:
  clear ip bgp {*|ip address|peer-group} soft [in|out]
这个命令执行后,本地BGP就像刚刚从邻居收到完全的路由更新一样使用Adj-RIB-In来更新Loc-RIB路由表。
  最新的技术可以初始化阶段,利用optional字段进行协商,如果双方均支持ROUTE-REFRESH功能,便可根据情况动态向邻居发送申请,申请路由更新,或接收其它邻居的类似请求,主动发送更新。如果有一方不支持ROUTE-REFRESH功能,我们会看到“unsupported OPEN parameter”消息。
 
 
----------------------------------------
BGP Finite-State Machine Operation:
  Idle
  connect
  active
  opensent
  openconfirm
  established
 
BGP input events:
   BGP start    发生在IDLE状态,用来表示bgp会话的开始,并且要初始化资源,如果在其它状态收到此事件,则被忽略!
   BGP stop     终止bgp会话
   BGP transport connection open    TCP会话开启,资源初始化完毕
   BGP transport connection close 远端TCP会话关闭,释放资源,回IDLE状态
   BGP transport connection failed
   BGP transport fatal error
   connectretry timer expired
   hold timer expired
   keepalive timer expired
   receive open message    通知本地,远端已收到open消息,转入openconfirm
   receive keepalive message  通知本地远端已收到keepalive,进入estab状态
   receive update message  通知本地,远端已收到UPDATE message
   receive notification message
 
一、IDLE state behaviors:
   1、refuses incoming sessions   刚被手动配置,还未建立BGP会话,或会话刚被重置,这种状态持续直到bgp start event发生
   2、no bgp resource allocation 
   3、bgp start event eigher sent or received
   4、upon error
   5、transition from other state to idle state
      active state
         other undefined error
      opensent state
         open message error
         bgp stop event(sent or received)
         hold timer expired
         other undefined error
      openconfirm state
         receiving disconnect notification from TCP
         hold timer expired
         NOTIFICATION message received
         bgp stop event
         other undefined error
      established state
         UPDATE message error
         receiving disconnect notification from TCP
         hold timer expired
         NOTIFICATION message received
         bgp stop event
         other undefined error
 
1、IDLE STATE下:
  拒绝任何入方向上的连接请求
  尚未分配任何资源给BGP进程
  只发起START EVENT
 
2、START EVENT:
  1、资源初始化
  2、第二步,会开启connectretry timer(连接计数器)
  3、第三步,尝试与PEER建立TCP session,向对端发出请求
  4、同时也监听对端发出的TCP SESSION连接请求
  在以上步骤中,如果发生任何错误,则:
    1、关闭TCP连接
    2、保持在IDLE状态
    3、为了防止链路不稳定,下一次START EVENT发起时间会以指数级方式递增       (初始为60秒)
  如果无错误发生,则进入CONNECT STATE
 
3、CONNNECTION COLLISION:
  当两个BGP邻居尝试同时建立一个TCP连接时,或者当一个BGP session已将启动,远端邻居却试图重新建立一个新的TCP连接时,冲突发生。冲突发生后,双方通过比较BGP ID来决定究竟由谁发起连接,拥有最高BGP ID的一端将保持连接,另一方发起的连接将被关闭。冲突检测将在OPENSENT,OPENCONFIRM,ESTABLISHED状态下进行!
 
4、如果路由器经常保持在IDLE状态,我们要检查以下几点:
  远端配置中,针对本端的IP ADDRESS、AS是否正确
  本端配置中,针对远端的IP ADDRESS、AS是否正确
  验证双方IP地址可以互通,并且179端口未被防火墙或其它软件所屏蔽!
 
二、CONNECT STATE:
  在TCP连接成功建立后,FSM(FINITE-STATE MACHINE)会:
    1、clear connectretry timer,即清空连接计数器
    2、完成BGP资源初始化
    3、并且发送OPEN MESSAGE
 
CONNECT STATE BEHAVIORS:
   1、ignore incoming start events   
   2、bgp resource allocation is complete
   3、open message is sent to peer
   4、upon tcp connection error
   5、connectretry timer expires
   6、an undefined event occurs
   7、transition from other state to connect state
      ACTIVE STATE
         如果路由器的connectretry timer超过次数,则回到CONNECT STATE并
       1、reset connectretry timer,重置计数器
       2、尝试与peer初始化TCP连接
       3、监听对端发起的TCP连接
 
  实际上,在成功的BGP SESSION中,CONNECT STATE的时间是非常短的,通常会很快地切换至OPENSENT STATE。
 
  如果两个PEER间的TCP SESSION被关闭或由于其它原因失败,FSM会重置计数器,并继续监听对端发起的TCP SESSION,然后转入ACTIVE STATE
 
三、ACTIVE STATE:
  如果一个路由器进入了ACTIVE状态,就表明它不能与其邻居成功地建立TCP连接。在ACTIVE状态下,路由器会忽略所有的START事件(START事件只在IDLE状态下被识别),并不断尝试与其邻居初始化TCP session,重置计数器。
 
  如果可以成功地与邻居建立TCP session,它会发送OPEN MESSAGE给对方,并设置HOLD TIMER,紧接着转入OPENSENT状态。
 
  在第一次建立连接后,HOLD TIMER的初始值为4分钟,即240秒,而非180秒!直至成功的BGP SESSION建立完成后,才会接受协商的180秒这个正规军!
 
  如果在计数器超时前仍未成功建立起TCP session,FSM会重启计数器,尝试初始化TCP SESSION,继续监听邻居发出的TCP session request,同时回到connect状态
 
四、OPENSENT STATE:
  在本状态下,BGP PEER会等待其邻居发来的OPEN MESSAGE。收到并检查其正确性后(OPEN消息中的所有内容均会被检查),它会发出KEEPALIVE消息给邻居,设定KEEPALIVE TIMER,HOLD TIMER,并转入OPENCONFIRM STATE。
  注意本状态下,要检查CONNECTION COLLISION
 
OPENSENT STATE BEHAVIOR:
   1、ignore incoming start events
   2、waits for open message from peer
      只要不出现以下情况,PEER间将会保持OPENSENT状态:
         valid open message is received  直接转入openconfirm
         tcp disconnect event occurs
         notification message is received
         stop event occurs
         hold timer expires
         other undefined event occurr
 
   许多情况将导致BGP SPEAKER由OPENSENT状态转回IDLE状态。比如当接收到非法的OPEN MESSAGE时,会触发OPEN MESSAGE ERROR,导致本地路由器发出NOTIFICATION MESSAGE给对方并转入IDLE状态!
 
  如果收到来自对方的NOTIFICATION消息,本地路由器会关闭TCP连接,重置计数器,转入ACTIVE状态!
 
  同样OPENSENT状态为临时状态,在收到OPEN MESSAGE后,它很快会发送KEEPALIVE消息并转入OPENCONFIRM状态!
 
五、OPENCONFIRM STATE:
  在本状态,本地路由器会一直等待邻居发来的KEEPALIVE消息,直到转入ESTABLISHED状态。
 
OPENCONFIRM STATE BEHAVIORS:
   ignores incoming start events
   waits for keepalive message from peer
   if the keepalive timer expires
   if a peer returns from the openconfirm to idle state
      BGP connection is closed
      BGP resources will be released.
 
BGP Peers只在等待KEEPALIVE消息时才会停留于OPENCONFIRM状态,否则会直接转入ESTABLISHED状态。
 
六、ESTABLISHED STATE:
  在成功地交换了OPEN,KEEPALIVE消息后,BGP Peer间会建立起真正的ESTABLISHED状态。在此状态中,它们将互相发送UPDATE消息交换路由信息,使用KEEPALIVE验证TCP连接状态。否则便被打回IDLE状态。
 
 
 
 
 
 
 
 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有