BGP邻居建立过程及报文详解

       BGP邻居建立过程及报文详解
BGP是基于TCP的,要建立邻居首先得建立TCP连接,所以要保证邻居地址可达,可以利用IGP协议来完成邻居的连通性。
所以我们在 R1和R2上分别配置静态路由完成邻居连通性
R1:ip route 10.10.10.10 255.255.255.255 192.168.1.2
R2: ip route 1.1.1.1 255.255.255.255 192.168.1.1
BGP配置如下:
R1:
router bgp 10                        //启用BGP协议 AS为10
no auto-summary           //关闭自动汇总
no synchronization          //关闭同步(IOS 12.2后都是默认关闭)
neighbor 10.10.10.10 remote-as 10  //指定邻居和邻居AS
neighbor 10.10.10.10 update-source loop 0   //指定更新源否则(默认
为接口IP)
network 20.20.20.20 mask 255.255.255.255 //把路由发布到BGP中(有静态,半动态,纯动态注入)
R2:
router bgp 10                        //启用BGP协议 AS为10
no auto-summary           //关闭自动汇总
no synchronization          //关闭同步(IOS 12.2后都是默认关闭)
neighbor 1.1.1.1 remote-as 10  //指定邻居和邻居AS
neighbor 1.1.1.1 update-source loop 0   //指定更新源否则(默认为接 口IP)
注意:使用 IBGP时默认跳数为255,EBGP的默认跳数为1,如果使用EBGP的LOOBACK地址建邻居,需手工指定跳数
neighbor 10.10.10.10 ebgp-multihop  2 //后面接的是跳数1-255
BGP路由的发布:
静态注入:手工配置的静态路由,再由network发布到BGP中(如上面R1)
半动态注入:通过IGP协议学习到的路由,再通过network发布到BGP中
纯动态注入:通过把 IGP路由 重发布到 BGP中
BGP邻居建立状态:
idle:初始状态
connect:BGP等待TCP连接的建立
active:TCP连接失败,重新建立TCP连接
opensent:TCP建立成功,发送open报文
openconfirm:收到正确的OPEN报文
established:BGP邻居建立成功
BGP邻居建立过程 详解
1. R1 指定 邻居发送TCP连接请求包,SIP=1.1.1.1 DIP=10.10.10.10 SP=40029 DP=179 SYN=1,Seq=0;
2. R2收到 连接请求 同意则 回应SIP=10.10.10.10 DIP=1.1.1.1 SP=179 DP=40029 SYN=1,ACK=1,确认号=1,Seq=0;
3. R1收到 连接请求确认后再 后发送确认,连接建立。SIP=1.1.1.1 DIP=10.10.10.10 SP=40029 DP=179 ACK=1,确认号=1 Seq=1;
4. TCP连接建立后,R1发送BGP open报文(类型1)。My AS=10,hold time=180s( 边先确认TCP连接成功就发送OPEN报文)
BGP identifier=1.1.1.1( BGP标识,相当于OSPF的router-id, loopback IP最大的 地址)
BGP报文头部格式
Marker(16字节): 用于BGP认证,不使用认证时所有比特为1
length(长度): 2字节 type(类型):1字节
类型1: open协商BGP参数,建立邻居关系
类型2: update传播BGP路由
类型3: notification报告错误,中止邻居关系
类型4: keepalive维持邻居关系,周期为60s
OPEN报文格式
version(版本): 1字节,现在为版本4
my as (自己的AS号): 2字节,上面的AS为10
hold time(超时): 2字节,默认为180s
BGP Identiffer(标识) :4字节,为loopback中最大的IP
optional parameters length: 可变长度(可先内容)
5.TCP连接成功 R2也发 送OPEN报文My AS=10,hold time=180s
BGP identifier=10.10.10.10(loopback地址)
OPEN报文格式:
version(版本): 1字节,现在为版本4
my as (自己的AS号): 2字节,上面的AS为10
hold time(超时): 2字节,默认为180s
BGP Identiffer(标识) :4字节,为loopback中最大的IP
optional parameters length: 可变长度(可先内容)

6. BGP邻居建立好后,每隔60s发送 keepalive报文
keepalive报文格式为BGP的报文头 ,没有报文体,每60s发送。

7. 当有路由被发布到BGP中(增量更新,只携带增加的路由信息)或有路由失效时,发送update报文:
update报文格式:
unfeasible routes length(2字节): 不可到路由长度,如没有则为0
total path attribute length(2字节): BGP属性长度 属性有很多种,下次再详细讲解
path attributes(可变长): BGP路径属性 里面有经过的AS号
nework layer reachability information(可变长): 可达路由信息,里面包含前缀长度和网络号

8. 当路由失效时,也发送update报文:
update报文格式:
unfeasible routes length(2字节): 不可到路由长度,这路由有不可达路由
withdrawn routes: 撤消路由条目,包括前缀长度和网络号
total path attribute length(2字节): 这里为0,没有数据

欢迎大家访问我的博客: http://tangfangxiao.blog.51cto.com  

你可能感兴趣的:(休闲,BGP,BGP邻居,BGP协议,BGP报文)