一、 BGP的概述

边界网关协议是一种实现自治系统AS之间的路由可达,并选择最佳路由的量性协议。早期发布的三个版本分别是BGP-1(Rfc1105)、gp-2(rfc1163)bgp3(RfC1267),1994年开始使用BGP-4(RFC177)也是目前使用的版本,2006年之后单播v4网络使用的版本是BGP4(R4271),其他网络使用的版本是MP-bGP(RFC4760)。

1、BGP的路径矢量特征

1)·BGP通常被称为路径矢量路由协议(Path -Vector- Routing Protocol)每条BGP路由都携带着多种路径属性( Path attribute),在各种路径属性中,AS_Path属性是非常关键的一个,AS_Path属性记录了BGP路由传递过程中所经过的AS号,实际上它是一个AS号的列表

2)BGP路由器不接受AS_Path中包含其自身AS号的路由更新ASPath属性值的长短(A号的个数)会作为一个比较的依据,影响BGP路由选择的决策。

2、BGP的防环机制

BGP路由器不接受AS-Path中包含其自身AS号的路由更新。

AS-Path属性值的长短(AS号的个数)会作为一个比较的依据,影响BGP路由选择的决策。

动态bgp 动态bgp价格_bgp


看上图,整个网络中形成环路,但BGP有放缓机制,R5到10.0.0./24,在收到路由信息,里面包含自己的AS号500,会忽略此条信息从而做到防环。

3、BGP的特点

1)BGP能等承载大批量的路由信息能够支撑大规模网络

2)BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导邻居按策略发布路由;

3)BGP路由器值发送增量的BGP路由更新,或进触发更新(不会周期性更新);

4)BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性;

5)两个建立BGP会话的路由器互为对等体(Peer)。BGP对等体之间交换BGP路由表;

6)运行BGP的路由器被称为BGP发言者,或BGP路由器;

7)BGP使用TCP作为其传输层协议,端口号为179,路由器之间的BGP会话基于TCP连接而建立.

4、BGP Peer(对等体)

1)BGP对等体也叫BGP邻居,基于直连接口建立。与OSPF、RIP等协议不同,BGP的会话基于TCP建立的,建立BGP对等体的两台路由器并不要求必须直连,只要路由可达即可。

2)BGP存在两种对等体关系类型:

EBGP:外部边界网关协议,用于在不同的自治系统间交换路由信息,即AS号不同

IBEP:用于在相同的AS间交换路由信息,即AS号相同。

二、BGP的基本参数内容

1、BGP的五种报文

动态bgp 动态bgp价格_R3_02


其中:

Update:用于更新路由变化,记录到路由表当中,是增量更新

keepalive:响应Open消息,用于保持邻居关系,没有携带什么消息及数据,默认情况下,发送报文周期60s发送一次,最长时间(老化时间)是180s,结束之后需要重新建立对等体关系。

2、BGP的六种状态机

动态bgp 动态bgp价格_OSPF_03


3、BGP的两张表

BGP的缺点:

自己不能发现邻居;自己不能发现路由;需要手动配置,指定peer,指定对等关系,所以他有两张表。并不像OSPF配置完成之后可以自己学习并更新路由表。

1)邻居表:display bgp peer

动态bgp 动态bgp价格_动态bgp_04

2)bgp路由表:display bgp routing-table

动态bgp 动态bgp价格_bgp_05


动态bgp 动态bgp价格_R3_06


4、BGP传输AS中的路由黑洞问题

动态bgp 动态bgp价格_动态bgp_07


在传输AS65102中,BCDE四台路由器运行了OSPF,确保AS内部路由实现互通,B与E运行BGP,并且建立IBGP对等体关系,C与D并未运行BGP。

A将本地路由1.1.1.0/24通告到BGP,最终F能够通告BGP学习到该条路由。C、D由于并未运行BGP,因此无法通告BGP 学习到1.1.1.0/24路由。

这样一来,F发往1.1.1.0/24网络的数据包在到达C/D后将被丢弃,在这两个路由器就出现了黑洞。

5、BGP条目的详细信息

动态bgp 动态bgp价格_动态bgp_08

6、IBGP水平分割规则
简而言之一句话:一个路由器不能将另外一个IBGP对等体中学习到路由。由于水平分割的存在,BGP要求AS内需保证对等体关系的全互联,因为只有这样,才能确保每个路由器都能学习到路由。
7、BGP路由通告规则
1)当存在多条路径,路由器只选取最优的BGP路由来使用;
2)BGP只把自己使用的路由,也就是自己任务最优的路由传递对等体;
3)路由器从EBGP对等体获得的路由汇传递给它所有的BGP对等体;
4)路由器从IBGP对等体获得的路由不会传给给它的IBGP对等体;
5)路由器从IBGP对等体获得的路由是否通告给它的EBGP对等体要是IGP和BGP同步的情况而定。

三、BGP的参数配置

1、配置BGP对等体

bgp 100       //配置bgp的AS号为100
router-id 1.1.1.1   //设备loopback接口的地址
peer 2.2.2.2 as-number 100  //配置对等体ip地址2.2.2.2进入到bgp 100

2、BGP引入IGP路由

有两种方式:
1)network:是逐条将IP路由表中已经存在的路由引入到BGP路由表中

bgp 100
network 23.0.0.0 24  //全局路由表中的某个网段引入bgp路由表中,配置方式:在本身路由上面引入本身网段

2)import:是按照协议类型,将RIP/OSPF/IS-IS等协议引入到路由表中,还可以引入静态/直连路由

bgp 100
import-route ospf 1 将ospf1 引入到BGP中

3、修改BGP路由下一跳为自身

peer x.x.x.x next-hop-local   //x.x.x.x IP地址段是对等体的ip网段地址,也就是不可达的那个网段,需要打通的网段

4、指定更新源ip

bgp 100     //进入bgo系统,需要先指定AS号
peer 3.3.3.3 as-number 100 //配置对等体
peer 3.3.3.3 connect-interface loopback 0//再指定用loopback 0

此种配置适用于AS内的配置,若AS外的配置则只需要指定AS号和配置对等体即可。
5、BGP的EBGP多跳
通常EBGP的对等体关系基于直连接口建立。但是如果EBGP的对等体关系并非基于直连接口建立,而是基于loopback接口或者对等体不是直连的,中间隔着其他设备,那么就存在多跳问题,就需要配置多跳,一般系统默认的TTL为1(time to live 只能经过一跳):

peer 4.4.4.4 ebgp-max-hop  //ebgp-max-hop 可以选择默认即255

四:实验要求:

1、R1、R2及R3属于AS100,R4属于AS200

2、AS100内的R1、R2及R3运行ospf,通告各自直连接口

3、R3与R4建立Ebgp第一等体关系,R2暂时不运行BGP,R1与R3建立对等体关系,所有的BGP对等体关系基于直连接口建立;R4将直连路由4.4.4.4/32通告到BGP,要求R1可以学习到BGP路由4.4.4.4/32

4、修改BGP配置,使得R1与R3基于loopback0接口建立IBGP对等体关系

动态bgp 动态bgp价格_bgp_09


配置ip地址和loopback地址

[R1]int LoopBack 0
[R1-LoopBack0]ip add 1.1.1.1 32
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255	
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.255

[R2]int LoopBack 0
[R2-LoopBack0]ip add 2.2.2.2 32
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.255

[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0	
[R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255	
[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.255

[R4]int LoopBack 0
[R4-LoopBack0]ip add 4.4.4.4 32
[R4]ospf 1 router-id 4.4.4.4

[R1]bgp 100	
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 23.0.0.2 as-number 100

[R3]bgp 100
[R3-bgp]router-id 3.3.3.3	
[R3-bgp]peer 12.0.0.1 as-number 100
[R3-bgp]peer 34.0.0.2 as-number 200

[R4]bgp 200
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 34.0.0.1 as-number 100

这时可以抓包看下

动态bgp 动态bgp价格_动态bgp_10


要求R1学习到BGP路由器4.4.4.4/32

[R4]bgp 200
[R4-bgp]network 4.4.4.4 32 先把4.4.4.4的网段引入BGP

[R3]bgp 100	
[R3-bgp]peer 12.0.0.1 next-hop-local  配置下一跳对等体的

这时查询display bgp routing-table

就能查询到4.4.4.4,并且下一跳显示的是R3的下一跳

动态bgp 动态bgp价格_动态bgp_11


运用指定更新源ip,先清除对等体关系

[R1]bgp 100
[R1-bgp]undo peer 23.0.0.2

[R3]bgp 100
[R3-bgp]undo peer 12.0.0.1

再建立对等体关系

[R1-bgp]peer 3.3.3.3 as-number 100
[R1-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[R3-bgp]peer 1.1.1.1 as-number 100
[R3-bgp]peer 1.1.1.1 connect-interface LoopBack 0

动态bgp 动态bgp价格_R3_12


不再显示接口地址,显示的是对等体的loopback

[R3]bgp 100
[R3-bgp]import-route ospf 1

动态bgp 动态bgp价格_R3_13


这时R4的bgp路由表已经有了4.4.4.4

实现互通需要R1-R2 R2-R1 R2-R3 建立对等体关系

[R1]bgp 100	
[R1-bgp]peer 2.2.2.2 as-number 100
[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0

[R2]bgp 100	
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 1.1.1.1 as-number 100
[R2-bgp]peer 1.1.1.1 connect-interface LoopBack 0
[R2-bgp]peer 3.3.3.3 as-number 100
[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[R3]bgp 100
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 2.2.2.2 as-number 100
[R3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[R3-bgp]peer 1.1.1.1 next-hop-local

刚维护完下一跳需要等一会,R1学习到4.4.4.4

动态bgp 动态bgp价格_bgp_14

仍无法互通是因为R1内部无34.0.0.0/24
需要在R3上面引入R4

[R3]bgp 100	
[R3-bgp]network 34.0.0.0 24

动态bgp 动态bgp价格_bgp_15


动态bgp 动态bgp价格_OSPF_16