BGP线路是什么意思?最全BGP路由协议技术详解
⼀、BGP 的基本概念
⾃治系统AS(Autonomous System)
AS 是指在⼀个实体管辖下的拥有相同选路策略的 IP ⽹络。BGP ⽹络中的每个 AS 都被分配⼀个唯⼀的 AS 号,⽤于区分不同的 AS。AS 号分为 2 字节 AS 号和 4 字节 AS 号,其中 2 字节 AS 号的范围为 1 ⾄ 65535, 4 字节 AS 号的范围为 1 ⾄ 4294967295。⽀持 4 字节 AS 号的设备能够与持2 字节 AS 号的设备兼容。
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 联盟。
说明:
如果在AS内⼀台BGP设备收到EBGP邻居发送的路由后,需要通过另⼀台BGP设备将该路由传输给其他AS,则推荐使⽤IBGP。
BGP报⽂交互中的⾓⾊
BGP 报⽂交互中分为 Speaker 和 Peer 两种⾓⾊。
Speaker:发送 BGP 报⽂的设备称为 BGP 发⾔者(Speaker),它接收或产⽣新的报⽂信息,并发布(Advertise)给其它 BGP Speaker。
Peer:相互交换报⽂的 Speaker 之间互称对等体(Peer)。若⼲相关的对等体可以构成对等体组(Peer Group)。BGP的路由器号(Router ID)
BGP 的 Router ID 是⼀个⽤于标识 BGP 设备的 32 位的值,通常是 IPv4 地址的形式,在 BGP 会话建⽴时发送的 Open
BGP 的 Router ID 是⼀个⽤于标识 BGP 设备的 32 位的值,通常是 IPv4 地址的形式,在 BGP 会话建⽴时发送的 Open 报⽂中携带。对等体之间建⽴ BGP 会话时,每个 BGP 设备都必须有唯⼀的Router ID,否则对等体之间不能建⽴ BGP 连接。
BGP 的 Router ID 在 BGP ⽹络中必须是唯⼀的,可以采⽤⼿动配置,也可以让 BGP ⾃⼰在设备上选取。缺省情况下, BGP 选择设备上的 Loopback 接⼝的 IPv4 地址作为 BGP 的 Router ID。如果设备上没有配置 Loopback 接⼝,系统会选择接⼝中最⼤的 IPv4 地址作为 BGP 的 Router ID。⼀旦选出 Router ID,除⾮发⽣接⼝地址删除等事件,否则即使配置了更⼤的地址,也保持原来的 Router ID。
⼆、BGP ⼯作原理
BGP 对等体的建⽴、更新和删除等交互过程主要有 5 种报⽂、 6 种状态机和 5 个原则。
BGP的报⽂
BGP 对等体间通过以下 5 种报⽂进⾏交互,其中 Keepalive 报⽂为周期性发送,其余报⽂为触发式发送:
update是什么Open 报⽂:⽤于建⽴ BGP 对等体连接。
Update 报⽂:⽤于在对等体之间交换路由信息。
Notification 报⽂:⽤于中断 BGP 连接。
Keepalive 报⽂:⽤于保持 BGP 连接。
Route-refresh 报⽂:⽤于在改变路由策略后请求对等体重新发送路由信息。只有⽀持路由刷新(Route-refresh)能⼒的 BGP 设备会发送和响应此报⽂。
BGP状态机
如图所⽰, BGP 对等体的交互过程中存在 6 种状态机:空闲状态(Idle)、连接状态(Connect)、活跃(Active)、Open 报⽂已发送(OpenSent)、 Open 报⽂已确认(OpenConfirm)和连接已建⽴(Established)。在 BGP 对等体建⽴的过程中,通常可见的 3 个状态是:Idle、 Active 和 Established。
1、Idle 状态是 BGP 初始状态。在 Idle 状态下, BGP 拒绝邻居发送的连接请求。只有在收到本设备的 Start 事件后,BGP 才开始尝试和其它 BGP 对等体进⾏ TCP 连接,并转⾄ Connect状态。
BGP 才开始尝试和其它 BGP 对等体进⾏ TCP 连接,并转⾄ Connect状态。
说明:
Start 事件是由⼀个操作者配置⼀个 BGP 过程,或者重置⼀个已经存在的过程或者路由器软件重置 BGP 过程引起的。
任何状态中收到 Notification 报⽂或 TCP 拆链通知等 Error 事件后, BGP 都会转⾄ Idle状态。
2、在 Connect 状态下, BGP 启动连接重传定时器(Connect Retry),等待 TCP 完成连接。
如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报⽂,并转⾄ OpenSent 状态;
如果 TCP 连接失败,那么 BGP 转⾄ Active 状态;
如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 继续尝试和其它 BGP 对等体进⾏ TCP 连接,停留在 Connect 状态。
3、在 Active 状态下, BGP 总是在试图建⽴ TCP 连接。
如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报⽂,关闭连接重传定时器,并转⾄ OpenSent 状态;
如果 TCP 连接失败,那么 BGP 停留在 Active 状态;
如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 转⾄ Connect状态。
4、在 OpenSent 状态下, BGP 等待对等体的 Open 报⽂,并对收到的 Open 报⽂中的 AS 号、版本号、认证码等进⾏检查。
如果收到的 Open 报⽂正确,那么 BGP 发送 Keepalive 报⽂,并转⾄ OpenConfirm 状态;
如果发现收到的 Open 报⽂有错误,那么 BGP 发送 Notification 报⽂给对等体,并转⾄Idle 状态。
5、在 OpenConfirm 状态下, BGP 等待 Keepalive 或 Notification 报⽂。如果收到 Keepalive 报⽂,则转⾄Established 状态,如果收到 Notification 报⽂,则转⾄ Idle 状态。
6、在 Established 状态下, BGP 可以和对等体交换 Update、 Keepalive、 Route-refresh 报⽂和Noti
fication 报⽂。如果收到正确的 Update 或 Keepalive 报⽂,那么 BGP 就认为对端处于正常运⾏状态,将保持 BGP 连接。
如果收到错误的 Update 或 Keepalive 报⽂,那么 BGP 发送 Notification 报⽂通知对端,并转⾄ Idle 状态。
Route-refresh 报⽂不会改变 BGP 状态。
如果收到 Notification 报⽂,那么 BGP 转⾄ Idle 状态。
如果收到 TCP 拆链通知,那么 BGP 断开连接,转⾄ Idle 状态。
BGP对等体之间的交互原则
BGP 设备将最优路由加⼊ BGP 路由表,形成 BGP 路由。BGP 设备与对等体建⽴邻居关系后,采取以下交互原则:
1、从 IBGP 对等体获得的 BGP 路由, BGP 设备只发布给它的 EBGP 对等体。
2、从 EBGP 对等体获得的 BGP 路由, BGP 设备发布给它所有 EBGP 和 IBGP 对等体。
3、当存在多条到达同⼀⽬的地址的有效路由时, BGP 设备只将最优路由发布给对等体。
4、路由更新时, BGP 设备只发送更新的 BGP 路由。
5、所有对等体发送的路由, BGP 设备都会接收。
三、BGP 与 IGP 交互
BGP 与 IGP 在设备中使⽤不同的路由表,为了实现不同 AS 间相互通讯, BGP 需要与 IGP 进⾏交互,即 BGP 路由表和 IGP 路由表相互引⼊。
BGP引⼊IGP路由
BGP 协议本⾝不发现路由,因此需要将其他路由引⼊到 BGP 路由表,实现 AS 间的路由互通。当⼀个 AS 需要将路由发布给其他 AS 时, AS 边缘路由器会在 BGP 路由表中引⼊ IGP 的路由。为了更好的规划⽹络, BGP 在引⼊ IGP 的路由时,可以使⽤路由策略进⾏路由过滤和路由属性设置,也可以设置 MED 值指导 EBGP 对等体判断流量进⼊ AS 时选路。
BGP 引⼊路由时⽀持 Import 和 Network 两种⽅式:
1、 Import ⽅式是按协议类型,将 RIP 路由、 OSPF 路由、 ISIS 路由等协议的路由引⼊到 BGP 路由表中。为了保证引⼊的 IGP 路由的有效性, Import ⽅式还可以引⼊静态路由和直连路由。
2、Network ⽅式是逐条将 IP 路由表中已经存在的路由引⼊到 BGP 路由表中,⽐ Import ⽅式更精确。
IGP引⼊BGP路由
当⼀个 AS 需要引⼊其他 AS 的路由时, AS 边缘路由器会在 IGP 路由表中引⼊ BGP 的路由。为了避免⼤量 BGP 路由对 AS 内设备造成影响,当 IGP 引⼊ BGP 路由时,可以使⽤路由策略,进⾏路由过滤和路由属性设置。
应⽤:
如图所⽰,某公司海外市场部所在区域 AS100 部署 OSPF ⽹络,国内研发部所在区域 AS200 部署 ISIS ⽹络, AS100与 AS200 通过部署 BGP 实现互通。公司希望海外市场部可以向研发部发送⽂件,⽽国内研发部不能向海外市场部发送⽂件。
IGP引⼊BGP⽰意图
为了实现公司的要求,必须让 AS100 中设备知道 AS200 的路由,⽽ AS200 中设备不知道 AS100的路由。先在RouterC 上部署 BGP 引⼊ ISIS 路由,使 RouterC 的 BGP 路由表中存在 AS200 的路由,并把路由发布给 RouterB。再在 RouterB 上部署 OSPF 引⼊ BGP 路由,实现 AS100 内设备知道 AS200 的路由,⽽ AS200 的设备不知道 AS100的路由。
四、BGP 安全性
BGP 使⽤认证和 GTSM(Generalized TTL Security Mechanism)两个⽅法保证 BGP 对等体间的交互安全。
BGP认证
BGP 认证分为 MD5 认证和 Keychain认证,对 BGP 对等体关系进⾏认证是提⾼安全性的有效⼿段。
MD5 认证只能为TCP 连接设置认证密码,⽽ Keychain 认证除了可以为 TCP 连接设置认证密码外,还可以对 BGP 协议报⽂进⾏认证。BGP GTSM
BGP GTSM 检测 IP 报⽂头中的 TTL(time-to-live)值是否在⼀个预先设置好的特定范围内,并对不符合 TTL 值范围的报⽂进⾏允许通过或丢弃的操作,从⽽实现了保护 IP 层以上业务,增强系统安全性的⽬的。
例如将 IBGP 对等体的报⽂的 TTL 的范围设为 254 ⾄ 255。当攻击者模拟合法的 BGP 协议报⽂,对设备不断的发送报⽂进⾏攻击时, TTL 值必然⼩于 254。如果没有使能 BGP GTSM 功能,设备收到这些报⽂后,发现是发送给本机的报⽂,会直接上送控制层⾯处理。这时将会因为控制层⾯处理⼤量攻击报⽂,导致设备 CPU 占⽤率⾼,系统异常繁忙。如果使能 BGP GTSM 功能,系统会对所有 BGP 报⽂的 TTL 值进⾏检查。丢弃 TTL 值⼩于 254 的攻击报⽂,从⽽避免了⽹络攻击报⽂占⽤ CPU。
五、BGP 的路由优选规则和负载分担
在 BGP 路由表中,到达同⼀⽬的地可能存在多条路由。此时 BGP 会选择其中⼀条路由作为最佳路由,并只把此路由发送给其对等体。BGP 为了选出最佳路由,会根据 BGP 的路由优选规则依次⽐较这些路由的 BGP 属性。
BGP属性
路由属性是对路由的特定描述,所有的 BGP 路由属性都可以分为以下 4 类
1、公认必须遵循(Well-known mandatory):所有 BGP 设备都可以识别此类属性,且必须存在于 Update 报⽂中。如果缺少这类属性,路由信息就会出错。
2、公认任意(Well-known discretionary):所有 BGP 设备都可以识别此类属性,但不要求必须存在于 Update 报⽂中,即就算缺少这类属性,路由信息也不会出错。
3、可选过渡(Optional transitive):BGP 设备可以不识别此类属性,如果 BGP 设备不识别此类属性,但它仍然会接收这类属性,并通告给其他对等体。
4、可选⾮过渡(Optional non-transitive):BGP 设备可以不识别此类属性,如果 BGP 设备不识别此类属性,则会被忽略该属性,且不会通告给其他对等体。
下⾯介绍⼏种常⽤的 BGP 路由属性:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。