CPS-PH

CPS-PH

CPS-PH,全稱是CommonPartSublayerPacketHeader,是指公共部分子層分組頭。

CPS-PHCPS-PH
CPS-PH(CommonPartSublayerPacketHeader),公共部分子層分組頭。分組頭檢驗(headerchecksum)提供一個錯誤檢查數值,以保證一個被分發分組的完整性。源/目地址這是數據報源地和這個數據報目的地的地址。選擇(option)這個域是可選的,它提供了記錄通過網路的一條路徑或指定一條路徑(源地路由選擇)。分組(Packet)是對象間互動的基本單元,由一系列分組頭和一個可選的數據空間組成。分組頭的結構在Simulator對象創建時就被初始化了,同時每個分組頭相對於分組的起始地址的偏移量也被記錄下來。用戶可以為新的協定定義該協定自己的分組頭,也可以通過增加域的方式擴展現有的分組頭。假如我們想要增加一個叫newhdr的新的分組頭,需要完成以下幾個步驟:

1)在C++中創建一個名為hdr_newhdr的新的structure來定義所需要的欄位,定義offset_欄位和訪問欄位的方法。

2)定義所需要的訪問其他欄位的成員函式

3)創建一個叫做PacketHeader/Newhdr的static類來完成OTcl連線,在它的構造函數裡進行bind_offset()。(PacketHeaderClass)

4)編輯~ns/tcl/lib/ns-packet.tcl來激活新的分組頭(PacketHeaderManager)。另外也需修改~/ns/common/packet.h,來綁定分組類型值和它們的名字(p_info)。

與分組相關的類概括起來有四個:Packet、p_info、PacketHeaderClass、PacketHeaderManager

1.Packet類定義了分組的結構(bits_,hdrlen_等),提供了處理Packet對象的一系列成員函式(alloc()、copy()、free()等)。

2.p_info類,用來綁定各個分組類型值和它們的名字。

?當定義新的分組類型後,數字代碼應添加到枚舉類型packet_t中,同時應添加到p_info類的構造函式中。注意,PT_NTYPE必須是最後一個。

3.PacketHeaderClass是各種分組頭的基類。其中,hdrlen_是在構造函式中被設定,offset_則是通過調用bind_offsest()函式來設定的。

4.PacketHeaderManager類用來管理所有處於激活狀態的分組頭,並在BOB中分配給它們唯一的偏移量。同時定義於C++和Otcl中

模擬過程初始化時,ns-packet.tcl代碼被執行。foreach循環中所有需要激活的分組頭,通過調用add-packet-header來激活(Common頭始終被激活)。create_packet_format{}被調用一次,它首先創建一個PacketHeaderManager對象,之後,對於被激活的分組頭,由實例過程allochdr{}來給出分組頭的位置。在Tcl中選擇分組頭的命令包括:remove-packet-header、remove-all-packet-header和add-packet-header。remove-packet-header必須在Simlator對象創建前執行。

相關搜尋

熱門詞條

聯絡我們