2007年9月23日

家裏網路架構之變化-1(改用MPD+pf)

話說前陣子辦了中華電信的FTTB之後,速度真的是快非常多阿~~
不比較還好,一比較就深深地為東森(亞太)那爛到爆炸的網路品質感到非常不爽,之前竟然可以忍耐這麼久,人真是容易滿足.... = =||
辦了中華電信的FTTB之後,發現之前的NAT主機(PII-300 64MB RAM FreeBSD 5.5-STABLE)不太夠力了,這真的是讓人感到不可思議,因此打算更換電腦,目前已經更新完成,換成了前任桌機K7度龍800,並且make world將FreeBSD更新到6.2-STABLE。
這次換FTTB之後,之前的網路設定幾乎重新設定了,在使用東森時,因為是用DHCP,不需要PPPoE撥接,這也是我遲遲不願意換ISP的主要原因,畢竟要將設定上手,要一點時間,這會造成網路無法使用的窘境。
原本使用東森時,使用DHCP取得IP,並使用IPFilter來建置NAT防火牆,現在則改為使用MPD進行PPPoE撥接,並使用pf來建置NAT防火牆,雖然IPFilter已經是kernel級的NAT了,可是它不具備QoS的能力,而pf是FreeBSD自5.5開始,從OpenBSD移植來的防火牆,它提供ALTQ來進行QoS的管制。
這次的設定更新其實很循序漸進,一開始先使用FreeBSD內建的ppp進行PPPoE撥接,並使用內建的NAT功能(使用最早期的natd完成),但是它是使用者層級的PPP撥接程式,它的NAT(natd)也是使用者層級的防火牆,很吃系統資源,因此逐步改為MPD+IPFilter,之後再改為MPD+pf。

升級到pf之後,照例對QoS進行些微設定,參照了
http://www.chweng.idv.tw/swintro/cfos.php
http://www.benzedrine.cx/ackpri.html

這兩個網頁後,簡單的對TCP ACK進行優先權設定,看起來是有點效果的,至少chw來時,我問他,然後當場用2個FileZilla對ftp.adsl.hinet.net進行上傳和下載,下載能夠維持在全速,上傳則會浮動的變化,這看來應該就是有效了~

再更新了軟體之後,這時候自然而然的,會想知道全速下載、上傳時,系統的負載量如何~
很驚人的,出現了令人意外的情況。
在PII-300的電腦上,當全速在下載時(每秒1.1~1.2MBytes),使用top來監測,發現雖然系統的Load幾乎都是0.0x,可是CPU的interrupt竟然高達30%,甚至出現過40%,這表示當全速在下載時,FreeBSD的系統中,CPU有1/3甚至到接近1/2的時間都在進行中斷操作,這是否意味著CPU花了大量的時間在切換kernel mode和user mode?
因此,我決定更新電腦,因為在10M/2M的寬頻中,10M的下載速度(1.2MBytes)就會讓CPU這麼忙碌了,如果未來更新到20M、30M、50M甚至100M時,PII-300似乎是無法擔負這樣的工作量了。
現在更新到K7之後,在全速下載時,CPU的interrupt降低到了10%上下,大約是9%~11%之間跳動,情況好了很多~
不過我也想了一下,interrupt的數量可能並沒有減少,但是因為K7-800的時脈比PII-300高了2倍~3倍,有可能因此讓interrupt佔據CPU的時間相對減少了1/3。

此外,在使用了MPD之後,現在使用MPD最新版本4.3版後,也增加了新的功能,那就是PPPoE-Relay。
所謂的PPPoE-Relay,它和DHCP Relay類似,它們都可以將網路protocol的資訊進行轉發,PPPoE Relay可以將PPPoE的訊息轉發出來,而DHCP Relay則可以將另一個網路段的DHCP Server資訊轉發到這個網路段。
PPPoE Relay的功能簡單的說,就是可以讓NAT下面的電腦,也可以進行PPPoE的撥接,這樣一來,只要我想要真實IP,我可以在任何時候,用中華電信的撥接帳號、密碼,直接用PPPoE撥接來取得真實IP,而且這樣的操作,不會影響到目前的工作,像是網路芳鄰...等,都不會因此斷線,MSN則是會瞬斷後重連。

沒有留言: