標籤:dpdk
intel給的sample文檔中關於Exception Path Sample Application例子的解釋已經很清楚了,但是對於我這個剛剛接觸網關知識的人來說還是有點陌生。
引用他們的圖例:資料流 流向圖
過程分析:
線程CoreA0從port0讀資料並寫到tapA0;
線程CoreB1從tapB1讀資料並寫到port1;
這是我們需要建立一個橋接器br0來串連tapA0和tapB1,這樣他們就可以基於鏈路層mac直接發資料了。
一、對應intel dpdk例子中已經根據core id建立好了tap_dpdk_nn #nn就是core id
ifconfig tap_dpdk_00 up
ifconfig tap_dpdk_03 up
二、建立橋並加入tap
brctl addbr "br0"
brctl addif br0 tap_dpdk_00
brctl addif br0 tap_dpdk_03
ifconfig br0 up
三、發送命令產看資料包收發情況:
sudo killall -USR1 exception_path
在另一個運行程式的終端可以看到:
======= ====== ============ ============ ===============
Lcore Port RX TX Dropped on TX
------- ------ ------------ ------------ ---------------
0 0 14 14 0
1 1 0 0 0
2 0 0 0 0
3 1 16 16 0
======= ====== ============ ============ ===============
如果能到這裡,說明你已經成功了。
但是我當時折騰了一段時間沒有成功,原因說起來很簡單:沒有關閉防火牆(fedora 預設是開啟防火牆的,並且還有加強版防火牆)
四、下面關閉防火牆:
1、關閉加強版防火牆SELinux:
開啟檔案sudo vi /etc/selinux/config
把 SELINUX=enforcing
改成SELINUX=disabled
儲存。
2、關閉防火牆iptables:
sudo service iptables stop
sudo service iptables disable #不知道這兩個哪個有用
查看防火牆狀態:
[email protected] ~]$ sudo service iptables status
Redirecting to /bin/systemctl status iptables.service
iptables.service - IPv4 firewall with iptables
Loaded: loaded (/lib/systemd/system/iptables.service; disabled)
Active: inactive (dead)
CGroup: name=systemd:/system/iptables.service
3、最後需要重啟伺服器。
五、扯一下:
intel文檔裡面應該說名外部網線應該怎麼樣串連部署,怎麼樣發包,怎麼樣把包傳給port0等等。
我是弄了個發報機,直接把網線插到port0上的。初學不知道這個。
管理TAP連接埠並加入橋接器 ----------intel dpdk 例子:Exception Path Sample Application