分組頭的管理

2022-04-11 00:10:47 字數 2417 閱讀 9541

1、在ns的模擬網路中,分組(packet)是 物件間互動的基本單元。分組是一系列分組頭和乙個可選的資料空間組成。分組頭的結構在simulator物件建立時就被初始化了,同時每個分組頭相對於分組的起始位址的偏移量也被記錄下來。在預設情況下,大多數ns內建的分組頭都是使能的(包括common頭、ip頭、tcp頭、rtp頭、trace頭等等)。這意味著在預設的情況下無論某個分組頭是否會被使用,它都會被初始化。在通常情況下,分組只含有一系列的分組頭,而指向資料空間的指標為null。

使用者可以為新的協議定義自己的分組頭,也可以通過增加域的方式擴充套件現有的分組頭,新增新分組頭的方法,概括來說就是在c++中定義包含所需的域的structure,再定義乙個static類來提供到otcl的連線,然後修改一些模擬的初始化**來指定新分組頭在分組中的位元組偏移量。

2、協議和分組頭

在rtp.h中

struct hdr_rtp

inline static hdr_rtp* access(const packet* p)

/* per-field member functions */

u_int32_t& srcid()

int& seqno()

u_int16_t& flags()

};hdr_rtp主要作用是計算欄位的位元組偏移量,在結構中也提供了成員變數函式用來提供外部訪問內部變數的介面。

在rtp.cc中

class rtpheaderclass : public packetheaderclass

} class_rtphdr  // class_rtphdr是 rtpheaderclass類的靜態物件,提供了到otcl的連線

void rtpagent::sendpkt()

void rtpagent::makepkt(packet* p)

3、新增新分組頭

假如我們要增加乙個叫newhdr的新分組頭,需要:

(1)       在c++中建立乙個新的structure來定義所需要的字段,按照命名慣例,這個structure應該叫hdr_newhdr,定義offset_欄位和訪問該字段的方法。

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

(3)       建立乙個static類來完成otcl連線(pcketheader/newdhr),在它的建構函式裡面進行bind_offset()。

(4)       編輯~ns/tcl/lib/ns-packet.tcl來啟用新的分組頭。

如果需要查詢分組頭的名字,可以檢視檔案~ns/tcl/lib/ns-packet.tcl或者在ns中執行下面**:

foreach cl [packetheader info subclass]

inline unsigned char* bits()

inline packet* copy() const;

inline packet* refcopy()

inline int& ref_count()

static inline packet* alloc();

static inline packet* alloc(int);

inline void allocdata(int);

// dirty hack for diffusion data

inline void initdata()

static inline void free(packet*);

inline unsigned char* access(int off) const ;

packet_t ptype_;     // packet type (see above)

int    size_;                 // simulated packet size

//size_經常被用來計算沿著一條網路鏈路遞交分組所需要的時間,值是應用資料的長度和ip層、運輸層、應用層分組長度之和。

int    uid_;                   // unique id

int    error_;               // error flag

int     errbitcnt_;     // # of corrupted bits jahn

int     fecsize_;

double      ts_;           //測量在交換節點處的排隊延遲

int    iface_;               // 完成多播分發樹計算,它指出分組是那個link上收到的

dir_t          direction_;        // direction: 0=none, 1=up, -1=down

// source routing

char src_rt_valid;

double ts_arr_; // required by marker of jobs

IP分組頭部結構

ipv4首部一般是20位元組長。在乙太網幀中,ipv4包首部緊跟著乙太網幀首部,同時乙太網幀首部中的協議型別值設定為080016。ipv4提供不同,大部分是很少用的選項,使得ipv4包首部最長可擴充套件到60位元組 總是4個位元組4個位元組的擴充套件 04 8121619 2431 版本首部長度 服...

74jqGrid 凍結帶有分組頭的列

這個例子展示了新的凍結列功能。嘗試去滾動水平的滾動條。如我們看到了分組表頭和行號都是支援的。需要注意的是支援分組表頭只是在usecolspanstyle設定為false的時候。省略 省略 function function pageinit rownum 10,width 700,rowlist 1...

許可權分組管理

一,許可權分組列表 1.介面設計 1.介面說明 類目 說明 請求方法 get url定義 admin groups 引數格式 無引數 2.返回結果 html 二 許可權分組詳情頁 1.介面設計 類目 說明 請求發法 get url定義 admin group 引數格式 路徑引數 2.引數說明 引數名...