同時使用多網路卡提升樹莓派網路利用率

陌辭寒發表於2017-11-19

樹莓派 3 自帶的有線網路卡是 100M 的,無線網路卡是 72M 的,都比較慢。想提升網速的話,最直接的方法是使用 usb 網路卡,千兆的有線網路卡或者 450M 以上的 2.4GHz 無線網路卡或者 5GHz 無線網路卡。但因為樹莓派 3 的 usb 介面是 2.0 的,而且 tf 卡也要共享頻寬,所以也提升不了太多,而高速的 usb 網路卡也不便宜(千兆 usb 有線網路卡最便宜大概要 50 多,450M 以上的 usb 無線網路卡更貴),而且大家手頭上通常沒有閒置的,為此購買不大值得。

那麼一個間接的方法是同時使用有線和無線網路卡,這樣合理使用的話速度可以疊加。因為我有一個閒置的 300M usb 無線網路卡,所以將它和內建有線網路卡一起使用(因為測試過,它和內建無線網路卡一起使用的話,會互相影響,速度反而更慢,所以不用內建無線網路卡了),這樣理論上就有 400M 的頻寬了,當然實際上達不到。

但一起使用的話需要一些技術手段,如果只是(在同一個網段)簡單啟用雙網路卡,雖然兩個 ip 地址都能用,但實際上只有一個網路卡會工作,因為所有的流量都走到了路由表裡第一個網路卡了,這樣肯定是不行的。那麼大致有如下幾個方法:
1、兩個網路卡分別接入不同的網段。
2、兩個網路卡繫結在一起使用。
3、配置路由表,讓兩個網路卡在同一個網段可以同時使用。

因為我的網路環境很簡單,只有一個路由器和一個網段,所以方法 1 我就不考慮了。但如果有兩個網段的話,方法 1 是最簡單的。開始時我想使用方法 2,將兩個有線網路卡繫結到一起來共享 1 個 ip 是比較簡單的,但將一個有線網路卡和一個無線網路卡繫結到一起,則麻煩很多,網上資料也比較雜亂。另外因為我配置也是通過 ssh 進行的,不能把網路連線搞斷了。還好我還有內建無線網路卡可以使用,如果一共只有兩個網路卡,那幾乎就沒辦法配置了。但即使這樣也很麻煩,最後幾經嘗試都以失敗告終。

最後只能使用方法 3。方法 3 的好處是配置簡單,但缺點是使用起來比較麻煩,需要自己來做負載均衡,不過靈活性比較高。

我路由器地址是 192.168.1.1,有線網路卡是 eth0,無線網路卡是 wlan0,在路由器上分別繫結到 192.168.1.6 和 192.168.1.7。那麼在兩個網路卡都連線上後,只需要執行這樣一個指令碼,就可以讓兩個網路卡同時工作了:

ip route add 192.168.1.0/24 dev eth0 src 192.168.1.6 table 100
ip route add default via 192.168.1.1 dev eth0 table 100
ip rule add from 192.168.1.6 lookup 100

ip route add 192.168.1.0/24 dev wlan0 src 192.168.1.7 table 200
ip route add default via 192.168.1.1 dev wlan0 table 200
ip rule add from 192.168.1.7 lookup 200複製程式碼

具體效果是通過 192.168.1.6 訪問樹莓派會走有線網路卡,通過 192.168.1.7 訪問樹莓派會走無線網路卡。如果從樹莓派下載多個檔案,可以通過輪詢或者隨機選擇 ip 來生成檔案地址列表檔案,然後使用 aria2c -i 檔案列表 來下載,就可以同時使用兩個網路卡了。

如果是在樹莓派往外連線,還是要看路由表裡哪個網路卡在前邊(用 ip route 命令檢視,一般有線網路卡在前邊),另外也可以在命令裡指定網路卡,比如用 curl --interface eth0 或者 wget --bind-address 192.168.1.6

可以使用了後,重點就是速度能提升多少了。在我的環境,從樹莓派往電腦下載檔案,樹莓派內建有線網路卡能達到 11.3 MB/s,300M 的無線網路卡,速度最快能達到 21 MB/s 出頭,但不穩定,容易降到十幾兆。一起使用的話,最快可以達到 30 MB/s 出頭,但容易降到 25 - 26 MB/s。效果還是非常明顯的。

相關文章