有人可以解释一下配置隧道(例如 GRE、IPIP 或 VXLAN)时 linux ip tunnel 和 ip link 命令之间的区别吗?
我可以看到,我可以通过两种方式配置 GRE 隧道:
- ip link add 名称 gre1 类型 gre ...
- ip 隧道添加 gre1 模式 gre ...
在创建的 Linux 资源、性能等方面,两者之间有什么区别吗?其中一种方法是过时的吗?
干杯。
答案1
两个 iproute2 命令都与同一个内核交互,它们除了这种通信之外不实现任何其他功能,这实际上意味着您在性能方面不会遇到任何差异。
从中可以看出相关承诺 ip link
使用更新颖的内核接口 — rtnl_link
,相比之下ip tunnel
:“…
这是通过“ip link”命令访问的。以前的隧道配置接口“ip tunnel”保持不变,应保留以兼容旧内核。…
“…”
答案2
(抱歉,我输入的是答案而不是评论,因为评论太长了……)
不久前我遇到了和你一模一样的问题,所以我阅读了的源代码iproute2
。正如poige所说,ip link
使用与不同的接口ip tunnel
。ip tunnel
使用ioctl SIOCGETTUNNEL
,SIOCADDTUNNEL
等,而ip link
使用rtnl_link
接口。
这稍微改变了界面的模式:
$ sudo ip tunnel add ipiptun mode ipip local 10.3.3.3 remote 10.4.4.4 ttl 64 dev eno1
$ sudo ip link add ipiptun2 type ipip local 10.6.6.6 remote 10.7.7.7 ttl 64 dev eno1 #curiously the mode is any/ip here
ipiptun: ip/ip remote 10.4.4.4 local 10.3.3.3 dev eno1 ttl 64
ipiptun2: any/ip remote 10.7.7.7 local 10.6.6.6 dev eno1 ttl 64
请注意,现在有一种更新颖的创建隧道的方法,即使用轻量级路由隧道。参见我在这里的问题,尝试理解它们: Linux 轻量级隧道