BGP路由协议
一:BGP的概念
BGP全称:Boundary Router Gateway Protocol(简称BGP)是边界网关协议的一种延伸形式。它归类于EGP、距离矢量路由协议以及非传统类别。
EGP:External Gateway Protocol(简称EGP)主要用于不同自治系统之间的通信。它工作在Autonomous System(AS)之间,并且由于其无周期性更新的特点,在网络中具有较低的收敛速度。
该协议旨在解决多个AS之间如何实现路由信息的有效传递与选择问题,并且能够汇总、筛选以及防止循环等技术保障其传输过程。
BGP的本质:并非旨在完成路由计算与发现的任务,而是负责选择和传播路由信息;其具体的访问路径则由IGP自主确定。
BGP特点如下:
1.通过TCP协议(指定目的端口为179)实现承载,在建立邻居间传递路由时基本无需确认机制
2.允许不同设备之间建立起邻居关系
3.所有BGP路由都需要由网络管理员手动声明或引入
4.BGP路由不具备周期性更新特征
5.BGP协议采用无环结构设计
6.该协议具备丰富的选择策略
AS概念:AS(Autonomous System,自治系统)
路由器只能添加进一个AS内部。
AS标识包括0至64511范围内的公有AS号码以及64512至65535范围内的私有AS号码;华为特有的AS号码规划规定每个4字节的AS号由X与Y两个部分组成,并且在路由器端实现时必须遵循X.Y的格式。
二:BGP的邻居关系
IB GP 类别:当一个节点的 AS 号与相邻节点相同时,在同一 AS 网络内创建对应的 B GP 邻居关系;而 EB GP 类别则是在不同 AS 网络之间进行对应 B GP 邻居关系的创建。
EBGP邻居关系建立采用手工指定的方式完成。具体规则如下:(1)优先采用直连接口方式(推荐): peer与对侧设备共享其地址信息
(2)以loopback接口建立:
- 配置回路接口AS号:将peers之间的LoopBack接口配置为对应的目标AS号。
- 配置更新源地址:将peers之间的LoopBack 0接口配置为指定回路接口。
- 设置最大跳跃次数:默认情况下,默认情况下EBGP报文的最大跳跃次数设为1;建议将最大跳跃次数至少设置为2以优化路由传播效率。
IBGP邻居关系配置规则如下:
(1)通过直连接口建立邻居关系:两台设备之间的直连接口接口IP地址相同
(2)推荐采用loopback接口进行邻居关系配置:
1、设置双方设备的loopback接口AS号与对应端点AS号一致
2、指定更新源地址:将loopback0接口设置为该邻居节点的更新源地址
扩展:IBGP中推荐使用loopback接口建立原因是1.稳定性强 2.有冗余性效果
三:BGP的邻居关系建立过程
open报文
初始报文,用于建立BGP邻居关系时协商参数
keepalive报文
保活报文,用于确认与维护会话的功能
在默认情况下,在每隔60秒的时间间隔内系统会发送一次Keepalive报文。若在180秒的时间段内未接收到任何Keepalive报文,则判断BGP的邻居关系已断开。
update报文
更新报文,用于携带BGP的路由信息和BGP的路由属性
通知信息用于在邻居关系建立过程中或传递过程中的情况中出现异常时;错误报告信息用于当在建立邻居关系或传递过程中的时候出现错误时。
该报文用于向路由器发送入接口策略更新指令。当接收方接收到该报文后会发送update指令以更新相关策略从而使策略生效
注意 :1、holdtime不影响邻居关系的建立,进行协商以小为准。
2、route-refresh报文需要手工触发
在用户视图下:refresh bgp all import ,朝着邻居泛洪route-refresh报文,对方收到后,根据里面的地址簇信息泛洪update报文。
refresh bgp all export :直接朝着邻居泛洪本身的update报文。
四:关于BGP的router id
选举规则为:
(1)首要考虑的是具有最大IP地址的loopback端口
(2)采用具有最高IP地址的物理端口
作用:(1)用于标记报文的通告者
(2)用于实现防环机制
能力属性:

1.可支持的地址簇
2.是否支持路由刷新能力
3.是否支持4字节AS号的能力
五:影响BGP邻居关系建立的因素
(1)不同版本之间应保持代码的一致性。
(2)报文中涉及的MY AS号码必须与本地目标AS号码匹配。
(3)BGP路由器ID设置为互不相同的数值以确保网络路由信息的有效传播。
(4)在BGP能力属性中,可支持地址簇与四字节型AS编码之间存在直接关联。
六:BGP的状态机
1、IDLE:处于空闲状态的设备会拒绝所有来自外部的TCP连接请求;当路由器接收到start事件后发送出TCP连接请求并随后过渡至connect状态。
BGP邻居仅需建立一条TCP连接,默认情况下最先发起者将保留该连接。如果两端同时启动并试图建立一个TCP会话,则IP地址较大的会被选为主以确保通信优先级;较小的IP地址端将尝试断开链路以避免冲突。
注意:当路由表中缺少对应端口的路由信息或者该对应端口已配置为默认路由时,则会导致网络设备处于IDLE状态。
2、Connect状态:连接处于建立状态,在等待TCP连接成功建立的过程中
(1)当TCP三次握手过程完成时,在发送open报文之后进入opensent状态
当在32秒时间段未能接收到任何来自主机系统的TCP应答报文时,则系统将切换至主动态;此时若仍持续在该时间段未能接收到主机系统的任何应答信息,则系统将进一步切换至连接态;每一次发生态转换时均需发送相应的TCP连接请求
当接收到TCP传输控制协议(TCP)中的RST字段被设置为高电平(置位)时,则视为该TCP连接未能建立成功,则立即过渡到active状态,并每隔32秒发送一次该类连接请求以维持其活跃状态。
3、活跃状态下:在activestate下表示处于活跃连接阶段;当TCP连接尝试建立但未能成功时的状态;如果该CPCTCP经过三次握手过程最终完成连接建立,则系统会立即发送open报文并进入opensentstate阶段。
停在active状态下可能的原因包括:TCP连接建立失败以及存在单通故障或过滤路由。第4步的Opensent状态是指需要进行协商并建立BGP邻居关系的状态。当open报文中协商成功后主动地发送keepalive报文后转为OpenComfirm状态。当open报文中协商不成功时会触发not报文并直接转为idle状态。
5、OpenConfirm状态:处于对来自另一方的keepalive报文进行确认的状态。
若在5秒内接收到来自另一方的keepalive报文,则会切换至est状态。
若在5秒内未接收到来自另一方的keepalive报文,则会响应notification报文并切换至IDLE状态。
一旦处于IDLE状态,则会发起重传请求(具体为:向 peer 发送其对应的对方IP地址前缀AS信息),并完成配置重置或重启设备或中断链路连接。
七:生成BGP路由的方式
宣告:当网络管理员核查路由表上包含有相关路由信息时,则能准确地进行宣告。
2.引入:直接在BGP视图下引入相关协议
Origin(起源):?
优选规则采用i>?的标准进行比较选择过程
采用Network与Import两种途径生成BGP routes
将B GP routing information encapsulated within Update messages propagates to neighboring nodes
Update messages primarily serve to announce available routes and revoke unreachable ones
Network layer reachability information (NLRI) reveals the IP prefix and its length
The path attributes mechanism enables B GP to detect loops and control routing preference
当向网络中发送一个新路由请求时,在使用 BGP 的 update 报文进行数据包传输的情况下:
如果所有相关属性都保持一致,则允许同时传输多个相同配置的 BGP 路由数据;
如果不满足一致性条件,则会分别发送各自的数据包。
此外,在添加一条新的 routes 信息字段后,
移除该 routes 信息字段的同时也会去除相应的 route prefix 和 mask 数据。
八:BGP的通告原则
BGP通告原则之一:仅限于发送给邻居节点的最佳路径信息 规则遵循手工聚合、自动聚合、网络接口以及接口地址前缀
BGP通告原则之二:通过EBGP获得的最优路由发布给所有BGP邻居
B GP通告原则之三:由IB GP获取的最佳路径将不会向其他所有该层次的邻居发布(即为该层次下的分隔策略)
关于IBGP水平分割:该机制通过方式实现对AS内部潜在环路的有效预防
B GP 路由黑洞:通过跨设备实现 B GP 邻居关系的建立会导致数据包穿越未启用该协议的设备而出现丢包现象
如何消除路由黑洞的方法有哪些:
包括联盟方式和IBGP全互联邻居配置。
优点在于其原理较为简单。
缺点在于需要配置大量的邻居关系(共N(N-1)/2个),这不仅增加了配置复杂度而且增加了管理维护的难度。
(3)配置BGP路由反射器服务
配置参数:
(1)自EBGP邻居接收的所有路由信息将向所有相邻网络发送
(2)自IBGP客户机接收的路由数据将向所有关联客户机及非客户机发送
(3)自IBGP非客户机接收的路由数据仅向所有客户的GTM实例发送
BGP路由反射器原则如下:
1,RR需要指定所有的路由器都为客户机
2,RR与RR之间需要启用全互联的邻居关系
问:路由反射器为什么可以打破IBGP水平分割的原则?
路由反射器存在本身的防环机制(cluster-list和origin-id)。
注意:在路由反射器反射路由时,不会修改BGP路由的任何属性,只会增加防环的属性。
(1)cluster-list:簇列表
当路由反射器将路由反射出去时,将本身的router id添加进cluster list之中,当路由反射器收到cluster list之后进行检查,如果包含本身的router id,则直接丢弃
(2)ORIGIN_ID:起源ID
Upon the initial reflection of a BGP route by a routing reflector, the client's router ID is embedded into the origin ID field. In subsequent reflections, neither addition nor modification occurs. Each time a router receives a BGP route, it verifies the origin ID field. If it matches its own router ID, it discards such routes immediately.
BGP通告原则之四:基于IGP的同步配置。该配置项默认处于未启用状态。当该配置被激活后,在执行IBGP路由转发时,路由器会对自身IGP路由表中的IBGP路由信息进行比对分析:若表中已存在对应的IBGP路由信息,则会正常转发;若表中未包含该类型信息,则会禁止转发。
启用同步机制后,在确保所有BGP路由不失效的前提下,应有选择地将部分BGP配置导入至指定的IGP协议中
九:BGP属性的分类
acker必须遵守:每个BGP路由器都能够识别,在发送update报文中必须包含更新信息
acker可以选择性地遵循:每个BGP路由器都能够识别,在发送update报文中不需要包含更新信息
acker必须遵守:每个BGP路由器都能够识别,在发送update报文中必须包含更新信息
acker可以选择性地遵循:每个BGP路由器都能够识别,在发送update报文中不需要包含更新信息
BGP路由器可能无法识别某些网络参数;如果这些网络参数具有不可识别的属性,则将其属性剥离后进行传递。
origin:说明路径信息的去向,并标示一条路由是如何成为BGP路由的过程。
作用:其用途在于选择合适的路由。
作为关键路径信息,
(1)用于说明BGP路由如何在不同自治系统之间传输,
(2)用于防止同一自治系统内部出现循环路径,
(3)用于选择合适的路由选项。
当路由器发送BGP路由给EBGP邻居时,在as-path左侧附加该自身的AS编号。
当接收器路由器接收到该路由时,在as-path中检查看是否有自身携带的AS编号。
如果有,则直接丢弃该路由。
fake-as标识旨在通过 AS 隐私机制实现 AS 号的伪装;该标识的主要用途在于保护自身 AS 号的安全性和隐私性;其主要目的之一是确保在 EBGP 邻居关系中不会泄露本机真实的 AS 号信息;配置指令如下所示:通过 peer 命令向目标地址发送特定 AS 进行伪装;
调整as-path属性如下:
route-policy-1 admit node-10
if-match ip-prefix-1
set as-path-50/3/5/24-bit override assignment
peer X.X.X.X route-policy-1 admit
3.next-hop:下一跳
作用:用于指导访问BGP路由的数据转发;
BGP下一跳规则如下:
(1)当路由器发布或引入一个路由信息时,在本地查看该路由时其下一跳地址设置为... 0.0.0.0;(在执行自身范围内的路由聚合操作时)
其下一跳地址设置为... 127.0.0.1。
当路由器将自身引入或宣告的路由转发给IBGP邻居时,其下一跳会被设置为本地更新源。
当路由器传输IBGP路由给EBGP邻居时,下一跳改为建立该EBGP邻居作为更新源地址。
在传输过程中,在路由器将EBGP路由发送给IBGP邻居时,为了避免修改下一跳的属性而防止出现次优路径。
(1)借助路由策略进行配置
(2)peer x.x.x.x next-hop-local
只有当该EBGP路由被传递给对应的IBGP邻居时才会生效;而当需要对下一跳进行设置时,则应将其下一个接续地址设置为其自身的更新源地址。
4.local-pre:本地优先级
作用:该参数用于配置路由选择策略。
默认设置下,默认值设定为100;数值越大,则表示其具有更高的优先权。
范围:仅限于当前自治系统内有效。
应用场景:该参数主要用于指导本自治系统内的设备如何访问外部的自治系统。
命令行指令:执行route-policy 1 permit node 10后使用apply local-preference 1000
5.MED值:也就是cost值
作用:用于选路
规则:预设值为0,在网络路由策略中数值越小表示优先级越高,并可通过该系统可通过路由策略进行调整(cost)
场景:该系统可通过路由策略进行调整
特点:1.仅限于两个Autonomous System之间的通信
2.必须确保相邻的Autonomous System编号一致
社区:群体特征
公有群体特征:限定路由传播的边界
私有群体特征:便于对路由进行标注,并有助于后续对路由进行分类管理
默认时:应使用命令去通知团体属性 peer x.x.x.x advertiser-community
十:BGP的选路原则
为了实现BGP的有效路由选择过程,网络中必须收到至少两条相同的IP地址但具有不同下一跳的有效路由。
该参数(仅在华为设备上可用):在缺省状态下默认设置为0,在缺省状态下默认设置为0;该参数的值越大其具有更高的优先级;其有效范围限定在本地路由器内
该策略应用于入口方向。
该指令允许节点10通过入口路由政策。
设置优先级值为X。
默认值设定为100分,在此情况下数值越高代表越高的优先级。
本地偏好(主要用于向邻居推荐最佳的BGP路由而非选择路由本身)。
手动聚合选项 > 自动聚合选项 > 网络接口 > 导入配置文件
4、作为AS路径(AS Path):倾向于选择较短的路径
5、源节点(Source Node):倾向于选用具有较高优先级的origin属性(network > import)
6、Minimum Enclosing Domain Value(MED值)用于表示域内最远节点之间的距离
7、在eBGP与iBGP协议比较中发现eBGP > iBGP
8、在网络规划中建议采用成本较低、延迟更低的下一跳路径以优化整体网络性能
9、默认情况下是否会启用负载均衡?答案是不启用。
条件包括:
(1)路由器上必须先启用负载均衡功能
(2)当前配置下的8条选路规则无法自动选择路径
(3)as-path的长度与具体内容必须完全一致
特点:1.当系统启动并执行负载均衡配置时,在前面8条路由策略均无法识别出最优路径的情况下,则后面的路由选择策略将被放弃
如果有多条路径符合条件,但是负载均衡的数量设置较少,则随机选择路径成为负载均衡的路径。
10、更倾向于选择集合列表较短
11、更倾向于选择origin ID较小
12、更倾向于选择BGP邻居的router ID较小
13、更倾向于选择BGP邻居用于更新源IP地址的小
十一:BGP路由聚合
好处:减少设备开销和路由表规模的大小
增强网络的稳定性
缺点:会丢失掉很多BGP属性
自动聚合的特性如下:
(1)仅对本端设备引入的路由进行实现层面的聚合
(2)将所有细节级别的路由信息过滤掉
(3)其起源属性为何?
(4)仅能依据主类进行汇总统计
手工聚合特点如下:
(1)该系统支持在所有类型的设备上实现对所有路由的聚合操作
(2)默认允许显式路由信息通过
(3)其源起属性取自所有显式路由中性能最差的那个
(4)支持基于掩码位模式而非主类来进行汇总
(5)该系统提供高度灵活的选择机制以供选择需要汇总的具体业务单元
手工聚合命令,如下:
aggregate 汇总路由 掩码
该命令将地址范围设置为默认掩码。
该选项用于继承明细路由属性,并特别地涉及as-path。
该命令修改了...属性。
将所有详细路由设为不可见。
只有符合策略的标准路径才会被合并。
符合策略的标准路径会被隐藏。
