目录
1 BGP协议产生背景
2 BGP协议特性
2.1 自治系统间路由传播
2.2 路由矢量协议
2.3 防环机制
2.4 基于TCP传输
2.5 路由更新机制
2.6 丰富的路由属性
2.7 支持CIDR和路由聚合
2.8 路由过滤和策略控制
2.9 动态对等体功能
3 BGP基本术语
4 BGP规划问题
4.1 路由黑洞解决方案
5 BGP环路问题
5.1 EBGP水平分割(通过AS_PATH)
5.2 IBGP水平分割
6 BGP消息种类
6.1 BGP头部信息
6.2 数据包种类
7 BGP状态机
7.1 Idle状态
7.2 Connect状态
7.3 Active状态
7.4 Opensent状态
7.5 OpenConfirm状态
7.6 Established状态
8 BGP邻居建立条件
8.1 IBGP建立邻居关系条件
8.2 EBGP建立邻居关系
9 BGP基本配置
9.1 启动BGP、创建BGP连接
9.2 优化BGP连接
9.3 配置BGP生成路由
9.4 查看命令
10 BGP路由选路原则
10.1 路由选路原则
10.2 配置负载分担时的路由选择
11 BGP路由发布策略与路由过滤
11.1 路由发布策略
1. 只发布最优路由
2. 只发布自己使用的路由
3. EBGP路由的发布
4. IBGP路由的发布
5. 会话建立后的路由发布
6. 控制BGP路由信息的发布
7. 延迟发布更新消息
8. 配置BGP日志和告警功能
11.2 BGP路由过滤
12 BGP路由属性
12.1 公认必须遵循属性
12.2 公认任意属性
12.3 可选过度属性
12.4 可选非过度属性
13 BGP路由属性控制的选择以及控制方法
13.1 属性控制的选择建议
13.2 属性控制方法
14 BGP对等体
15 BGP路由聚合
15.1 自动聚合
15.2 手动聚合
16 路由反射器
16.1 路由反射器相关角色
16.2 反射规则
16.3 反射集群
16.4 路由反射问题解决方案
17 BGP防环机制
18 BGP实验配置
19 BGP联盟
BGP联盟配置示例
1 BGP协议产生背景
BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统间的动态路由协议,是一种外部网关协议。BGP的设计目标是提供一种可靠、稳定且灵活的路由信息交换机制,以适应复杂多变的网络环境。
自治系统AS:一组同一个管理机构进行管理,对外呈现统一选路策略的路由器的集合。随着互联网的复杂性增加,不同管理机构控制着各自的路由选择域,这些自治系统需要通过某种机制来交换路由信息,以确保数据能够高效、准确地在各个自治系统间传输。
自治系统编号:
2字节AS编号:取值范围0-65535,其中0和65535保留
公有AS:1-64511
私有AS:64512-65535
4字节AS编号:2的32次方的编号数量
2 BGP协议特性
2.1 自治系统间路由传播
[1]BGP专注于不同自治系统(AS)之间传递路由信息,确保跨AS的通信
[2]从其他AS接收的路由在本AS内部的扩散依赖于内部网关协议(IGP),如OSPF或者IS-IS
2.2 路由矢量协议
[1]作为路径矢量协议,BGP使用自治系统序列来衡量距离,每个AS在路由传播过程中添加自己的编号到AS_PATH属性中。
[2]路由的下一跳地址在进入AS时会更新为上一AS的出接口IP地址,而在AS内部传播时下一跳保持不变。
2.3 防环机制
BGP通过路径矢量机制避免环路。当路由器收到一条路由时,会检查AS_PATH属性中是否包含自己的AS编号,若存在则丢弃该路由。
2.4 基于TCP传输
[1]BGP使用TCP协议(端口179)进行通信,确保数据传输的可靠性和稳定性。
[2]需要手动配置BGP邻居关系,以建立稳定的会话。
2.5 路由更新机制
[1]初始建立邻居关系时,BGP会发送完整的路由表。
[2]后续通信中,BGP仅发送增量更新,减少带宽占用和处理负担。
2.6 丰富的路由属性
BGP拥有多种属性(如LocalPref、MED、AS_PATH等),用于控制路由选择和优化网络流量分布。这些属性使得网络管理员能够灵活地实施路由策略,满足不同的网络需求。
2.7 支持CIDR和路由聚合
[1]BGP支持CIDR(无类域间路由),允许更灵活的IP地址分配和路由聚合。
[2]路由聚合功能可以减少路由表的规模,提高网络效率。
2.8 路由过滤和策略控制
[1]BGP提供了强大的路由过滤和策略控制功能,允许网络管理员根据特定条件(如AS_PATH、前缀等)对路由进行过滤。
[2]通过路由策略,可以实现流量工程和负载均衡等高级网络管理功能。
2.9 动态对等体功能
BGP支持动态对等体功能,简化了配置和维护工作,能够自动接受来自指定网段内所有邻居的连接请求。
3 BGP基本术语
BGP Speaker:运行BGP协议的路由器称为BGP发言者
BGP Peer:相互之间存在TCP连接、相互交换路由信息的BGP发言者之间互称为BGP对等体
BGP对等体:BGP邻居可以直连,也可以非直连
【1】EBGP对等体:跨AS之间的邻居,一般情况下EBGP对等体是物理上直连的。 BGP发言者从EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP)
【2】 IBGP对等体:同一个AS内部的邻居
4 BGP规划问题
规划不当容易产生路由黑洞
BGP规划示意图
路由黑洞产生原因:由于IBGP邻居之间没有运行BGP协议的路由器,无法获得BGP的路由;从而导致的数据包进入路由器被丢弃。
R2:peer 5.5.5.5 next-hop-local :表示将下一跳地址设置为本地地址,即数据包将从本地设备发送到目标设备,而不是通过其他路由器转发。
4.1 路由黑洞解决方案
(1)BGP引入IGP(上图可以在R2和R5上把bgp引入ospf),这个方法有可能会造成引入BGP后,外部网络的路由太多了,内网的路由器承载不住。
(2)在黑洞路由器上配置目的网段的静态路由(不现实,比如:需要配置的目的网段太多的情况,累死网络管理员了)
(3)IBGP全连接 :IBGP防环机制:IBGP水平分割:从IBGP邻居学习到的路由不会传递给其他IBGP邻居
IBGP全连接(full-fresh)主要是邻居太多,手工配置邻居,会导致工作量比较大
(4)BGP路由反射器(无视IBGP的防环机制,可以减少邻居关系的数量)
以R2作为反射器:
(5)BGP联盟(完美的避开了IBGP全连接的坑------IBGP水平分割限制)
5 BGP环路问题
5.1 EBGP水平分割(通过AS_PATH)
通过AS_PATH属性防环,在学习到的路由中,若有本地AS号,则拒绝学习,防止环路
5.2 IBGP水平分割
当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。
造成问题:一些路由器无法学到去往其他AS的路由
解决方法:路由反射器和联盟
6 BGP消息种类
6.1 BGP头部信息
标记(Marker):该字段被保留下来用于解决协议兼容性问题,没有其他含义
长度(length):指示BGP报文的长度(字节数)
类型(Type):该字段指示了BGP报文的类型,BGP5种数据包类
6.2 数据包种类
(1) open:用于建立BGP对等体之间的连接关系,正常收发一次即可;携带route-id;
Hold time:保持时间,该字段表示路由器在收到Keepalive消息或者Update消息之前等待的最长时间,默认180s,如果邻居双方的保持时间不一致,将以较短的时间作为双方可接收的保持时间。
可选参数长度:指示了BGP报文中可选参数的长度
可选参数:Open包中包含多个可选参数,主要用于宣告及协商BGP对等体的某些能力特征
(2)Keepalive:周期性的向BGP对等体发出Keepalive(周期保活)消息,用于保持连接的有效性,在默认情况下每60秒发送一条Keepalive消息,或者以已协商一致的保持时间的1/3为周期发送Keepalive消息。默认60s,超时180s。
(3)Update:携带的是路由更新(删减、增加)信息
(4)notfication:当BGP检测到错误状态时,就向对等体发出notfication消息,之后BGP连接会立即被关闭(邻居关系结束了)用于通知对等体发生错误状态,并立即中断BGP连接。Notification消息会在检测到错误或异常情况时发送,如路由不一致、身份验证失败等。
(5)router-refresh:用于在改变路由策略后,要求对等体重新发送指定地址族的完整路由表信息;只有支持路由刷新能力的路由器才会响应router-refresh报文。
7 BGP状态机
7.1 Idle状态
-
描述:BGP的初始状态。路由器等待管理员的命令来启动BGP会话。
-
转换:当BGP进程启动后,路由器会尝试建立TCP连接,进入Connect状态。
7.2 Connect状态
-
描述:路由器尝试与对等体建立TCP连接。
-
转换:
-
如果TCP连接成功建立,路由器发送Open消息并进入Opensent状态。
-
如果TCP连接尝试失败,路由器进入Active状态。
-
7.3 Active状态
-
描述:路由器在多次尝试后未能成功建立TCP连接,会进入Active状态。
-
转换:
-
如果TCP连接成功建立,路由器发送Open消息并进入Opensent状态。
-
如果TCP连接尝试失败,路由器可能会重新进入Connect状态或保持在Active状态。
-
7.4 Opensent状态
-
描述:路由器已发送Open消息,并等待对等体的Open消息响应。
-
转换:
-
如果收到的Open消息没有错误,路由器发送Keepalive消息并进入Established状态。
-
如果收到的Open消息有错误,路由器发送Notification消息并返回Idle状态。
-
7.5 OpenConfirm状态
-
描述:当本地路由器收到对等体的Open消息后,进入OpenConfirm状态。路由器发送Keepalive消息以确认收到对等体的Open消息。
-
转换:收到对等体的Keepalive消息后,路由器进入Established状态。
7.6 Established状态
-
描述:BGP会话已成功建立,路由器可以交换Update、Keepalive和Notification消息。
-
转换:
-
如果收到Keepalive消息或Update消息,路由器保持在Established状态。
-
如果收到Notification消息或检测到错误,路由器返回Idle状态。
-
8 BGP邻居建立条件
8.1 IBGP建立邻居关系条件
(1)对方接口要有IP地址,TCP可达(需要具有到达对方IP地址的路由),建议使用环回地址来指定IBGP邻居,以提高邻居关系的稳定性和可靠性
(2)更新源地址必须与指定的邻居地址一致,需要修改更新源为环回地址;
命令:[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0
(3)IBGP邻居关系不需要直连
8.2 EBGP建立邻居关系
(1)对方接口有IP地址,TCP可达,并且需要直连
(2)可通过修改EBGP最大跳数来使EBGP非直连
(3)建议使用直连接口地址(物理地址)来指定邻居关系
(4)更新源地址必须和指定的邻居地址一致
PS:默认IBGP邻居间数据包的TTL值为255,EBGP邻居间TTL为1;故一旦使用环回建立ebgp邻居关系,必须修改TTL值,否则无法建立TCP三次连接
命令:[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2 //修改TTL值(最大跳数值)
9 BGP基本配置
9.1 启动BGP、创建BGP连接
[huawei]bgp 'as-number' 启动BGP
[huawei-bgp]router-id 'router-id' 配置router-id;(可选配置)
[huawei-bgp]peer 'ip-address' as-number 'as-number' 指定BGP对等体及AS号;
[huawei-bgp] address-family ipv4 unicast 创建BGP地址族,并进入相应地址族视图。----华三
[huawei-bgp-ipv4] peer ip-address enable 使能本地路由器与指定对等体交换路由信息的能力
9.2 优化BGP连接
指定建立TCP连接使用的源接口;
[huawei-bgp]peer 'ip-address' connect-interface ‘interface’ 指定EBGP对等体最大跳数;默认跳数是1,配置允许同非直接相连网络上的邻居建立EBGP连接
[huawei-bgp]peer 'ip-address ebgp-max-hop 'hop-count'
9.3 配置BGP生成路由
将本地路由发布到BGP路由表中:
[Router-bgp] network ip-address [ mask | mask-length ] [route-policy route-policy-name ]引入其它路由协议的路由:
[Router-bgp] import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] ]
9.4 查看命令
BGP邻居表详细信息
[router]display bgp peer
BGP路由表详细信息
[router]display bgp routing-table
10 BGP路由选路原则
10.1 路由选路原则
-
1、首先丢弃下一跳(NEXT_HOP)不可达的路由;
-
2、优选Preferred-value值最大的路由;默认为0;Preferred-value:定义:首选项。 属性值:默认为0,取值范围是 0~65535,取值越大,优先级越高。 注意:H3C和华为的私有属性,
-
3、优选本地优先级(LOCAL_PREF)最高的路由;
-
4、依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;
-
5、优选AS路径(AS_PATH)最短的路由;
-
6、依次选择ORIGIN属性为IGP、EGP、Incomplete的路由;
-
7、优选MED值最低的路由;
-
8、依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;
-
9、优选下一跳度量值最低的路由;度量值:一般指通过IGP协议到达下一跳地址的度量值
-
10、优选CLUSTER_LIST长度最短的路由;
-
11、优选ORIGINATOR_ID最小的路由;
-
12、优选Router ID最小的路由器发布的路由。
-
13、优选IP地址最小的对等体发布的路由。
10.2 配置负载分担时的路由选择
配置BGP负载分担后,满足如下所有条件的多条BGP路由会成为等价路由,进行负载分担:
-
首选值(PrefVal)相同。
-
本地优先级(Local_Pref)相同。
-
都是聚合路由,或者都不是聚合路由。
-
AIGP值相同。
-
AS_Path属性完全相同。
-
Origin类型(IGP、EGP、Incomplete)相同。
-
MED(Multi_Exit Discriminator)值相同。
-
都是EBGP路由或都是IBGP路由。配置maximum load-balancing eibgp命令后,BGP在选择最优VPN路由时忽略该条比较。
-
AS内部IGP的Metric相同。配置maximum load-balancing eibgp命令后,BGP在选择最优VPN路由时忽略该条比较。
此外,需要特别指出的是,携带标签的BGP路由与不携带标签的BGP路由即使满足上述条件,也不能形成负载分担。
11 BGP路由发布策略与路由过滤
11.1 路由发布策略
1. 只发布最优路由
-
策略:当存在多条有效路由时,BGP发言者只将最优路由发布给对等体。如果配置了
advertise-rib-active
命令,则BGP发布IP路由表中的最优路由;否则,发布BGP路由表中的最优路由。
2. 只发布自己使用的路由
-
策略:BGP发言者只把自己使用的路由发布给对等体。这意味着BGP不会发布那些它自己不使用的路由,以避免网络中的路由环路和不必要的流量。
3. EBGP路由的发布
-
策略:BGP发言者会将从EBGP获得的路由发布给它的所有BGP对等体,包括EBGP对等体和IBGP对等体。这确保了跨自治系统的路由信息能够被广泛传播。
4. IBGP路由的发布
-
策略:BGP发言者会将从IBGP获得的路由发布给它的EBGP对等体,但不会发布给它的IBGP对等体。这种机制避免了IBGP对等体之间的路由环路。
5. 会话建立后的路由发布
-
策略:一旦BGP会话建立,BGP发言者将把满足上述条件的所有BGP路由发布给新对等体。之后,BGP发言者只在路由变化时,向对等体发布更新的路由。这减少了网络中的路由更新频率,提高了网络的稳定性。
6. 控制BGP路由信息的发布
-
策略:可以通过配置BGP路由信息的发布策略来进一步控制路由的传播。这包括使用访问控制列表(ACL)、地址前缀列表、路由策略等对发布的路由信息进行过滤。
7. 延迟发布更新消息
-
策略:在设备重启且BGP进程恢复后,可以配置BGP更新消息的延迟发布,以避免设备重启后路由信息不全导致的流量丢失。
8. 配置BGP日志和告警功能
-
策略:通过配置BGP日志和告警功能,可以更好地监控和管理BGP路由的发布和接收情况。
11.2 BGP路由过滤
(1)通过路由策略过滤
(2)通过前缀地址列表过滤
(3)通过filter-policy进行过滤
12 BGP路由属性
属性越多,控制BGP路由选路的方法越多;属性:描述一个对象的特征的一些信息
12.1 公认必须遵循属性
BGP发布的路由必须携带,所有路由器必须识别的属性;AS_path、next-hop、origin
此部分来自华为官方文档内容
-
AS_Path属性
AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。
当BGP Speaker传播自身引入的路由时:
-
当BGP Speaker将这条路由通告到EBGP对等体时,便会在Update报文中创建一个携带本地AS号的AS_Path列表。
-
当BGP Speaker将这条路由通告给IBGP对等体时,便会在Update报文中创建一个空的AS_Path列表。
当BGP Speaker传播从其他BGP Speaker的Update报文中学习到的路由时:
-
当BGP Speaker将这条路由通告给EBGP对等体时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP设备根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
-
当BGP Speaker将这条路由通告给IBGP对等体时,不会改变这条路由相关的AS_Path属性。
-
-
Next_Hop属性
Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:
-
BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
-
BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
-
BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
-
-
Origin属性
Origin属性用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的。它有以下3种类型:
-
IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。
-
EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。
-
Incomplete:优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。
-
12.2 公认任意属性
所有路由都识别,但不是必须携带的属性;local-perference、Atomic-aggregate
-
Local_Pref属性
Local_Pref属性表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。当BGP的设备通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由。Local_Pref属性仅在IBGP对等体之间有效,不通告给其他AS。Local_Pref属性可以手动配置,如果路由没有配置Local_Pref属性,BGP选路时将该路由的Local_Pref值按缺省值100来处理。
-
Atomic-aggregate:自动聚合
注:BGP可以自动聚合,也可以手动聚合
12.3 可选过度属性
路由器可以不识别该属性,但是会继续向下传递该属性
团体属性
团体属性(Community)用于标识具有相同特征的BGP路由,使路由策略的应用更加灵活,同时降低了维护管理的难度。
公认团体属性
团体属性名称 | 团体属性号 | 说明 |
---|---|---|
Internet | 0(0x00000000) | 设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。 |
No_Advertise | 4294967042(0xFFFFFF02) | 设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由。 |
No_Export | 4294967041(0xFFFFFF01) | 设备收到具有此属性的路由后,将不向AS外发送该路由。 |
No_Export_Subconfed | 4294967043(0xFFFFFF03) | 设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发布此路由。 |
12.4 可选非过度属性
-
MED属性
MED(Multi-Exit Discriminator)属性用于判断流量进入AS时的最佳路由,当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。
MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。
-
Originator_ID属性和Cluster_List属性
Originator_ID属性和Cluster_List属性用于解决路由反射器场景中的环路问题clustor_list:集群列表
originator_id:集群ID
MED:多出口鉴别器:当一个AS有多个入口点时,用于判断流量进入AS时的最优路径。【属性值:network的路由,默认值为0;引入的路由,默认值为原IGP协议的cost; 值小的优先】
13 BGP路由属性控制的选择以及控制方法
13.1 属性控制的选择建议
(1)如果希望影响下游所有路由器的路由选择,建议使用AS-PATH
(2)如果只希望影响本AS内部的路由器选择,建议使用Local-preference
(3)如果希望只影响下游某一个AS的路由器选择,建议使用MED
(4)如果希望只影响某一台路由器的路由选择,建议使用preferred-value
13.2 属性控制方法
路由策略:
14 BGP对等体
定义:BGP对等体组(peer Group)是一些具有某些相同属性的对等体的集合,我们可以通过对等体组简化配置
特点:根据对等体所在的AS区域,可以将其分为IBGP,EBGP对等体组
配置IBGP对等体组:
示例图:
相关命令:
[R2-bgp]group in internal
[R2-bgp]peer 3.3.3.3 group in
[R2-bgp]peer 4.4.4.4 group in
[R2-bgp]peer 5.5.5.5 group in
[R2-bgp]peer in connect-interface l0
[R2-bgp]peer in next-hop-local[R3-bgp]peer 2.2.2.2 as 200
[R3-bgp]peer 2.2.2.2 connect-interface l0
R4和R5上做和R3相同的配置
配置EBGP对等体组:
15 BGP路由聚合
目的是为了减少路由表规模
15.1 自动聚合
只能对引入的IGP的路由进行聚合;
只能将明细路由汇总到主类,这会造成路由黑洞;
华为设备默认关闭自动聚合功能;
只能在始发路由器上进行配置;
[r1-bgp]summary automatic 开启自动聚合
自动聚合后,会出现状态码S(suppressed),代表被抑制的路由信息不会再加表和传递了
15.2 手动聚合
可实现精确汇总:[R1-bgp]aggregate 172.16.0.0 16
可以在任何路由器上对BGP路由进行聚合;
出现问题:明细路由依然被通告,有形成环路的隐患;
解决方法:[R1-bgp]aggregate 172.16.0.0 16 detail-suppressed //抑制明细路由
此命令不通过明细路由;
16 路由反射器
为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台设备,那么建立的IBGP连接数就为n(n-1)/2。当设备数目很多时,设备配置将十分复杂,而且配置后网络资源和CPU资源的消耗都很大。在IBGP对等体间使用路由反射器可以解决以上问题。打破IBGP水平分割的限制
16.1 路由反射器相关角色
-
路由反射器RR(Route Reflector):允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。
-
客户机(Client):与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。
-
非客户机(Non-Client):既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。
-
始发者(Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。
-
集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。
16.2 反射规则
从非反射客户端接受的路由,仅反射给客户端;
从客户端接受到的路由,反射给所有客户端和非客户端,路由始发者除外;
从EBGP接收的路由,反射给所有的客户端和非客户端;
注:一个反射群里的所有反射客户端只需与反射器建立IBGP邻居关系
16.3 反射集群
由反射器和客户端组成的网络范围; 存在多个反射器,配置相同的cluster_id RR(router reflect)路由反射器之间是需要建立邻居关系的
这样的组网容易形成环路。(一条路由从客户机1传到RR,RR传到备用RR,备用RR再反射给客户机1)
16.4 路由反射问题解决方案
路由反射存在问题:使得IBGP水平分割原则失效,会导致环路的产生
(1)cluster_list(集群列表):
类似AS_PATH,每个RR都有一个Cluster id,默认为路由器的router id,可手工修改;
同一个AS内的Cluster id必须相同,才能有防环作用。
路由传递过程中,把经过的反射器的Cluster_id一次记录在Cluster_list中;
Cluster_list用于反射器防环,当反射器收到BGP路由时,如果本机的Cluster_id 出现在Cluster_list中,则丢弃该路由; Cluster-list用于路由优选,短的优先
特殊情况:不受Cluster-list防环机制的约束,依然形成环路
(2)originator_ID:起源ID
由路由器反射器反射一条路由时产生,会在反射出去的路由中增加originator_ID,它就是本地AS路由器的BGP路由器的router-id;
即使这条反射路由经过多个RR,当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。
originator_ID用于路由优选,短的优先
17 BGP防环机制
(1)AS_PATH:解决AS之间的环路问题
(2)IBGP的水平分割:解决一个AS内部的IBGP邻居之间的环路问题
(3)当一个反射群中存在多个反射器时,通过Cluster-list防环(BGP反射器)
(4)originator——ID:在多个反射器之间,通过originator_ID防环(BGP反射器)
PS:反射路由器无法使用策略去更改路由属性
18 BGP实验配置
[R2-bgp]peer 3.3.3.3 reflect-client //在反射器上配置其反射客户机
[R2-bgp]reflector cluster-id 2.2.2.2 //配置反射器的集群id
19 BGP联盟
解决AS内部的IBGP网络连接激增问题,除了使用路由反射器之外,还可以使用联盟(Confederation)。联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。配置联盟后,原AS号将作为每个路由器的联盟ID。这样有两个好处:一是可以保留原有的IBGP属性,包括Local Preference属性、MED属性和NEXT_HOP属性等;二是联盟相关的属性在传出联盟时会自动被删除,即管理员无需在联盟的出口处配置过滤子AS号等信息的操作。
PS:子AS使用私有AS编号;
其他真实AS的路由器仍然和联盟AS建立EBGP邻居;
跨越子AS的EBGP邻居仍然需要更改下一跳为本机;
每个联盟里有一台路由器和其他联盟中一个路由器建立邻居关系就行;
实际场景中一般不用联盟,因为他会改变邻居关系
BGP联盟配置示例
配置命令:
[R2]bgp 65001 //进入子AS编号
[R2-bgp]confederation id 200 //申明自己的大号
[R2-bgp]confederation peer-as 65002 //申明自己的联盟同伴
[R2-bgp]peer 100.1.1.1 as-number 100 指定EBGP邻居
[R2-bgp]peer 3.3.3.3 as-number 65001
[R2-bgp]peer 100.2.2.5 as-number 65002
[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[R2-bgp]peer 3.3.3.3 next-hop-local
[R2-bgp]peer 100.2.2.5 next-hop-local //跨越子AS的EBGP邻居仍然需要更改下一跳为本机;不然从R1传过去的网段,R5收不到
子AS之间的EBGP建邻居
路由反射器和联盟的比较
路由反射器 | 联盟 |
---|---|
不需要更改现有的网络拓扑,兼容性好。 | 需要改变逻辑拓扑。 |
配置方便,只需要对作为反射器的设备进行配置,客户机并不需要知道自己是客户机。 | 所有设备需要重新进行配置。 |
集群与集群之间仍然需要全连接。 | 联盟的子AS之间是特殊的EBGP连接,不需要全连接。 |
适用于中、大规模网络。 | 适用于大规模网络。 |