P4學習筆記(三)P4程式語言簡介

2021-10-06 21:27:12 字數 1564 閱讀 1971

上圖展示了p4語言主要結構,下面簡單講解一下p4的基本語法

header ethernet_h 

header vlan_tag_h

struct my_headers_ht

基本型別派生型別struct: 無序成員集合

typedef bit<

48> ethernetaddress;

typedef bit<

32> ipv4address;

// standard ethernet header

header ethernet_h

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=

元資料是用來攜帶資料和配置性和西,元資料的申明與包頭類似,但在例項化的時候有所不同,而且包頭和元資料在字段值的約束上存在一定的差別。元資料分為兩種,一種是用來攜帶p4程式執行過程中產生的資料的使用者自定義元資料(user-defined metadata),如首部欄位的運算結果等。另一種是固有元資料(intrinsic metadata),用於攜帶交換機自身的配置資訊,如資料報進入交換機時的埠號等。

struct ingress_metadata_t

metadate ingress_metadata_t ingress_metadata;

有8種固有元資料,這些元資料攜帶了資料報相關的狀態資訊。

字段描述

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 自己寫的這個欠...