MPLS(Multi-Protocol Label Switching,多协议标签交换技术)技术的出现,极大地推动了互联网的发展和应用。例如:利用MPLS技术,可以有效而灵活地部署VPN(Virtual Private Network,虚拟专用网),TE(Traffic Engineering,流量工程)和Qos(Quality of Service,服务质量)。目前,MPLS技术主要应用于运营商网络之中。
在MPLS网络中,位于网络边缘的路由称为LER(Label Edge Router),网络内部路由器称为LSR(Label Switch Router),MPLS报文经过的路径称为LSP(Label Switch Path)。一条LSP总是起于一台被称为Ingress的LER,止于另一台被称为Egress的LER,中间经过若干台被被称为Transit的LSR。LSP具有单向性,且由静态LSP和动态LSP之分。静态LSP需要人工进行固定的标签分配,动态LSP需要利用诸如LDP(Label Distribution Protocol,标签分发协议)这样的协议进行动态标签分配。
传统的IP转发中,物理层从交换机的一个端口收到一个报文,上送到数据链路层。数据链路层去掉链路层封装,根据报文的协议上送给相应的网络层。网络层首先看报文是不是发送给本机的,若是,去掉网路层封装,上送给它的上层协议。若不是,则根据报文的目的地址查找路由表,若找到路由,将报文送给相应端口的数据链路层,数据链路层封装后,发送报文。若找不到路由,将报文丢弃。传统的IP转发采用的时逐条转发,数据报文经过每一台交换机,都要执行上诉过程。由于传统IP转发时面向无连接的,所以无法提供更好的Qos保证。
MPLS 基本概念
标签(Label):是一个定长的,比较短的,只有本地意义的标识,4字节(0-3)
FEC(转发等价类):是一组或一类数据,这组数据分配的标签相同
LSP(标签交换通道):一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行。数据流所走的路径就是LSP
LSR (Label Switch Router) :LSR是MPLS中的网络核心交换机,它提供标签交换和标签分发功能。
LER (Label Switch Edge Router) :在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并且为这些FEC请求相应的标签。它提供流量分类和标签的映射、标签的移除功能。
控制平面:负责产生和维护路由信息以及标签信息。
1.路由信息RIB(Routing Information Base):由IP路由协议生产,用于选择路由
2.标签分发协议LDP(Label Distribution protocol) :负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作。
3.标签信息表LIB(Label Information Base):由标签分发协议生成,负责管理标签信息。
转发平面:即数据平面(Data Plane),负责普通IP报文的转发以及MPLS标签报文的转发
1.转达信息表FIB(Forwarding Information Base) :从RIB提取必要的路由信息生成,负责普通IP报文的转发。
2.标签转发信息表LFIB(Label Forwarding Information Base) :简称标签转发表,由表换转发协议建立LFIB,负责带MPLS标签报文的转发。
MPLS 路由器上,报文的转发过程:
1. 当收到普通IP报文时,查找FIB,如果Tunnel ID为0X0,则进行普通IP报文转发;如果查找FIB表,Tunnel ID 为非0X0 ,则进行MPLS转发。
2.当收到带标签的报文时,查找LFIB表,如果对应的出标签是普通标签,则惊醒MPLS转发;查找LFIB,如果对应的出标签是特殊标签,如标签3 ,则将报文的标签去掉,进行IP转发。
实验:
基础配置:
配置ospf协议和接口ip 略
R1 :
:配置MPLS协议:
首先配置LSR ID
[R1]mpls lsr-id 1.1.1.1
全局启用MPLS
[R1]mpls
Info: Mpls starting, please wait... OK!
在全局启用MPLS之后,还需要再转发MPLS报文的接口上使用MPLS命令使能接口的MPLS功能
[R1-mpls]int g0/0/0
[R1-GigabitEthernet0/0/0]mpls
[R1-GigabitEthernet0/0/0]qu
配置完成后,再R1上查看LSP的信息
[R1]dis mpls lsp
配置静态LSP
在R1上配置从R1到R3的静态LSP的Ingress,并进行标签的分配
[R1]static-lsp ingress 1t3 destination 10.0.3.3 32 nexthop 10.0.12.2 out-label 102
在R2上配置从R1到R3的静态LSP的Transit,并进行标签的分配
[R2]mpls lsr-id 2.2.2.2
[R2]mpls
Info: Mpls starting, please wait... OK!
[R2-mpls]int g0/0/0
[R2-GigabitEthernet0/0/0]mpls
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]mpls
[R2-GigabitEthernet0/0/1]qu
[R2]static-lsp transit 1t3 incoming-interface g0/0/0 in-label 200 nexthop 10.0.23.3 out-label 300
在R3上配置从R1到R3的静态LSP的Egress,并进行标签的分配
[R3]mpls lsr-id 3.3.3.3
[R3]mpls
Info: Mpls starting, please wait... OK!
[R3-mpls]int g0/0/1
[R3-GigabitEthernet0/0/1]mpls
[R3-GigabitEthernet0/0/1]qu
[R3]static-lsp egress 1t3 incoming-interface g0/0/0 in-label 200
配置完成后,在R1上查看LSP信息
可以看到,R1上已经拥有了去往R3(3.3.3.3/32)的静态LSP,且在本地的In标签为NULL,说明R1是该LSP的Ingress。
在R1 上 ping -a 1.1.1.1 3.3.3.3
通过抓包获取,是通过标签转发的,是单向的
配置动态LDP协议:
[R1]undo static-lsp ingress 1t3 xuyao
[R1]mpls ldp
[R1-mpls-ldp]quit
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]mpls ldp
[R2]undo static-lsp transit 1t3
[R2]mpls ldp
[R2-mpls-ldp]quit
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]mpls ldp
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]mpls ldp
[R2-GigabitEthernet0/0/1]
[R3]undo static-lsp egress 1t3
[R3]mpls ldp
[R3-mpls-ldp]int g0/0/1
[R3-GigabitEthernet0/0/1]mpls ldp
[R3-GigabitEthernet0/0/1]
R1、R2和R3的接口启动了LDP。并且标签分发方式为DU模式
R1和R2、R2和R3之间的LDP会话状态为operrational,表示会话已经建立
R1验证去往3.3.3.3 /32 的MPLS报文所经过的路径
可以看到,报文在R3上出发时被赋予标签1024,经过R2时,标签被替换为3
分别 在R1和R3上测试连通性
测试联通正常。