实现VRF之间通信的方法 技术领域:
本发明涉及一种实现VRF(VPN Route & Forwarding Instance,VPN路由转发实例)之间通信的方法。
背景技术:
随着网络技术的不断发展,为了通信的方便,大量企业网均建立有局域网,这样,其相关的维护问题也就凸显开来。传统的企业网一般租用点到点的长途DDN(Defense Data Service,数字数据服务)专线来实现,但是存在诸多的缺点,如建设周期长,维护困难等。随着MPLS(Multiprotocol Label Switch,多协议标签交换)技术的出现,BGP MPLS VPN(BGP一边界网关协议)技术解决了上述难题,成为了时下最流行的VPN(Virtual Private Network,虚拟个人网络)解决方案之一。随着社会的发展,大量的企业,尤其是大中型企业,一般均有分部,需要在不同的地域建立自己地企业网,但由于通信的要求,各地之间的网络不是完全隔离的,而是需要在某种策略的约束下来实现访问。普通情况下在PE(Provider Edge,服务提供者边界路由器)设备上配置OSPF(最短路径优先)或者RIP(路由信息协议)多实例来实现PE和CE(Customer Edge,用户边界路由器)间的路由学习和分发,通过配置路由目标(route-target)配合route-map来实现VRF之间路由的引入和引出。采用这种方法缺点是占用内存多,协议配置复杂。相比较而言,在某些情况下我们可以直接采用在VRF下配置静态路由的方法实现PE与CE的路由和VRF之间的互访。这种方法的虽然不必配置VRF的route-target交集,但是在实现配置VRF静态路由的时候,特别是非点到点链路的时候,必须指定路由的具体下一跳,也就是主机静态路由。这就需要为不同的主机静态路由配置不同的下一跳地址,从而需要大量的重复性的操作,大大占用了PE的内存,影响了处理能力,消耗了带宽。
发明内容:
针对现有VRF之间通信的方法所存在的问题和不足,本发明的目的是提供一种可大大减少PE设备中路由配置的实现VRF之间通信的方法。
本发明是这样实现的:一种实现VRF之间通信的方法,包括以下步骤:
在PE的不同VRF转发表中保存到其他VRF的下一跳为出接口名的子网静态路由;
在与VRF连接的各设备中设置指向PE的路由。
进一步地,该方法还包括:若PE中报文目的地址不是直接相连的子网,要在与PE相连的路由器上启动代理ARP。
进一步地,所述与PE相连的路由器是PE的二级路由器。
进一步地,所述PE的二级路由器是CE。
进一步地,所述在与VRF连接的各设备中设置指向PE的路由具体为在这些设备中启动OSPF、RIP或者配置静态路由。
本发明通过在现有VRF静态路由的基础上加以扩展,通过配置到其他VRF的下一跳为出接口名的子网静态路由,即在PE的各个VRF中配置到其他VRF的子网路由前缀和出接口名称的静态路由,也就是配置的时候可以不指定具体的下一跳,在转发报文前使用ARP获得二层头中的目的MAC地址,这样就可以在PE上通过有限的几条扩展静态路由代替大量的主机静态路由,较少PE的内存消耗,实现VRF之间通信的迅洁,提高了带宽利用率;并且,简洁的静态路由更利于维护,即使在同一子网中增加新的PC,也无需另行增加转发静态路由,大大简化了配置。
附图说明:
下面结合附图,对本发明作出详细描述。
图1为本发明的结构示意图。
具体实施方式:
本发明通过在PE的不同VRF转发表中保存到其他VRF的下一跳为出接口名的子网静态路由,并在与VRF连接的各设备中设置指向PE的路由,即在这些设备中启动OSPF、RIP或者配置静态路由。若PE中报文目的地址不是直接相连的子网,在与PE相连二级路由器(CE)上启动代理ARP。
如图1所示,以PE内的两个VRF:VRFa、VRFb为例对本发明的具体实现步骤进行说明。各设备的地址及PE接口分别如图所示,若采用原来的静态路由配置,要在PE设备上进行如下配置,即要为PE配置不同的下一跳地址:
ip route vrfVRFa 10.1.2.2 255.255.255.255 eth 0/1 10.1.2.2
ip route vrfVRFa 10.1.2.3 255.255.255.255 eth 0/1 10.1.2.3
ip route vrfVRFa 10.1.2.4 255.255.255.255 eth 0/1 10.1.2.4
ip route vrfVRFb 10.1.1.2 255.255.255.255 eth 0/0 10.1.1.2
这样可以从VRFb中的任何一个PC访问VRFa中的CE设备,也可以从VRFa中的CE设备访问VRFb中的任何一台PC,实现了VRFa和VRFb的互访。但如果需要对其扩展,如在VRFb的site中增加20台PC,并分配IP地址为10.1.2.x等,就导致必须再在PE中配置20条诸如ip route vrf VRFa 10.1.2.x255.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 vrfVRFa 10.1.2.0 255.255.255.0 eth 0/1
上述命令指明了从VRFa中来的报文,如果要发送到prefix(前缀)10.1.2.0/24,就必须从eth 0/1出去;
ip route vrfVRFb 1 0.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就可以通信了,配置的到子网静态路由没有指定具体的下一跳,大大简化了配置。
本发明的实现的条件如下:
在PE的VRFa转发表中可以保存到prefix 10.1.2.0/24的静态路由,并保存到达该子网的出接口名称,如eth 0/1,这里,prefix是/24,而不是10.1.2.2/32的路由。每个接口只能绑定到一个VRF,否则无法用接口名字指明下一跳所属VRF,如ip route vrfVRFa 10.1.2.0 255.255.255.0 eth 0/1。同样地,在VRFb转发表中保存到prefix 10.1.1.0/24的静态路由。在CE中和PC中设置指向PE设备的路由。这样,在通信过程中,IP发送报文的时候,无法找到目的地址路由的下一跳,就以IP的目的地址作为ARP的request的对象。如果报文的目的地址不是直接相连的子网,就应该在相连的路由器即二级路由器上启动代理ARP。
如图1所示,若从VRFa的CE设备ping VRFb的PC 10.1.2.2即PC1的时候,流程如下:
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地址是自己,交上层进行处理。
本发明在PE设备VRFa和VRFb的转发表中只是保存10.1.2.0/24和10.1.1.0/24两条静态路由就完成了VRF互访所必需的路由,从而大大简化了需要配置大量主机静态路由的重复性,使转发表更简洁,更利于维护,同时也节省了PE的内存,提高了带宽利用率。