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

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

检查_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

运行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)

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

  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...

ip隧道秀

tunl0: ip/ip  remote any  local any  ttl inherit  nopmtudisc

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

@Danila Ladner:通过 Google 搜索,我发现link 的观点和你一样:

我的隧道不工作:

ifconfig tunl<n>报告错误和碰撞

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

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

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

@Sergey Vlasov

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)

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


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

@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

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

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)

答案1

正如 quanta 所说,我建议他拆除隧道(如果是用 构建的)ifconfig并用 重建它ip。几年前我在 Centos 5 内核 2.6.25 上遇到过类似的问题,就我的情况而言,它解决了这个问题,但我也在 IRC 上咨询网络人员和开发人员为什么会出现这个问题,因为我需要在生产环境中使用该路由,并且需要安排停机时间来清除它。我不记得具体情况,到目前为止也没有任何确凿的证据,但 Kuznetsov(此事内核源代码的原始重要贡献者)建议用 重建它,ip因为他发现 存在问题ifconfig。我希望这能帮助 quanta 解决他的问题。

离题:所以,底线是我自己很愚蠢,使用了很多ifconfig,而且很难切换到ip,只要我继续处理旧的 Solaris 8 盒子和 bsd 盒子。

答案2

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

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

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

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

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

相关内容