思科BGP技术详解三
七、bdp的三张表:
1)邻居表:用show ip bgp nei 或:show ip bgp summary (常用)
2)BGP表:查看用 show ip bgp 显示有三个条目:哪个条目是学来的?2.0和3.0是常来的。
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.0/24 0.0.0.0 0 32768 i
*> 2.2.2.0/24 12.1.1.2 0 0 200 i
*> 3.3.3.0/24 12.1.1.2 0 200 300 i
I:本地的为空,小i移到前面了,代表IGP
*:表示是可用的路由。
>:是取优的路径(始终是会选择一条最优路径)
0.0.0.0:指本地BGP网络
200 300 i:从300到200过来的,AS离我最近的放在最左边。
3)路由表: 把”>”指向的那一条放进路由表中。
如图:
Best 最优的路径,始终会选一条最优的路径,不会形成负载,但可以用手工形成。
R2上有两个邻居,把BGP的邻居donw,但是直连接电路还是通的。方法:
Router bgp 200
Nei 12.1.1.1 shut
R2#Show ip bgp sum
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
12.1.1.1 4 100 25 33 0 0 0 00:00:43 Idle (Admin)(手动关闭 )
23.1.1.2 4 300 91 100 11 0 0 01:26:33 1
直连的能拼通:R2#ping 12.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/40/64 ms
R2#show ip bgp nei显示:两个邻居的状态:一个是:shutdown 一个时:Established状态。
BGP neighbor is 12.1.1.1, remote AS 100, external link
Administratively shut down
BGP neighbor is 23.1.1.2, remote AS 300, external link
BGP version 4, remote router ID 3.3.3.3
BGP state = Established, up for 01:28:33
八、消息类型:
BGP四种消息类型四个包:
Open
Dekpalive
Update
natification
用试验说明:如图:
![]() |
计算机要桥接本地。启bgp 100 200 R4 和R5先不要配置。R1在AS 100 R2、R3在AS200,在交机上做端口映射。
SW1#monitor session 1 source int f0/1 监听会话1,源接口交换机机f0/1。
Monitor session 1 destination int f0/3 监听会话,目的接口是:f0/3.
打开软件,wireshark,点击开始。到R1上打开f0/0接口。过一会后,再no shutdown.在wiresshrk软件的过滤栏内输入bgp 把bgp包过滤出来。 BGp封装于TCP之上,端口号179.
九、包结构:
第一个包:open消息 作用:建立邻居关系。
包含:1.type 1 类型为1
2.版本为4,版本不相等不能建立邻居。
3.本地的AS(my AS )
4.holdtime :180s 。可以修改,最小能改成3.(keepalivetime为60s.是由holdtiom 决定,是3倍的关系)。Holdtiom时间不相等也能建立邻居,建立邻居时则依据较小的时间。
5.BGP的ID:当OSPF和BGp共存时,要保证Router ID一致。
6.用的是TCP协议,要完成三次握手。抓包试验:
试验: (TCP 的三次握手)
Internet protocol ,src12.1.1.1 (12.1.1.2),dst 12.1.1.2(12.1.1.1)
第二个包:keepalive 保活。(是一个空包)
包含:类型为4.
第三个包:updata:更新消息:
包含:1.类型:2
2.path attribute:路径属性
3.网络可达性消息(NLRI)-network layer reachability information :包含前缀和网络。
第四个包:notification当bgp 发生错误时,会发送natification报文
包含:1.type 类型:notification message 3
2.Error code 错误代码: open message error(open消息错误)
Error subcode错误子代码 : bad peer AS。对端的AS错误(不匹配的AS)
十、BGP的邻接状态集:
1.idle:相当于down状态。什么也不干。 idle[ˈaidl].懒散的;空闲的
2.connet建立:建立TCP的连接。
3.active
4.opensent
5.openconfirm
6.eestablished
详细说明:
第一:idle 状态:初始化TCP的连接。
第二:connet状态:等待TCP的连接(是个瞬间),如果TCP连接成功,则发opensent消息,进入opensent状态。如不成功,则进入Active状态。
第三、Active状态:
第四、opensent:等待对方的Opensent 消息。收到消息,如匹配,则向对方发送keepalive消息,进入openconfirm状态。如不匹配,发送notification消息,回到idle状态,进行下一次的重传。
第五、openconfirm:等待对方发送keepalive消息。如收到keepalive消息,则进入下一状态;如收到notification消息,则进入idle状态。
第六、eestablished:说明邻居关系已经建立。可以发送updata消息,路由器可以更新了。
十一、试验:
如上图:配通,
BGP也有router-id 选举规则,和原先一样,也可手动指定:bgp router-id 2.2.2.2
各接口配置地址,每个路由器上都有一个loop 0,将网络加入到BGp 中,
R1#Router bgp 100
Network 1.1.1.0 mask 255.255.255.0
R3#router bgp 200
Network 3.3.3.0 mask 255.255.255.0
R3# R3#show ip bgp nei
R3#show ip bgp nei
BGP neighbor is 23.1.1.1, remote AS 200, internal link 内部bgp即:IBGP
BGP version 4, remote router ID 2.2.2.2
BGP state = Established, up for 00:10:25,
Sent Rcvd
Opens: 1 1 发一个收一个OPENS包。
Notifications: 0 0
Updates: 1 1
Keepalives: 9 9
Route Refresh: 0 0
Total: 11 11
还包含:
远端的Router-id :
internal link :内部即IBGP
BGP state: 如显示established:代表邻居关系已经建立。
Keepalive :60s
R3#show ip bgp
学到了1.1.1.0/24的路由。是通过IBGP学过来路由。
Network Next Hop Metric LocPrf Weight Path
* i1.1.1.0/24 12.1.1.1 0 100 0 100 i
*> 3.3.3.0/24 0.0.0.0 0 32768 i
* i5.5.5.0/24 45.1.1.2 0 100 0 300 i
0.0.0.0 :是直连的链路,默认下一跳是0.0.0.0
I:表示是通过IGBP常来的路由。
R3#ping 12.1.1.1 不通,直连在任何情况下,路由下一跳应该到达。看一下路由表:
R3#show ip route ,显示没有1.1.1.1的B路由。没有的原因是下一跳不可达。
34.0.0.0/24 is subnetted, 1 subnets
C 34.1.1.0 is directly connected, FastEthernet0/0
3.0.0.0/24 is subnetted, 1 subnets
C 3.3.3.0 is directly connected, Loopback0
23.0.0.0/24 is subnetted, 1 subnets
C 23.1.1.0 is directly connected, FastEthernet0/1
发现了一个问题:1.1.1.0到R2的下一跳是12.1.1.1。不对了。应是:12.1.1.2
R1:#上用ping 3.3.3.3 source 1.1.1.1 不通。
原因:是的。到过1.1.1.0网络的下一跳是12.1.1.1了,应该是23.1.1.。引出了:
BGP网络中的“下一跳规则”:
从EBGP邻居常来的路由,在向IBGP发送时,下一跳地址要改变(默认是不改变的)。
R2从EBGp的R1上学到1.1.1.1路由,下一跳是12.1.1.1,根据上述规则,R2在发给R3时,下一跳不变也是12.1.1.1,如果R3能正常收到路由,应该改成到R3到R1的下一跳:。23.1.1.1
R2 # router bgp 200
R2#nei 23.1.1.2 next-hop-self 23.1.1.1 是指的我的邻居。
意思是:我给我的邻居23.1.1.2发送路由时下一跳变成我自己。
R3#show ip bgp
显示:有了R3到1.1.1.1的下一跳地址:23.1.1.1
Network Next Hop Metric LocPrf Weight Path
*>i1.1.1.0/24 23.1.1.1 0 100 0 100 i
*> 3.3.3.0/24 0.0.0.0 0 32768 i
* i5.5.5.0/24 45.1.1.2 0 100 0 300 i
水平分割:
没有收到。原因是IBGP有一个水平分割原则:
R3#Ping 1.1.1.1 source 3.3.3.3
暂时还木有人评论,坐等沙发!