VPN配置实例中如何用BGP分发路由信息

2020-04-26 14:54:41 云杰通信 104

VPN配置实例中如何用BGP分发路由信息

  我们允许每个VPN有各自的地址空间,也就是说,相同的地址可被若干VPN配置实例使用,而在每个VPN配置实例中这个地址代表不同的系统。

  讲述VPN配置实例中用用BGP分发路由信息,使用无线路由器时,经常出现VPN配置实例等问题,还有VPN配置实例设置问题以及上网经常掉线,这里将介绍VPN配置实例所涉及到的很多问题的解决方法。

  有时,一个站点可能被用户用VLAN分成几个虚拟站点。每个虚拟站点可能是不同VPN配置实例的成员。PE要为每个虚拟站点维护一个独立的转发表。例,如果一个CE支持VLAN,并希望每个VLAN对应于一个独立的VPN配置实例,PE与CE间发送的包可封装在该站点的VLAN中。

  PE可以利用这一点,以及接收包的接口,把该包指定到某一虚拟站点。也可以把接口分成多个“子接口”(尤其是如果接口是FrameRelay或ATM),并根据包到达的子接口把包指定到一个VPN配置实例。或者简单些,每个虚拟站点使用不同的接口。无论何种情况,即使有多个虚拟站点,每个站点都只需一个CE路由器。

  当然,如果愿意,每个虚拟站点也可以使用不同的CE路由器。注意,无论哪种情况,控制业务流属于何VPN配置实例的机制和策略都由用户掌握。如果希望一个主机在多个虚拟站点上,那么主机必须确定,每个包对应于哪一个虚拟站点。例如,它可以在不同的VLAN的不同虚拟站点上通过不同的网络接口发送包。这些并不要求CE支持MPLS。对于支持MPLS的CE如何支持多个虚拟站点,在第八节中有一个简短的讨论。

  用BGP分发VPN路由信息

  PE路由器使用BGP相互分发VPN配置实例路由信息(更确切地说,是引起路由信息的分发)。一个BGP传播者只能安装和分发一个路由到指定的地址前缀。我们允许每个VPN有各自的地址空间,也就是说,相同的地址可被若干VPN配置实例使用,而在每个VPN配置实例中这个地址代表不同的系统。

  因此,我们应该允许BGP为某个IP地址前缀安装和分发多个路由。甚至于,如果BGP为某一IP地址前缀安装了多个路由,我们必须确保在任何一个站点转发表中只出现其中的一个。我们使用下面描述的新的地址族来实现上述目标。

  VPN-IPv4地址族

  BGP多协议扩展[3]允许BGP携带来自多个“地址族”的路由。我们先介绍VPN-IPv4地址族的概念。一个VPN-IPv4地址长12字节,以8字节的“路由标记”RD开头,后接一个4字节的IPv4地址。如果两个VPN配置实例使用相同的地址前缀,PE可以把它们翻译成不同的VPN-IPv4地址前缀。

  这样,如果在两个VPN配置实例中使用了相同的地址,也可以分别为每个VPN配置实例安装与该地址对应的不同的路由。RD本身并没什么特别的语义,它并不包含路由来源或向哪些VPN配置实例分发路由的信息。RD的目的仅在于可以对一普通的IPv4前缀产生一个与众不同的路由,RD还可以用于决定路由的重新分发。

  RD还可以用于产生到同一系统的多个不同的路由。在第3节中,我们曾给出一个例子:从内联网到某一服务器的路由必须与从外联网的业务流路由不同。这可以通过产生两个IPv4地址部分相同,但RD不同的VPN-IPv4路由来实现。

  这样,BGP就可以安装到同一系统的多个路由,还可以使用一定的策略(见第4.2.3节)来决定包的路由选择。RD的结构使得每个SP可以管理各自的“编号空间”(如,可以自主地指定RD),而不与其它SP的RD冲突。

  一个RD包括两字节的类别域,一个管理者域,和一个指定号码域。类别域的值决定了其它两个域的长度和管理者域的语义。管理者域表明一个指定的授权号,指定号码域包括由已鉴定的授权方出于某种目的指定的一个数字。

  如,一个RD的管理者域包含一个自治系统编号(ASN),IANA将这个ASN分配给一SP,4字节的号码域包括的编号就是由该SP指定的。RD采用这种结构是为了确保可以提供VPN主干网的SP总可以在需要的时候产生一个唯一的RD。

  不过,这种结构并没有其它语义。如果BGP比较这样的两个地址前缀时,它并不理会这种结构。如果VPN-IPv4地址的管理者域和指定编号域都是全0,则可以视作是与IPv4含义相同。尤其对BGP而言,这个VPN-IPv4地址与相应的IPv4地址被认为是类似的。而其它情况下,BGP不会认为两者类似。

  一个站点转发表中对任何一个IPv4地址前缀只有一个VPN-IPv4路由。当包的目标地址与一个VPN-IPv4路由匹配时,只需IPv4部分匹配即可。一个PE需要为通向某一CE的路由配置相应的RD。可以为PE中通向同一CE的所有路由配置同一个RD,也可以为通向同一CE的不同路由配置不同的RD。