亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 原創(chuàng)-----如何往ns2中添加新的mac協(xié)議.txt

?? 關(guān)于ns使用技巧的大集
?? TXT
字號:
原創(chuàng)-----如何往NS2中添加新的MAC協(xié)議


網(wǎng)上有關(guān)于往NS2中添加新的路由協(xié)議的文章,卻沒有關(guān)于往NS2中添加新的MAC協(xié)議的文章。下面我給大家講一下如何往NS2中添加新的MAC協(xié)議。
   往NS2.29中添加了一個新的MAC協(xié)議,暫時命名為LMAC.其實它的代碼內(nèi)容和SMAC一樣,我只是想驗證一下如何在NS2.29中添加新的協(xié)議。
1.在~/ns-allinone-2.29/ns-2.29/mac目錄下copy原來的smac.cc和smac.h
  cp smac.cc lmac.cc
  cp smac.h  lmac.h

2.打開lmac.cc和lmac.h,把所有的SMAC替換成LMAC,把所有的smac替換成lmac,把所有的Smac替換成Lmac.

3.修改packet.h
  打開packet.h,找到匹配字符串SMAC,然后照著樣子修改就可以了。
  packet.h在~/ns-allinone-2.29/ns-2.29/common目錄下
  添加定義訪問協(xié)議報頭的指針
  #define HDR_SMAC(p)     ((hdr_smac *)hdr_mac::access(p))
  #define HDR_LMAC(p)     ((hdr_lmac *)hdr_mac::access(p))       // add lmac here
  增加LMAC包類型(協(xié)議標(biāo)志),所有的包類型都是PT_開頭,如PT_TCP,PT_UDP等,在枚舉類型enum packet_t{}中找到       PT_SMAC,
  添加LMAC
  // SMAC packet
      PT_SMAC,
   // LMAC packet
      PT_LMAC,
   注意新添加的協(xié)議要在PT_NTYPE之前。
   然后在類class p_info{}的構(gòu)造函數(shù)中找到
   name_[PT_SMAC]="smac";
    添加 name_[PT_LMAC]="lmac";這樣就可以通過協(xié)議標(biāo)識尋找協(xié)議對應(yīng)的字符串
    同樣注意要在 name_[PT_NTYPE]= "undefined";之前定義

4.修改ns-default.tcl文件,在~/ns-allinone-2.29/ns-2.29/tcl/lib目錄下
   找到
   # Turning on/off sleep-wakeup cycles for SMAC
   Mac/SMAC set syncFlag_ 1
   # Nodes synchronize their schedules in SMAC
   Mac/SMAC set selfConfigFlag_ 1
   # Default duty cycle in SMAC
   Mac/SMAC set dutyCycle_ 10
   這里定義了otcl對象的缺省值,我們在這里添加LMAC的缺省值
   #add LMAC here
   # Turning on/off sleep-wakeup cycles for LMAC
   Mac/LMAC set syncFlag_ 1
   # Nodes synchronize their schedules in LMAC
   Mac/LMAC set selfConfigFlag_ 1
   # Default duty cycle in LMAC
   Mac/LMAC set dutyCycle_ 10 
    
    繼續(xù)尋找SMAC,找到
    # Turning on/off sleep-wakeup cycles for SMAC
   Mac/SMAC set syncFlag_ 0
    添加相應(yīng)的LMAC
    # Turning on/off sleep-wakeup cycles for LMAC
    Mac/LMAC set syncFlag_ 0

  5.修改ns-packet.tcl文件,在~/ns-allinone-2.29/ns-2.29/tcl/lib目錄下
    在foreach prot{}這個函數(shù)中找到Smac,
   Smac    # Sensor-MAC
    添加一行: Lmac    # A new Sensor-MAC

  6.修改Makefile文件,在~/ns-allinone-2.29/ns-2.29/目錄下
    找到smac.o
   mac/mac-802_3.o mac/mac-tdma.o mac/smac.o \
    添加lmac.o到ns的目標(biāo)文件列表:
   mac/mac-802_3.o mac/mac-tdma.o mac/smac.o mac/lmac.o\
7.經(jīng)過以上幾步,一個新的協(xié)議就一經(jīng)添加成功了,但是這個新的LMAC協(xié)議產(chǎn)生的trace文件格式不正確,
   還要修改cmu-trace.cc和cmu-trace.h文件,在~/ns-allinone-2.29/ns-2.29/trace目錄下
   修改cmu-trace.h文件,找到這一行:
   void    format_smac(Packet *p, int offset);
   增加一行:
  void    format_lmac(Packet *p, int offset);
   然后修改cmu-trace.cc文件,這個文件是修改的關(guān)鍵!!
   在void
  CMUTrace::format_mac_common(Packet *p, const char *why, int offset)
  這個函數(shù)中修改,添加進去LMAC
   struct hdr_cmn *ch = HDR_CMN(p);
        struct hdr_ip *ih = HDR_IP(p);
        struct hdr_mac802_11 *mh;
        struct hdr_smac *sh;
        struct hdr_lmac *ph;             // 新添加一個指向lamc包的指針
        char mactype[SMALL_LEN];
        strcpy(mactype, Simulator::instance().macType());
        if (strcmp (mactype, "Mac/SMAC") == 0)
                sh = HDR_SMAC(p);
        else if (strcmp (mactype,"Mac/LMAC") == 0)   // 判斷是不是LMAC包,新添加的語句
                ph = HDR_LMAC(p);
        else
                mh = HDR_MAC802_11(p);
  繼續(xù)往下找SMAC,添加LMAC
          
   if (strcmp (mactype, "Mac/SMAC") == 0) {
                        format_smac(p, offset);
                }
                else if (strcmp (mactype, "Mac/LMAC") == 0) {   //新添加的語句
                        format_lmac(p, offset);
                }
                else {
                        format_mac(p, offset);
                }
                return;
   
   在if(newtrace){}的判斷語句中找到SMAC
   
// mac layer extension
            offset = strlen(pt_->buffer());
            if (strcmp(mactype, "Mac/SMAC") == 0) {
                    format_smac(p, offset);
            }
            else if (strcmp(mactype, "Mac/LMAC") == 0) {      //新添加的語句
                    format_lmac(p, offset);
            }
            else {
                    format_mac(p, offset);
            }
  繼續(xù)找SMAC,找到:
  
   (ch->ptype() == PT_SMAC) ? (
                  (sh->type == RTS_PKT) ? "RTS" :
                  (sh->type == CTS_PKT) ? "CTS" :
                  (sh->type == ACK_PKT) ? "ACK" :
                  (sh->type == SYNC_PKT) ? "SYNC" :
                  "UNKN") :
                 packet_info.name(ch->ptype())),
                ch->size());
  添加LMAC的判斷
    (ch->ptype() == PT_SMAC) ? (
                  (sh->type == RTS_PKT) ? "RTS" :
                  (sh->type == CTS_PKT) ? "CTS" :
                  (sh->type == ACK_PKT) ? "ACK" :
                  (sh->type == SYNC_PKT) ? "SYNC" :
                  "UNKN") :
                   (ch->ptype() == PT_LMAC) ? (         //這一塊代碼是新添加的
                   (ph->type == RTS_PKT) ? "RTS" :
                   (ph->type == CTS_PKT) ? "CTS" :
                   (ph->type == ACK_PKT) ? "ACK" :
                   (ph->type == SYNC_PKT) ? "SYNC" :
                  "UNKN") :
                 packet_info.name(ch->ptype())),
                ch->size());
  這里要好好看看源代碼,看清楚程序的結(jié)構(gòu),不要添加錯了
  再繼續(xù)找,添加LMAC
   if (strncmp (mactype, "Mac/SMAC", 8) == 0) {
                format_smac(p, offset);
        }
        else if (strncmp (mactype, "Mac/LMAC", 8) == 0) {    //新添加的代碼
                format_lmac(p, offset);
        }
        else {
                format_mac(p, offset);
        }
  再往下找,找到這個函數(shù):
  void
CMUTrace::format_smac(Packet *p, int offset)
{
        struct hdr_smac *sh = HDR_SMAC(p);
        sprintf(pt_->buffer() + offset,
                " [%.2f %d %d] ",
                sh->duration,
                sh->dstAddr,
                sh->srcAddr);
}
照著樣子給LMAC寫一個相同功能的函數(shù):
void
CMUTrace::format_lmac(Packet *p, int offset)
{
         struct hdr_lmac *ph = HDR_LMAC(p);
         sprintf(pt_->buffer() + offset,
                " [%.2f %d %d] ",
                ph->duration,
                ph->dstAddr,
                ph->srcAddr);
}
然后找到void CMUTrace::format(Packet* p, const char *why)這個函數(shù)
添加 
  switch(ch->ptype()) {
        case PT_MAC:
        case PT_SMAC:
        case PT_LMAC:                    //這是新添加的LMAC協(xié)議
                break;
        case PT_ARP:
                format_arp(p, offset);
                break;
最后在文件的開頭找到#include <smac.h>
添加#include <lmac.h>
到此為止,協(xié)議添加完成

8.回到目錄~/ns-allinone-2.29/ns-2.29下,執(zhí)行命令:
  make clean
  make depend
  make 
make結(jié)束后運行,發(fā)現(xiàn)報錯,說smac.h和lmac.h有函數(shù)重定義了,這是因為cmu-trace.cc文件同時include了smac.h和lmac.h,
所以當(dāng)smac.h和lmac.h有相同名字的定義時,就會報錯,解決方法是把lmac.h中與smac.h重名的類改成其它名字,當(dāng)然在lmac.cc中要做相應(yīng)的修改。

9.如何評價新的協(xié)議是否添加成功?
在添加新的協(xié)議之前,我一經(jīng)運行了ns smac.tcl,把smac.tr文件備份為smac.tr.bak。添加了新的協(xié)議后,我重新運行ns smac.tcl,得到新的smac.tr文件,然后我執(zhí)行命令
diff -b smac.tr smac.tr.bak
發(fā)現(xiàn)這兩個文件內(nèi)容一模一樣,說明原來的協(xié)議SMAC運行正常。
然后我修改了smac.tcl,命名為lmac.tcl,調(diào)用LMAC協(xié)議,然后執(zhí)行命令ns lmac.tcl,產(chǎn)生trace文件lmac.tr
執(zhí)行命令
diff -b smac.tr lmac.tr
發(fā)現(xiàn)這兩個trace文件的內(nèi)容是一樣的,這說明LMAC協(xié)議添加成功了,耶~~~~~~~~~~~~~~~~~~~~

10.在添加新的協(xié)議中注意的一些問題和相關(guān)技巧:
   添加一個新的協(xié)議,要照著原來協(xié)議的方法寫。其實最簡單的方法是把含有SMAC,smac,Smac字符串的文件都找出來,然后照樣子添加LMAC協(xié)議就可以了。
~/ns-allinone-2.29/ns-2.29/gen下的文件是make的時候自動生成的,不用修改
在~/ns-allinone-2.29/ns-2.29/tcl/lib下,文件ns-lib.tcl也含有SMAC的內(nèi)容,主要是在tcl調(diào)用smac時大印出警告語句,告訴用戶SMAC要40秒后才能同步。這個文件可以修改,也可以不修改,對運行結(jié)果(trace文件)沒有影響。


 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合成人网| 99久久国产综合精品色伊| 国产一区二区久久| 高清日韩电视剧大全免费| 91美女在线看| 91精品国产综合久久久久 | 亚洲一二三区不卡| 美女视频网站黄色亚洲| 国产成人av电影在线观看| 在线一区二区视频| 精品动漫一区二区三区在线观看| 国产精品久久久久一区二区三区共| 亚洲国产综合色| 国产精品一区一区| 欧美美女一区二区三区| 久久精品亚洲精品国产欧美 | 99re成人精品视频| 91精品国产入口在线| 久久精品欧美日韩| 五月综合激情婷婷六月色窝| 国产精品自拍在线| 欧美日韩在线免费视频| 日本一区二区高清| 日韩国产在线一| 99视频有精品| 精品成人a区在线观看| 一片黄亚洲嫩模| 国产精品乡下勾搭老头1| 欧美日韩免费高清一区色橹橹 | 韩国v欧美v日本v亚洲v| 欧美最猛黑人xxxxx猛交| 国产天堂亚洲国产碰碰| 日韩精品色哟哟| a级精品国产片在线观看| 欧美一区二区在线看| 亚洲精品国产成人久久av盗摄| 激情六月婷婷综合| 欧美精品在线视频| 亚洲日本va午夜在线影院| 国产麻豆视频精品| 欧美一区二区三级| 亚洲一区二区三区四区在线观看 | 在线综合视频播放| 亚洲欧美激情插| 国产成人免费视频一区| 日韩一区二区三区免费观看| 一区二区三区不卡在线观看| 国产**成人网毛片九色 | 久久99精品久久久久久国产越南| 欧美色老头old∨ideo| 国产精品国产三级国产普通话蜜臀 | 一区二区三区四区av| proumb性欧美在线观看| 国产亚洲欧美日韩俺去了| 美女脱光内衣内裤视频久久影院| 成人黄色免费短视频| 欧美喷水一区二区| 日韩美女久久久| 高清成人免费视频| 久久免费看少妇高潮| 午夜精品在线看| 欧美吻胸吃奶大尺度电影| 亚洲男人都懂的| 91视频观看视频| 18欧美亚洲精品| 成人av免费在线观看| 欧美国产日韩亚洲一区| 国产精品正在播放| 久久嫩草精品久久久久| 黄色精品一二区| 久久这里只有精品视频网| 九九在线精品视频| 日韩午夜av一区| 免费高清成人在线| 日韩精品专区在线| 寂寞少妇一区二区三区| 久久久久综合网| 国产成人8x视频一区二区| 国产日产欧美一区二区三区| 丁香婷婷深情五月亚洲| 国产精品色噜噜| 91日韩精品一区| 一区二区三区久久| 激情久久五月天| 日韩一级完整毛片| 激情综合网av| 久久久99久久| 高清在线不卡av| 自拍偷拍欧美精品| 91黄色免费看| 天天综合网天天综合色| 精品国产乱码久久久久久夜甘婷婷 | 日韩高清在线观看| 日韩免费视频一区| 国产成人99久久亚洲综合精品| 中文字幕中文字幕在线一区| 在线国产电影不卡| 视频一区国产视频| 精品国产凹凸成av人网站| 国产一区在线精品| 亚洲天堂2014| 337p亚洲精品色噜噜狠狠| 久久91精品久久久久久秒播| 国产日韩三级在线| 色激情天天射综合网| 视频在线观看国产精品| 久久人人爽爽爽人久久久| 99国产精品国产精品久久| 亚洲国产一区二区视频| 精品少妇一区二区三区| 成人国产亚洲欧美成人综合网| 亚洲激情成人在线| 欧美成人性战久久| 91免费国产在线| 国产91精品免费| 欧美一区二区三区的| 精品一区二区三区在线观看| 日本一区二区电影| 欧美唯美清纯偷拍| 欧美不卡在线视频| 成人国产精品免费网站| 亚洲成人你懂的| 国产亚洲综合性久久久影院| 色综合久久久久网| 极品少妇xxxx精品少妇| 亚洲精品视频在线| 亚洲精品一区二区三区福利| 色欧美88888久久久久久影院| 久久99热99| 亚洲美女视频在线观看| 精品国产乱码久久久久久图片| 在线免费亚洲电影| 国产美女在线观看一区| 亚洲五月六月丁香激情| 国产欧美日韩不卡免费| 欧美精选午夜久久久乱码6080| 东方aⅴ免费观看久久av| 天涯成人国产亚洲精品一区av| 1024亚洲合集| 久久看人人爽人人| 欧美日韩高清一区二区三区| 成年人国产精品| 久久精品国产一区二区| 亚洲一区日韩精品中文字幕| 国产亚洲欧洲997久久综合 | 夜夜爽夜夜爽精品视频| 久久精品一二三| 欧美一级日韩免费不卡| 日本丰满少妇一区二区三区| 高清在线不卡av| 久久爱www久久做| 丝袜美腿亚洲色图| 一区二区三区视频在线看| 中文av一区二区| 精品国产1区二区| 制服丝袜亚洲精品中文字幕| 91丝袜美腿高跟国产极品老师 | 在线成人免费观看| 色噜噜狠狠成人网p站| 欧美一二三四在线| 国产精品性做久久久久久| 亚洲国产成人tv| 国产精品成人免费| 欧美激情中文不卡| 久久综合久色欧美综合狠狠| 91精品欧美一区二区三区综合在| 色综合久久88色综合天天| 成人性生交大片免费| 国产最新精品精品你懂的| 美女视频黄a大片欧美| 天天影视涩香欲综合网| 亚洲午夜久久久久久久久电影院 | 亚洲成av人影院在线观看网| 亚洲三级电影网站| 亚洲欧洲日产国产综合网| 欧美激情一区在线| 国产亚洲精久久久久久| 久久久精品欧美丰满| 26uuu精品一区二区在线观看| 精品蜜桃在线看| 欧美成人a∨高清免费观看| 日韩限制级电影在线观看| 欧美二区三区的天堂| 欧美福利一区二区| 欧美日韩国产乱码电影| 欧美色视频一区| 在线播放视频一区| 91精品国产综合久久久久久漫画 | 三级欧美在线一区| 亚洲精品免费在线播放| 日韩伦理免费电影| 国产精品久久久久久户外露出 | 中文字幕欧美三区| 久久久久久久久久久久电影 | 国产精品18久久久久久久久 | 日韩三区在线观看| 日韩欧美在线网站| 久久久蜜桃精品| 中文一区二区完整视频在线观看| 国产精品久久午夜夜伦鲁鲁|