什么是 BGP 路由协议
BGP(border gateway protocl)边界网关协议,BGP 是一种基于距离矢量的路由协议,用于实现不同 AS 之间的路由可达
EGP,(external gateway protocol 外部网关协议 VS 内部网关协议-RIP、OSPF、IS-IS),现代网络环境有且只有一个 EGP 协议,即 BGP
BGP 协议的基本特点:
(1)BGP 是一种外部网关协议,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由;
(2)BGP 使用 TCP 作为其传输层协议(端口号 179),提高了协议的可靠性;
(3)BGP 是一种距离矢量路由协议,在设计上就避免了环路的发生;
(4)BGP 提供了丰富的路由策略,能够实现路由的灵活过滤和选择;
(5)BGP 采用触发式增量更新,而不是周期性的更新;
OSPF、ISIS 路由协议在网络中已经广泛使用,但是随着网络规模的扩大,路由条目也随增加,IGP 协议已经无法管理大规模网络了。因此出现了 AS 的概念。
官方解释:AS 是指在同一组织管理下,使用统一选路策略设备的集合。
简单来说:就是你可以把一个网络中的不同的设备划分到不同的组(AS)中,或者都划分在一个组中,那么一个组中的这些设备具备相同的路由协议。
比如你可以将企业总部网络划分在一个 AS 中,企业的分部网络划分在一个 AS 中。不同的 AS 可以运行不同的路由协议。
BGP 的工作原理:
第一步)通过 TCP 建立邻居
display bgp peer
第二步)更新 BGP 数据库
display bgp routing
第三步)通过选路的原则得到最优的路由表
dis ip rou pro bgp
BGP 传递路由优势
不同 AS 之间通过 BGP 路由协议对接,那么使用 BGP 相比 IGP 协议有那么好处呢?
- BGP 是基于 TCP 的路由协议,只要能够建立 TCP 就能够建立 BGP;
- BGP 只传递路由信息,不计算路由,不会暴露 AS 内部的网络拓扑;
- BGP 的路由更新是触发更新,不是周期性更新;
- 富的度量路由的属性(attribute:下一跳、起源、AS-path),不是单纯的采用度量来选路
- 具备防环机制的(IBGP 防环、EBGP 防环、RR 环境下的防环、联邦下的防环、MPLS VPN 下的防环)
BGP 的分类
EBGP:AS 号码不同
IBGP: AS 号码相同
既然 BGP 是在 AS 之间提供无环的路由,那为什么还需要 iBGP 呢?IBGP 也是必须的,比如 AS 内部也需要大量路由,AS 内部也要 IBGP 来操控路由
BGP 的基础配置
[R1-bgp]dis th[V200R003C00]#bgp 100 //本设备的 AS 号码(16 和 32 位) peer 10.1.15.5 as-number 200 //BGP 单播方式指定对端地址,指定对端的 AS 号码为 200 # ipv4-family unicast //BGP 本身是一个支持多协议的动态路由协议,默认支持 IPv4 单播,同时还可以支持其他很多协议族(IPv6、VPNv4、VPNv6、组播、VPN 实例、L2VPN)。MP-BGP undo synchronization peer 10.1.15.5 enable#bgp 200 peer 10.1.15.1 as-number 100 # ipv4-family unicast undo synchronization peer 10.1.15.1 enable [R1]display bgp peer //查看 BGP 邻居关系 BGP local router ID : 10.1.15.1 Local AS number : 100 Total number of peers : 1 Peers in established state : 1 Peer V (//bgp v4) AS(//AS Number) MsgRcvd(//接收信息数) MsgSent(//发送信息数) OutQ(出方向队列拥塞数) Up/Down(建立连接时长) State(状态) PrefRcv(收到路由条目数)10.1.15.5 4 200 5 6 0 00:03:30 Established 0 //暂时收到 0 条路由,BGP 产生路由的方式和 IGP 截然不同(IGP 只要开启就会自动产生路由
采用环回接口来完成 eBGP 邻居(来作为直连的 EBGP 邻居关系的备份,环回接口在华为设备上不会关闭,只要设备运行环回接口就工作)
- 在构建邻居关系之前必须通过带源的 ping 来测试邻居两侧的源地址的通信
- 在两个 AS 之间是不能运行 IGP 的!通过静态路由完成 TCP 会话源地址的通信
[R2]ip route-static 66.1.1.1 32 s1/0/0 [R6]ip route-static 22.1.1.1 32 s1/0/0[R2]ping -a 22.1.1.1 66.1.1.1 PING 66.1.1.1: 56 data bytes, press CTRL_C to break Reply from 66.1.1.1: bytes=56 Sequence=1 ttl=255 time=50 ms[R2-bgp]dis th[V200R003C00]# bgp 100 peer 66.1.1.1 as-number 200 peer 66.1.1.1 connect-interface LoopBack0 //指定连接源接口[R2-bgp]peer 66.1.1.1 ebgp-max-hop ? INTEGER Maximum hop //手工指定 TTL 的跳数.EBGP 默认 TTL 为 1,IBGP TTL 默认为 255 不需要修改 Please press ENTER to execute command //直接回车默认值为 255 跳,不推荐的配置方案,GTSM(通用 TTL 安全机制)R6-bgp]dis th[V200R003C00]#bgp 200 peer 22.1.1.1 as-number 100 peer 22.1.1.1 ebgp-max-hop 2 peer 22.1.1.1 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 22.1.1.1 enable //ipv4 协议族默认开启邻居连接,其他协议族默认不开启(如 IPV6);undo peer 22.1.1.1 enable 后会关闭邻居关系
IBGP 完成邻居建立
R1-bgp]dis th[V200R003C00]#bgp 100 peer 10.1.15.5 as-number 200 peer 44.1.1.1 as-number 100 peer 44.1.1.1 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 10.1.15.5 enable peer 44.1.1.1 enable![R4-bgp]dis th [V200R003C00]#bgp 100 peer 11.1.1.1 as-number 100 peer 11.1.1.1 connect-interface LoopBack0 peer 44.1.1.1 as-number 100 # ipv4-family unicast undo synchronization peer 11.1.1.1 enable peer 44.1.1.1 enable