概述:

在MPLS VPN网络中,各种VPN用户或应用通常都有访问公共网络或Internet的需求。要实现这一需求,就必须要让用户能访问到运营商的全局网络,因为Internet 的路由位于运营商的全局路由表中,而PE的VPN并且默认情况下,VPN 实例路由和全局路由是互相隔离的,所以VPN客户站点不可能看到公网路由。要想VPN用户能够通过全局访问到Internet,就必须打通VPN网络和全局网络之间的路由。当然,如果具备一定条件,也可以为VPN用户站点增设一条到Internet网关的线路,这条线路独立于MPLS VPN的线路,专门用于传递到Internet的流量。当然,这种解决方案会产生额外的成本,但在配置上却是比较简单的做法。总的来说,根据网络中的情况及理论分析,MPLS VPN用户访问Internet可以采用以下三种方案。这些方案只是提供一些建议,实际组网环境可能要复杂得多,大家可以视情况作具体规划和设计。这三种方案分别如下:

  1. 通过全局路由表访问Internet。
  2. PE-CE之间单链路访问Internet。
  3. 使用一个中心站点作为到Internet 的连接。

一、通过全局路由表访问 Internet ( PE-CE之间双链路或使用子接口)

MPLS Internet mpls internet接入_Internet


这种情况下,PE路由器根据用户的需求,可以通过全局的接口将Internet的全部或部分路由发布给CE,或者只发布一条默认路由给CE,或由CE手工设置一条默认路由。如图所示,采用该方案中的一个案例,这个案例中 PE-CE之间采用了子接口互连的方式。这里假设由PE1直接通过全局接口连接到Internet的网关,PE1通过BGP学习到了Internet的全部路由。PE-CE之间采用静态路由。

MPLS Internet mpls internet接入_MPLS Internet_02


这时还得注意一个问题就是,在PE上还需要将用户站点的路由通告到Internet,否则用户将接收不到从Internet返回的流量,除非在PE上做NAT。这样,当用户访问Internet的流量经过PE后,源址被转换成PE的地址了,后一种做法是我们推荐的,因为用户站点内往往使用的是私网地址,所以不能通告到公网,即便用户站点内部使用公网地址,为安全起见,也不建议将地址通告到公网。

二、PE-CE之间单链路访问Internet

第一种方案需要在PE-CE 之间至少设置两条链路,产生了额外的成本。为节省成本,产生了第二种方案,即在 PE-CE之间只用一条链路,用这条链路同时承载 MPLS VPN的业务流量和到Internet的流量。

要实现该方案,要求PE路由器从VPN实例接口收到来自用户站点的流量后,要能够将去往Internet 的流量从全局接口转发出去给Internet。但是,根据PE路由器缺省的处理行为,从 VPN实例中的接口收到的数据,只会查找该实例的路由表进行转发,不会去查找全局路由表,所以,最终因为VPN实例中的路由表中没有相关的Internet 全局路由而导致数据包被丢弃。要解决这个问题,在VPN实例中配置静态路由时,需要在下一跳后面加上 Public关键字。Public 代表全局路由表也就是说,这里配置的下一跳地址可以通过全局路由表查找到对应的路由。

MPLS Internet mpls internet接入_MPLS Internet_03


所以,在PE上,为VPN实例添加一条到Internet的默认路由,下一跳指向全局。

三、使用一个中心站点作为到lnternet的连接

这种方法是将用户VPN中所有站点的Internet流量先转发给一个中心站点,然后由中心站点转发到Internet,这样做的好处在于,可以迪过集中部者阴火烟,纷目TN小站点访问Internet的流量,NAT和其他安全防护策略只需要部署一次就行了,从而减少了其他站点的配置和维护任务,比较适用于Hub-and-spoke场景。

这种情况下,用作访问Internet的中心站点既需要维护其他站点的VPN路由,还需要维护来自Internet的路由,当然也可以采用默认路由来访问Internet,如图所示:

MPLS Internet mpls internet接入_MPLS Internet_04

图中的Sitel为中心站点,PE1为Site1的 PE,PE1使用两条链路或者两个子接口连接CE1,一个接口归属到用户的 VPN实例(VPN-A),用于接收和传递来自其他站点的VPN路由;另一个接口归属到用于Internet 的VPN实例,用来接收和传递来自PE-GW的Internet路由。PE2和PE-GW、PE2、PE3之间都建立MP-iBGP连接,用于传递VPNv4路由。MPLS VPN骨干网通过图中 PE-GW连接到Internet,PE-GW与Internet中的路由器运行了iBGP或eBGP,并在 PE-GW上创建了连接Internet的VPN 实例,并将连接Internet的接口划入这个实例。PE-GW接收到来自Internet 的路由后放入该VPN实例,然后引入到MP-iBGP成为VPNv4路由,进而传播到PE1,PE1再发布给CE1,CE1进一步将这些路由发布到其他站点。同时,其他站点的路由也会通过Site1 发布到 Internet。