静态CRLSP(Constraint-based Routed Label Switched Paths,基于约束路由的LSP)是指在报文经过的每一跳设备上(包括Ingress、Transit和Egress)分别手工指定入标签、出标签、流量所需的带宽等信息,建立标签转发表项和资源预留,从而建立的CRLSP。
与静态LSP不同的是,静态CRLSP需要在每一跳设备上为流量预留一定的带宽资源,如果设备上的带宽资源不满足流量需求,则无法建立静态CRLSP。
建立静态CRLSP消耗的资源比较少,但静态建立的CRLSP不能根据网络拓扑变化动态调整。因此,静态CRLSP适用于拓扑结构简单并且稳定的小型网络。
RT1-3均支持MPLS,在RT1到RT3之间使用静态CRLSP建立一条MPLS TE隧道,使11.1.1.0/24和33.1.1.0/24这两个网段中互访的报文能够通过MPLS进行传输,并且配置隧道最大带宽为20000kbps,隧道沿途链路的最大带宽为80000kbps,最大预留保证带宽为40000kbps。
静态CRLSP配置组网图
VMWare ESXi 6.7.0(ProLiant DL360 Gen9,48核心,128G内存)
H3C VSR1000(Version 7.1.064, Release 0621P18,4核心,8G内存)
CentOS Linux release 7.9.2009 (Core,4核心,4G内存)
首先按照组网图所示配置各接口的IP地址和掩码,设备间配置IS-IS协议发布接口所在网段的路由,包括Loopback接口
IS-IS的配置主要包括配置路由器的Level级别和网络实体名称,并在指定接口(所有接口)上配置使能IS-IS功能,掌握了这两个基本操作,来直接上配置。
#
isis 1
level-1
10.0000.0000.0001.00
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
isis enable 1
#
interface GigabitEthernet2/0
ip address 11.1.1.1 255.255.255.0
isis enable 1
#
interface GigabitEthernet3/0
ip address 12.1.1.1 255.255.255.0
isis enable 1
#
isis 1
level-1
10.0000.0000.0002.00
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
isis enable 1
#
interface GigabitEthernet2/0
ip address 12.1.1.2 255.255.255.0
isis enable 1
#
interface GigabitEthernet3/0
ip address 23.1.1.2 255.255.255.0
isis enable 1
#
isis 1
level-1
10.0000.0000.0003.00
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
isis enable 1
#
interface GigabitEthernet2/0
ip address 23.1.1.3 255.255.255.0
isis enable 1
#
interface GigabitEthernet3/0
ip address 33.1.1.3 255.255.255.0
isis enable 1
配置完成之后,检查VSR3的路由学习情况。
这里和官网有点不一样,因为官网配置中并没有讲连接业务网络的接口需要开启ISIS,但如果不开启就缺少路由了。
接下来配置MPLS及静态CRLSP。
配置LSR ID、开启MPLS能力和MPLS TE能力
#
mpls lsr-id 1.1.1.1
#
mpls te
#
interface GigabitEthernet3/0
mpls enable
mpls te enable
配置TE链路的最大带宽和最大可预留带宽。
#
interface GigabitEthernet3/0
mpls te max-link-bandwidth 80000
mpls te max-reservable-bandwidth 40000
配置VSR1为静态CRLSP的Ingress节点,下一跳地址为12.1.1.2,出标签为120,隧道所需的带宽为20000kbps。
static-cr-lsp ingress 13 nexthop 12.1.1.2 out-label 120 bandwidth ct0 20000
配置MPLS TE隧道Tunnel13:目的地址为VSR3的LSR ID(3.3.3.3);采用静态CRLSP建立MPLS TE隧道。配置隧道Tunnel13引用名称为static-cr-lsp-1的静态CRLSP。
#
interface Tunnel13 mode mpls-te
ip address 13.1.1.1 255.255.255.0
mpls te signaling static
mpls te static-cr-lsp 13
destination 3.3.3.3
此时我们可以看到,VSR1上去往PCB的路由是从ISIS学到的,优先级是15。
所以需要配置优先级更高的静态路由,使得到达网络33.1.1.0/24的流量通过MPLS TE隧道接口Tunnel13转发。
#
ip route-static 33.1.1.0 24 Tunnel13 preference 1
配置LSR ID、开启MPLS能力和MPLS TE能力,并配置TE链路的最大带宽和最大可预留带宽。
#
mpls lsr-id 2.2.2.2
#
mpls te
#
interface GigabitEthernet2/0
mpls enable
mpls te enable
mpls te max-link-bandwidth 80000
mpls te max-reservable-bandwidth 40000
#
interface GigabitEthernet3/0
mpls enable
mpls te enable
mpls te max-link-bandwidth 80000
mpls te max-reservable-bandwidth 40000
配置VSR2为静态CRLSP的Transit节点,入标签为120,下一跳地址为23.2.1.3,出标签为230,隧道所需的带宽为20000kbps。
static-cr-lsp transit 13 in-label 120 nexthop 23.1.1.3 out-label 230 bandwidth ct0 20000
配置LSR ID、开启MPLS能力和MPLS TE能力,并配置TE链路的最大带宽和最大可预留带宽。
#
mpls lsr-id 3.3.3.3
#
mpls te
#
interface GigabitEthernet2/0
mpls enable
mpls te enable
mpls te max-link-bandwidth 80000
mpls te max-reservable-bandwidth 40000
配置VSR3为静态CRLSP的Egress节点,入标签为230。
static-cr-lsp egress 13 in-label 230
如配置过程中所讲,我先后两次测试了从PCA到PCB的带宽情况,第一次是没有配置访问流量通过MPLS TE隧道接口转发的打流,第二次是配置之后的结果。
可以看到,不经隧道转发时,带宽为4.59 Gbps,经隧道转发时,带宽为20.0 Mbps,与配置的20000kbps大体相符。
使用display interface tunnel命令,查看Tunnel接口的状态。
可以看到,隧道的接口状态为UP,协议为CR_LSP,但是接口的收发包统计为0,估计和隧道源接口未知有关。
使用display mpls te tunnel-interface命令,查看MPLS TE隧道的建立情况。
好像跟LSP不太一样,这里显示了隧道的Ingress LSR和Egress LSR信息,一般来讲Egress LSR是看不到的。
在VSR1上执行display mpls lsp和display mpls static-cr-lsp命令,查看静态CRLSP的建立情况
bandwidth指定静态CRLSP流量所属的服务类型和所需的带宽。官网介绍:如果配置时不指定bandwidth,则静态CRLSP流量所需的带宽为0。Class Type是指静态CRLSP流量所属的服务类型,取值包括CT0、CT1、CT2和CT3,如果指定了bandwidth,但没有指定任何CT,则缺省为CT0。
通过配置我们发现,bandwidth只能在Ingress节点和Transit节点配置,那如果我们在Transit节点不配置带宽会怎么样呢?
注意,调整时需要先删除之前的配置,再配置新的。
可以看到Transit节点不配置带宽,带宽以Ingress节点配置为准,那我们把Ingress节点的带宽配置也移除掉。
带宽为3.68Gbps,看来官网说的静态CRLSP流量所需的带宽为0实际上就是不限速了。
现在在Ingress节点上不配置带宽,恢复配置Transit节点带宽为20000kbps试一下。
说明带宽以沿途经过的LSR上配置的小的为限制,如果未配置,则没有限制。而且配置的链路最大带宽竟然没有生效,我们在VSR1上把它设置为10000kbps试一下。
#
interface GigabitEthernet3/0
ip address 12.1.1.1 255.255.255.0
isis enable 1
mpls enable
mpls te enable
mpls te max-link-bandwidth 10000
mpls te max-reservable-bandwidth 1000
官网介绍该命令用来配置用于转发MPLS TE流量的链路最大带宽,设备在发布的IGP路由中携带本命令配置的链路最大带宽值,以便隧道的Ingress节点获取到该信息,并根据该信息进行CSPF计算,选择符合隧道带宽要求的路径。