重点讲解用目标和源属性组建VPN属性,在向大家详细介绍VPN属性之前,首先让大家了解下VPN属性配置模式中相应参数,然后全面介绍共享上网,选择使用宽带路由器这种最简单方案。
源VPN属性
一个VPN-IPv4路由可以选择性地通过源属性与一个VPN属性相关。这个属性唯一地代表了一系列站点的集合,并代表了相应的来自于该集合的一个站点的路由。这个属性的典型用途是表明了路由指向的站点的拥有者---某企业,或表明了该站点的内联网。当然,还可能有其它用途。这个属性可以象一个扩展的BGP群体属性一样来编码。
当需要确定一路由的来源时,应当使用源属性,而不是RD。如下文所述,这个属性可以用于构建VPN属性。更确切地说,这个属性应称为“源路由”属性而不是“源VPN属性属性。它只确定路由来自于某一站点集合中的一个站点,并不关心这些站点是否组成一个VPN属性。
用目标和源属性组建VPN属性
如果正确地设置了目标VPN和源VPN属性,就可以组建各种不同的VPN。如果想组建一个包含特定站点集合的封闭用户群CUG,可以用一个指定的目标VPN属性值来代表该CUG。这个值应该与CUG中每个站点的转发表,以及从CUG中每个站点中学习的路由相关联。
任何有该目标VPN属性的路由都应该重新分发,以到达每一个与CUG中任一站点相连的PE路由器。如果是想组建一种"hubandspoke"VPN,可以使用两个目标属性值,一个代表“Hub”,一个代表“Spoke”。从spoke发出的路由被分发到hub,但hub发出的路由并不被分发到spoke.
如果一些站点既在内联网上也在外联网上,而另一些站点只在内联网上,那么,有一些内联网和外联网的路由具有代表全体站点的目标VPN属性。那些有内联网路由的站点只能过滤有“错误”源VPN属性的路由。利用这两个属性,可以灵活地控制路由信息在不同站点集合间的分发,在VPN属性的组建上也提供了很好的灵活性。
在主干网上的转发
如果主干网上的中间路由对到VPN属性的路由一无所知,数据包如何从VPN属性的一个站点转发到另一个站点呢?这是利用MPLS的两层标签栈来实现的。PE路由器(和重新分发VPN-IPv4地址的ASBR)要在主干网的IGP路由表中插入/32地址前缀。
这样,在主干网的每一个网络节点上,都可以用MPLS为到每个PE路由器的路由指定一个标签。(在主干网上建立标签交换路径LSP的过程中不需要/32地址前缀)当PE从一个CE设备接收到一个包时,它选择一个站点转发表来查找包的目的地址。
假设找到了匹配项。如果该包的目的地是连接在同一PE上的一个CE设备,就直接发送到该CE设备。如果该包的目的地不是连接在同一PE上,则找到该包的“BGP下一跳”和BGP下一跳为包的目的地址分配的标签。先把标签压入包的标签栈,成为栈底标签。
接着PE查找到BGP下一跳的IGP路由,确定IGP下一跳和IGP下一跳为BGP下一跳地址分配的标签。这个标签也被压入包的标签栈,成为栈顶标签。然后这个包被转发往IGP下一跳。(如果BGP下一跳就是IGP下一跳,第二个标签就用不着入栈了。)由MPLS携带这个包经主干网到达适当的CE设备。
也就是说,所有的P和PE路由器做出的转发决定现在都以MPLS方式给出,直到包到达该CE设备,不需再查看包的IP包头。最后的PE路由器将在把包发送到CE设备前从标签栈中弹出最后的标签,这样,CE设备看到的仍是一个普通的IP包。(第8节将讨论CE能接收带标签的包的情况)当一个包通过一个PE路由器从某站点进入主干网时,根据PE路由器中与该站点相关的转发表内容决定包的路由。
与包离开主干网的PE路由器中的转发表是无关的。因此,到同一系统可以有多个路由,为包选择哪一个路由取决于包从哪一个站点进入主干网。注意,两层标签的运用使保持所有VPN属性路由与P路由器的隔离成为可能,这对于保证该模型的扩展性相当重要。主干网甚至只需到PE的路由而无需到CE的路由。