一、实验环境(实验验证通过即实战环境)
1、采用ENSP华为路由器的AR 2220型号,分别模拟总公司、电信运营商、联通运营商、分公司之间的自治系统路由器。
2、采用各路由器的loopback 0建立EBGP邻居关系,总公司与分公司使用loopback 1的ip地址模拟公司内部的网段。
3、网络建好后,总公司到分公司之间默认的优先路由是走电信运营商,由于业务的需求,总公司到分公司之间要求走联通运营商的网络。本例通过BGP的Origin起源属性配置来实现总公司到分公司之间的运营商链路切换。
4、通过route-policy路由策略调用ip-prefix前缀列表抓取对端的路由条目,修改路由条目属性从network引入改为incomplete,达到修改路由优先级的目的。
二、拓扑图
三、Origin起源属性相关术语:
Origin起源属性用来定义路由的来源,通过修改此属性可以控制BGP路径的选择,目前BGP的路由来源主要有三种类型
1、IGP (Interior Gateway Protocol)-内部网关协议
这个值表示路由信息是从自治系统(AS)内部的路由协议获得的。这些协议可能包括OSPF(开放最短路径优先)、RIP(路由信息协议)、EIGRP(增强内部网关路由协议)等。当BGP路由器从IGP学习到路由时,它会将该路由的origin属性设置为IGP,通常表示为i。
2、EGP (Exterior Gateway Protocol)-外部网关协议
这个值表示路由信息是从外部网关协议获得的。在BGP的早期版本中,EGP是BGP的前身,用于在不同的自治系统之间交换路由信息。然而,随着BGP的普及,EGP已经很少使用,BGP现在通常用于在自治系统之间交换路由信息。如果BGP路由器从另一个BGP路由器接收到的路由信息中origin属性为EGP,这可能意味着该路由是通过一个旧的或不兼容的协议获得的,通常表示为e。
3、Incomplete网络层可达信息来源无法确定,优先级最低。
通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。当BGP路由器从一个外部AS接收到一个没有明确origin属性的路由时,它会将该路由的origin属性设置为Incomplete,通常表示为? 。
4、注意:3种起源属性的优先级为:I > e > ?
(network > EGP协议引入 > import-route引入)
当汇总多条路由时,路由的起源属性有i和?,此时取i作为汇总后路由的起源属性
(1)i (internal) 代表通过Network宣告学到的路由
(2)e (EGP) 代表通过EGP协议引入的路由
(3)? (incomplete) 代表通过Import-route引入学习到的路由
5、AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,4字节AS号的范围为1至4294967295。164511为公有AS号码,6451265535为私有AS号码。
6、BGP路由的选路原则:
(1)如果此路由的下一跳不可达,忽略此路由
(2)优选协议首选值(PrefVal)最高的路由
(3)优选本地优先级(Local_Pref)最高的路由
(4)优选本地生成的路由
(5)优选AS路径(AS_Path)最短的路由
(6)比较Origin属性,依次优选Origin类型为IGP、EGP、Incomplete的路由
(7)优选MED值最低的路由
(8)优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
(9)优选到BGP下一跳IGP Metric较小的路由
(10)优选Cluster_List最短的路由
(11)优选Router ID最小的路由器发布的路由
(12)比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由
四、配置过程
1、【AR1】配置:
System-view
sysname AR1
interface GigabitEthernet0/0/1
ip address 10.1.12.1 255.255.255.0
interface GigabitEthernet0/0/2
ip address 10.1.23.1 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
interface LoopBack1
ip address 192.168.10.1 255.255.255.0
bgp 65001
router-id 1.1.1.1
peer 2.2.2.2 as-number 65002
peer 2.2.2.2 ebgp-max-hop 255
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 65003
peer 3.3.3.3 ebgp-max-hop 255
peer 3.3.3.3 connect-interface LoopBack0
ipv4-family unicast
network 1.1.1.1 255.255.255.255
network 192.168.10.0
peer 2.2.2.2 enable
peer 3.3.3.3 enable
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.1.12.0 0.0.0.255
network 10.1.23.0 0.0.0.255
2、【AR2】配置:
System-view
sysname AR1
interface GigabitEthernet0/0/1
ip address 10.1.12.2 255.255.255.0
interface GigabitEthernet0/0/2
ip address 10.1.24.2 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
bgp 65002
router-id 2.2.2.2
peer 1.1.1.1 as-number 65001
peer 1.1.1.1 ebgp-max-hop 255
peer 1.1.1.1 connect-interface LoopBack0
peer 4.4.4.4 as-number 65004
peer 4.4.4.4 ebgp-max-hop 255
peer 4.4.4.4 connect-interface LoopBack0
ipv4-family unicast
undo synchronization
network 2.2.2.2 255.255.255.255
peer 1.1.1.1 enable
peer 4.4.4.4 enable
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 10.1.12.0 0.0.0.255
network 10.1.24.0 0.0.0.255
3、【AR3】配置:
System-view
sysname AR3
interface GigabitEthernet0/0/1
ip address 10.1.34.3 255.255.255.0
interface GigabitEthernet0/0/2
ip address 10.1.23.3 255.255.255.0
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
bgp 65003
router-id 3.3.3.3
peer 1.1.1.1 as-number 65001
peer 1.1.1.1 ebgp-max-hop 255
peer 1.1.1.1 connect-interface LoopBack0
peer 4.4.4.4 as-number 65004
peer 4.4.4.4 ebgp-max-hop 255
peer 4.4.4.4 connect-interface LoopBack0
ipv4-family unicast
undo synchronization
network 3.3.3.3 255.255.255.255
peer 1.1.1.1 enable
peer 4.4.4.4 enable
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 10.1.23.0 0.0.0.255
network 10.1.34.0 0.0.0.255
4、【AR4】配置:
System-view
sysname AR4
interface GigabitEthernet0/0/1
ip address 10.1.34.4 255.255.255.0
interface GigabitEthernet0/0/2
ip address 10.1.24.4 255.255.255.0
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
interface LoopBack1
ip address 172.16.100.1 255.255.255.0
bgp 65004
router-id 4.4.4.4
peer 2.2.2.2 as-number 65002
peer 2.2.2.2 ebgp-max-hop 255
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 65003
peer 3.3.3.3 ebgp-max-hop 255
peer 3.3.3.3 connect-interface LoopBack0
ipv4-family unicast
undo synchronization
network 4.4.4.4 255.255.255.255
network 172.16.100.0 255.255.255.0
peer 2.2.2.2 enable
peer 3.3.3.3 enable
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 10.1.24.0 0.0.0.255
network 10.1.34.0 0.0.0.255
五、验证结果
(一)ospf路由表与邻居
1、BGP建立邻居的前提是路由器之间TCP的连通性,所以本例通过OSPF协议建立TCP连接,AR1上查看OSPF邻居的状态为full,说明邻居与邻接关系已经建立完成,ospf路由表显示TCP连接正常,如下图:
2、在AR4上查看OSPF协议的OSPF邻居状态也为full,说明AR4与AR2、AR3也建立了邻接关系,OSPF路由表能看到2.2.2.2与3.3.3.3的stub区域邻居,2.2.2.2与3.3.3.3是loopback接口的ip地址,显示在stub区,物理接口显示类型为transit,TCP连接正常,如下图:
3、AR2与AR3的OSPF邻居表和路由表不再赘述,类似。
(二)BGP邻居与路由表
1、在AR1上查看BGP邻居与BGP路由表,可以看出AR1(1.1.1.1)与AR2(2.2.2.2)、AR3(3.3.3.3)都建立了BGP邻居关系,状态为Established。另外在AR1的BGP路由表中可以看出,从AR1到172.16.100.0/24的网段有2条路由,分别是电信运营商最优路由2.2.2.2、联通运营商的次优路由3.3.3.3,如下图:
2、在AR4上查看BGP邻居与BGP路由表,可以看出AR4(4.4.4.4)与AR2(2.2.2.2)、AR3(3.3.3.3)都建立了BGP邻居关系,状态为Established。另外在AR4的BGP路由表中可以看出,从AR4到192.168.10.0/24的网段有2条路由,分别是电信运营商最优路由2.2.2.2、联通运营商的次优路由3.3.3.3,如下图:
(三)原始数据包转发路径
1、从总公司AR1的172.16.100.1/24发送icmp的数据包到192.168.10.1/24,从路由表可发现,是经过电信运营商到达的分公司,事实运行的情况也是如此,在AR2的G0/0/2接口抓取数据包,可以看出icmp的request请求包和reply回应包都从电信运营商的链路经过,如下图:
2、由于公司业务的需求,有些业务需要通过联通运营商转发,所以需要修改BGP路由的优先级,本例通过BGP的Origin起源属性来完成。本例中的总公司AR1是通过BGP路由协议的network宣告loopback 1的ip地址192.168.10.1/24,分公司的AR4也是通过BGP路由协议的network宣告loopback 1的ip地址172.16.100.1/24,所以在Orgin属性中,根据network宣告的路由 > EGP外部网关协议路由 >import引入的路由
在总公司AR1端,我们把发出192.168.10.1/24的路由的电信运营商从network宣告的属性,改为import引入路由的属性,则从2.2.2.2出去的BGP路由降低优先级
(四)修改电信运营商BGP路由优先级
1、在总公司的AR1查看BGP路由,注意总公司到达分公司的BGP路由下一跳是电信运营商,在ip路由表中的BGP路由协议,是EBGP的2.2.2.2(电信)为下一跳,说明它是主路由。在BGP路由表中,看到的是2条路由,不仅有2.2.2.2(电信)主路由,还包含了次优路由3.3.3.3(联通),如下图:
2、通过route-policy路由策略抓取电信运营商的BGP路由2.2.2.2/32,调用ip-prefix前缀列表,配置AR1如下:
(1)使用ip ip-prefix定义抓取的路由,总公司的AR1是去往分公司的AR4的172.16.100.1/24这个地址,所以定义172.16.100.1/24
Ip ip-prefix 1 index 10 permit 172.16.100.1 24
(2)使用route-policy路由策略定义满足前缀列表ip-prefix后,执行的动作,满足抓取的路由是172.16.100.1/24后,执行的动作是,将路由的优先级从network改为incomplete,执行的指令如下:
route-policy rp1 permit node 10
if-match ip-prefix 1
apply origin incomplete
route-policy rp1 permit node 20
(3)修改BGP路由,与电信运营商建立BGP邻居时,调用路由策略,降低电信运营商到达172.16.100.1/24的路由优先级,执行的指令如下:
Bgp 65001
Peer 2.2.2.2 route-policy rpl import
3、查看总公司AR1的ip地址192.168.10.1/24到分公司的AR4的ip地址172.16.100.1/24,主路由已经是3.3.3.3(联通)了,没有配置origin属性之前,主路由是2.2.2.2(电信),从AR1的BGP路由表中也可以看到下一跳是2.2.2.2时,AS_PATH路径的变化,65004?,其中?代表incomplete引入的路由,i代表network宣告的路由,根据BGP的选路规则i> E > ? 所以3.3.3.3(联通)成了总公司到分公司的主路由。
4、验证从总公司AR1的192.168.10.1/24到达分公司的AR4的172.16.100.1/24的icmp连通性,即网络流量的路径,能ping通,在AR3的G0/0/1接口抓包,可以看出只有request请求包,但是在AR1上能看到Ping的结果正常,那么回应的数据包reply呢?如下图:
5、在电信的运营商上面的链路抓取总公司AR1的192.168.10.1/24地址ping分公司AR4的172.16.100.1的icmp包,可以看出请求包与回应包的路径是不同的,请求包通过了联通的运营商,回应包却从电信运营商经过,如下图:
6、查看分公司AR4上的ip路由表的BGP协议,可以看出到达总公司的AR1的192.168.10.0/24网段的下一跳是2.2.2.2(电信)。再看分公司AR4的BGP路由表,到达192.168.10.0/24网段有2个下一跳地址,2.2.2.2电信在上(主路由),3.3.3.3联通在下(次优路由)如下图:
所以在第5步,抓取总公司AR1到分公司AR4的ping包时,请求包在AR1做过route-policy路由策略的处理,所以走联通运营商了;但是回应包是分公司AR4到AR1的,并未在AR4做过优先级的处理,默认走电信,所以现在修改分公司AR4上的BGP路由优先级。同样通过BGP的Origin属性完成。
7、AR4修改到2.2.2.2电信的BGP路由优先级配置
Ip ip-prefix 2 permit 192.168.10.1 24
route-policy 2 permit node 10
if-match ip-prefix 2
apply origin incomplete
route-policy 2 permit node 20
Bgp 65004
Peer 2.2.2.2 route-policy 2 import
8、再次查看分公司AR4上的ip路由表的BGP协议,可以看出到达总公司的AR1的192.168.10.0/24网段的下一跳是3.3.3.3联通。再看分公司AR4的BGP路由表,到达192.168.10.0/24网段有2个下一跳地址,3.3.3.3联通在上(主路由),2.2.2.2(电信)在下(次优路由),如下图:
9、此时再从总公司的AR1发出ping包给分公司的AR4,再次抓包查看,request请求包与reply的回应包,都是从联通运营商走了,使用BGP路由协议的Origin属性修改BGP路由优先级后,达到了预期的目标,如下图:
至此,通过调整BGP路由协议的Origin属性,修改BGP路由的优先级完成,达到了预期的目标,主要通过route-policy路由策略调用ip-prefix前缀列表,再把路由策略应用到BGP路由中实现。