上次和大家分享了如何燒錄和安裝Openwrt到BananaPi R2,運行Openwrt的R2目前就具備路由器的功能了,這次我們來看看R2運行Openwrt的性能如何,同時也會講解一些常用的網絡知識。
首先看一下硬件上的設計:
可以看出硬件上,R2設計了一個wan口和4個lan口;
這里可能有人會有疑問,什么是wan口,什么是lan口?
wan(Wide Area Network)表示廣域網,lan(Local Area Network)表示局域網;簡單的講就是wan口是連接Internet上網用的,lan口是R2的局域網口。
接下來,我們再來看一下軟件,執行命令“ifconfig”
root@LEDE:/# ifconfig br-lan Link encap:Ethernet HWaddr 6A:2D:BB:A5:19:51 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth0 Link encap:Ethernet HWaddr 6A:2D:BB:A5:19:51 inet6 addr: fe80::682d:bbff:fea5:1951/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:17 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:1834 (1.7 KiB) Interrupt:211 eth1 Link encap:Ethernet HWaddr DA:65:D4:6A:B6:96 inet6 addr: fe80::d865:d4ff:fe6a:b696/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:187 errors:0 dropped:0 overruns:0 frame:0 TX packets:44 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:61769 (60.3 KiB) TX bytes:4958 (4.8 KiB) Interrupt:211 lan0 Link encap:Ethernet HWaddr 6A:2D:BB:A5:19:51 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lan1 Link encap:Ethernet HWaddr 6A:2D:BB:A5:19:51 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lan2 Link encap:Ethernet HWaddr 6A:2D:BB:A5:19:51 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lan3 Link encap:Ethernet HWaddr 6A:2D:BB:A5:19:51 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:28 errors:0 dropped:0 overruns:0 frame:0 TX packets:28 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:2364 (2.3 KiB) TX bytes:2364 (2.3 KiB) wan Link encap:Ethernet HWaddr DA:65:D4:6A:B6:96 inet addr:192.168.2.144 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::d865:d4ff:fe6a:b696/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:187 errors:0 dropped:0 overruns:0 frame:0 TX packets:37 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:58403 (57.0 KiB) TX bytes:3774 (3.6 KiB)
命令執行完后可以看到R2有1個wan,4個lan,1個網橋br-lan,2個網卡eth0,eth1,1個本地環回lo網口;
這里注意看每個網口的HWaddr即mac地址,可以發現wan的HWaddr與eth1是一樣的,br-lan,lan0~lan3的HWaddr與eth0是一樣的,由此可初步斷定,wan口是由網卡eth1生成的虛擬網卡,br-lan和lan0~lan3則是由eth0生成的;接下來再查看一下網口配置文件 "/etc/config/network" 來確定網口是如何配置的,是否和我們的初步判斷是一致的;
root@LEDE:/# cat /etc/config/network config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'lan' option type 'bridge' option ifname 'lan0 lan1 lan2 lan3' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60' config interface 'wan' option ifname 'wan' option proto 'dhcp'
從配置文件可以看出,一共定義了3個網口 loopback,lan,wan;lan的類型(option type)是網橋(bridge),一共定義了4個虛擬網口(option ifname 'lan0 lan1 lan2 lan3'),采用靜態IP(option proto 'static');wan口就是wan,IP采用動態分配(dhcp)的方式。
如果修改了/etc/config/network文件,可以執行:“/etc/init.d/network reload” 使其生效。
如果想了解更多/etc/config/network,可查看這里:https://openwrt.org/docs/guide-user/base-system/basic-networking
這里留個問題,這里的網絡配置是如何與網卡驅動對應起來的呢?思考一下這個問題,后續分析代碼的時候會講解到。
接下來我們來評測一下R2性能的好壞,那么如何去檢測呢?這里引申一個概念benchmark,那么什么是benchmark,顧名思義就是基准的意思,而Linux有豐富的工具來測試benchmark,這里我們測試網絡就需要用到其中一個工具“iperf”;不解釋過多,先簡單感受一下;用“iperf”測試網口通信性能,需要兩台設備處於同一個局域網,一台作為server,一台作為client,這里我用PC作為server端,R2作為client端,測試R2 wan的網口性能:
- 創建server端
jack@jack: iperf3 -s #創建服務器端 ----------------------------------------------------------- Server listening on 5201 -----------------------------------------------------------
- 在R2上創建client端,測試TCP的傳輸速率
root@LEDE:/# iperf3 -c 192.168.2.148 #PC server的IP為192.168.2.148 Connecting to host 192.168.2.148, port 5201 [ 5] local 192.168.2.166 port 49034 connected to 192.168.2.148 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 66.5 MBytes 557 Mbits/sec 0 331 KBytes [ 5] 1.00-2.00 sec 65.2 MBytes 547 Mbits/sec 0 331 KBytes [ 5] 2.00-3.00 sec 65.6 MBytes 550 Mbits/sec 0 331 KBytes [ 5] 3.00-4.00 sec 65.4 MBytes 548 Mbits/sec 0 331 KBytes [ 5] 4.00-5.00 sec 65.2 MBytes 547 Mbits/sec 0 331 KBytes [ 5] 5.00-6.00 sec 65.3 MBytes 548 Mbits/sec 0 331 KBytes [ 5] 6.00-7.00 sec 65.4 MBytes 548 Mbits/sec 0 331 KBytes [ 5] 7.00-8.00 sec 65.7 MBytes 551 Mbits/sec 0 331 KBytes [ 5] 8.00-9.00 sec 65.4 MBytes 549 Mbits/sec 0 331 KBytes [ 5] 9.00-10.00 sec 65.3 MBytes 548 Mbits/sec 0 331 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 655 MBytes 549 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 654 MBytes 549 Mbits/sec receiver
- 在R2上創建client端,測試UDP的傳輸速率
root@LEDE:/# iperf3 -u -c 192.168.2.148 Connecting to host 192.168.2.148, port 5201 [ 5] local 192.168.2.166 port 43646 connected to 192.168.2.148 port 5201 [ ID] Interval Transfer Bitrate Total Datagrams [ 5] 0.00-1.00 sec 129 KBytes 1.05 Mbits/sec 91 [ 5] 1.00-2.00 sec 127 KBytes 1.04 Mbits/sec 90 [ 5] 2.00-3.00 sec 129 KBytes 1.05 Mbits/sec 91 [ 5] 3.00-4.00 sec 127 KBytes 1.04 Mbits/sec 90 [ 5] 4.00-5.00 sec 129 KBytes 1.05 Mbits/sec 91 [ 5] 5.00-6.00 sec 129 KBytes 1.05 Mbits/sec 91 [ 5] 6.00-7.00 sec 127 KBytes 1.04 Mbits/sec 90 [ 5] 7.00-8.00 sec 129 KBytes 1.05 Mbits/sec 91 [ 5] 8.00-9.00 sec 127 KBytes 1.04 Mbits/sec 90 [ 5] 9.00-10.00 sec 129 KBytes 1.05 Mbits/sec 91 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-10.00 sec 1.25 MBytes 1.05 Mbits/sec 0.000 ms 0/906 (0%) sender [ 5] 0.00-10.00 sec 1.25 MBytes 1.05 Mbits/sec 0.016 ms 0/906 (0%) receiver
這里看出R2的wan口,TCP的速率大約為549Mbits/s,速度性能初步去看不能算特別好,后續分析一下代碼的時候,我們再回來看這個問題,是什么原因導致的。
Openwrt相關資源:https://openwrt.org/
歡迎大家批評指正,轉載請注明出處,多謝。