跳到主要内容

7. PE 如何从 CE 学习路由

7. PE 如何从 CE 学习路由 (How PEs Learn Routes from CEs)​

连接到某个特定 VPN 的 PE 路由器,需要针对每条通向该 VPN 的连接电路,知道该 VPN 的哪些地址应当经由该连接电路到达。

PE 使用配置好的路由区分符(RD)将这些地址转换为 VPN-IPv4 地址。随后 PE 将这些 VPN-IPv4 路由作为 BGP 的输入。来自某个 VPN 站点的路由不会被泄露(leak)到骨干网的 IGP 中。

到底可能采用哪些 PE/CE 路由分发技术,取决于某个特定 CE 是否处于一个"中转 VPN"(transit VPN)中。所谓"中转 VPN",是指其中包含一个路由器,该路由器从"第三方"(即,从一个不在该 VPN 中、但也不是 PE 路由器的路由器)接收路由,并将这些路由重新分发到一台 PE 路由器。不是中转 VPN 的 VPN 就是"存根 VPN"(stub VPN)。绝大多数 VPN(包括几乎全部企业网络)预期都属于这种意义上的"存根"。

可能的 PE/CE 分发技术有:

  1. 可以使用静态路由(static routing,即配置)。(这可能仅在存根 VPN 中有用。)

  2. PE 与 CE 路由器可以是路由信息协议(Routing Information Protocol,简称 RIP)[RIP] 对等体,且 CE 可以使用 RIP 告知 PE 路由器在其站点可达的那组地址前缀(address prefix)。在 CE 上配置 RIP 时,必须小心确保:来自其他站点的地址前缀(即,由 CE 路由器从 PE 路由器学到的地址前缀)绝不会被通告(advertise)回 PE。更精确地说:如果一台 PE 路由器(例如 PE1)收到一条 VPN-IPv4 路由 R1,并因此向某个 CE 分发了一条 IPv4 路由 R2,那么 R2 一定不能从该 CE 的站点被分发回某台 PE 路由器(例如 PE2,其中 PE1 与 PE2 可以是同一台或不同的路由器),除非 PE2 将 R2 映射成一条与 R1 不同的 VPN-IPv4 路由(即,含有不同的 RD)。

  3. PE 与 CE 路由器可以是开放最短路径优先(OSPF)对等体。作为某个 CE 路由器 OSPF 对等体的 PE 路由器,在该 CE 路由器看来,表现得像一个区域 0(area 0)路由器。如果一台 PE 路由器是处于不同 VPN 中的 CE 路由器的 OSPF 对等体,那么该 PE 当然必须运行 OSPF 的多个实例(instance)。

    由 PE 经 OSPF 从 CE 学到的 IPv4 路由,会被作为 VPN-IPv4 路由重新分发到 BGP 中。扩展团体(Extended Community)属性被用来随路由一起携带所有必要信息,以使该路由能以恰当的 OSPF 链路状态通告(Link State Advertisement,简称 LSA)类型分发到该 VPN 中的其他 CE 路由器。OSPF 路由标记(route tagging)被用来确保:从 MPLS/BGP 骨干网收到的路由不会被发回骨干网。

    PE 与 CE 之间使用 OSPF 的完整过程规范,可在 [VPN-OSPF] 与 [OSPF-2547-DNBIT] 中找到。

  4. PE 与 CE 路由器可以是 BGP 对等体,且 CE 路由器可以使用 BGP(特别是 EBGP)告知 PE 路由器在其站点上的那组地址前缀。(该技术可用于存根 VPN 或中转 VPN。)

    与其他技术相比,该技术具有若干优点:

    a) 与 IGP 方案不同,这不需要 PE 为了与多个 CE 通信而运行多个路由算法实例。

    b) BGP 正是为这一功能而设计的:在不同管理域运行的系统之间传递路由信息。

    c) 如果站点包含"BGP 后门"(BGP backdoor),即与 PE 路由器之外的路由器存在 BGP 连接的路由器,那么这一过程在所有情形下都能正确工作。其他过程可能会、也可能不会工作,取决于具体情形。

    d) 使用 BGP 使 CE 能够轻易地将路由的属性传递给 PE。一组完整的属性及其使用不在本文档范围内。不过,这类用法的一些示例如下:

    -   CE 可以从 PE 被授权附加到该路由的那组路由目标(Route Target)中,为每条路由建议一个特定的路由目标。PE 随后将只附加所建议的路由目标,而非全部。这就使 CE 管理员能够对来自 CE 的路由分发拥有一定动态控制权。

    - 可以定义其他类型的扩展团体属性,其意图是让这些属性透明地(即,不被 PE 路由器更改)从 CE 传递到 CE。这将允许 CE 管理员实现额外的路由过滤,超出 PE 所做过滤的范围。这种额外过滤无需与 SP 协调。

    另一方面,对 CE 管理员而言,使用 BGP 可能是件新鲜事。

    如果一个站点不在中转 VPN 中,注意它无需拥有唯一的自治系统号(ASN)。每个不在中转 VPN 中的站点的 CE 都可以使用相同的 ASN。这可以从私有 ASN 空间中选择,并将被 PE 剥离(strip)。路由环路(routing loop)通过使用源站点(Site of Origin)属性来防止(见下文)。

    如果一组站点构成了一个中转 VPN 会怎样?一般而言,只有当该 VPN 本身是一个互联网服务提供商(ISP)的网络时才会如此,此时该 ISP 自身正从另一个 SP 处购买骨干网服务。后一个 SP 可称为"运营商的运营商"(carrier's carrier)。在这种情况下,提供该 VPN 的最佳方式是让 CE 路由器支持 MPLS,并使用第 9 节描述的技术。

当我们无需区分 PE 得以知晓某个给定站点所存在地址前缀的不同方式时,我们将简单地称该 PE 已从该站点"学习"(learn)了这些路由。这包括 PE 已被手动配置这些路由的情形。

在 PE 能够重新分发一条从某个站点学到的 VPN-IPv4 路由之前,它必须给该路由分配一个路由目标属性(见第 4.3.1 节),并且它可以给该路由分配一个源站点属性(Site of Origin attribute)。

源站点属性(如果使用的话)被编码为一个源路由(Route Origin)扩展团体 [BGP-EXTCOMM]。该属性的目的是唯一地标识从某个特定站点学到的那组路由。在某些情形下需要这一属性,以确保从某个特定站点经某条特定 PE/CE 连接学到的路由,不会经另一条不同的 PE/CE 连接被分发回该站点。如果 BGP 被用作 PE/CE 协议、但不同站点尚未被分配不同的 ASN,则该属性尤为有用。