MPLS VPN之MPLS(1)
一、MPLS产生背景
MPLS起初是为提高数据包转发效率而产生的。
早期的路由器是用软件的方式来进行报文转发处理的,每一跳都需要根据报文的目的IP使用最长掩码匹配原则查找路由表进行转发,效率低,尤其是在业务流量特别大的时候,对设备的性能影响特别大;
ATM是一种基于虚电路的二层交换技术,使用固定长度的信元方式来进行数据的转发,这种方式容易用硬件来实现,从而提升数据转发效率,但是ATM技术实现比较复杂,部署难度和成本都很高;
MPLS技术避免了传统IP转发的繁复过程,也借鉴了ATM使用标签转发和面向连接的特点,提高了数据包转发效率;
后来随着芯片技术如ASIC的改进和提升,使用IP转发方式的效率也很高,MPLS在数据包转发效率方面的优势渐渐不明显了,MPLS技术已经扩展到了新的应用领域,如MPLS VPN或MPLS TE;
二、MPLS网络结构及术语解释
1、MPLS网络结构
MPLS域通过边界路由器连接用户的IP网络,一台边界路由器可以同时连接到多个用户的IP网络,在MPLS域内的基本网元是标签交换路由器LSR,LSR具有标签分配和基于标签转发数据报文的能力;
用户的IP报文进入MPLS域后,报文会以标签的方式经过每一台LSR,为转发带标签的数据报文,每台LSR都会建立一张标签转发表,标签转发表就是通过标签分发协议根据路由表产生和建立的;
2、MPLS相关术语
(1)标签交换路由器LSR Label Switching Router
具有标签分配和标签转发能力的路由器;
(2)标签边界路由器LER Label Edge Router
具有标签分配,并且同时连接IP和MPLS网络的路由器;
入站的LER负责对收到的IP报文压入标签转发进MPLS网络;
出站的LER负责给离开MPLS网络的报文移除标签,然后根据IP路由表进行转发;
(3)转发等价类FEC
用来描述具有相同特征的报文在转发过程中被LSR以相同方式处理;
在MPLS中,一个FEC使用同一个标签来标记,即一个FEC使用同一条LSP;
划分FEC的方式有很多,如去往相同目的前缀的报文就是一个FEC,也可以通过源地址、目的地址、源端口、目的端口、协议类型、VPN等要素任意组合来划分一个FEC;
(4)标签交换路径LSP Label Switching Path
MPLS报文经过的路径,一条LSP起始LSR叫入站LER,最后一台LSR叫出站LER,LSP是一条单向的隧道;
LSP支持嵌套,一条LSP可以在另一条LSP内部;
可以使用静态和动态两种方式来创建一条LSP;
左侧IP网络要访问右侧的IP网络,
当报文进入MPLS域边界的LSR后,在原始IP报头之前被封装上标签;
MPLS网络中间的路由器根据标签转发表将报文携带的标签替换成另一个标签;
当报文到达MPLS域另外一侧边界LSR时,数据包被解封装成原始的IP报文(移除标签),然后转发至IP网络;
三、MPLS标签格式
标签位于报文的二层头部和三层头部之间,一个MPLS标签长度为32bit,有固定格式;
1、Label Value:标签的前20bit表示标签值,标签值0到15是特殊用途的标签;
标签0: IPv4显式空标签
标签1: 路由器报警标签;
标签2: IPv6显式空标签;
标签3: 隐式空标签;
标签14: OAM路由器报警标签;
2、EXP:3bit的实验字段,用于Qos;
3、S:栈底位S,Bottom of Stack,栈底标签S位为1,其他标签S位为0;
一个MPLS报文携带多个标签,这些标签组成一个堆栈,紧挨着IP报头的标签就是栈底标签;
4、TTL:最后8bit是TTL,报文的生存周期,每进行一次标签交换操作,最外层标签中TTL就减1,TTL一旦减为0,报文就被丢弃,可以防止数据包转发环路;
IP报文进入MPLS网络后,标签的TTL值可以使用初始值255,也可以直接拷贝IP头中的TTL值;
四、静态LSP的建立
一条静态LSP经过的LSR共有3种角色:Ingress、Transit、Egress;
Ingress节点负责为接收到的IP报文压入标签并送入LSP隧道;
Transit节点负责以标签交换的方式转发报文;
Egress节点负责移除报文中的标签,并将报文转发至IP网络;
手工分配标签需要遵循的原则:上游节点出标签等于下游节点入标签;
配置LSR-ID,分别在全局和接口上使能MPLS
mpls lsr-id 10.1.1.1
mpls
#
interface gigabitethernet0/0/1
mpls
#
ingress节点配置:
static-lsp ingress LSP1 destination 2.2.2.0 24 nexthop 10.1.12.2 out-label 100
指定LSP1的FEC为2.2.2.0/24,使用出标签100将报文转发至下一跳10.1.12.2;
transit节点配置:
static-lsp transit LSP1 incoming-interface gi0/0/0 in-label 100 nexthop 10.1.23.3 out-label 200
从接口G0/0/0接收到带有标签为100的报文,将标签替换为200后转发至下一跳10.1.23.3;
egress节点配置:
static-lsp egress LSP1 incoming-interface gi0/0/0 in-label 200
从接口G0/0/0接收到带有标签为200的报文,移除标签后以IP的方式转发出去;