一、BGP简介
Border Gateway Protocol
是一种实现自治系统AS之间的路由可达,并且选择最佳路由的距离矢量路由协议
早期发布的三个版本分别时BGP-1、BGP-2、BGP-3,1994年开始使用BGP-4,2006年单播IPv4开始使用BGP-4。IPv6使用的是MP-BGP,也称为BGP4+。
IGP和EGP
- IGP(内部网关路由协议):注重路由的计算和发现
- EGP(边界网关路由协议):助作路由的传递、控制和优选
BGP特点
- 外部网关协议
- 在AS之间选择最佳路由和控制路由的传播
- 基于TCP协议
- 在发送路由前需要建立TCP连接
- 端口号179
- 需要有对端邻居更新源(邻居的IP地址)的路由条目
- 支持CIDR(汇总)
- 支持手动汇总,自动汇总
- 增量更新
- 路由更新时,只发送update报文更新的路由,大大减少了BGP传播路由所占用带宽,适用于在Internet上传播大量路由
- 路径矢量路由协议
- 携带可达路由和其路径属性
- 无环路
- AS间:BGP通过携带AS路径信息来标记途径的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路
- AS内部:BGP路由器在AS内部学习的路由不在通告给AS内的IBGP邻居,避免AS内产生环路
- BGP自身没有发现路由的能力
- 需要依靠IGP路由、静态路由、直连路由等发现路由后进行转换
- 丰富的路由策略
- 进行灵活的路由选路、实现防环,并且能直到邻居按策略发布路由
- BGP路由条目的一般情况下比IGP大
- 可防止路由震荡
- 路由聚合、路由衰减
- 易于扩展
- 基于TLV(Type + Length + value)结构进行传递路由
- 可以支持IPv4、IPv6、MPLS等协议
二、BGP基本概念
自治系统AS
AS是指在一个实体管辖下的拥有相同选路策略的IP网络,一个AS被一个机构或运营商管辖。例如
BGP网络中的每个AS都被分配一个唯一的AS号
AS号:
-
一台路由器只能属于一个AS
-
一个AS可以存在多台路由器
-
AS号分为2字节、4字节的:
- 2字节
- 范围:1~65535
- 公有AS号:1~64511
- 私有AS号:64512~65535
- 范围:1~65535
- 4字节
- 范围:1~4294967295
- 表现形式:例:65536
- BGP 65535.1()
- 范围:1~4294967295
- 2字节
BGP邻居类型
两种邻居类型
- IBGP邻居关系:相同AS号的设备建立的BGP邻居关系
- EBGP邻居关系:不同AS号的设备建立的BGP邻居关系
BGP可以跨跳(跨AS)建立邻居关系
- BGP只能手动的发现邻居关系(需要命令行触发)
- BGP是基于TCP协议,单播建立邻居关系
BGP报文交互中的角色
BGP报文交互中分为Speaker和Peer两种角色。
- Speaker:发送BGP报文的设备称为BGP发言者(Speaker),它接收或产生新的报文信息,并发布(Advertise)给其它BGP Speaker。
- Peer:相互交换报文的Speaker之间互称对等体(Peer)。若干相关的对等体可以构成对等体组(Peer Group)。
BGP的路由器号(Router ID)
router id用于唯一标识一台BGP设备,通常是32位的IPv4地址
在BGP会话建立时发送的Open报文中携带。对等体之间建立BGP会话时,每个BGP设备都必须有唯一的Router ID,否则对等体之间不能建立BGP连接
手工配置
自动选取
- 选择loopback接口大的IP地址为BGP router id
- 没有loopback地址时,选择接口最大的IPv4地址为 BGP router id
一旦选出Router ID,除非发生接口地址删除等事件,否则即使配置了更大的地址,也保持原来的Router ID
三、BGP邻居关系基本配置
1.BGP建立邻居关系前,需要建立TCP,保证TCP的源目可达
2.BGP可以通过直连建立邻居,也可以通过非直连建立邻居
- 当BGP设备间存在多条物理链路时,推荐使用非直连建立,稳定性好
- EBGP一般采用直连建立邻居关系
BGP邻居关系的配置
拓扑:
- 实验要求
- 步骤一:基础配置与IP地址与布置IGP
- 路由器各端口配置IP地址,并且在AS 200各路由器上配置OSPF 将AS内网络宣告进OSPF中
- 步骤二: AR1、AR5、AR7建立EBGP邻居(使用直连接口建立)
- 步骤三:AR4、AR6建立EBGP邻居(使用非直连接口建立)
- 步骤四:R1、R3、R4上配置IBGP邻居,使用Loopback0地址作为更新源
在配置BGP邻居前,必须保证AS内路由可达
配置建立EBGP
-
建立EBGP关系(直连建立)
#步骤二: AR1、AR5、AR7建立EBGP邻居 ##R1上配置 router-id 1.1.1.1 //指定router-id 可以在系统视图下配置,也可以在bgp进程内配置 bgp 200 //进程号即为AS号 peer 15.1.1.5 as-number 100 peer 17.1.1.7 as-number 400 ##R5上配置 router id 5.5.5.5 bgp 100 peer 15.1.1.1 as-number 200 //as-number为对端的AS号 ##R7上配置 router id 7.7.7.7 bgp 100 peer 17.1.1.1 as-number 200
-
建立EBGP邻居关系(非直连建立)
- 由于是非直连建立,会出现路由不可达,双方路由器学习不到用来建立邻居关系的路由,所以在配置邻居的基础上要多配置一个静态路由
- 并且EBGP的open报文TTL值默认为1,到达对端设备需要先经过直连端口、TTL值减一,TTL值减到0默认丢弃,报文不可达,所以还需要修改TTL值
##步骤三:AR4、AR6建立EBGP邻居 ##AR4上配置 bgp 200 router-id 4.4.4.4 peer 6.6.6.6 as-number 300 peer 6.6.6.6 connect-interface loopback 0 //指定更新源(默认是直连接口) peer 6.6.6.6 ebgp-max-hop 2 //修改TTL为2(默认TTL为1) quit ip route-static 6.6.6.6 32 46.1.1.6 //配置静态路由使得6.6.6.6可达 ##AR6上配置 bgp 300 router-id 6.6.6.6 peer 4.4.4.4 as-number 200 peer 4.4.4.4 connect-interface loopback 0 //指定更新源(默认是直连接口) peer 4.4.4.4 ebgp-max-hop 2 //修改TTL为2(默认TTL为1) quit ip route-static 4.4.4.4 32 46.1.1.4
配置建立IBGP
-
建立IBGP邻居关系(直连建立)
## bgp 200 router-id 2.2.2.2 peer 12.1.1.1 as-number 200
-
建立IBGP邻居关系(非直连建立)
##步骤四:R1、R3、R4上配置IBGP邻居,使用Loopback0地址作为更新源 ##R1上配置 peer 3.3.3.3 as-number 200 peer 3.3.3.3 connect-interface LoopBack 0 //(更新源) peer 4.4.4.4 as-number 200 peer 4.4.4.4 connect-interface LoopBack 0 //(更新源) ##R3上配置 bgp 200 router-id 3.3.3.3 peer 1.1.1.1 as-number 200 peer 1.1.1.1 connect-interface loopback 0 peer 4.4.4.4 as-number 200 peer 4.4.4.4 connect-interface LoopBack 0 ##R4上配置 bgp 200 router-id 4.4.4.4 peer 1.1.1.1 as-number 200 peer 1.1.1.1 connect-interface loopback 0 peer 3.3.3.3 as-number 200 peer 3.3.3.3 connect-interface LoopBack 0
更新源:更新源地址,指用来建立邻居的本设备地址,默认使用实际接口地址。
检查命令
display bgp peer //检查bgp邻居关系
display bgp error //检查错误原因
display bgp routing-table //检查BGP的路由
IBGP与EBGP邻居关系建立的区别
- 邻居AS号
- EBGP在非直连建立时:
- 邻居更新源路由一般需要额外部署,保证可达
- EBGP默认的TTL为1,EBGP非直连建立邻居关系需要修改该数值
- IBGP在建立邻居关系时,默认TTL为255
建立邻居时,TCP连接可以通过默认路由建立,但是**只能是一端存在默认路由