Linux 2.4.20 以后内核的ECN问题

发表于:2007-07-04来源:作者:点击数: 标签:
问题描述: 在安装了2.4.20以后内核的 Linux ,在连接如意通邮箱的smtp端口的时候,出现timeout的问题。在2.4.18内核和其他操作系统上没有这个问题。 Dec1417:10:58mail1postfix/smtp[5286]:D624020108F:to=,relay=none,delay=33,status=deferred(connecttos

问题描述:
在安装了2.4.20以后内核的Linux,在连接如意通邮箱的smtp端口的时候,出现timeout的问题。在2.4.18内核和其他操作系统上没有这个问题。

Dec 14 17:10:58 mail1 postfix/smtp[5286]: D624020108F: to=, relay=none, delay=33, status=deferred (connect to smtp.ruyi.com[211.97.168.172]: Connection timed out)

cz:~# telnet smtp.ruyi.com 23
Trying 211.97.168.172...
telnet: Unable to connect to remote host: Connection timed out


问题原因:
在2.4.20以后的内核里面,增加了一个 ECN 功能:
TCP Explicit Congestion Notification support
CONFIG_INET_ECN
Explicit Congestion Notification (ECN) allows routers to notify
clients about network congestion, resulting in fewer dropped packets
and increased network performance. This option adds ECN support to
the Linux kernel, as well as a sysctl (/proc/sys/net/ipv4/tcp_ecn)
which allows ECN support to be disabled at runtime.

Note that, on the Internet, there are many broken firewalls which
refuse connections from ECN-enabled machines, and it may be a while
before these firewalls are fixed. Until then, to aclearcase/" target="_blank" >ccess a site
behind such a firewall (some of which are major sites, at the time
of this writing) you will have to disable this option, either by
saying N now or by using the sysctl.

这个功能在和有些老的防火墙通讯的时候,会产生问题。


解决办法:
1)
echo "0" > /proc/sys/net/ipv4/tcp_ecn
2)
sysctl -w net.ipv4.tcp_ecn=0
3)编辑 /etc/sysctl.conf
net.ipv4.tcp_ecn=0
4)编译内核的时候,去掉 ECN 选项

相关链接:
http://lists.debian.org/debian-user/2003/debian-user-200304/msg02277.html
http://www.rfc-editor.org/rfc/rfc3168.txt

 好好先生 回复于:2003-12-16 15:30:39
是你自己总结的吗?

原文转自:http://www.ltesting.net