Linux内核现在支持一种全新的vrf(虚拟路由和转发)架构,这与以前的网络命名空间解决方案不同。
问题:
linux内核支持多少个vrf?
什么系统资源限制vrf容量?
我是内核源代码新手,找不到关于上面两个问题的信息。
我写了一个脚本来添加4096vrf并在openswitch x86 docker容器中设置vrf设备,一切正常。
脚本:
def main():
for i in range(0, 4096):
cmd("ip link add vrf%d type vrf table %d"%(i,i))
sleep(50)
cmd("ip link set dev vrf%d up"%i)
sleep(50)
main()
日志:
root@switch:~# ip link add vrf0 type vrf table 0
root@switch:~# ip link set dev vrf0 up
...
root@switch:~# ip link add vrf4095 type vrf table 4095
root@switch:~# ip link set dev vrf4095 up
root@switch:~# ip -d link show type vrf vrf4095
4098: vrf4095: <NOARP,MASTER,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 22:78:87:9d:ca:81 brd ff:ff:ff:ff:ff:ff promiscuity 0
vrf table 4095 addrgenmode eui64
root@switch:~# ip -d link show type vrf | grep "NOARP,MASTER" | wc
4097 61455 485311
root@switch:~# uname -a
Linux switch 4.4.0-45-generic #66-Ubuntu SMP Wed Oct 19 14:12:37 UTC 2016 x86_64 GNU/Linux
我的推荐人:
Documentation/networking/vrf.txt
drivers/net/vrf.c
最佳答案
似乎对可以创建的VRF的数量没有限制,唯一的限制是内存大小(为创建的每个VRF netdev分配内存)和ifindex类型限制(它是int,通常是32位),这是非常高的。
关于linux - linux内核支持多少个vrf,哪些系统资源限制了vrf的数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40648775/