Linux 2.4內核包含了大量的新功能,所以你迫不及待地下載了所需文件,編譯、重新引導——系統正常啟動了!於是你興奮不已,不一會兒,你又開始了日常的工作。
到了午休時間,你想去E-Trade和NASDAQ的網站看看股票的情況。“糟糕!”,當浏覽器連接失敗時你皺起了眉頭,“真奇怪,幾乎所有的連接在同一時刻斷掉了。”兩個小時後,你再次試著打開這兩個網站,仍然無法連接。你才開始懷疑是不是系統出了問題。
唯一的改動是內核。於是你用老版本的內核重新引導,這一次所有的網站都能打開了。再用2.4的內核引導,又打不開了。這是怎麼回事?
原來,新的Linux內核用的是一個全新的網絡協議,叫做ECN(Explicit Congestion Notification)。IETF在RCF(Request for Comment)文檔中對ECN做了詳盡的說明。(http://www.ietf.org/)
簡單來講,ECN允許主機或路由器之間進行明確的通報,以在網絡堵塞時提高整體的傳輸速度。但問題是,並不是所有的路由器及網絡設備都支持ECN。事實上,有些老式的設備把ECN交換包視為非法,並且當做垃圾信息全部丟棄。現在終於明白為什麼E-Trade和NASDAQ的網站打不開了。E-Trade和NASDAQ的服務器都不支持ECN,同樣,這種問題在其它網站也有可能會發生。
新協議的普及總是一個漫長的過程,那麼現在怎麼辦?有一個簡單的辦法,並且無需保留一份2.2.x內核。方法就是:在重新編譯2.4內核的時候,去掉CONFIG_INET_ECN這個選項。
還有一個方法或許更簡單,連重新編譯都不用——用/proc虛擬文件系統的sysctl特性動態地關掉ECN:
在控制台下輸入:
echo "0" > /proc/sys/net/ipv4/tcp_ecn
這樣,ECN功能就會被關掉,直到下一次啟動。如果把其中的“0”換成“1”,表示把ECN打開。當然,你也可以把這行命令寫進rc.local,就不用每次都輸入了。
讓我們再用2.4內核啟動,關掉ECN。試試連接NASDAQ,怎麼樣,又正常了吧?不過,還是讓我們期待著ECN早日普及,因為它真的能有效地提高網速呢!
摘自:ChinaByte Linux專區授權轉載