找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2200|回复: 0

[协议] VRF简介及创建

[复制链接]

3万

主题

7

回帖

9万

积分

管理员

积分
91233
发表于 2021-12-16 09:57:41 | 显示全部楼层 |阅读模式
1.VRF理解
VRF相当于一个个独立路由表,STATIC是路由表里的一个(条目)策略,添加vrf相当于隔离建立多个独立的路由器。
VRF1.png

2.VRF应用需求

VRF2.png
假设PC1与R2这一侧的网络属于一个独立的业务;PC2与R3这一侧的网络属于另一个独立的业务,由于设备资源有限或者其他方面的原因,这两个独立的业务的相关节点连接在R1上,也就是同一台设备上。那么在完成相关配置后,R1的路由表如上图所示。
  现在如果PC1要发一个数据包到2.2.2.2,那么这个数据包在到达R1后,R1就会去查看自己的路由表,发现有一条2.2.2.0/24的路由匹配,因此将这个IP包从GE0/0/2口转发给192.168.100.2。这是没有问题的,然而如果PC1要访问3.3.3.0/24网络呢?也是无压力的,因为数据包到达R1后,她照样查找路由表结果发现有匹配的路由,因此将数据包转给R3。但是实际上,从业务的角度考虑,我们禁止PC1访问3.3.3.0/24网络。
  那么怎么办?
VRF3.png
VRF4.png
现在,我们在R1上创建两个VRF:VRF1及VRF2,创建完成后,我们可以理解为,拥有了两台虚拟路由器。当然,现在这两台虚拟路由器上啥也没有。
接下去我们将GE0/0/1口及GE0/0/2口绑定到VRF1;将GE0/0/3及GE0/0/4口绑定到VRF2。如此一来这两台虚拟路由器就各自拥有了两个物理接口。值得注意的是,这两台虚拟路由器是虽然都在同一台物理设备上,但是却是隔离的,他们将有自己的接口,自己的路由表,自己的ARP表等等相关的内容。我们的环境就变成有点像这样:
VRF5.png
  我们看到,VRF1及VRF2有了自己的接口,也有了自己的路由表。并且相互之间是隔离的。
现在PC1要发送一个数据包到2.2.2.2,R1从接口GE0/0/1收到了这个数据包,由于此时GE0/0/1已经绑定到了VRF1,因此在执行目的IP的路由查找的时候,查的是VRF1的路由表,查找到匹配的路由条目后,间个数据包从其指示的GE0/0/1口转发给下一跳192.168.100.2。

  那么如果PC1要访问3.3.3.3呢?数据包发到了R1,R1从接口GE0/0/1收到了这个数据包,于是它在做路由查找的时候,查的仍然是VRF1的路由表。经过查表后,它发现并无匹配的条目,因此将数据包丢弃。
VRF6.png
3. 不同环境的VRF创建
  • Linux Kernel中VRF的使用(iproute的namespace)
  1. #创建命令空间
  2. ip netns add vrf1
  3. #命名空间中执行ifconfig
  4. ip netns exec vrf1 ifconfig</font>
复制代码
  • Linux Kernel中轻量级VRF的使用(高版本iproute的vrf)
具体可参考文章https://turbock79.cn/?p=299
  1. #创建vrf red
  2. ip link add red type vrf table 1</font>
复制代码
  • VPP 中的VRF的使用
  1. vpp # ip table add 100  //创建ip4  vrf 100
  2. vpp # show ip fib   //查看
  3. vpp # ip6 table add 200 //创建IP6 vrf 200
  4. vpp # show ip6 fib  //查看</font>
复制代码
转自:http://turbock79.cn/?p=1270
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|番茄论坛

GMT+8, 2024-11-21 16:59 , Processed in 0.064225 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表