如下内容摘自笔者编著、华为公司受权出版,并做为华为ICT培训官方教材的《华为MPLS ×××学习指南》一书(《华为MPLS技术学习指南》为其必备配套图书)。跨域
在基本BGP/MPLS IP ×××应用中(不包括跨域的状况),对×××报文转发原理的理解很是重要,也是许多正在进军华为HICE认证的朋友认为的一个难点,在此专门进行讲解。基本BGP/MPLS IP ×××应用中,私网用户发送的×××报文采用两层MPLS标签方式进行转发:
app
外层(公网)标签在骨干网内部进行交换,指示从本端PE到对端PE的一条LSP。×××报文利用这层标签能够沿LSP到达对端PE。ide
公网隧道能够是LSP隧道、MPLS TE隧道和GRE隧道。当公网隧道为LSP隧道或MPLS TE隧道时,公网标签为MPLS LSP标签(MPLS TE隧道的CR-LSP也是采用LSP标签);当公网隧道为GRE隧道时,公网标签为GRE封装。学习
内层(私网)标签在从对端PE到达对端CE时使用,指示报文应被送到哪一个Site,这就是为不一样路由或不一样×××实例所分配的私网路由标签。spa
当PE之间已在经过MP-BGP相互发布×××-IPv4路由时,会将本端所学习的每一个私网×××-IPv4路由所分配的私网标签通告给了对端PE,这样对端PE根据报文中所携带的私网标签能够找肯定报文所属的×××实例,而后再经过查找该×××实例的路由表,将报文正确地转发到相应的Site。3d
【说明】特殊状况下,属于同一个×××的两个Site链接到同一个PE时,PE不须要为×××报文封装内、外层标签,只需查找对应×××实例的路由表,而后再找到报文的出接口便可将报文转发至相应的Site。orm
下面以图1-22为例说明BGP/MPLS IP ×××报文的转发过程。图中是CE1发送报文给CE2的过程,其中,I-L表示内层标签,O-L表示外层标签。本示例中内、外层标签均为MPLS LSP标签。blog
(1)CE1向Ingress PE发送一个要访问远端CE2所链接Site中目标主机的×××报文。
接口
(2)Ingress PE从绑定了×××实例的接口上接收×××数据包后进行以下操做:ip
先根据绑定的×××实例的RD属性查找对应×××的转发表(VRF)。
再根据×××报文中的目的IPv4前缀,查找对应的Tunnel ID,而后将报文打上对应的私网(内层)标签(I-L),根据Tunnel ID找到隧道。
将×××报文从找到的隧道发送出去,发出以前×××报文要加装一层公网(外层)MPLS标签(O-L1)。此时×××报文中携带有两层MPLS标签。
接着,该报文携带两层MPLS标签穿越骨干网。骨干网的每台P设备都仅对该×××报文的外层标签进行交换,内层私网路由标签保持不变。如图1-23是Ingress PE向Egress PE发送的一个ICMP请求报文的报文结构示例,他包括了两层MPLS标签,其中外层标签为1025(MPLS Bottom os labelstack:0,表示后面还有MPLS标签,非栈底标签),内层标签为1026(MPLS Bottom os labelstack:1,表示此为MPLS栈底标签)。
【经验提示】由于Egress节点为倒数第二跳分配的标签一般是支持PHP特性的,因此在倒数第二跳把报文传输Egress节点时会先弹出外层标签。这样一来,Egress接收到的报文每每只带有一层标签。如图1-24是Ingress PE链接P的接口上接收到来自对端的响应ICMP报文的报文结构示例,其中显示只有一层MPSL标签(MPLS Bottomos label stack:1,表示此为MPLS栈底标签)。在EgressPE链接P的接口接收ICMP请求报文的报文结构同样,也只有一层MPLS标签,也是由于外层标签在倒数第二跳(P)弹出了。
这样一来,能够想象,若是是两PE相连,则报文在PE间直连链路上传输时均只带一层MPLS标签,这层标签就是内层私网标签,由于此时两PE互相为对方的倒数第二跳,在发送报文时会弹出外层的MPLS标签。但在这种PE直连状况下,咱们通常配置是不支持PHP,这样两个直连的PE在发送报文时就不会弹出外层标签了。
(3)Egress PE收到该携带两层标签的报文后,交给MPLS协议模块处理。MPLS协议将去掉外层标签(本示例最后的外层标签是O-L2,但若是应用了PHP特性,则此标签会在到达Egress PE以前的一跳P弹出,Egress PE只能收到带有内层标签的报文,参见图1-24)。
(4)剥离了外层LSP标签后,Egress PE就能够看见内层标签I-L,先根据内层私网路由标签查找到×××实例,而后经过查找该×××实例的路由表,可肯定报文要转发的目的Site和出接口。
同时,Egress PE发现报文中的内层标签处于栈底,因而将内层标签剥离,根据对应的×××实例路由表项将报文发送给CE2。此时报文是个纯IP报文。
这样,报文就成功地从CE1传到CE2了,CE2再按照普通的IPv4报文转发过程将报文传送到目的主机。以上报文转发的流程可用图1-25进行描述。