论文部分内容阅读
(接上期)
二、路由分发的控制
1.目标VPN属性
每张基站转发表与一个或多个“目标VPN”属性关联。当PE路由器建立VPN-IPv4路由项时,此路由项与一个或多个“目标VPN”属性关联。BGP把这些信息作为路由的属性,放在BGP消息体内传送。具有目标VPNT属性的路由信息必须向所有拥有VPNT转发表的PE路由器分发。当PE路由器收到这样的路由信息时,PE可以将其装配到VPNT属下的每个基站的基站转发表里,至于是否确实装配了则由BGP决策过程来定。
本质上讲,目标VPN属性代表了一组基站的集合。将目标VPN属性与路由项相关联的结果是使该路由项被放入此“目标VPN”的基站转发表中。对从基站S收到的路由,PE路由设备可以赋予路由项的目标VPN属性构成了一个集合。另外,PE路由器用来判定是否将来自另一PE的路由信息放入与基站S对应的转发表的目标VPN属性也构成了一个集合。这两个集合是不同的。
目标VPN的功能与BGP群落属性的功能类似。然而,由于后者只支持两字节的号码空间,故要提供更大的号码空间,就需要对BGP的群落属性域进行扩展。对格式也要重新设计,以使其与前面所讨论的RD的格式类似:由类型域决定管理域的长度,属性的其余部分取自管理者号码空间的一个号码。当BGP进程收到同一个VPN-IPv4的两个路由时,BGP根据路由优先规则从中选一个。
一条路由只能有一个RD,却可以有多个目标VPN属性。在BGP环境下,若多个属性和单个路由,而不是和多个路由对应,则扩展性可以得到提高。我们也可以不用目标VPN属性,而通过建立多个路由(如使用更多的RD)来实现上述功能,但扩展性可能不会太好。
对给定路由,PE是如何决定把哪一个VPN目标属性赋予它的呢?有好几种方式。可以配置PE:给通往特定基站的所有路由赋予特定的目标VPN属性。也可以这样来配置PE:对通往特定基站的某些路由赋予特定的目标VPN属性,而给其他的路由另外的目标VPN属性。此外,CE路由器在向PE分发这些路由信息时,可以为每条路由信息指派一个或多个目标VPN属性。最后一种方法把对VPN的实现机制的控制权从SP转移到了SP的客户手里。若采用最后一种方式的话,则应该让PE删除所有不允许的目标VPN属性,或/和加上强制附带的目标VPN属性。
2.BGP在PE之间的路由分发过程
假如某VPN的两个基站所连的PE属于同一自治系统。则这些PE可以使用彼此之间的IBGP连接来分发VPN-IPv4路由信息。另外,每个PE也可以通过和路由反射器之间的IBGP连接来完成路由的分发。
若VPN的两个基站在不同的自治系统内(参考下图),例如它们连到了不同的SP,这时,PE路由器就需要用IBGP把VPN-IPv4路由重分发到自治系统边界路由器ASBR,或重发到以ASBR作为客户端的路由反射器。ABSR再利用EBGP把这些路由重分发给另一AS内的ASBR。这样,不同的VPN基站就可以连到不同的服务供应商。然而,VPN-IPv4路由仅可以在EBGP连接的非公开对等端被接受,EBGP的非公开对等端是SP间信任关系的组成部分。VPN-IPv4路由不能被发往公众Internet,对从公众Internet来的VPN-IPv4路由也应不予接受。
对于将基站连到不同自治系统的多个VPN,没有必要在两个自治系统间设置单个ASBR来保有所有VPN的路由;我们可以设置多个ASBR,每个ASBR仅拥有一个VPN子集的路由。
当PE通过BGP分发VPN-IPv4路由时,它将自身的地址作为“BGP下一跳”。PE也分配和发送MPLS转发标记。(从本质上讲,PE路由器分发的不是VPN-IPv4路由,而是做过标记处理的VPN-IPv4路由[8])。当该PE收到的报文的标记栈顶含有上述VPN-IPv4地址标记时,PE执行退栈操作,接着把此报文直接送到此VPN-IPv4路由所指向的基站。也就是说,PE把此报文送往的基站就是它学到此VPN-IPv4路由的那个基站。转发标记还可以含有数据链路的封装模式信息。
在大多数情况下,PE分配的转发标记将导致报文直接被送到CE,而且收到带标记报文的PE不会在任何路由转发表里查找该报文的目的地址。然而,PE也可以分发这样的转发标记,该标记隐含地标示了某个特定的路由转发表。这样,收到带这种标记报文的PE就要在路由转发表中查找此报文的目的地址。
需要注意的是,按照这种方式分发的MPLS标记仅当以下条件成立时才是可用的:装配了路由项的路由器和对应该路由的“BGP下一跳”路由器间存在标记交换路径。PE路由器与路由的“BGP下一跳”路由器之间可以是一条LSP,也可以于多条可具有不同Qos特性的LSP组成。
所有常用的利用路由反射器来提高扩展性的技术,如路由反射器分层技术,都可以用于VPN。如果使用路由反射器的话,路由反射器无需知道骨干提供的VPN业务的VPN-IPv4路由。我们可以使用多个路由反射器,这些路由反射器彼此通信,每个路由反射器支持全体VPN的一个子集。
若一个PE没有与路由的“目标VPN属性”所指的任何目标VPN相连,此PE就不应该接收这条路由,把这条路由分发到该PE的其他PE设备或路由反射器应使用出口过滤机制来阻止这种路由的送出。当然,假如PE通过BGP收到了一条路由,而且该PE没有与此路由的“目标VPN属性”所指的任何目标VPN相连,则该PE应该对这样的路由使用入口过滤机制,不装配也不重分发这样的路由。这些路由分发原则确保了无需单个路由设备保存全部的VPN-IPv4路由。结果,骨干所支持的路由总数就不会受到单个交换设备性能的限制,从而路由总数可以无限增长。
(三)源VPN属性
VPN-IPv4路由可以可选地与一个源VPN属性相关联。源VPN属性唯一地标示了一组基站的集合。路由所带的源VPN属性指出:此基站集合中某一基站发出了该条路由。
源VPN属性的典型使用场合是用于标示路由所指向的基站的属主,或用于标示基站的Intranet。源VPN属性也可有其他用途。该属性可以通过对BGP群落属性的扩展编码来实现。
在需要指示路由来源的情况下,必须使用源VPN属性。
把源VPN属性称为“路由源”属性也许比“源VPN”属性更确切些。源VPN属性真实地标示了来自某特定基站集合中的基站的路由,对此基站集是否构成了一个VPN,源VPN属性本身没有导致对基站集的区别处理。
(四)利用目标VPN和源VPN属性建立VPN
通过恰当地设置目标VPN和源VPN属性可以建立各种类型的VPN。
为了建立一个由某些特定基站组成的闭合用户群(CUG),可以给定一个目标VPN属性值来代表此CUG。该目标VPN属性值须与CUG的每个基站的相应基站转发表关联,还必须与从CUG基站学到的每条路由关联。任何具有该目标VPN属性的路由都需要被重分发到与CUG基站直接相连的PE路由器。
若想构建辐射状的VPN的话,可以使用两个目标VPN属性,一个表示“中心”,一个表示“辐射分支”,以避免来自“中心”的路由扩散到“辐射分支”上去。借助于这两个属性,可以非常灵活地控制路由信息在各基站间的分发。这两个属性为构建VPN提供了极大的灵活性。
跨越骨干网边界的数据转发
若骨干网的中间路由器没有去往VPN的任何路由信息,数据报文如何从一个VPN基站转发到另一个基站呢?答案是,利用MPLS两级的标记栈。
PE路由器(包括重分发VPN-IPv4地址的ASBR)需要把其自身的地址(32比特的前缀掩码)插入骨干的IGP路由表。这样,在骨干网络的每个节点上,MPLS进程就可以分发对应于去往每个PE路由器的标记。
当PE收到从CE设备来的报文,其在相应的基站转发表里查找此报文的目的地址。假设地址查找总是成功的。若此报文是发往和同一PE相连的CE设备,则报文被直接送到此CE设备。若报文的目的CE设备与另外的PE相连,就需查找此报文的“BGP下一跳”路由器,还要找到“BGP下一跳”路由器为此报文的目的地址所分发的转发标记。PE将此标记压入报文的标记栈,成为底部标记。随后,PE查找去往“BGP下一跳”路由设备的IGP路由表,从而得到该报文IGP下一跳路由器地址,同时得到“IGP下一跳”路由器为“BGP下一跳”路由器地址所分发的转发标记。PE将该标记压入标记栈顶,然后报文发送到“IGP下一跳”路由器。(如果BGP下一跳路由器与IGP下一跳路由器相同,则后一个标记就不需要被压栈。)
这以后,通过MPLS标记交换,此报文穿越骨干网进入目的CE设备。也即,P路由器和PE路由器所做的全部转发处理都通过MPLS标记交换完成,而且,在报文被送到CE设备之前,任何中间交换设备都不会去查看数据包的IP报头,从而,目的地CE设备看到的是一个普通的IP数据包。
当来自某基站的数据报文通过PE路由器进入骨干网时,报文的转发路由由PE内的相应基站转发表的内容决定。报文离开骨干网时的PE路由器的基站转发表对报文转发没有什么用处。结果,到相同的端系统可以有多条路由,具体的报文应选择哪一条路由由报文从哪个基站进入骨干网络来决定。
需要注意的一点是,两级的标记交换使得P路由器无需知道VPN的路由信息,从而,从根本上保证了这种VPN模型的扩展性。骨干上的交换设备甚至可以不需要知道去往CE的路由信息,只需知道到PE的路由信息就可以了。(待续)
二、路由分发的控制
1.目标VPN属性
每张基站转发表与一个或多个“目标VPN”属性关联。当PE路由器建立VPN-IPv4路由项时,此路由项与一个或多个“目标VPN”属性关联。BGP把这些信息作为路由的属性,放在BGP消息体内传送。具有目标VPNT属性的路由信息必须向所有拥有VPNT转发表的PE路由器分发。当PE路由器收到这样的路由信息时,PE可以将其装配到VPNT属下的每个基站的基站转发表里,至于是否确实装配了则由BGP决策过程来定。
本质上讲,目标VPN属性代表了一组基站的集合。将目标VPN属性与路由项相关联的结果是使该路由项被放入此“目标VPN”的基站转发表中。对从基站S收到的路由,PE路由设备可以赋予路由项的目标VPN属性构成了一个集合。另外,PE路由器用来判定是否将来自另一PE的路由信息放入与基站S对应的转发表的目标VPN属性也构成了一个集合。这两个集合是不同的。
目标VPN的功能与BGP群落属性的功能类似。然而,由于后者只支持两字节的号码空间,故要提供更大的号码空间,就需要对BGP的群落属性域进行扩展。对格式也要重新设计,以使其与前面所讨论的RD的格式类似:由类型域决定管理域的长度,属性的其余部分取自管理者号码空间的一个号码。当BGP进程收到同一个VPN-IPv4的两个路由时,BGP根据路由优先规则从中选一个。
一条路由只能有一个RD,却可以有多个目标VPN属性。在BGP环境下,若多个属性和单个路由,而不是和多个路由对应,则扩展性可以得到提高。我们也可以不用目标VPN属性,而通过建立多个路由(如使用更多的RD)来实现上述功能,但扩展性可能不会太好。
对给定路由,PE是如何决定把哪一个VPN目标属性赋予它的呢?有好几种方式。可以配置PE:给通往特定基站的所有路由赋予特定的目标VPN属性。也可以这样来配置PE:对通往特定基站的某些路由赋予特定的目标VPN属性,而给其他的路由另外的目标VPN属性。此外,CE路由器在向PE分发这些路由信息时,可以为每条路由信息指派一个或多个目标VPN属性。最后一种方法把对VPN的实现机制的控制权从SP转移到了SP的客户手里。若采用最后一种方式的话,则应该让PE删除所有不允许的目标VPN属性,或/和加上强制附带的目标VPN属性。
2.BGP在PE之间的路由分发过程
假如某VPN的两个基站所连的PE属于同一自治系统。则这些PE可以使用彼此之间的IBGP连接来分发VPN-IPv4路由信息。另外,每个PE也可以通过和路由反射器之间的IBGP连接来完成路由的分发。
若VPN的两个基站在不同的自治系统内(参考下图),例如它们连到了不同的SP,这时,PE路由器就需要用IBGP把VPN-IPv4路由重分发到自治系统边界路由器ASBR,或重发到以ASBR作为客户端的路由反射器。ABSR再利用EBGP把这些路由重分发给另一AS内的ASBR。这样,不同的VPN基站就可以连到不同的服务供应商。然而,VPN-IPv4路由仅可以在EBGP连接的非公开对等端被接受,EBGP的非公开对等端是SP间信任关系的组成部分。VPN-IPv4路由不能被发往公众Internet,对从公众Internet来的VPN-IPv4路由也应不予接受。
对于将基站连到不同自治系统的多个VPN,没有必要在两个自治系统间设置单个ASBR来保有所有VPN的路由;我们可以设置多个ASBR,每个ASBR仅拥有一个VPN子集的路由。
当PE通过BGP分发VPN-IPv4路由时,它将自身的地址作为“BGP下一跳”。PE也分配和发送MPLS转发标记。(从本质上讲,PE路由器分发的不是VPN-IPv4路由,而是做过标记处理的VPN-IPv4路由[8])。当该PE收到的报文的标记栈顶含有上述VPN-IPv4地址标记时,PE执行退栈操作,接着把此报文直接送到此VPN-IPv4路由所指向的基站。也就是说,PE把此报文送往的基站就是它学到此VPN-IPv4路由的那个基站。转发标记还可以含有数据链路的封装模式信息。
在大多数情况下,PE分配的转发标记将导致报文直接被送到CE,而且收到带标记报文的PE不会在任何路由转发表里查找该报文的目的地址。然而,PE也可以分发这样的转发标记,该标记隐含地标示了某个特定的路由转发表。这样,收到带这种标记报文的PE就要在路由转发表中查找此报文的目的地址。
需要注意的是,按照这种方式分发的MPLS标记仅当以下条件成立时才是可用的:装配了路由项的路由器和对应该路由的“BGP下一跳”路由器间存在标记交换路径。PE路由器与路由的“BGP下一跳”路由器之间可以是一条LSP,也可以于多条可具有不同Qos特性的LSP组成。
所有常用的利用路由反射器来提高扩展性的技术,如路由反射器分层技术,都可以用于VPN。如果使用路由反射器的话,路由反射器无需知道骨干提供的VPN业务的VPN-IPv4路由。我们可以使用多个路由反射器,这些路由反射器彼此通信,每个路由反射器支持全体VPN的一个子集。
若一个PE没有与路由的“目标VPN属性”所指的任何目标VPN相连,此PE就不应该接收这条路由,把这条路由分发到该PE的其他PE设备或路由反射器应使用出口过滤机制来阻止这种路由的送出。当然,假如PE通过BGP收到了一条路由,而且该PE没有与此路由的“目标VPN属性”所指的任何目标VPN相连,则该PE应该对这样的路由使用入口过滤机制,不装配也不重分发这样的路由。这些路由分发原则确保了无需单个路由设备保存全部的VPN-IPv4路由。结果,骨干所支持的路由总数就不会受到单个交换设备性能的限制,从而路由总数可以无限增长。
(三)源VPN属性
VPN-IPv4路由可以可选地与一个源VPN属性相关联。源VPN属性唯一地标示了一组基站的集合。路由所带的源VPN属性指出:此基站集合中某一基站发出了该条路由。
源VPN属性的典型使用场合是用于标示路由所指向的基站的属主,或用于标示基站的Intranet。源VPN属性也可有其他用途。该属性可以通过对BGP群落属性的扩展编码来实现。
在需要指示路由来源的情况下,必须使用源VPN属性。
把源VPN属性称为“路由源”属性也许比“源VPN”属性更确切些。源VPN属性真实地标示了来自某特定基站集合中的基站的路由,对此基站集是否构成了一个VPN,源VPN属性本身没有导致对基站集的区别处理。
(四)利用目标VPN和源VPN属性建立VPN
通过恰当地设置目标VPN和源VPN属性可以建立各种类型的VPN。
为了建立一个由某些特定基站组成的闭合用户群(CUG),可以给定一个目标VPN属性值来代表此CUG。该目标VPN属性值须与CUG的每个基站的相应基站转发表关联,还必须与从CUG基站学到的每条路由关联。任何具有该目标VPN属性的路由都需要被重分发到与CUG基站直接相连的PE路由器。
若想构建辐射状的VPN的话,可以使用两个目标VPN属性,一个表示“中心”,一个表示“辐射分支”,以避免来自“中心”的路由扩散到“辐射分支”上去。借助于这两个属性,可以非常灵活地控制路由信息在各基站间的分发。这两个属性为构建VPN提供了极大的灵活性。
跨越骨干网边界的数据转发
若骨干网的中间路由器没有去往VPN的任何路由信息,数据报文如何从一个VPN基站转发到另一个基站呢?答案是,利用MPLS两级的标记栈。
PE路由器(包括重分发VPN-IPv4地址的ASBR)需要把其自身的地址(32比特的前缀掩码)插入骨干的IGP路由表。这样,在骨干网络的每个节点上,MPLS进程就可以分发对应于去往每个PE路由器的标记。
当PE收到从CE设备来的报文,其在相应的基站转发表里查找此报文的目的地址。假设地址查找总是成功的。若此报文是发往和同一PE相连的CE设备,则报文被直接送到此CE设备。若报文的目的CE设备与另外的PE相连,就需查找此报文的“BGP下一跳”路由器,还要找到“BGP下一跳”路由器为此报文的目的地址所分发的转发标记。PE将此标记压入报文的标记栈,成为底部标记。随后,PE查找去往“BGP下一跳”路由设备的IGP路由表,从而得到该报文IGP下一跳路由器地址,同时得到“IGP下一跳”路由器为“BGP下一跳”路由器地址所分发的转发标记。PE将该标记压入标记栈顶,然后报文发送到“IGP下一跳”路由器。(如果BGP下一跳路由器与IGP下一跳路由器相同,则后一个标记就不需要被压栈。)
这以后,通过MPLS标记交换,此报文穿越骨干网进入目的CE设备。也即,P路由器和PE路由器所做的全部转发处理都通过MPLS标记交换完成,而且,在报文被送到CE设备之前,任何中间交换设备都不会去查看数据包的IP报头,从而,目的地CE设备看到的是一个普通的IP数据包。
当来自某基站的数据报文通过PE路由器进入骨干网时,报文的转发路由由PE内的相应基站转发表的内容决定。报文离开骨干网时的PE路由器的基站转发表对报文转发没有什么用处。结果,到相同的端系统可以有多条路由,具体的报文应选择哪一条路由由报文从哪个基站进入骨干网络来决定。
需要注意的一点是,两级的标记交换使得P路由器无需知道VPN的路由信息,从而,从根本上保证了这种VPN模型的扩展性。骨干上的交换设备甚至可以不需要知道去往CE的路由信息,只需知道到PE的路由信息就可以了。(待续)