BGP协议基础
路由分类
直连路由
非直连路由(间接路由)
- 静态路由
- 动态路由
IGP:内网网关路由协议(在企业内部或数据中心内部使用)
DV:距离矢量路由协议 - RIP(v1/v2)
- IGRP——网络直径:100~255(思科的私有协议)
- EIGP——思科私有
LS: 链路状态路由协议 - ISIS- 中间系统到中间系统
- OSPF —开放式最短路径优先
EGP : 外部网关路由协议:在不同公司之间使用,在不同的城市之间
BGP:边界网关协议 (路径矢量路由协议)
为什么要使用BGP协议
我们要在不同AS之间实现网络通信,需要使用EGP-BGP协议,当然我们还看重BGP的一些优势
- 非常稳定
- 可以传输大量的路由,支持大规模网络
- 具有非常丰富的路由控制策略,可以实现灵活的选路
BGP概述
- BGP:边界网关协议
- BGP是公有协议,任何厂商的设备都支持BGP
- BGP位于OSI的第7层 (应用层)
ps:OSPF基于IP协议,为了可靠性,数据库同步:协商主从关系,序列号、有确认机制
AS号
AS号(Autonomous System Number):自治系统:
- 是互联网中的一种标识符,用于标识一个自治系统(AS)的唯一数字。自治系统是指由一组网络和路由器组成的网络。
- AS号可以帮助互联网中的路由器找到要到达目的地的IP地址的最短路径。
- AS号由互联网分配机构IANA(互联网分配号码管理局)分配。
- AS号的范围被划分为两类:公共AS号和私有AS号。
- 公共AS号是指由IANA分配的AS号,可用于在全球范围内标识自治系统。
- 私有AS号是指由互联网注册机构(IR)分配的AS号,用于在私有互联网中标识自治系统。
- AS通常使用“数字”来表示,称为AS号
- AS号的范围是从0到65535,其中0被保留不使用
- AS编号取值范围
之前是2字节表示,取值范围:1-65535
私有AS号:64512-65534,可以用于在私有互联网中标识自治系统,但不会在公共互联网中出现。这些私有AS号通常用于连接组织的内部网络。 - 目前是4个字节:1-4294967295
4字节AS号的范围是从0到4294967295,其中0号AS被保留不使用
私有AS号范围是4200000000至4294967294
4字节AS号由IANA管理,并由全球RIR(区域互联网注册局)负责分配 - AS号的划分方式取决于运营商的具体管理需求和网络架构,可以按照城市、区域、网络、子网等不同的维度进行划分。
BGP协议概述
场景
- 场景一:遍布全国大型政企单位之间, 或大型数据中心
- 场景二:运营商骨干网
作用
- 在AS之间动态的交互路由信息,实现公司与公司之间的互访
优势
- 稳定,基于TCP协议建立的,使用端口号TCP179,所以非常稳定
- 传递大量路由,可以跨多跳建立邻居关系
- 路由控制策略丰富
BGP邻居类型
- EBGP: 运行于不同的AS
- IBGP: 运行于同一AS内部
BGP特征
- BGP使用传输层协议为TCP,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立
- 运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器
- 两个建立BGP会话的路由器互为对等体(Peer),说人话,就是BGP邻居
- BGP对等体之间交换BGP路由信息 , 说人话,BGP在邻居之间传递路由
- BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)
- BGP能够传递大批量的路由,可在大规模网络中应用
BGP报文类型
- open : 用于建立邻居关系 (类似于hello报文)
- keep alive : 保活报文,用于维护邻居关系,周期性发送,60秒发一次, 保持BGP连接 (类似于hello)
- update : 更新报文,用于传递路由和撤销路由 (类似于LSU报文)
- notification : 通知报文,用于通知BGP邻居之间的报错信息,用于断开BGP连接
- router-refresh : 重传报文,请求邻居重新发送路由信息
BGP工作过程
BGP状态
idle :初始化状态
- tcp未连接状态,邻居的状态为idle , 当bgp设备和邻居进行tcp 连接时,会从当前的状态转为connect 状态
connect 状态: tcp 连接状态
- 如果tcp 建立连接成功,bgp 设备会向邻居发送open报文,状态也会转为opensent 状态
- 如果tcp 建立连接失败,bgp设备的状态会转为active 状态
active 状态:活跃状态
- 在当前状态下,bgp 设备依然没有放弃希望,依然试图继续建立tcp 连接,如果成功,状态依然可以转为opensent 状态
- 如果依然失败,bgp会停留在active 状态
ps:如果重传计时器超时,依然没有收到邻居回应,bgp设备会心灰意冷的返回上一个状态,上一个是connect 状态
opensent 状态:open报文已发送状态,已向邻居发送open报文
- 如果bgp设备给邻居发送open报文后,如果收到来自邻居的回复,并且回复的报文是正确的,bgp 设备会继续发送报文,发送什么报文呢? 发送keep alive 报文,状态转为 open comfirm 状态
- 如果bgp设备给邻居发送open报文后,如果收到来自邻居的回复,但是回复的报文有错误,bgp 设备会向邻居发送notification 报文(用于断开bgp连接状态),断开后会跳转到最初的idle 状态
open comfirm : open报文确认状态
- 如果收到邻居发来的keep alive 报文,状态会转为established 建立状态
- 如果收到邻居发来的notification 报文,状态会跳转为 idle 状态
established : 连接已建立状态
- 如果收到邻居发来的正确的update 报文或者keepalive 报文,bgp就会认为邻居是正常的
- 如果收到邻居发来的错误的update 报文或者keepalive 报文,bgp设备会发送notification 报文,通知邻居,我们分手把,不做邻居了,会回到idle 初始化状态
BGP的工作原理
- 建立邻居
- 传递路由
BGP路由优先级
- 默认优先级为255
- IBGP路由默认优先级为255
- EBGP路由默认优先级为255
BGP邻居关系建立的完整流程
BGP基础配置案例
需求
- 配置EBGP邻居关系
- 实现网络互通
配置步骤
配置接口IP地址
配置EBGP邻居
- 开启BGP功能,进入AS号
- 配置router-id
- 指定邻居地址,指定邻居AS号
注入路由
配置命令
sysname R1
- [R1]interface GigabitEthernet0/0/0
- [R1-G0/0/0]ip address 192.168.1.254 255.255.255.0
- [R1-G0/0/1]interface GigabitEthernet0/0/1
- [R1-G0/0/1]ip address 192.168.12.1 255.255.255.0
- [R1]bgp 100
- [R1-bgp]router-id 1.1.1.1
- [R1-bgp]peer 192.168.12.2 as-number 200
- [R1-bgp]network 192.168.1.0
sysname R2
- [R2]interface GigabitEthernet0/0/0
- [R2-G0/0/0]ip address 192.168.12.2 255.255.255.0
- [R2-G0/0/0]interface GigabitEthernet0/0/1
- [R2-G0/0/1]ip address 192.168.2.254 255.255.255.0
- [R2]bgp 200
- [R2-bgp]router-id 2.2.2.2
- [R2-bgp]peer 192.168.12.1 as-number 100
- [R2-bgp]network 192.168.2.0
验证:查看邻居表
- display bgp peer
验证:查看路由表
- display bgp routing-table