在MPLS体系中,由下游LSR将标签分配给特定的FEC,再通知上游LSR。一个IP数据包如果要进入MPLS网络,会被LSR压入标签栈,一个标签栈中可能包含一层标签,也可能包含多层标签。MPLS报文会在二层头和三层包间插入一个MPLS标签头。同时二层数据链路层帧头会做相应的指示,例如以太网数据帧,MAC层的TYPE字段会指示上层数据是否为mpls标签帧。对于一个LSR来说,在收到一个标签包时,无论该标签包中标签栈里有多少层标签,都只会处理第一层标签。标签栈放置在第三层包头之前,也就是说,被传输的协议头部之前,同时在第二层包头之后。
1.标签发布方式
下游按需方式DoD(Downstream On Demand):LSR从上游获得标签请求消息后才进行标签的分配与分发。
下游自主方式DU(Downstream
Unsolicited):LSR无须从上游获得标签请求消息即进行标签的人品与分发。上下游LSR之间必须使用相同的标签发布方式。
2.标签分配控制方式
标签交换路由器LSR首先运行路由协议,例如OSPF等,路由协议在LSR之间交换IP路由前缀信息。路由器利用这些信息构建自己的IP路由表RIB,实际用于数据转发的表是FIB表,FIB表会根据RIB表的变化而产生变化。
独立标签分配控制(Independent):LSR可以在任意时间向与它连接的LSR通告标签映射。
有序标签分配控制(Ordered):只有当LSR具有FEC下一跳的标签映射消息或者该LSR就是此FEC的出口节点时,该LSR才可以向上游发送此FEC的标签。
3.标签保持方式
自由标签保持方式(Liberal):对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。
保守标签保持方式(Conservative):对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。
随后在LSR上运行标签交换协议,标签交换协议的两个最重要的功能,一个是为路由前缀分配标签,另一个是将为前缀分配的标签传递给邻居LSR。大家根据这些标签交换信息构成自己的LIB,在此基础上结合FIB表,最终构成自己的LFIB,这个LFIB就是用于标签包的转发查找。
当网络拓扑变化引起下一跳邻居变化时:
使用自由标签保持方式,LSR可以直接利用原来非下一跳邻居发送过来的标签,迅速重建LSP,但需要更多的内存和标签空间。
使用保守标签保持方式,LSR只保留来自下一跳邻居发送过来的标签,节省内存和标签空间,但LSP的重建会较慢。