LVS-TUN:ifconfig 显示 tunl0 接口的错误和冲突?

qua*_*nta 4 networking linux ifconfig

Check_MK给我发了一封电子邮件,内容如下:

***** Nagios *****

Notification Type: PROBLEM

Service: Interface 5
Host: foo
Address: x.y.z.t
State: CRITICAL

Date/Time: Fri May 3 10:02:40 ICT 2013

Additional Info: CRIT - [tunl0] (up) speed unknown, in: 3.39MB/s, out: 0.00B/s, out-errors: 100.00%(!!) = 0.1
Run Code Online (Sandbox Code Playgroud)

运行ifconfig,我得到:

tunl0     Link encap:IPIP Tunnel  HWaddr   
          inet addr:x.y.z.t  Mask:255.255.255.255
          UP RUNNING NOARP  MTU:1480  Metric:1
          RX packets:92101704629 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:652 dropped:0 overruns:0 carrier:0
          collisions:652 txqueuelen:0 
          RX bytes:18941091817671 (17.2 TiB)  TX bytes:0 (0.0 b)
Run Code Online (Sandbox Code Playgroud)

注意错误和碰撞。我知道冲突字段的非零值表示网络拥塞的可能性。但:

  1. 确切的原因可能是什么?我该如何排除故障?
  2. 有没有类似于ethtoolIPIP Tunnel 的接口?

修改信息 ipip

filename:       /lib/modules/2.6.18-194.17.1.el5/kernel/net/ipv4/ipip.ko
license:        GPL
srcversion:     288C625C7521D577F7AD9E4
depends:        tunnel4
vermagic:       2.6.18-194.17.1.el5 SMP mod_unload gcc-4.1
module_sig: 883f3504ca37590565662cff69dd0be11277ff0a08d3a3...
Run Code Online (Sandbox Code Playgroud)

ip隧道显示

tunl0: ip/ip  remote any  local any  ttl inherit  nopmtudisc
Run Code Online (Sandbox Code Playgroud)

ICT 2013 年 5 月 6 日星期一 10:05:01 更新

@Danila Ladner:通过谷歌搜索,我发现这个链接与你有相同的观点:

我的隧道不起作用:

ifconfig tunl<n>报告错误和冲突

您是否使用ifconfig, 也许ifconfig ... pointopoint ...来设置您的隧道?

关掉它; 删除它; 重新开始ip

但您能进一步详细说明吗?

@谢尔盖·弗拉索夫

tunl0     Link encap:IPIP Tunnel  HWaddr   
          inet addr:x.y.z.t  Mask:255.255.255.255
          UP RUNNING NOARP  MTU:1480  Metric:1
          RX packets:81621711099 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:692 dropped:0 overruns:0 carrier:0
          collisions:692 txqueuelen:0 
          RX bytes:16915649263419 (15.3 TiB)  TX bytes:120 (120.0 b)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么接口有2个传输包tunl0?我将设置一个事件处理程序tcpdump,以便在collisions计数器增加时运行。让我们拭目以待,看看会发生什么。


更新于 5 月 7 日星期二 14:05:39 ICT 2013

@Danila Ladner:为了排除这种可能性,我尝试了你的建议:

ifdown tun0
modprobe -r ipip
modprobe ipip
ip addr add dev tunl0 x.y.z.t/32 brd x.y.z.t
ip link set tunl0 up
Run Code Online (Sandbox Code Playgroud)

我正在等待问题是否解决:

tunl0     Link encap:IPIP Tunnel  HWaddr   
          inet addr:x.y.z.t  Mask:255.255.255.255
          UP RUNNING NOARP  MTU:1480  Metric:1
          RX packets:19630041 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4083271398 (3.8 GiB)  TX bytes:0 (0.0 b)
Run Code Online (Sandbox Code Playgroud)

Ser*_*sov 5

collisions隧道接口的计数器在ipip两种情况下会增加:

  1. 如果封装数据包的下一跳是同一个隧道接口: ipip.c第437行

  2. 如果封装数据包的下一跳的路径MTU小于68: ipip.c第447行

这两种情况通常只有在封装流量循环回到同一个隧道时才会发生(第一种情况是直接循环,第二种情况发生在路径 MTU 由于一些更复杂的循环而减少到零时,但不是立即发生)由第一个条件检测到)。一个可能的原因是封装数据包的正常路由暂时关闭,而这些数据包的下一个最佳路由恰好是隧道本身,从而导致环路。

然而,在 LVS-TUN 情况下,根本不应该向隧道发送任何内容(在这种情况下,隧道接口是仅接收的),除非某些误导软件通过tunl0.