Linux中的虚拟路由转发VRF

VRF 简单概念

虚拟路由转发(Virtual Routing and Forwarding)
顾明思义,虚拟的路由转发,将同一台设备上的路由分成不同的分组,然后根据请求的接口,目的地址进行路由的转发,这个是工作在单台设备内的,出了这个设备就没有意义了。

为什么需要VRF

逻辑上的三层隔离,类似二层隔离的VLAN.

VRF的实现介绍

Linux内核实现了这个功能,你可以把不同的端口划分给不同的vrf 接口(一个vrf接口可以有多个硬件端口,一个硬件端口只能属于一个VRF接口)。

当发送数据的时候,数据包会被hook到vrf的驱动程序,由其判断这个数据包所在的接口是否包含在这个vrf接口中,如果是则用这个vrf的路由表,如果不是则继续匹配,都不存在vrf中,则使用默认路由表。接收同理。

应用程序可以绑定vrf接口实现同不同的路由绑定,可以通过IPKTINFO 指定发送数据的接口。

这个就是我们Linux内核中的vrf, 具体的命令或者使用方式可以参考culumus networks的技术文章,这个vrf就是这个公司的天才实现的,而我则是在这个基础上把这个功能移植到了3.10, 标准内核在4.3版本开始引入,4.10才完整。移植的同时实现了ospf,bgp, rip/ripng的是匹配(ipv4 and ipv6).

VRF的常规使用

我们公司虽然有这个功能但是我也不清楚具体哪些行业或者公司需要使用这个功能,在网络上了解到,一般如果一个大的集团公司拥有几个不同的办事处,又想隔离不同办事处的访问权限,则可能需要这个VRF,在不增添新设备的情况下,对网络进行三层隔离,这也应该是常用的方式吧。

欢迎评论介绍使用用途。

你可能感兴趣的:(Linux,Cloud,KnowHow,Problem)