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.引數說明 引數名...