日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P4语言编程快速开始 实践二

發布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P4语言编程快速开始 实践二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:P4語言編程快速開始

上一篇系列博客:P4語言編程快速開始 實踐二

Demo 2

本Demo所做的修改及實現的功能:

為simple_router添加一個計數器(counter),該計數器附加(attach)到send_frame表上,每當有數據包通過send_frame表匹配成功并發送數據包時,就會觸發計數器計數。同時,將發往1口(s1-eth1)的所有數據包的data字段前32位數值改為下發流表時指定的數值。

相關修改

1.header.p4

header_type ipv4_t {fields {version : 4;ihl : 4;diffserv : 8;totalLen : 16;identification : 16;flags : 3;fragOffset : 13;ttl : 8;protocol : 8;hdrChecksum : 16;srcAddr : 32;dstAddr: 32;data: 32;//data段遠不止32位,這里僅取前32位以作實驗} }

2.添加Indrect counter

counter ingress_addr_count {type : packets;instance_count: 16384; }

說明:計數類型為packets,每匹配一個packet進行一次計數。

3.添加action

action set_addr_count(idx,smac,data) {count(ingress_addr_count, idx);//調用計數器計數modify_field(ethernet.srcAddr, smac);//修改包頭源macmodify_field(ipv4.data,data);//修改data段數據 }

說明:
新添加的set_addr_count 操作需要傳入3個操作數:idx,smac,data。
idx是counter計數索引,也可通過此索引調用;
smac是源mac地址,因為這里使用set_adrd_count操作替換來原來的rewrite操作,所以需要重新實現rewrite操作;
data是寫入data段的數據。

4.修改流表 => 修改 run_add_demo_entries.bash

python ../../cli/pd_cli.py -p simple_router -i p4_pd_rpc.simple_router -s $PWD/tests/pd_thrift:$PWD/../../testutils -m "add_entry send_frame 1 set_addr_count 1 00:aa:bb:00:00:00 0xffffffff" -c localhost:22222

說明:因為修改了send_frame表的actions,所以對應的流表也要根據action進行修改,set_addr_count操作后面加上對應的3個傳入參數。這里筆者設置了counter的idx為1,寫入data段的數據設置為0xffffffff。

驗證:

登錄mininet的CLI,使用h1 ping h2。在添加流表前,h1無法ping h2,然后運行 run_add_demo_entries.bash腳本,并進行對s1-eth1口進行抓包。此時h1能夠ping通h2,分析抓取到的數據包,也可以看到原先IPv4包頭的data段數據的前32位已被改寫成ffffffff。

但是,筆者在實驗的時候,實際情況是無法ping通,猜測其原因是因為tcp字段是非法的,被執行了丟包。


圖一:實驗環境


圖二:wireshark抓包驗證

2017/1/16

轉載于:https://www.cnblogs.com/qq952693358/p/6289673.html

總結

以上是生活随笔為你收集整理的P4语言编程快速开始 实践二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。