|
本文硬件平臺以飛凌嵌入式OK1028A-C開發板為基礎進行講解,其它LS1028產品,由于各個廠家設置不同會有所差異,請參考使用。本文檔主要介紹 NXP LS1028A開發板網絡中的應用測試。包括 DPDK基本環境測試、 IPSEC基本環境測試、OpenSSL基本環境測試、Lighttpd測試、Samba測試。 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 下面以二層轉發和三層轉發為例,測試OK1028A-C平臺的DPDK環境。首先,使用DPDK環境,需要修改設備樹,將網絡配置到用戶態。需要使用到的設備樹文件: 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 1、 二層轉發測試二層轉發網絡拓撲如下圖所示: 使用OK1028A-C平臺eno0和swp0,對Linux Host和OK1012A-C之間的數據進行轉發。Linux Host和OK1012A-C您可以替換成其他的網絡設備。 配置OK1028A-C: l2fwd -c 0x3 -n 1 -- -p 0x3 -q 1 --no-mac-updating
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/eth0 echo "dst 192.168.1.200" > /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 注意:如果您的主機不含有pktgen驅動,請自行配置內核編譯驅動。 查看OK1028A-C: 查看OK1012A-C: 2、 三層轉發測試三層轉發網絡拓撲如下圖所示: 使用OK1028A-C對192.168.1.0網段和192.168.2.0網段之間的數據進行轉發。 配置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
配置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、OK1028A-C、Host2,使用以下命令測試轉發性能: 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 原文鏈接:https://www.forlinx.com/article_view_570.html |