6、BGP路由反射器配置
6.1、将本机作为路由反射器,并将对等体(组)作为路由反射器的客户。
[Huawei]bgp 1
[Huawei-bgp]ipv4-family unicast
[Huawei-bgp-af-ipv4]peer 1.1.1.1 reflect-client
6.2、设置路由反射器的集群ID
[Huawei-bgp-af-ipv4]reflector cluster-id ?
INTEGER<1-4294967295> Configure cluster-id as a decimal value
X.X.X.X Configure cluster-id in IPv4 address format
6.3、禁止客户机之间的路由反射
[Huawei-bgp-af-ipv4]undo reflect between-clients
6.4、禁止BGP将优选的路由下发到IP路由表
[Huawei-bgp-af-ipv4]bgp-rib-only
在AS内部,为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。当IBGP对等体数目很多时,建立全连接网络的开销很大。使用路由反射器RR(Route Reflector)可以解决这个问题。
集群ID用于防止集群内多个路由反射器和集群间的路由环路。当一个集群里有多个路由反射器时,必须为同一个集群内的所有路由反射器配置相同的集群ID。
如果路由反射器的客户机之间重新建立了IBGP全连接关系,那么客户机之间的路由反射就是没有必要的,而且还占用带宽资源。此时可以配置禁止客户机之间的路由反射,减轻网络负担。
在一个AS内,RR主要有路由传递和流量转发两个作用。当RR连接了很多客户机和非客户机时,同时进行路由传递和流量转发会使CPU资源消耗很大,影响路由传递的效率。
如果需要保证路由传递的效率,可以在该RR上禁止BGP将优选的路由下发到IP路由表,使RR主要用来传递路由。
7、BGP联盟配置
7.1、设置联盟ID。 [Huawei-bgp]confederation id ?
INTEGER<1-65535> 2-byte AS Number
STRING<3-11> 4-byte AS Number (number<1-65535>.number<0-65535>)
7.2、设置本地设备属于同一个联盟的子as号(子as号-由as-number指定)
[Huawei-bgp]confederation peer-as 65501 65502 65503
7.3、设置联盟中的标准设备可与非标准设备互通
[Huawei-bgp]confederation nonstandard
同一联盟内不能同时配置2字节AS号的Old Speaker和4字节AS号的New Speaker。因为AS4_Path不支持联盟,这种配置可能会引起环路。
联盟将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系或者配置反射器,子自治系统之间建立EBGP连接关系。
大型BGP网络中,配置联盟不但可以减少IBGP连接的数量,还可以简化路由策略的管理,提高路由的发布效率。
如果其他交换机的联盟实现机制不同于RFC3065标准,可以配置联盟的兼容性,以便和非标准的设备兼容。
8、BGP协议优先级配置
[Huawei]bgp 100
[Huawei-bgp]ipv4-family unicast
[Huawei-bgp-af-ipv4]preference ?
INTEGER<1-255> EBGP route preference # 外部路由优先级,值越小优先级越高。
route-policy Specify a route policy # 指定BGP协议优先级的路由策略名称。
[Huawei-bgp-af-ipv4]preference 2 ?
INTEGER<1-255> IBGP route preference # 内部协议优先级,值越小优先级越高。
[Huawei-bgp-af-ipv4]preference 2 4 ?
INTEGER<1-255> Local created route preference # 本地路由的协议优先级。
[Huawei-bgp-af-ipv4]preference 2 4 20 ?
<cr> Please press ENTER to execute command
[Huawei-bgp-af-ipv4]preference 2 4 20
目前不支持通过peer route-policy命令在对等体上应用路由策略来设置BGP协议的优先级。
由于交换机上可能同时运行多个动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个缺省优先级。在不同协议发现同一条路由时,优先级高的路由将被优选。
缺省外部优先级和内部优先级表
9、BGP Next_Hop属性配置
9.1、设置BGP设备向IBGP对等体(组)发布来自EBGP的对等体路由时,把下一跳设置为自身的IP地址。
[Huawei]bgp 65507
[Huawei-bgp]ipv4-family unicast
[Huawei-bgp-af-ipv4]peer 1.1.1.1 next-hop-local
9.2、配置BGP按路由策略进行下一跳迭代。
[Huawei-bgp-af-ipv4]nexthop recursive-lookup route-policy test
3、设置发布引入IGP路由时不改变IGP路由的下一跳地址
[Huawei-bgp-af-ipv4]peer 1.1.1.1 next-hop-invariable
对于从直连EBGP对等体收到的路由,nexthop recursive-lookup route-policy route-policy-name命令不生效。
当ASBR将从EBGP邻居学到的路由转发给IBGP邻居时,默认不修改下一跳。IBGP邻居收到该路由后,会发现下一跳不可达,于是将该路由设为非活跃路由,不通过该路由指导流量转发。
当希望IBGP邻居通过该路由指导流量转发时,可以在ASBR上配置向IBGP对等体(组)转发路由时,将自身地址作为下一跳。这时,IBGP邻居收到ASBR从EBGP邻居学习来的路由后,发现下一跳可达,于是将路由设为活跃路由。
当BGP路由发生变化时,BGP需要对非直连的下一跳重新进行迭代。如果不对迭代后的路由进行任何限制,则BGP可能会将下一跳迭代到一个错误的转发路径上,从而造成流量丢失。此时,可配置BGP按路由策略迭代下一跳,避免流量丢失。
10、BGP路由信息的首选值配置
[Huawei-bgp-af-ipv4]peer ?
STRING<1-47> Specify a peer-group
X.X.X.X Specify an IPv4 peer address
[Huawei-bgp-af-ipv4]peer 1 preferred-value ?
INTEGER<0-65535> Preference value # 为从指定对等体学来的所有路由配置首选值。
协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效。当BGP路由表中存在到相同目的地址的路由时,将优先选择协议首选值高的路由。
11、BGP本机缺省Local_Pref属性配置
[Huawei-bgp-af-ipv4]default local-preference ?
INTEGER<0-4294967295> Specify a local preference
Local_Pref属性用于判断流量离开AS时的最佳路由。当BGP的设备通过不同的IBGP对等体得到到AS外的目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由。
12、BGP AS_Path属性配置
12.1、创建路由策略的节点,并进入路由策略视图。
[Huawei]route-policy ?
STRING<1-40> Name of the route policy
[Huawei]route-policy 1 ?
deny Specify a deny rule
permit Specify a permit rule
[Huawei]route-policy 1 permit ?
node Node of the route policy
[Huawei]route-policy 1 permit node ?1
INTEGER<0-65535> Index of the node
[Huawei-route-policy]
12.2、设置BGP路由的as_path属性
[Huawei-route-policy]apply as-path 65503 10.10 ?
INTEGER<1-65535> AS Number to be appended or replaced
STRING<3-11> <1-65535>.<0-65535>
additive Append to original As Number #在原有路由的as路径列表中添加指定的AS编号
overwrite Overwrite original As Number #覆盖原有的as-path列表路径。
12.3、向对等体(组)路由添加AS_Path属性。
[Huawei-bgp-af-ipv4]peer 1.1.1.1 route-policy 1 ?
export Specify export policy # 对向对等体(组)发布的路由添加AS_Path属性。
import Specify import policy #对从对等体(组)接收的路由添加AS_Path属性。
12.4、对BGP引入的路由添加AS_Path属性。
[Huawei-bgp-af-ipv4]import-route ospf 1 route-policy 1 # 对BGP以import方式引入的路由添加AS_Path属性
[Huawei-bgp-af-ipv4]network 1.1.1.1 24 route-policy 1 # 对BGP以network方式引入的路由添加AS_Path属性
12.5、不将AS_Path属性作为选路条件。
[Huawei-bgp-af-ipv4]bestroute as-path-ignore
12.6、允许本地AS编号重复出现
[Huawei-bgp-af-ipv4]peer 1.1.1.1 allow-as-loop ?
INTEGER<1-10> Number of repeating times of AS Path
<cr>
12.7、配置发送EBGP更新报文时,AS_Path属性中仅携带公有AS编号。
[Huawei-bgp-af-ipv4]peer 1.1.1.1 public-as-only
12.8、配置AS_Path属性中AS号的最大个数
[Huawei-bgp]as-path-limit ?
INTEGER<1-2000> The maximum number of AS numbers, default is 255
<cr>
12.9、配置EBGP对等体的伪AS编号。缺省EBGP对等体使用真实的AS号与本端建立连接。
[Huawei-bgp]peer 10.101.10.1 fake-as ?
INTEGER<1-65535> 2-byte autonomous system number
STRING<3-11> 4-byte autonomous system number
(number<1-65535>.number<0-65535>)
配置undo check-first-as命令后产生环路的可能性增大,请慎重使用。
执行命令undo check-first-as,配置取消检查EBGP对等体发来的更新消息中AS_Path属性的第一个AS号。
缺省情况下,BGP检查EBGP对等体发来的更新消息中AS_Path列表的第一个AS号。
配置更改后,如果希望对已接收的路由重新进行检查,可在用户视图下配置refresh bgp命令。
AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。配置不同的AS_Path属性功能,可以实现灵活的路由选路。
通常情况下,AS_Path属性内AS_Path数量作为BGP选路条件。当不需要AS_Path属性作为选路条件时,可以配置不将AS_Path属性作为选路条件。
通常情况下,BGP通过AS号检测路由环路。但在Hub and Spoke组网方式下,为保证路由能够正确传递,从Hub-CE发布私网路由到Spoke-CE途中经过的相关BGP对等体需要配置允许AS_Path中AS号重复1次的路由通过。
公有AS号可以直接在Internet上使用,私有AS号直接发布到Internet上可能造成环路现象。为了解决上述情况,可以在把路由发布到Internet前,配置发送EBGP更新报文时,AS_Path属性中仅携带公有AS编号。
在重构AS_Path或聚合生成新路由时,可以对AS_Path中的AS号最大个数予以限制。配置AS_Path属性中AS号的最大个数后,接收路由时会检查AS_Path属性中的AS号是否超限,如果超限则丢弃路由。
通常情况下,一个设备只支持一个BGP进程,即只支持一个AS号。但是在某些特殊情况下,例如网络迁移更换AS号的时候来为了保证网络切换的顺利进行,可以为指定对等体设置一个伪AS号。
BGP会检查EBGP对等体发来的更新消息中AS_Path列表的第一个AS号,确认第一个AS号必须是该EBGP对等体所在的AS。否则,该更新信息被拒绝,EBGP连接中断。如果不需要BGP检查EBGP对等体发来的更新消息中AS_Path列表的第一个AS号,可以去使能此功能。
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
BGP属性
路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也可以是部分的。并非组织的和有组合的都是合法的,路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。
公认属性:
是公认所有BGP实现都必须识别的属性,这些属性被传递给BGP邻居。
公认强制属性必须出现在路由描述中,公认自由决定属性可以不出现在路由描述中。
可选属性:
非公认属性被称为可选的,可选属性可以是传递的或非传递的。
可选属性不要求所有的BGP实现都支持。
对于不支持的可选传递属性,路由器将其原封不动的传递给其他BGP路由器,在这种情况下,属性被标记为部分的。
对于可选非传递属性,路由器必须将其删除,而不将其传递给其他BGP路由器。
(1)公认必遵(Well-Known Mandatory)
ORIGIN(起源):这个属性说明了源路由是怎样放到BGP表中的。有三个可能的源IGP,EGP,以及INCOMPLETE.路由器在多个路由选择的处理中使用这个信息。路由器选择具有最低ORIGIN类型的路径。
AS_PATH(AS路径):指出包含在UPDATE报文中的路由信息所经过的自治系统的序列。
Next_HOP(下一跳)声明路由器所获得的BGP路由的下一跳,对EBGP会话来说,下一跳就是通告该路由的邻居路由器的源地址。
(2)公认自决(Well-Known Discretionary)
LOCAL_PREF(本地优先级):本地优先级属性是用于告诉自治系统内的路由器在有多条路径的时候,怎样离开自治系统。本地优先级越高,路由优先级越高。
ATOMIC_AGGREGATE(原子聚合):原子聚合属性指出已被丢失了的信息。
(3)可选过渡(Optional Transitive)
AGGREGATOR(聚合者):此属性标明了实施路由聚合的BGP路由器ID和聚合路由的路由器的AS号。
COMMUNITY(团体):此属性指共享一个公共属性的一组路由器。
(4)可选非过渡(Optional Nontransitive)
MED(多出口区分):该属性通知AS以外的路由器采用哪一条路径到达AS,它也被认为是路由的外部度量,低MED值表示高的优先级。
ORIGINATOR_ID(起源ID):路由反射器会附加到这个属性上,它携带本AS路由器的路由器ID,用以防止环路。
CLUSTER_LIST(簇列表):此属性显示了采用的反射路径。
协议结构
Marker (16 bytes) Length (2 bytes) Type (1 byte)
Marker – 信息包含信息接收端可预测值。
Length – 包含协议头的信息长度。
Type –信息类型。信息可能是:Open、Update、Notification、Keepalive。
打开(Open)分组,用来与相邻的另一个BGP发言人建立联系
更新(Update)分组,用来发送某一路由的信息,以及列出多条要撤销的路由
保活(Keepalive)分组,用来确认打开分组和周期性地证实邻站关系
通知(Notification)分组,用来发送检测到的差错 [2]
在传输协议连接建立之后,各端发送的第一个信息是 OPEN 信息。如果 OPEN 信息可以接收,会返回发送确认 OPEN 信息的 KEEPALIVE 信息。一旦 OPEN 信息获得确认,UPDATE、KEEPALIVE 和 NOTIFICATION 信息进行相互交换。
报文结构
BGP的报文结构如下所示 [1]
标记
长度
类型
报文数据(变长)
16字节 2字节 1字节
BGP的报文分成报文与报文数据两部分,其中,BGP报文数据根据不同的报文类型有所不同,报文头由以下3个字段构成:
(1)标记(Marker)字段。标记字段由16个字节构成。标记字段的值是一个通信双方(对等路由器) 都可认可的字节串,双方都统一使用改制来标识一个合法的BGP报文的开始。通常,标记字段用于承载鉴别信息。对于通信双方,在任何情况下标记的值都必须保持一致。标记字段用于报文接收的同步。由于BGP报文用过TCP来简化,而TCP 协议是一个无结构的流(stream)传输协议。在TCP协议上部位高层提供数据流的结构识别,因此也无法为BGP标识两个报文之间的边界。由于传输协议不指定报文边界,因此,为了确保发送方和接收方的报文边界准确保持同步,BGO要求在每个报文的开头放置了一个双方已知的序列,接收方通过该序列来检验报文头的正确性。
(2)报文长度,16比特,制定了以字节为单位计算的报文总长度。最小的报文为19i节,最大允许报文长度为4096字节。
(3)报文类型,1字节,指出报文所属的类型。
MCE概述
MCE 功能是Multi-CE 的简称,具有MCE 功能的网络设备可以在BGP/MPLS VPN 组网应用中承担多个VPN 实例的CE 功能,减少用户网络设备的投入。
工作原理
BGP/MPLS VPN以隧道的方式解决了在公网中传送私网数据的问题,但传统的BGP/MPLS VPN架构要求每个VPN实例单独使用一个CE与PE相连,如图 所示。
随着用户业务的不断细化和安全需求的提高,很多情况下一个私有网络内的用户需要划分成多个VPN,不同VPN 用户间的业务需要完全隔离。此时,为每个VPN 单独配置一台CE 将加大用户的设备开支和维护成本;而多个VPN 共用一台CE,使用同一个路由表项,又无法保证数据的安全性。使用MCE 功能,可以有效解决多VPN 网络带来的用户数据安全与网络成本之间的矛盾,它使用CE 设备本身的VLAN 接口编号与网络内的VPN 进行绑定,并为每个VPN 创建和维护独立的路由转发表(Multi-VRF)。这样不但能够隔离私网内不同VPN 的报文转发路径,而且通过与PE 间的配合,也能够将每个VPN 的路由正确发布至对端PE,保证VPN报文在公网内的传输。
下面举例介绍MCE对多个VPN的路由表项进行维护,并与PE交互VPN路由的过程:
如右图所示,左侧私网内有两个VPN站点:VPN1 和VPN2,分别通过MCE设备接入MPLS骨干网,其中VPN1 和VPN2 的用户,需要分别与远端VPN1用户和VPN2 用户建立VPN隧道。通过配置MCE 功能,可以在MCE 设备上为VPN1 和VPN2 创建各自的路由转发表,并使用VLAN 2 接口与VPN1 进行绑定、VLAN 3 与VPN2 进行绑定。在接收路由信息时,MCE 设备根据接收接口的编号,即可判断该路由信息的来源,并将其维护到对应VPN 的路由转发表中。同时,在PE1 上也需要将连接MCE 的接口与VPN 进行绑定,绑定的方式与MCE 设备一致。MCE与PE1 之间通过Trunk 链路连接,并允许VLAN 2 和VLAN 3 的报文携带VLAN Tag 传输,从而使PE1 在接收时可以根据报文所属VLAN 判别该报文属于哪一个VPN,将报文在指定的隧道内传输。
MCE 设备是如何将多个VPN 实例的私网路由信息准确传播到PE 设备?这包括两部分:MCE与VPN站点的路由信息交换,MCE与PE之间的路由信息交换。这些路由信息的交换都有很多种方法,如静态路由、RIP、OSPF、ISIS、BGP路由协议。如果使用BGP路由协议来实现路由信息交换,则就是使用BGP MCE功能,因此BGP MCE功能就是BGP协议支持VRF,能够实现VRF下BGP路由信息的交换。需要在MCE 上为每个VRF 实例配置BGP 对等体,并引入相应VPN 内的IGP 路由信息。由于各个VPN 间正常情况下是处在不同的AS 内,因此使用EBGP 进行路由的传播。 [3]
最近要组建物理机房,云上所有k8s集群全部迁移到物理机房,这里记录下基于Calico BGP 三层路由的组网方案. 适用于高可用、跨vlan、跨机房.
k8s集群组网说明 :
物理网络组网说明 :
实际组网架构:
veth 策略路由
FAQs:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)