一個小實驗: Coralized Web Proxy
作者:gugod 發佈於: ,更新於: #proxy前幾天突發奇想,在 Twitter 上問了這麼一句:
Wonder if there's any p2p-based web caching proxy implementation.
直接 google 「p2p-based web caching proxy implementation」這個字串的話,找到的都是論文,這一點讓我很感興趣。
而後 gslin 立刻點出也許 CoralCDN 是一種。後來想想十分正確。CoralCDN 骨子裡確實是以 P2P 的方式散佈檔案(雖然僅為伺服器之間的 p2p),並且在各節點都有 content cache。於是我花了 30 分鐘寫了一個小 proxy。程式碼如後:
需安裝 CPAN 的 HTTP::Proxy 模組。執行後的 proxy 網址是本機 3128 port,也就是 http://localhost:3128/。
正如 gslin 指出的, p2p 傳檔案本來就不會比較快,不過我自已試用了兩天,發現了以下的特點:
- 瀏覽本來就慢的(比如大陸網站)網站的加速效果很明顯
- 對於本來就很快的網站等於是自殘
- google 的網站,如 youtube,原本就有偵測地區並導到比較快的伺服器上。在使用 coralized proxy 的狀況之下,常常被導到日本去。
- 其他有自動偵測地區的網站,如 cpan.org,也一樣等於無效。
- 有些網站的登入狀態會綁來源 IP 位址 ,此時會發現自已在看頁面時一下是登入狀態、一下不是。
後兩點的症頭基本上跟用 Tor 當 proxy 伺服器完全相同。這其實也可以預期,因為另一終端的節點,也就是實際連到目標網站的節點,時常變化的關系。但我認為有以下的不同之處:
- Tor 會刻意將連線匿名化。因此會故意切換終端以及中介的節點。這一點可以用 Tor 的 GUI 程式觀察連線狀態而略知一二。
- 相較之下,CoralCDN 多半會優先找到有資料、比較近的節點。因此用了一陣子之後,可以感受到反應時間變快了。
也就是說,雖然都是 p2p 架構,但 Tor 的優化方向是將連線「匿名化」,而 CoralCDN 則是優先找到已經有資料的節點。因此後者的償還效果會逐漸變好,會愈用愈順。
不過這樣的 proxy 實際上倒底有什麼用效益呢,其實並不明顯。除了這個架構免費、差不多是等於 open proxy、速度也還可以接受之外,目前想不到什麼實際的好處。