一 简介
VRF策略和路由规则配合在Linux网络协议栈中提供了一种创建虚拟路由与转发域地能力。一个典型的例子就是多租户问题,租户有自己地路由表,并且是不同的网关。进程清晰地知道使用哪个VRF,通过将socket绑定在特定的VRF策略上。数据包通过socket系统调用后,使用与VRF策略关联的路由表发出。VRF策略实现的一个重要特性就是它只影响L3层及以上,所以L2工具(如LLDP)不受影响(即它们不需要在每个VRF中运行)。该设计还支持在VRF策略规则的基础上使用更高优先级的ip规则(策略路由PBR)进行优先引导特定流量。此外,VRF策略允许将VRF嵌入到命名空间中,例如网络命名空间提供VRF虚拟网络接口层的隔离,命名空间内接口上的vlan提供L2隔离,VRF提供L3隔离。二 设计
在创建VRF策略时,也会创建出一个虚拟网卡,所以文中的VRF策略与VRF虚拟网卡基本等同。VRF虚拟网卡的创建会关联一张路由表,然后将实际网络接口或者VLAN等虚拟接口加入到特定的VRF策略,如下图所示:

网络接口收到报文后在IPv4和IPv6协议栈上处理给中会交给VRF虚拟网络接口, 造成一种是数据报文是经过VRF设备的假象(因为VRF是三层隔离,所以在ip-input中修改入接口为VRF虚拟接口)。与之类似,出接口上的路由规则让报文先经过VRF设备,而后再经过实际接口发出。这种实现就支持了tcpdump在VRF虚拟接口上对进出的报文进行tcpdump抓包,同时包括netfilter,tc在内。

[1] 转发的报文不会经过VRF虚拟网卡,因此这种报文无法被tcpdump抓取。------->求证

[2] IPtable在入方向实际接口支持PREROUTINT钩子点,在VRF虚拟接口支持INPUT和PREROUTING。在出方向,不管是实际接口还是VRF虚拟接口,都支持POSTROUTING和OUTPUT。

三 步骤

  1. VRF虚拟接口在创建时会关联一张FIB路由表,命令如下

ip link add vrf-blue type vrf table 10 创建一个虚拟接口并关联一张表

ip link set dev vrf-blue up 将虚拟接口状态置为UP

  1. 通过ip rule show 可知在虚拟网卡创建时,会生成一条策略路由指向l3mdev-table,这条策略路由对所有的VRF生效。用户可以修改这条策略路由的优先级,或者添加针对每个VRF虚拟网卡的策略。

ip rule add oif vrf-blue table 10

  1. 设置默认路由

ip route add table 10 unreachable default metric 4278198272

较高的metric 值保证可默认不可达路由可被路由协议生成的路由覆盖。FRR将metric解释为前一个字节表示距离,后面三个字节表示优先级。上述值即为[255/8192]

4,  设置L3接口归属于VRF虚拟接口

ip link set dev ens6 master vrf-blue

L3接口的主机路由和直连路由会自动的加入到VRF虚拟接口对应的路由表中,其

它依赖此接口的路由将被丢弃,需要重新加入到VRF接口对应的表中。

5,添加路由到表中

ip route add table …….

ip route add vrf vrf-xxx ……….

四 应用

应用在使用VRF时,需要将socket绑定到相应的VRF 虚拟网卡上,或者在发送数据时通过IP_PKTINFO指定出接口信息。

setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev)+1)

对于没有绑定接口的socket,端口范围就是在默认VRF(全局VRF)中。也就是说当归属于VRF虚拟网口的接口收到报文后,将无法匹配到对应的socket,因为应用程序可能绑定同样的端口。

TCP和UDP服务运行在默认VRF上下文(即是没有绑定到任何VRF接口上) 可以在所有VRF域中生效通过设置下述选项:

sysctl –w net.ipv4.tcp_l3mdev_accept = 1

sysctl –w net.ipv4.udp_l3mdev_accept = 1

这两个选项在默认情况下是关闭的,因此socket 只会选择对应VRF的报文。与之类似的是原始套接字,为了更好的向后兼容性,默认使能,效果相当于是没有绑定虚拟网口,每次通过IP_PKTINFO指定出接口发送报文。

五 使用iproute2 配置VRF

     ip link add dev NAME type vrf table ID
     ip [-d] link show type vrf
     ip -br link show type vrf
     ip link set dev NAME master NAME
     ip link show vrf NAME
     ip [-6] neigh show vrf NAME
     ip addr show vrf NAME
     ip [-6] route show vrf NAME
     ip [-6] route show table ID
     ip link set dev NAME nomaster

https://blog.csdn.net/dog250/article/details/78069964

Virtual Routing and Forwarding相关推荐

  1. Linux网络:Virtual Routing and Forwarding (VRF)

    目录 Virtual Routing and Forwarding (VRF) VRF安装 VRF示例 进程绑定VRF VRF操作 创建VRF 查询VRF列表 添加网卡到VRF 查询VRF邻接表和路由 ...

  2. Linux VRF(Virtual Routing Forwarding)的原理和实现

    动机 明天,是2017年9月24日,两年前的明天,我从上海第一次来到深圳参加面试,两年前的今天,此时我还在上海虹桥机场等候延误的飞机,两年前的今晚,我在深圳南山区南新路片区徘徊,企图能在南方城市找到一 ...

  3. Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  4. OpenStack Network --- introduction部分 阅读笔记

    Basic Networking 1.混杂模式(promiscuous mode):当网卡被配置为混杂模式时,它们会将所有的frame传递给操作系统,即使MAC地址不匹配. 2.交换机(switch) ...

  5. 一文理解 K8s 容器网络虚拟化

    简介:本文需要读者熟悉 Ethernet(以太网)的基本原理和 Linux 系统的基本网络命令,以及 TCP/IP 协议族并了解传统的网络模型和协议包的流转原理.文中涉及到 Linux 内核的具体实现 ...

  6. 网络虚拟化技术与NFV

    一.虚拟化技术概述 1.虚拟化技术简介 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独 ...

  7. linux网络与防火墙

    目录 linux中的ip命令 比较好用的options OBJECT相当于子命令 网络概念 ip tunnel:隧道 ip address: 创建与删除interface ip link: 配置int ...

  8. 有没有开源的虚拟路由器?有,VPP了解一下

    VPP(Vector Packet Processing,矢量包处理)平台是一个可扩展的开源框架,提供开箱即用的网络交换机或路由器的功能.VPP技术基于Cisco产品的成熟技术,是思科矢量包处理 (V ...

  9. H3C SE 教程笔记——构建安全优化的广域网(下)

    第5篇    BGP/MPLS ××× 第15章    MPLS技术基础 15.2    MPLS起源 随着Internet的迅速普及,传统的路由器设备因其转发性能低下,逐渐成为网络的瓶颈. 首先,路 ...

  10. H3C基础配置文档抄录9-MPLS配置(2)

    MPLS TE配置 4.1MPLS TE简介 网络拥塞是影响骨干网络性能的主要问题.拥塞的原因可能是网络资源不足,也可能是网络资源负载不均衡导致的局部拥塞.TE(Traffic Engineering ...

最新文章

  1. 【C语言】用宏实现将一个整数的二进制位的奇数位和偶数位交换
  2. lvs直接路由模式简单部署
  3. SUBSTRING的用法问题
  4. BusinessPartner Relationship in WebUI and Fiori
  5. 215. 数组中的第K个最大元素 BFPRT最牛解法
  6. python银行卡号生成器_python面向对象编程实例---银行账号
  7. Skyline软件二次开发初级——2如何在WEB页面中控制三维地图的观察点坐标和角度...
  8. 你想要的英雄联盟人物模型素材,这里都能找到
  9. 让WMP12成为万能播放器
  10. 等保三全面安全检查表_全面的安全方法
  11. 高登复习笔记之Http网络协议和Servlet
  12. 八达岭长城和龙庆峡之游
  13. Hp电脑测试软件还是硬件问题,惠普硬件怎么检测
  14. MS-RTOS --- 产品特性
  15. 虚实交融的元宇宙图景中社会科学的跃升
  16. python中算术位移运算
  17. Lucene学习——IKAnalyzer中文分词(二)
  18. 什么是 Wi-Fi 6 (802.11ax)?为什么 Wi-Fi 6 很重要?
  19. 百度地图api设置html5,百度地图API详解之自定义地图类型
  20. R语言机器学习实战之多项式回归

热门文章

  1. 12-8下午 php语法
  2. redis运维常用的server端命令
  3. 运行Myeclipse时,如何删除IVM窗口
  4. php异步表单,利用ajax实现表单的异步互动——2018年4月10日
  5. 代替Reflection(反射)的一些方法(转)
  6. C#操作十六进制数据以及十进制与十六进制互相转换
  7. 智能美观网速快 有这样的无线路由吗?
  8. 4-MSP430定时器_定时器中断
  9. 项目管理-自上而下还是自下而上的沟通?
  10. idea启动tomcat出现‘D:\Programfiles‘ 不是内部或外部命令,也不是可运行的程序