LS1028A開發板網路應用測試
OK1028A-C平臺基於NXP LS1028A處理器設計,雙核ARM Cortex-A72,主頻最高1.5GHz,板載2GB DDR4 RAM,8GB ROM;原生支援6個Gbit Ethernet,支援TSN的乙太網交換機和乙太網控制器,可支援融合的IT和OT網路;
OK1028A-C所採用的CPU屬於NXP Layerscape®通訊處理器,在網路吞吐效能方面更具優勢,而且原生網口數量也比較多,下面對LS1028A開發板在網路中的應用進行測試。
一、 Samba測試Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟體,由伺服器及客戶端程式構成。SMB(Server Messages Block,資訊服務塊)是一種在區域網上共享檔案和印表機的一種通訊協議,它為區域網內的不同計算機之間提供檔案及印表機等資源的共享服務。SMB協議是客戶機/伺服器型協議,客戶機透過該協議可以訪問伺服器上的共享檔案系統、印表機及其他資源。透過設定“NetBIOS over TCP/IP”使得Samba不但能與區域網絡主機分享資源,還能與全世界的電腦分享資源。
飛凌LS1028A平臺預設安裝samba服務,可以透過網路訪問OK1028A-C的sata硬碟等儲存裝置。
安裝samba
root@forlinx:~# apt-get install samba
建立使用者及共享目錄
root@forlinx:~# groupadd share
root@forlinx:~# useradd share -g share
root@forlinx:~# smbpasswd -a share
根據提示輸入密碼
root@forlinx:~# chmod 777 -R /share
修改配置檔案:
root@forlinx:~# vi /etc/samba/smb.conf
檔案末尾加上如下
[share]
comment = Share Folder require password
browseable = yes
path = /share
create mask = 0777
directory mask = 0777
valid users = share
force user = nobody
force group = nogroup
public = yes
writable = yes
available = yes
如果您對配置檔案有修改,請重啟samba:
root@forlinx:~# systemctl restart smbd.service
Windows訪問測試:
檢視開發板IP:
在同一區域網內的windows上開啟執行,輸入\\192.168.1.200
訪問使用者名稱和密碼,即可看到檔案系統/share目錄中的檔案
二、 Lighttpd測試飛凌LS1028平臺lighttpd服務預設開機啟動,為matrix桌面提供WEB服務。輸入開發板IP,即可將matrix桌面顯示在瀏覽器中。
三、 OpenSSL基本環境測試安全套接字層(Ssl)協議是應用最廣泛的應用協議,透過使用諸如aes、des和3des等密碼演算法對資料進行加密,在傳輸過程中對資料進行保護。
測試對稱加密rsa速度
root@forlinx:~# openssl speed rsa1024
測試AES對稱加密演算法:
root@forlinx:~# dd if=/dev/urandom of=test bs=1 count=5922
root@forlinx:~# openssl enc -aes-128-cbc -e -in test -out test.enc -pass pass:123 -pbkdf2
root@forlinx:~# openssl enc -aes-128-cbc -d -in test.enc -out test.dec -pass pass:123 -pbkdf2
root@forlinx:~# diff test test.dec
測試DES對稱加密演算法:
root@forlinx:~# dd if=/dev/urandom of=test bs=1 count=5922
root@forlinx:~# openssl enc -des-ede3-cbc -e -in test -out test.enc -pass pass:123 -pbkdf2
root@forlinx:~# openssl enc -des-ede3-cbc -d -in test.enc -out test.dec -pass pass:123 -pbkdf2
root@forlinx:~# diff test test.dec
四、 IPSEC基本環境測試該項功能設定較為複雜,建議在一定網路基礎上開展。需要開啟核心netfilter match ipsec功能,否則iptables不能被正常設定;如果提示raw表失敗,可以不匯入raw表,或者核心配置加raw表。
Gateway moon為OK1028A-Ceno0 swp0網口。其它client為標準pc機。
網路拓撲結構:
子網192.168.0.0/24使用ipsec加密通訊,子網192.168.1.0/24使用明文通訊。
重新配置核心
[*] Networking support --->
Networking options --->
[*] Network packet filtering framework (Netfilter) --->
Core Netfilter Configuration --->
<*> IPsec "policy" match support
[*] Networking support --->
Networking options --->
[*] Network packet filtering framework (Netfilter) --->
IP: Netfilter Configuration --->
<*> raw table support (required for NOTRACK/TRACE)
安裝Strongswan
apt-get install strongswan
所有使用ipsec的主機及閘道器均需安裝,非root許可權需要加sudo。
Gateway moon設定
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/strongswan.conf
/etc/ipsec.d/
ipsec.d目錄存放CA證書、私鑰和公鑰
1 路徑:OK1028A-C(Linux)使用者資料\工具\ipsec
moon相關檔案參照moon_server.tar.bz2
匯入iptables
iptables-restore < moon_iptables_1028.txt
ifconfig eno2 up
ifconfig swp0 up
ifconfig swp0 192.168.0.1
ifconfig eno0 192.168.1.250
Roadwarrior carol設定
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/strongswan.conf
/etc/ipsec.d/
ipsec.d目錄存放CA證書、私鑰和公鑰
1 路徑:OK1028A-C(Linux)使用者資料\工具\ipsec
相關檔案見carol_client.tar.bz2
匯入iptables
sudo iptables-restore < carol_iptables.txt
sudo ifconfig eth0 192.168.0.100
Client alice設定
alice位於192.168.1.0/24網段內,需要設定192.168.0.0/24閘道器地址
sudo ifconfig eth0 192.168.1.107
sudo route add -net 192.168.0.0/24 dev eth0
sudo route add -net 192.168.0.0 gw 192.168.0.1 netmask 255.255.255.0
啟動ipsec
a、在moon閘道器上執行
ipsec restart
b、在carol主機上執行
ipsec restart
ipsec up home
出現connection 'home' established successfully表示ipsec認證完成。
carol和alice的ping通訊
目前位於不同網段的carol和alice具備通訊功能,且carol所在子網內使用加密通訊。
carol主機對alice主機的ping。
在閘道器192.168.0.1和192.168.0.100之間傳遞的是ESP密文,經過解析產生了192.168.1.107對192.168.0.100回覆的明文。
五、 DPDK基本環境測試DPDK是使用者空間包處理的框架,專注於網路應用中資料包的高效能處理,具體體現在DPDK應用程式是執行在使用者空間上,利用自身提供的資料平面庫來收發資料包,繞過了Linux核心協議棧對資料包的處理過程。OK1028A-C平臺支援完整的DPDK環境,同時支援OVS-DPDK,底層基於DPDK的Open VSwitch。
DPDK的知識庫:
http://doc.dpdk.org/guides-17.05/linux_gsg/index.html
mv /boot/OK1028A-C.dtb /boot/OK1028A-C.dtb.bak
cp /boot/OK1028A-C-DPDK.dtb /boot/OK1028A-C.dtb
reboot
cd /usr/local/dpdk/enetc/
./dpdk_configure_1028ardb.sh
測試DPDK完成後恢復預設配置方法:
cp /boot/OK1028A-C.dtb.bak /boot/OK1028A-C.dtb
reboot
配置OK1028A-C:
l2fwd -c 0x3 -n 1 -- -p 0x3 -q 1 --no-mac-updating
引數說明-cCore mask 0xf使用2核-n記憶體通道數-pPort mask 0xc二進位制0011使用port1 port0-q每個核的佇列數量預設為1--no-mac-updating轉換後不替換MAC
配置OK1012A-C:
ifconfig eth0 192.168.1.200
tcpdump -i eth0 -vv -n -e
配置Linux Host:
ifconfig eth0 192.168.1.120
sudo modprobe pktgen.ko
echo "add_device eth0" > /proc/net/pktgen/kpktgend_0
echo "dst_mac 6e:56:7d:85:ce:4d" > /proc/net/pktgen/eth0echo "dst 192.168.1.200" > /proc/net/pktgen/eth0echo "pkt_size 64" > /proc/net/pktgen/eth0echo "count 1000000" > /proc/net/pktgen/eth0echo "start" > /proc/net/pktgen/pgctrl
注意:如果您的主機不含有pktgen驅動,請自行配置核心編譯驅動。
檢視OK1028A-C:
檢視OK1012A-C:
配置OK1028A-C:
DPDK中自帶的l3fwd lpm路由表與我們的網路拓撲環境不一致,因此需要修改程式碼,修改OK1028-linux-fs/flexbuild/packages/apps/dpdk/examples/l3fwd/l3fwd_lpm.c
修改說明:
收到的192.168.1.0/24網段資料使用port0輸出
收到的192.168.2.0/24網段資料使用port1輸出
在flex-build環境中使用flex-builder -c dpdk -a arm64 -m ls1028ardb 命令進行編譯。將編譯完的可執行程式packages/apps/dpdk/examples/l3fwd/build/l3fwd複製到開發板根目錄。
/l3fwd -c 0x3 -n 1 -- -p 0x3 -P -L --config="(0,0,0),(1,0,1)" \
--eth-dest=0,74:27:ea:f7:8e:10 --eth-dest=1,6e:56:7d:85:ce:4d
引數說明-cCore Mask-n記憶體通道數-pPort Mask-Ppromiscuous mode-L使用LPM--config(Port, Queue, Core)繫結埠佇列cpu核--eth-dest輸出埠對應的目的MAC地址
配置OK1012A-C:
ifconfig eth0 192.168.2.2
tcpdump -i eth0 -vv -n -e
配置Linux Host:
ifconfig eth0 192.168.1.120
modprobe pktgen.ko
echo "add_device eth0" > /proc/net/pktgen/kpktgend_0
echo "dst_mac E2:1C:5E:C0:19:88" > /proc/net/pktgen/eth0
echo "dst 192.168.2.2" > /proc/net/pktgen/eth0
echo "pkt_size 64" > /proc/net/pktgen/eth0
echo "count 1000000" > /proc/net/pktgen/eth0
echo "start" > /proc/net/pktgen/pgctrl
檢視OK1012A-C:
六、 OVS-DPDK基本環境測試注意:LS1028A開發板測試openvswitch時需要開啟核心CONFIG_OPENVSWITCH配置。
本節簡單介紹利用ovs-dpdk搭建如下圖的二層交換環境。
測試前請確保使用的是支援DPDK的裝置樹,同時執行過./dpdk_configure_1028ardb.sh
Host1:iperf3 -s
Host2:iperf3 -c 192.168.1.120 -i 1 -t 60
七、 TSN測試1、 Enetc PTP對時測試
注意:ptp測試時需要先使用apt-get install linuxptp命令安裝測試工具,預設核心沒有開啟enetc的硬體時間戳,測試時請開啟核心FSL_ENETC_HW_TIMESTAMPING配置項。
將兩塊ls1028的eno0使用網線直連,並分別設定以下引數:
Ls1028-A:
ifconfig eno0 up
ifconfig eno0 192.168.2.2
Ls1028-B:
ifconfig eno0 up
ifconfig eno0 192.168.2.3
ping 192.168.2.2
保證網路能夠ping通,檢視核心配置是否正確,是否支援硬體時間戳
環境設定完成之後進行如下測試:
Ls1028-A:
ptp4l -i eno0 -m -2
Ls1028-B:
ptp4l -i eno0 -s -m -2
master offset值表示從主裝置測量的偏移量(以納秒為單位);
s0,s1,s2表示時鐘伺服器的不同狀態,s0表示未鎖定,s1表示正在同步,s2表示鎖定,鎖定狀態表示不會再發生階躍行同步,只是緩慢調整。
2、Switch PTP對時測試
注意:ptp測試時需要先使用apt-get install linuxptp命令安裝測試工具。
將兩塊ls1028的swp0使用網線直連,並分別設定以下引數:
Ls1028-A:
ifconfig eno2 up
ifconfig swp0 up
ifconfig swp0 192.168.2.2
Ls1028-B:
ifconfig eno2 up
ifconfig swp0 up
ifconfig swp0 192.168.2.3
ping 192.168.2.2
保證網路能夠ping通,檢視核心配置是否正確,是否支援硬體時間戳
環境設定完成之後進行如下測試:
Ls1028-A:
ptp4l -i swp0 -m -2
Ls1028-B:
ptp4l -i swp0 -m -2 -s
master offset值表示從主裝置測量的偏移量(以納秒為單位);
s0,s1,s2表示時鐘伺服器的不同狀態,s0表示未鎖定,s1表示正在同步,s2表示鎖定,鎖定狀態表示不會再發生階躍行同步,只是緩慢調整。
Ø Enetc Qbv測試
tc qdisc add dev eno0 root handle 1: mqprio num_tc 8 map 0 1 2 3 4 5 6 7 hw 1
測試前保證eno0的網路暢通
cat > qbv0.txt << EOF
t0 00000000b 20000
EOF
tsntool
tsntool> verbose
tsntool> qbvset --device eno0 --entryfile ./qbv0.txt
tsntool> quit
ping 192.168.1.1
可見所有的gate關閉之後,網路已經不通。
TSN關於更詳細的測試內容請參考NXP LSDKUG_Rev20.04.pdf