随着网络基础设施建设的快速增长,各个行业广域专网的链路技术也相应发生了较大的变化。传统的广域专网一般租用点到点的长途DDN专线来实现,存在建设周期长,维护困难等问题。随着MPLS技术的推广,业界开始流行采用BGP MPLS VPN技术解决方案来解决上述难题,成为了当前流行的VPN解决方案之一。
一般情况下,在PE(Provider Edge)设备上配置OSPF或者多实例来实现PE和CE(Customer Edge)间的路由学习和分发,通过配置路由目标(route-target)配合route-map可以实现VRF之间路由的引入和引出,但采用这种方法缺点是占用内存多,协议配置复杂。
另外,虽然在某些情况下可以直接采用在VRF下配置静态路由的方法实现PE与CE的路由和VRF之间的互访,但是在实现配置VRF静态路由的时候,非凡是非点到点链路的时候,必须指定路由的具体下一跳,即主机静态路由。这就需要为不同的主机静态路由配置不同的下一跳地址,从而需要大量的重复性的操作,大大占用了PE的内存,影响了处理能力,消耗了带宽。
针对以上两种VRF之间通信方法所存在的问题和不足,本文着重描述在路由器中提供一种可大大减少PE设备中路由配置的VRF通信方法。
这种方法通过在现有VRF静态路由的基础上加以扩展,通过配置到其他VRF的下一跳为出接口名的子网静态路由,即在PE的各个VRF中配置到其他VRF的子网路由前缀和出接口名称的静态路由,也就是配置的时候可以不指定具体的下一跳,在转发报文前使用ARP获得二层头中的目的MAC地址,这样就可以在PE上通过有限的几条扩展静态路由代替大量的主机静态路由,减少了资源的占用。同时,简洁的静态路由更利于维护,即使在同一子网中增加新的PC,也无需另行增加转发静态路由,大大简化了配置。结合左图说明具体实施方式。
本方法通过在PE的不同VRF转发表中保存到其他VRF的下一跳为出接口名的子网静态路由,并在与VRF连接的各设备中设置指向PE的路由,即在这些设备中启动OSPF、RIP或者配置静态路由。若PE中报文目的地址不是直接相连的子网,在与PE相连二级路由器(CE)上启动代理ARP。
如图所示,以PE内的两个VRF:VRFa、VRFb为例对本方法的具体实现步骤进行说明。各设备的地址及PE接口分别如图所示,若采用原来的静态路由配置,要在PE设备上进行如下配置,即要为PE配置不同的下一跳地址(见下表)。
上述配置虽然实现了VRFa和VRFb的互访,但假如需要对其扩展,如在VRFb的site中增加20台PC,并分配IP地址为10.1.2.x等,就导致必须再在PE中配置20条诸如ip route vrf VRFa 10.1.2.x 255.255.255.255 eth 0/1 10.1.2.x的静态路由,这就大大增加了配置的重复性。
采用静态路由的简化配置即可实现不同VRF之间的通信。首先,在CE上和PC上要分别配置默认路由指向PE,这里,CE和PE间及PC和PE间的路由分发可以采用静态路由外的其他方式,如OSPF或者RIP等,目的是生成CE到PE的路由。然后在PE上进行如下配置:
ip route vrf VRFa 10.1.2.0 255.255.255.0 eth 0/1
上述命令指明了从VRFa中来的报文,假如要发送到prefix(前缀) 10.1.2.0/24,就必须从eth 0/1出去。
ip route vrf VRFb 10.1.1.0 255.255.255.0 eth 0/0
上述命令指明了从VRFb中来的报文,假如要发送到prefix 10.1.1.0/24,就必须从eth 0/0出去。
这样,由于路由所在的VRF和出接口的VRF不同,于是就实现了VRF的互访,两个不同的VRFa和VRFb就可以通信了,配置的到子网静态路由没有指定具体的下一跳,大大简化了配置。
最后我们简述一下从VRFa的CE设备ping VRFb的PC 10.1.2.2的流程:
CE发送报文的时,在本地转发表中查到了指向PE设备的默认路由,报文被发到PE设备的eth 0/0接口;当PE设备收到了CE发来的报文,IP的目的地址是10.1.2.2,IP就会在VRFa的转发表中查找该路由,静态路由10.1.2.0/24作为匹配到的最佳路由被选中;按照该路由转发到下一跳,即报文发送到二层设备,但由于该路由只有接口名而没有具体的下一跳地址,故将报文的目的IP地址10.1.2.2作为ARP request的目标,发送ARP广播;经过二层设备广播该请求,当PC 10.1.1.2收到该ARP请求以后,以自己接口MAC应答,回送给PE;PE设备收到该应答后,二层报文的目的MAC就填写为ARP应答的MAC;报文被转交给驱动从接口eth 0/1发送出去,报文的下一跳地址就是10.1.2.2的MAC地址,PC 10.1.2.2收到报文以后,发现报文的目的IP地址是自己,交上层进行处理。
配置示意图
ip route vrf VRFa 10.1.2.2 255.255.255.255 eth 0/1 10.1.2.2
ip route vrf VRFa 10.1.2.3 255.255.255.255 eth 0/1 10.1.2.3
ip route vrf VRFa 10.1.2.4 255.255.255.255 eth 0/1 10.1.2.4
ip route vrf VRFb 10.1.1.2 255.255.255.255 eth 0/0 10.1.1.2