目录
一、BGP介绍
BGP(TCP 179端口号)是一种运行在AS之间的动态路由协议,主要作用在AS之间自动交换无环路由信息,消除路由环路并实施用户配置的路由策略
网关路由协议分类
- IGP-内部网关路由协议:rip、ospf、is_is
- EGP-外部网关路由协议:BGP
二、BGP工作原理
五种报文
- open报文:用于建立BGP对等体之间的连接关系
- update报文:用来更新BGP对等体之间的路由信息(只有它带有路由)
- notification报文:当BGP检测到错误状态时,立刻发送该报文
- route-refresh报文:用来告知对等体本地所支持路由的刷新能力
- keepalive报文:对等体之间周期性的发送,简单来说就是是不是问一下对方是否还活着,简称“保活报文”
六种状态
- idle状态:初始状态,拒绝任何进入的连接请求,只有收到本设备的start事件后BGP才开始尝试和其他BGP对等体进行TCP连接
- connet状态:等待TCP完成连接,连接成功那么BGP向对等体发送open报文,并转至opensent状态,如果连接失败,那么就进入active状态重新连接,如果重新连接失败,将继续停留在connet状态
- active状态:TCP如果连接失败,那么就进入active状态重新连接,如果重新连接失败,将返回connet状态
- opensent状态:等待对等体的open报文
- openconfim状态:等待keepalive或notification报文,如果收到keepalive报文,那么进入established状态,如果收到notification报文,则转至idle状态
- established状态:在此状态下,BGP可以在对等体之间交换update、keepalive、route-refresh等报文
五张表
- IP路由表:存放着最优路由表
- BGP路由表:包括本地BGP Speaker通告的路由信息
- 邻居表:对等体邻居清单列表,包括对等体两端的邻居信息及邻居列表
- ADi-RIB-ln:对等体宣告给本设备未处理的路由信息库
- ADj-RIB-Out:本设备宣告给指定对等体的路由信息库
邻居关系类型
- IBGP:同一个AS内部的BGP邻居关系
- EBGP:AS之间的BGP邻居关系
三、通告BGP路由的方法
-
Network方法
bgp 100 network 1.1.1.1 32
-
Import方法
bgp 100 import-route ospf 1
四、BGP对等体配置
BGP设备会将最优路由加入BGP路由表,形成BGP路由。BGP设备与对等体建立邻居关系后,采取以下交互原则:
- 从BGP对等体获得的BGP路由,BGP设备只传递给它的EBGP对等体
- 从EBGP对等体获得的BGP路由,BGP设备传递给它的所有EBGP和IBGP对等体(对等体是BGP只能传递一跳,对等体是EBGP则不限制)
- 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体
- 路由更新时,BGP设备只发送更新的BGP路由
- 所有对等体发送的路由,BGP设备都会接收
- 所有EBGP对等体在传递过程中下一跳改变
- 所有BGP对等体在传递过程中下一跳不变
- 默认EBGP传递时,TTL值为1
- 默认BGP传递时,TTL值为255
EBGP多跳
由于默认BGP中EBGP邻居之间的TTL值为1,若EBGP对等体非直连,在传递时,TTL跳数限制会使非非直连的EBGP对等体无法正常建立邻居关系,这时就需要EBGP多条。
R3
bgp 200
peer 12.1.1.0 ebgp-max-hop 2 //隔了几个路由器就写几
更新源建立邻居关系
连接公网环境设备的地址很容易出现各种各样的问题,为了避免因为接口不稳定或DOWN而导致的BGP状态的改变,通常会在同一个AS内使用冗余链路来确保BGP的稳定性,这样即使某一链路故障,也不影响BGP的邻居关系,所以经常会使用LoopBack接口IP地址来和对端建立BGP邻居。因为环回接口几乎永远UP,所以只要至少有一条链路可达,BGP的邻居关系就不会因链路而发生改变,这种使用环回接口建立BGP邻居的方法称为更新源建邻居
R4
bgp 100
router-id 1.1.1.1
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface loopback0
下一跳
peer 10.0.0.0 next-hop-local
五、BGP的属性
属性分类
- 公有必遵:所有BGP路由器都可以识别,且必须存在于Update报文中
- 公认任意:所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来决定是否添加到Update 消息中
- 可选过渡:BGP路由器可以选择是否在Update消息中携带这种属性。接收的路由器如果不识别这种属性,可以转发给邻居路由器
- 可选非过渡:BGP路由器可以选择是否在Update消息中携带这种属性,接收的路由器如果不识别这种属性,那么直接丢弃
属性介绍
BGP的属性 | 类别 |
---|---|
origin | 公有必遵 |
as-path | 公有必遵 |
next-hop | 公有必遵 |
local pref | 公认任意 |
community | 可选过渡 |
med | 可选非过渡 |
其中local-pref是宣告的同AS之内的,而MED是宣告给AS之间的
六、实验案例
实验要求:
要求实现两个AS之间的互相通信
通过修改BGP属性使实现业务需求的路径从R2切换到R3
R1配置:
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.0.12.1 24
[Huawei-GigabitEthernet0/0/1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.0.13.1 24
[Huawei-GigabitEthernet0/0/0]q
[Huawei]int lo 0
[Huawei-LoopBack0]ip add 1.1.1.1 32
[Huawei-LoopBack0]q
[Huawei]bgp 100
[Huawei-bgp]router-id 1.1.1.1
[Huawei-bgp]peer 10.0.12.2 as-number 200
[Huawei-bgp]peer 10.0.13.2 as-number 200
[Huawei-bgp]network 1.1.1.1 32
[Huawei-bgp]q
R2配置:
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.0.12.2 24
[Huawei-GigabitEthernet0/0/1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.0.24.1 24
[Huawei-GigabitEthernet0/0/0]q
[Huawei]int lo 0
[Huawei-LoopBack0]ip add 2.2.2.2 32
[Huawei-LoopBack0]q
[Huawei]bgp 200
[Huawei-bgp]router-id 2.2.2.2
[Huawei-bgp]peer 10.0.12.1 as-number 100
[Huawei-bgp]peer 10.0.24.2 as-number 200
[Huawei-bgp]peer 10.0.24.2 next-hop-local
[Huawei-bgp]q
[Huawei]ospf 1
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]q
[Huawei-ospf-1]q
[Huawei]bgp 200
[Huawei-bgp]im
[Huawei-bgp]import-route ospf 1
[Huawei-bgp]q
R3配置:
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.0.13.2 24
[Huawei-GigabitEthernet0/0/1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.0.34.2 24
[Huawei-GigabitEthernet0/0/0]q
[Huawei]int lo 0
[Huawei-LoopBack0]ip add 3.3.3.3 32
[Huawei-LoopBack0]q
[Huawei]bgp 200
[Huawei-bgp]router-id 3.3.3.3
[Huawei-bgp]peer 10.0.13.1 as-number 100
[Huawei-bgp]peer 10.0.34.1 as-number 200
[Huawei-bgp]peer 10.0.34.1 next-hop-local
[Huawei-bgp]q
[Huawei]ospf 1
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]q
[Huawei-ospf-1]q
[Huawei]bgp 200
[Huawei-bgp]im
[Huawei-bgp]import-route ospf 1
[Huawei-bgp]q
R4配置:
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.0.24.2 24
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.0.34.1 24
[Huawei-GigabitEthernet0/0/1]q
[Huawei]int lo 0
[Huawei-LoopBack0]ip add 4.4.4.4 32
[Huawei-LoopBack0]q
[Huawei]bgp 200
[Huawei-bgp]router-id 4.4.4.4
[Huawei-bgp]peer 10.0.24.1 as-number 200
[Huawei-bgp]peer 10.0.34.2 as-number 200
[Huawei-bgp]network 4.4.4.4 32
[Huawei-bgp]q
[Huawei]ospf 1
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]q
[Huawei-ospf-1]q
在R1上ping4.4.4.4,我们会发现,它走的是下面那条路径(我们这里也有可能是走上面那条路径过去的,没有问题)
在R4上ping1.1.1.1,会发现,它走的是上面那条路径
此时我们需要将R4ping1.1.1.1的路径往下走,那么配置如下:
在R3上:
[Huawei]route-policy lop permit node 10 //创建名为lop的路由策略
Info: New Sequence of this List.
[Huawei-route-policy]apply local-preference 222 //设置本地优先级为222
[Huawei-route-policy]q
[Huawei]bgp 200
[Huawei-bgp]peer 10.0.34.1 route-policy lop export //应用策略
[Huawei-bgp]q
配置完后,我们再去R4上,我们会发现,路径修改为了下面那条
如果!!!R1pingR4走的是上面那条路径,那么配置如下:
在R2上:
[Huawei]route-policy med permit node 10 //创建名为med的路由策略
Info: New Sequence of this List.
[Huawei-route-policy]apply cost + 500 //将本地优先级+500
[Huawei-route-policy]q
[Huawei]bgp 200
[Huawei-bgp]peer 10.0.12.1 route-policy med export //应用策略
[Huawei-bgp]q
我们会发现,我们的med和local pref属性用在了不同的路由器上,这就跟上面所说的,med是对外的,local是对内的
以上就是我们的BGP知识点讲解!!!
如果对你有帮助就点个赞吧!!!