前文我们了解了BGP的邻居建立条件、优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html;今天我们来聊一聊BGP报文结构、类型和状态相关话题;

  BGP报文结构和类型

HCNP Routing&Switching之BGP报文结构、类型和状态-LMLPHP

  提示:BGP工作在应用层,其端口号为179;报文结构是7层封装,BGP报文主要由两种报文头部组成,公共头部和类型头部;公共头部主要用来描述bgp AS号,包头长度,报文类型,版本信息等等信息,类型头部主要用来描述不同类型的BGP报文相关属性;BGP报文类型有5种,分别是open包、update包、Notification包、keepalive和route-refresh;其中open包主要用来建立邻居使用,在邻居建立以后相互发送一次,后续不再发送;keepalive包主要作用是维护邻居关系,默认情况下bgp是每60秒发送一次keepalive包向邻居通告自己还“活”着;如果连续三个周期没有收到邻居的keepalive包,此时本端会认为邻居挂掉;update包主要用来路由更新,其包里的内容主要是用来描述更新的路由信息和属性;只要有路由更新对应都会向邻居发送更新;notification包主要用来发送当检测到错误,发送后关闭BGP连接的信息;Route-refresh包主要用来触发请求邻居重新通告路由;

  BGP邻居状态

HCNP Routing&Switching之BGP报文结构、类型和状态-LMLPHP

  提示:BGP邻居状态有6种,分别是idle,connect,active,open-sent,open-confirm,established,其中idel状态是最开始状态,表示邻居为空,没有邻居;当配置好邻居信息以后,如果在对应路由表中找到去往邻居的路由,此时邻居关系会从idel转变为connect;如果没有路由,则还是原来的idle状态,即没有发送tcp三次握手请求报文的状态;connect状态表示发起TCP连接,等待tcp连接完成,即本端发送TCP三次握手请求,等待对端回复完成tcp三次握手的状态,该状态会有一个超时时长,如果在规定的时间内还是没有建立tcp连接,该状态会超时重试,即没有邻居回复本端的三次握手请求的状态;active状态表示tcp建立失败,继续尝试tcp连接,即tcp三次握手的报文已经发送,但是由于某些错误导致tcp三次握手没能正常建立的状态,该状态会有一个尝试时间,如果尝试tcp连接还是失败则该状态保持,如果tcp建立超时,则会从active状态转变为idle状态,如果tcp建立成功则会从active状态转变为open-sent状态表示tcp连接成功,并已发送一次open包后的状态;即本端三次握手成功建立,发送open包以后的状态;open-confirm表示对端收到本端发送的open包后的状态,如果没有收到对端的open包,此时会从open-sent状态进入active状态,表示tcp连接失败,或者错误的TCP连接,或者对端不认可和本端建立邻居;established表示邻居建立完成的状态;即收到对端的发送到keepalive包以后的状态;open-sent/open-confirm/established这三种状态一旦发生错误都会返回到idle状态;

  BGP邻居建立过程和状态转换

HCNP Routing&Switching之BGP报文结构、类型和状态-LMLPHP

  提示:idle和connect状态主要发生在邻居建立初期,tcp三次握手阶段,如果三次握手正常交互,对应状态会从idle转变为connect状态,表示发送了tcp三次握手请求,等待完成tcp三次握手;三次握手成功以后,如果发送了open包,对应状态会从connect状态转变为open-sent状态,如果正确接收到对端的open包以后,对应状态会从open-sent状态转变为open-confirm状态,并向对端发送keepalive包,通告本端的存活状态;如果对端收到本端发送的keepalive包以后,对应状态会从open-confirm状态转变为established状态;以上是bgp邻居建立过程中几种状态切换过程;在established状态下,BGP路由器可以和邻居交换update、keepalive、Route-refresh报文和notification报文;

  实验:如下拓扑,配置BGP

HCNP Routing&Switching之BGP报文结构、类型和状态-LMLPHP

  R1的配置

HCNP Routing&Switching之BGP报文结构、类型和状态-LMLPHPHCNP Routing&Switching之BGP报文结构、类型和状态-LMLPHP
sys
sys R1
int g0/0/0
ip add 12.0.0.1 24

bgp 12
router-id 1.1.1.1
peer 12.0.0.2 as 12
10-19 15:39