DATACOM-IP单播路由BGP-复习-实验
- BGP
-
- 原理
-
- [自治系统AS(Autonomous System)](#自治系统AS(Autonomous System))
- BGP邻居(对等体)
- 报文
- BGP属性
- BGP路由生成
- IBGP-路由反射器
- IBGP-BGP联盟
- 应用
- 配置
- 实验
- 参考
bash
update 2024.12.20
BGP
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。单播IPv4网络使用的版本是BGP-4,IPv6使用的版本是MP-BGP。
BGP基于TCP 179端口,按照TCP/IP协议,数据-ip-tcp,它是应用层协议RIP基于UDP,数据-ip-udp,它是应用层协议
OSPF基于IP交换,数据-ip报文,它是网络层协议
原理
自治系统AS(Autonomous System)
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS
不同AS之间(EBGP)需要直连链路,或者VPN构造逻辑直连链路(GRE Tunnel等)建邻
BGP邻居(对等体)
BGP邻居类型按照运行方式分为EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)
EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。
IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。
一般对等体的建立使用逻辑接口IP,考虑到冗余、可靠性,一条物理链路down了,其他链路备份
报文
BGP属性
BGP路由生成
display bgp routing-table可以查看生成的路由条目
bgp路由只存在于对等体之间,display bgp peer可以查看对等体
BGP本身不会发现并计算生成路由,他需要通过人工将IGP或直连或静态注入到BGP路由表中,并通过update报文传递给其他对等体
两种注入方式:network、import-route
IBGP-路由反射器
为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。
客户机只需要与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少了IBGP连接数量。RR只将自己使用的最优bgp路由进行反射,这意味着别的对等体收到的只是RR到客户机的路由,需要看准nexthop
为了增加网络可靠性,可以配置一个备份RR集群中的所有RR必须使用相同的Cluster ID,以避免RR之间的路由环路
一个AS内可以有多个集群RR可以分级,RR-2相当于RR-1的客户机
多集群,同级RR
IBGP-BGP联盟
为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。
联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。
应用
配置
bash
# 启动bgp
sys
router id [x.x.x.x]
bgp [as-number]
bash
# 配置bgp对等体
peer [x.x.x.x] as-number [as-number]
bash
# 配置BGP引入路由
#
#import 方式
ipv4-family {unicast | multicast | vpnv4 } #进入地址簇
import-route [protocol] [ process-id ] {med [med] | route-policy [route-policy-name]} #引入其他协议
#[可选]default-route imported允许BGP引入本地IP路由表中已经存在的缺省路由import-route (BGP)
#
#network方式
ipv4-family {unicast | multicast | vpnv4 }
network [x.x.x.x] [mask] route-policy [name]
bash
# 配置路由反射器
#
sys
bgp [as-number]
ipv4-family {unicast | multicast | vpnv4 } #进入地址簇
peer { group-name | ipv4-address | ipv6-address } reflect-client #配置路由反射器及其客户
# reflector cluster-id cluster-id #可选,配置路由反射器的集群ID
# undo reflect between-clients #禁止客户机之间的路由反射
bash
# 检查功能
display bgp peer [ verbose ] # 查看所有BGP对等体的信息
display bgp peer ipv4-address { log-info | verbose } # 查看指定BGP对等体的信息
display bgp routing-table #查看bgp路由条目
实验
BGP
配置BGP的基本功能
接口、ibgp、ebgp配置
bash
R1:
#
sysname R1
#
router id 1.1.1.1
#
interface Ethernet0/0/0
ip address 192.168.1.2 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
bgp 65008
peer 192.168.1.1 as-number 65009
#
ipv4-family unicast
undo synchronization
peer 192.168.1.1 enable
#
bash
R2:
#
sysname R2
#
router id 2.2.2.2
#
interface Ethernet0/0/0
ip address 192.168.1.1 255.255.255.0
#
interface Ethernet0/0/1
ip address 172.16.1.1 255.255.255.0
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
bgp 65009
peer 172.16.1.2 as-number 65009
peer 172.16.2.2 as-number 65009
peer 192.168.1.2 as-number 65008
#
ipv4-family unicast
undo synchronization
peer 172.16.1.2 enable
peer 172.16.2.2 enable
peer 192.168.1.2 enable
#
bash
R3:
#
sysname R3
#
router id 3.3.3.3
#
interface Ethernet0/0/0
ip address 172.16.1.2 255.255.255.0
#
interface Ethernet0/0/1
ip address 172.16.3.1 255.255.255.0
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
bgp 65009
peer 172.16.1.1 as-number 65009
peer 172.16.3.2 as-number 65009
#
ipv4-family unicast
undo synchronization
peer 172.16.1.1 enable
peer 172.16.3.2 enable
#
bash
#
sysname R4
#
router id 4.4.4.4
#
interface Ethernet0/0/0
ip address 172.16.2.2 255.255.255.0
#
interface Ethernet0/0/1
ip address 172.16.3.2 255.255.255.0
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
bgp 65009
peer 172.16.2.1 as-number 65009
peer 172.16.3.1 as-number 65009
#
ipv4-family unicast
undo synchronization
peer 172.16.2.1 enable
peer 172.16.3.1 enable
#
可以看到配置完对等体后,bgp路由表上没有任何路由条目,在R2上手动注入自己的直连路由后观察路由表变化
bash
bgp 65009
import-route direct
R1、3、4的ospf路由表上多了R2的直连路由
使用network方式注入路由,观察路由表
bash
R2:
bgp 65009
ipv4-family unicast
undo import-route direct
network 2.2.2.2 32
配置BGP路由反射器
bash
省略配置接口IP、对等体建邻
在R2上network 2.2.2.2 32 后观察其他设备路由表
只有R1和R3学到了该路由,因为R2的对等体只有它们
想让整个bgp网络设备都学到该路由,就需要全连接,全连接有太过消耗资源所以就有了路由反射器和联盟,在R1上布置路由反射器,指定R2、3为客户机
bash
R1:
sys
bgp 65009
ipv4-family unicast
peer 10.1.4.2 reflect-client
peer 10.1.5.2 reflect-client
bash
R4同理
在R2上注入2.2.2.2bgp路由,观察其他设备路由表变化,发现R7上虽然有R2的路由但是下一跳不在R7的路由表上,于是不可达
尝试在R1上向bgp注入直连路由import-route direct,观察R7路由表,R2可达