Linux GRE - IP 隧道与 IP 链路

Linux GRE - IP 隧道与 IP 链路

有人可以解释一下配置隧道(例如 GRE、IPIP 或 VXLAN)时 linux ip tunnel 和 ip link 命令之间的区别吗?

我可以看到,我可以通过两种方式配置 GRE 隧道:

  1. ip link add 名称 gre1 类型 gre ...
  2. ip 隧道添加 gre1 模式 gre ...

在创建的 Linux 资源、性能等方面,两者之间有什么区别吗?其中一种方法是过时的吗?

干杯。

答案1

两个 iproute2 命令都与同一个内核交互,它们除了这种通信之外不实现任何其他功能,这实际上意味着您在性能方面不会遇到任何差异。

从中可以看出相关承诺 ip link使用更新颖的内核接口 — rtnl_link,相比之下ip tunnel:“…

这是通过“ip link”命令访问的。以前的隧道配置接口“ip tunnel”保持不变,应保留以兼容旧内核。…

“…”

答案2

(抱歉,我输入的是答案而不是评论,因为评论太长了……)

不久前我遇到了和你一模一样的问题,所以我阅读了的源代码iproute2。正如poige所说,ip link使用与不同的接口ip tunnelip tunnel使用ioctl SIOCGETTUNNELSIOCADDTUNNEL等,而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 轻量级隧道

相关内容