5. 转发
5. 转发 (Forwarding)
如果骨干网中的中间路由器没有任何关于通往各 VPN 的路由的信息,那么报文是如何从一个 VPN 站点转发到另一个 VPN 站点的呢?
当一台 PE 从一个 CE 设备收到一个 IP 报文(packet)时,它会选择一个特定的 VRF 来查表该报文的目的地址。这一选择基于该报文的入向连接电路(ingress attachment circuit)。
假设找到了匹配项,由此我们就得到了该报文的"下一跳"(next hop)。
如果该报文的下一跳是经由一条 VRF 连接电路、直接从这台 PE 到达(即,该报文的出向连接电路与其入向连接电路位于同一台 PE 上),那么该报文就被发往该出向连接电路,且没有任何 MPLS 标签被压入(push)该报文的标签栈(label stack)。
如果入向连接电路与出向连接电路位于同一台 PE 上,但关联到不同的 VRF,并且,如果在入向连接电路的 VRF 中与该目的地址最匹配的路由,是出向连接电路的 VRF 中若干条路由的聚合(aggregate),那么可能还需要在该出向 VRF 中查表该报文的目的地址。
如果该报文的下一跳不是经由一条 VRF 连接电路到达,那么该报文就必须穿越骨干网至少一跳。因此该报文有一个"BGP 下一跳"(BGP Next Hop),而该 BGP 下一跳会为与该报文目的地址最匹配的路由分配一个 MPLS 标签(label)。把这个标签称为"VPN 路由标签"(VPN route label)。该 IP 报文被转换为一个 MPLS 报文,其标签栈上唯一的标签就是这个 VPN 路由标签。
随后,该报文必须被隧道转发(tunneled)到该 BGP 下一跳。
如果骨干网支持 MPLS,则按如下方式完成:
-
PE 路由器(以及任何自治系统边界路由器)在将 VPN-IPv4 地址重新分发(redistribute)时,需要把自身的 /32 地址前缀插入骨干网的 IGP 路由表中。这使得 MPLS 能够在骨干网中的每个节点上为通往每台 PE 路由器的路由分配一个标签。为确保不同实现之间的互操作性(interoperability),要求支持 LDP 来建立穿越骨干网的标签交换路径(label switched path)。不过,也可以使用其他方法来建立这些标签交换路径。(其中某些其他方法可能并不要求在 IGP 中存在这些 /32 地址前缀。)
-
如果存在通往该 BGP 下一跳的任何流量工程(traffic engineering)隧道,并且其中一条或多条可供该报文使用时,就会选择其中一条隧道。该隧道会关联一个 MPLS 标签,即"隧道标签"(tunnel label)。该隧道标签被压入 MPLS 标签栈,报文被转发到该隧道的下一跳。
-
否则:
-
该报文将有一个"IGP 下一跳"(IGP Next Hop),即沿通往 BGP 下一跳的 IGP 路由的下一跳。
-
如果 BGP 下一跳与 IGP 下一跳相同,且使用了倒数第二跳弹出(penultimate hop popping),那么该报文就被发往该 IGP 下一跳,仅携带 VPN 路由标签。
-
否则,该 IGP 下一跳会为与该 BGP 下一跳地址最匹配的路由分配一个标签。把这个标签称为"隧道标签"。该隧道标签作为该报文的栈顶标签被压入。随后报文被转发到该 IGP 下一跳。
-
-
MPLS 随后会将报文沿骨干网运载到该 BGP 下一跳,在那里将检查 VPN 标签。
如果骨干网不支持 MPLS,那么仅携带 VPN 路由标签的 MPLS 报文,可以使用 [MPLS-in-IP-GRE] 的技术被隧道转发到该 BGP 下一跳。当报文从隧道出来时,它将位于该 BGP 下一跳处,在那里将检查 VPN 路由标签。
在该 BGP 下一跳处,对报文的处理取决于该 VPN 路由标签(见第 4.3.2 节)。在许多情况下,PE 将能够从这个标签判断出该报文应当经由哪条连接电路(发往某个 CE 设备)传输,以及该接口恰当的二层(data link layer)头部。在其他情况下,PE 可能只能判断出:在转发给某个 CE 设备之前,需要在一个特定的 VRF 中查表该报文的目的地址。也存在中间情形:VPN 路由标签可能确定了该报文的出向连接电路,但仍需进行一次查表(例如 ARP)以确定该连接电路上该报文的二层头部。
MPLS 头部本身的信息和/或与该标签相关联的信息,也可用于在通往 CE 的接口上提供服务质量(QoS)。
无论如何,如果一个报文在到达其入向 PE 时是一个未加标签的 IP 报文,那么当它离开其出向 PE 时也将再次是一个未加标签的报文。
带有 VPN 路由标签的报文被隧道转发穿越骨干网,这一事实使得所有 VPN 路由都能排除在 P 路由器之外。这对于确保该方案的可扩展性(scalability)至关重要。