通过标签协议栈在和同一个VPN相连的PE路由之间建立一条隧道,标签协议栈就是使用两层标签,PE路由器之间的标签位于底层,而PE路由器和P路由器以及两个P路由器之间的标签位于协议栈的上层,下层协议对于上层协议是透明的。
当一个路由器收到一个IP报文的时候,进行的查找是IP查找。在cisco IOS中,进行IP查找的报文进行的是CEF(cisco express forwarding)的查找。而路由器收到一个带标签报文的时候,查找是在该路由器的LFIB中进行的。(show mpls forwarding-table)。
通过LFIB(标签查找)的方式进行转发的话,那么该报文离开路由器时就应该是带上标签的。
当属于某一VPN的用户数据进入MPLS主干网时,在CE路由器与PE路由器连接的接口上可以识别出该CE路由器属于那一个VPN,进而到该VPN对应的VRF中去读取下一跳的标签,并将标签作为内部标签加入标签协议栈。PE路由器继续查找自己的全局路由表获得下一跳的接口和标签后,将该标签作为外部标签加入标签协议栈并将加入两层标签的数据包从相应的接口发给P路由器。在MPLS骨干网内部,P路由器根据外层标签转发数据包直到出口PE路由器。在出口PE路由器处,PE路由器去掉数据包标签,并将它作为一般IP数据包转发给和它相连的CE路由器。由于每个数据包包含两个标签,需要在MPLS域中实现倒数第二跳标签出栈的做法。
MPLS的工作原理:
MPLS是基于标记的IP路由选择方法。这些标记可以被用来代表逐跳式或者显式路由,并指明服务质量(QoS)、虚拟专网以及影响一种特定类型的流量(或一个特殊用户的流量)在网络上的传输方式等各类信息。MPLS采用简化了的技术,来完成第三层和第二层的转换。它可以提供每个IP数据包一个标记,将之与IP数据包封装于新的MPLS数据包,由此决定IP数据包的传输路径以及优先顺序,而与MPLS兼容的路由器会在将IP数据包按相应路径转发之前仅读取该MPLS数据包的包头标记,无须再去读取每个IP数据包中的IP地址位等信息,因此数据包的交换转发速度大大加快。