上圖展示了p4語言主要結構,下面簡單講解一下p4的基本語法
基本型別派生型別struct: 無序成員集合header ethernet_h
header vlan_tag_h
struct my_headers_ht
typedef bit<
48> ethernetaddress;
typedef bit<
32> ipv4address;
// standard ethernet header
header ethernet_h
元資料是用來攜帶資料和配置性和西,元資料的申明與包頭類似,但在例項化的時候有所不同,而且包頭和元資料在字段值的約束上存在一定的差別。元資料分為兩種,一種是用來攜帶p4程式執行過程中產生的資料的使用者自定義元資料(user-defined metadata),如首部欄位的運算結果等。另一種是固有元資料(intrinsic metadata),用於攜帶交換機自身的配置資訊,如資料報進入交換機時的埠號等。bit<
16> my_var;
bit<
8> another_var=
5const bit<
16> ethertype_ipv4 =
0x0800
;header ethernet_h
header vlan_tag_h
ethernet_h eth;
vlan_tag_h vtag=
有8種固有元資料,這些元資料攜帶了資料報相關的狀態資訊。struct ingress_metadata_t
metadate ingress_metadata_t ingress_metadata;
字段描述
ingress_port
資料報的入埠,解析之前設定,唯讀
packet_length
資料報的位元組數,當交換機在快速**模式下,該元資料不能在動作(action)中匹配或引用。唯讀。
egress_spec
在入埠流水線的匹配-動作過程之後設定,指定資料報出埠,可以是物理埠、邏輯埠或者多播組。
egress_instance
用於區分複製後資料報例項的識別符號。唯讀。
instance_type
資料報例項型別:正常(normal)、入埠複製(ingress clone)、出埠複製(egress clone)、再迴圈(recirculated)。
parser_sratus
解析器解析結果,0表示無錯誤,其實數字代表了對應的錯誤型別
parser_error_location
指向p4程式錯誤發生處。
注意點:
1、
p4語言程式設計環境安裝
p4語言主要是用來模擬交換機的互動,是新一代的sdn解決方案,可以讓資料 平面也具有可程式設計能力,讓軟體能夠真正定義網路和網路裝置。詳細介紹 虛擬機器sudo密碼就是使用者名稱。github中經常用到的庫 tutorials教程,裡面有兩個pdf,乙個是教學乙個是 示例,其中的exercise資料...
CSS樣式 入門學習p4
css的功能強大 3.4 css的優先權原則 在乙個樣式表中發生衝突,按最後定義的樣式來顯示。在多個樣式表中發生衝突,按照內聯樣式表 文件級樣式表 外部樣式表的優先順序顯示。當html樣式與css樣式存在衝突時,優先應用css樣式中定義的屬性。3 css屬性 設定文字樣式 利用css的這些屬性,可以...
資料結構 P4
include 用指標輸出陣列元素 自己寫的函式是array,老師的是array1 2016年6月1日13 28 52 void show array1 int p a的位址傳遞給了p指標變數,p代表a 0 因此p現在是陣列第乙個元素的位址 void show array int a 自己寫的這個欠...