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状态。
加载中,请稍候......