BGP/MPLS VPNs

来源:互联网 发布:数据库关系代数运算 编辑:程序博客网 时间:2024/06/18 15:01
5. 在主干网上的转发
如果主干网上的中间路由对到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的路由。
6. PE如何从CE学习路由
与一VPN相连的PE路由器需要了解在该VPN的每个站点上有哪些地址。
如果CE设备是一台主机或一个交换机,地址集合一般被配置到连接该设备的PE路由器中。如果CE设备是一路由器,PE路由器可以通过多种方法获得该地址集合。
PE用设定的RD把这些地址翻译成VPN-IPv4地址,把这些VPN-IPv4路由当作BGP的输入。这些路由在任何情况下都不会泄露给主干网的IGP。
实际上,PE/CE路由分发技术取决于该CE是否在一个“传输VPN”中。一个“传输VPN”包括一个从第三方(如,不在同一VPN中的且不是PE的一个路由器)接收路由,并重新分发到一个PE路由器的路由器。如果不是一个“传输VPN”,一个VPN则是一个“叶VPN” stub VPN。在此意义上,大多数VPN,包括几乎所有企业网络,都希望是后者。
可能的PE/CE分发技术有:
1. 静态路由(如,配置)(这只用于stub VPN )
2. PE和CE路由器可能是RIP对等的,而且CE可以用RIP告诉PE路由器在CE路由器上的站点的可达地址前缀。当在CE中配置RIP时,要注意确保从其它站点来的地址前缀(如,CE路由器从PE路由器处学习来的地址前缀)不被广告到PE。更确切地说,如果一个PE路由器,如PE1,接收到了一个VPN-IPv4路由R1,处理后以R2为路由名继续向一个CE分发该IPv4路由,那么,R2不能被该CE的站点分发至一个PE路由器,如PE2,(这里,PE1和PE2可能是也可能不是同一路由器),除非PE2将R2映射为一个与R1不同的VPN-IPv4路由。(如,用一个不同的RD)
3. PE和CE路由器可能是OSPF对等的。这时,站点应该是一个单独的OSPF区,CE则是该区的ABR,而PE是不属于该区的一个ABR。而且,PE应该只报告连接到同一站点上的CE的路由。(这个技术只能用于stub VPN)
4. PE和CE路由器可能是BGP对等体,CE路由器可以用BGP(特别是EBGP)告诉PE路由器该CE路由器上的站点的可达地址前缀集合(这个技术既可用于stub VPN,也可用于传输VPN)。
从纯技术的角度来说,这是迄今而言最好的技术:
a) 不象IGP,它不要求PE为了与多个CE联系而运行多个路由算法实例。
b) BGP正是为了在不同管理系统之间传递路由信息而设计的
c) 如果站点包括“BGP后门”,如,路由器除了与PE路由器的连接外,还有与其它路由器的BGP连接,该过程也能正常工作。其它过程是否能正常工作,要看具体的环境。
d) 使用了BGP,CE可以更方便地把路由属性传递给PE。例如,CE可以根据PE认可的路由目标属性为每个路由提议一个特别的目标属性。
     但另一方面,如果用户本身不是一个ISP,BGP的使用对CE管理员来说是新的工作。注意,如果一个站点并不在个传输VPN中,它并不需要一个自治系统编号ASN。站点不在一个传输VPN中的CE都可以用同一个ASN。而该ASN可以从私有的ASN空间中选择,PE将去掉这些ASN。使用源站点属性可以防止路由环路(见下)。
     
     如果一站点集合组成了一个传输VPN,可以简单地用一个BGP联盟来代表它们,那么对该VPN以外的路由器而言,该VPN的内部结构就是不可见的。这样,VPN中的每一个站点需要两个到主干网的BGP连接,一个是到联盟内的,一个是联盟外的。考虑到主干网和站点可能采取不同的策略,一般联盟内的处理程序会稍做修改。只在其中的一个连接上,主干网是联盟的成员之一。这种技术允许作为用户的ISP得从另一对等的ISP处得到VPN主干服务,所以该技术对作为VPN服务用户的ISP而言可能有用。
     (如果一个VPN用户自身是一个ISP,而且它的CE路由器支持MPLS,可以用一个更简单的技术,此时把该ISP视作一stub VPN。见第8节)
 如果我们无需区分向PE通知某站点上的地址前缀的各种不同方法,我们只是简单地说PE已从该站点学习了路由。
 在一个PE重新分发它从一个站点处学到的VPN-IPv4路由之前,它必须为该路由指定如下三个属性:
   - 源站点属性
    该属性唯一地标识出PE路由器从何站点学习到了此路由。从一个站点学习到的所有路由都应当指定同一个源站点属性,即使该站点与一PE有多个连接或连接到多个PE。不同的源站点属性必须为不同的站点使用。该属性可以编码为一个扩展的BGP群体属性(4.2.1节)。
   - 源VPN属性(见4.2.1)
   - 目标VPN属性(见4.2.1)
7. CE如何从PE学习路由
  本节中,我们假设CE设备是一个路由器。
 一般,一个PE会向CE分发在转发表中用于路由来自该CE的包的所有路由,但不能把路由重新分发到该路由的源站点属性表明的那个站点上的CE。
 在多数情况下,PE简单地分发到CE的缺省路由就可以了。(在一些情况下,CE甚至可以只配置一条指向PE的缺省路由)。如果一站点无需自己向其它站点分发缺省路由,就可以采用这种方法(例,如果公司VPN中的一个站点接入了Internet,这个站点会向其它站点分发缺省路由,但不会分发回自己)。
 从CE向PE分发路由的任何方法都可以用来从PE向CE分发路由。
原创粉丝点击