p4運行simple_switch
編譯p4程式
p4c -b bmv2 mine.p4 -o mine.bmv2
搭建網路拓撲
# First pair: veth0-veth1
sudo ip link add name veth0 type veth peer name veth1
sudo ip link set dev veth0 up
sudo ip link set dev veth1 up
sudo ip link set veth0 mtu 9500
sudo ip link set veth1 mtu 9500
sudo sysctl net.ipv6.conf.veth0.disable_ipv6=1
sudo sysctl net.ipv6.conf.veth1.disable_ipv6=1
# Second pair: veth2-veth3
sudo ip link add name veth2 type veth peer name veth3
sudo ip link set dev veth2 up
sudo ip link set dev veth3 up
sudo ip link set veth2 mtu 9500
sudo ip link set veth3 mtu 9500
sudo sysctl net.ipv6.conf.veth2.disable_ipv6=1
sudo sysctl net.ipv6.conf.veth3.disable_ipv6=1
# Second pair: veth4-veth5
sudo ip link add name veth4 type veth peer name veth5
sudo ip link set dev veth4 up
sudo ip link set dev veth5 up
sudo ip link set veth4 mtu 9500
sudo ip link set veth5 mtu 9500
sudo sysctl net.ipv6.conf.veth4.disable_ipv6=1
sudo sysctl net.ipv6.conf.veth5.disable_ipv6=1

BMv2 運行p4程式
普通運行
sudo simple_switch -i 0@veth0 -i 1@veth2 -i 2@veth4 mine.bmv2/mine.json &
運行時切換p4程式
-
在運行simple_switch時加入--enable-swap引數
sudo simple_switch -i 0@veth0 -i 1@vetn2 -i 2@veth4 mine.bmv2/mine.json -- --enable-swap &

-
啟動運行時CLI
simple_switch_CLI --thrift-port 9090 # 9090 為thrift默認埠(或者 simple_switch_CLI)

simple_switch_CLI 充當控制器
查看全部表格
show_tables

查看表格資訊
table_info ipv4_lpm # table_info <table-name>

添加轉發規則
table_add <table-name> <action-name> <match-data> => <parameter>
比如:
table_add ipv4_lpm ipv4_forward 10.10.0.0/16 => 0
table_add ipv4_lpm ipv4_forward 20.20.0.0/16 => 1
table_add ipv4_lpm ipv4_forward 30.30.0.0/16 => 2

查看轉發流表
table_dump ipv4_lpm # table_dump <table-name>

監聽埠
tcpdump
sudo tcpdump -n -i veth3 # sudo tcpdump -n -i <dev-name>

wireshark
可視化界面直接抓包即可
注入資料包
scapy
-
啟動程式
sudo scapy

-
生成資料包
p = Ether()/IP(dst="12.12.1.1")/UDP()

-
從 veth1 埠注入
sendp(p, iface="veth1")

埠監聽結果:收到包和轉發了該包

切換p4程式
此處修改了代碼邏輯(添加了Egress處理)

-
加載新的組態檔
-
load_new_config_file: 將新的json配置推送至目標交換機,此時資料平面尚未改變,換句話說,目標交換機仍然按照先前的配置(或P4程式)對來訪的資料報進行處理;然而,控制平面需要按照新的配置和P4程式下發控制規則,但這些控制規則目前不會影響資料平面的處理;load_new_config_file <json-path>
-

-
swap_configs: 在資料平面啟用新的json配置swap_configs

- 后續操作與以上操作類似
ERROR
無法系結同一個thrift埠

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285636.html
標籤:其他
上一篇:DVWA--XSS(存盤型)
下一篇:DVWA - 操作手冊
