試著把 rtorrent 升級到 0.8.2/libtorrent 0.12.2,新版修正了幾個嚴重的 memory leaks 與 EINTR signal handling 問題,以及 Super-seeding (Initial seeding).

由於 rtorrent 在 Debian sid 中一直都是 0.7.9,於是只好繼續自己維護一個新版本的 debian packages。Ubuntu intrepid 倒是已經是 0.8.2

編譯的時候,由於我的系統已經升級到 g++ 4.3 的緣故,必須配合 Header dependency streamlining
補入 C++ Headers。這個問題已經已經有人回報到 trac 上,詳細修改可以參考 Gentoo 的 patches. (libtorrent-0.11.9+gcc-4.3.patch, rtorrent-0.8.0+gcc-4.3.patch)。

雖然說 ISP 擋掉 BitTorrent 是很常見的事情,但是阻擋到影響一般日常用途就實在令人非常火大啦。調查起因是我試著在凱擘(東森媒體科技)用 OpenVPN 連回幾個位在 Hinet, Seednet, TANet 的伺服器上,在其他的 ISP 使用大致沒有問題,但是使用 Kbronet 總是會斷線,而且斷線方式是小量傳輸沒問題,但若傳輸量稍高就會被切斷連線。於是出現可以 ssh over OpenVPN 勉強可登入, 但是只要一 ls 就斷線的鳥事。原本 OpenVPN 的 server port 設定是 UDP 1194,改成 TCP 1194 後便沒有斷線問題。去電客服,當然死不承認有限制頻寬擋 P2P 軟體這件事情。問題是 Kbronet 除了 擋 BitTorrent 常用的 6881-6888 外,連其他的 UDP Ports 都一併擋掉,害我無法正常使用 OpenVPN 實在很惱人。

因此拿出 iperf + wireshark 實測一下,發現若是 Port 6881-6888 使用 TCP 瞬間就會收到TCP RST injections,而 UDP 也會收到莫名其妙的 ICMP Port unreachable 封包。這也就是為什麼 OpenVPN 老是斷線的原因。也因此如果在 Kbronet 用 BT 只用預設的 688x Ports, 下載會非常緩慢。

不過 Kbronet 看來尚未進化到 Content Filtering 的程度,將 rtorrent port 改到 80,未加密的 BitTorrent Connection 在 2M/256 的線路上大約可以衝到 215 KB. 一不做二不休也就把 DHT Port 改到 53 去了。

誰應該去把 Kbronet 加進 Bad ISPs 才對。(花了數分鐘才搞懂原來 wiki 編輯帳號得去 IRC 討,偏偏 #azureus-wiki Channel 裡面沒人。)