Skip to main content

Promiscuous Mode in AODV (ns 2.34)

In a network, promiscuous mode allows a network device to intercept and read each network packet that arrives in its entirety. This mode of operation is sometimes given to a network snoop server that captures and saves all packets for analysis (for example, for monitoring network usage). Its often used to
monitor network activity

Files to be changed
1. ~ns-2.34/aodv/aodv.h
2. ~ns-2.34/aodv/aodv.cc
3. ~ns-2.34/lib/tcl/ns-mobilenode.tcl

1. Make AODV agent a child class of Tap (you should have a member function tap), and define the Mac variable

   1: #include <mac.h>
   2: class AODV: public Tap, public Agent {
   3: public:
   4: void tap(const Packet *p);
   5: ......
   6: protected:
   7: Mac *mac_;
   8: ......
   9: }

2. Modify aodv/aodv.cc
Define TCL command "install-tap" and implement AODV::tap()


   1: int AODV::command(int argc, const char*const* argv) {
   2:  
   3: ......
   4:  
   5: else if(argc == 3) {
   6:  
   7: ......
   8:  
   9: else if (strcmp(argv[1], "install-tap") == 0) {
  10: mac_ = (Mac*)TclObject::lookup(argv[2]);
  11: if (mac_ == 0) return TCL_ERROR;
  12: mac_->installTap(this);
  13: return TCL_OK;
  14: }
  15:  
  16: } 
  17: return Agent::command(argc, argv);
  18:  
  19:  
  20: }
  21:  
  22: void AODV::tap(const Packet *p) {
  23: //put your code here
  24: fprintf(stdout,"Node in Promiscuous Mode");
  25: } 
  26:  


3. Modify tcl/lib/ns-mobilenode.tcl


   1: Node/MobileNode instproc add-target { agent port } {
   2: $self instvar dmux_ imep_ toraDebug_ mac_
   3: ......
   4: # Special processing for AODV
   5: set aodvonly [string first "AODV" [$agent info class]] 
   6: if {$aodvonly != -1 } {
   7: $agent if-queue [$self set ifq_(0)] ; # ifq between LL and MAC
   8: $agent install-tap $mac_(0)
   9: ......
  10: }

Comments

  1. Hi all,

    it's work, but I just got RREQ Only, please help me how to get a RREP...


    best regard
    khozaimi

    ReplyDelete
    Replies
    1. can u please tell me that how will it work i have done the same changes in the code but its not working.its urgent please

      Delete
    2. check your code a gain. mine is similar to above ..

      Delete
  2. i have done what ever the changes u have said but some errors are getting while i was running tcl script.
    cant read mac(0):no such variable and some errors like that

    ReplyDelete
  3. Replies
    1. ya that only i am getting errors...........

      Delete
    2. Sir can u please send me the file of those three which u have.......please sir its little bit urgent..my email id is sridhar585sri@gmail.com

      Delete
    3. hey sridhar,
      the error given is $mac(0), you need to change it to mac_(0). thats what i mentioned inmy previosu comment.
      i have to do it again to get all the files.
      to see the results, you can use AODV protocol of any TCL file and get the results....

      Delete
    4. sir i have chenged what ever the changes u hav said but it is getting still errors..

      Delete
  4. Hello all,,..

    please help me, how to calculate buffer size in aodv.cc file??

    Thank you.

    Best regard
    Ach. Khozaimi

    ReplyDelete
  5. how can i use the command "install-tap" under tcl?

    ReplyDelete
  6. I also need to know that how can i call install-tap command under tcl

    ReplyDelete
  7. please help me, how to calculate lamda and mu in queue on protocol aodv and see it in the trace file??
    my contact : h.naanani@gmail.com

    ReplyDelete
  8. hello sir i am final year student i want to modify the aodv protocol can u just help me for that

    ReplyDelete
  9. I have a simple question:
    To write the needed code to simulate a special scenario, is it enough to learn how to write tcl files with ns2 commands? That means we don't need to enter into the header files and C++/C files of NS2, right?

    ReplyDelete
  10. hello
    please can you help me with a code in tap to get number of packet drop, send, and modifier by node. thanks

    ReplyDelete
  11. hello please help me with a code that read or listn black hole attack promiscously in ns2

    ReplyDelete

Post a Comment

Popular posts from this blog

Installing ns-3.34 in Ubuntu 20.04

This post shows how to install ns 3.34 in Ubuntu 20.04 LTS Prerequisites: Fresh installation of Ubuntu Version 20.04 LTS  ns3.34 can be downloaded from here Follow the video link for complete step by step instructions on the installation.  This version fixes the compilation issues of vanet-routing-compare.cc (bug in ns3.33)  Issue the following commands after opening a terminal  $ sudo apt update $ sudo apt install g++ python3 python3-dev python-dev pkg-config sqlite3 python3-setuptools git qt5-default gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar openmpi-bin openmpi-common openmpi-doc libopenmpi-dev tcpdump wireshark libxml2 libxml2-dev Unzip or untar the ns-allinone-3.34.tar.bz2 in the home folder (in my case its /home/pradeepkumar) $ cd ns-allinone-3.34/ $ ./build.py --enable-examples --enable-tests  Once the installation is completed, you may get an output show

Installation of ns3 in Windows 10 and Windows 11 OS using WSL (Windows Subsystem for Linux)

This post shows how to install ns-3.33 in Windows 10 through WSL (Windows Subsystem for Linux) This posts works for Windows 11 also (I have tested it on a Windows 11 ISO and it works the Same way as mentioned in the following post.) This post will work for ns-3.3x version. Prerequisites : Install Windows Subsystem for Linux with GUI: Please refer the following video  System Information: OS used: Windows 10 and WSL (Ubuntu 20.04) GUI: XServer for Windows NS3 Version: ns-3.33 See the following complete video on how to install ns3 in Windows 10 Step 0 : Open XLaunch Step 1 :  Open WSL using PowerShell and open it as Administrator Command:/  wsl $ xfce4-session The GUI of Ubuntu Opens within Windows 10 OS. Step 2 : Download ns3 from nsnam.org website through Mozilla Firefox browser Step 3: Open a Terminal  $ sudo apt update $ sudo apt install build-essential autoconf automake libxmu-dev python3-pygraphviz cvs mercurial bzr git cmake p7zip-full python3-matplotlib python-tk python3-dev qt5-q

Installing NS-3.32 in Ubuntu 20.04

This is about installing ns version 3.32 in Ubuntu 20.04 LTS. #ns3 #ns3 .32 #networksimulation The commands used in the video are given here. $] sudo apt update $] sudo apt install build-essential autoconf automake libxmu-dev python3-pygraphviz cvs mercurial bzr git cmake p7zip-full python3-matplotlib python-tk python3-dev qt5-qmake qt5-default gnuplot-x11 wireshark Download the ns-allinone-3.32.tar.bz2 package from nsnam.org and copy it to /home/ folder See the full video for detailed instructions Extract it either in GUI or using command $] tar jxvf ns-allinone-3.32.tar.bz2 $] cd ns-allinone-3.32/ $] ./build.py --enable-examples --enable-tests The above command will take some time to install all the packages  You can see the output as shown below ns3 To check whether ns3 installed successfully, use the following commands. $] cd ns-3.32/ $] ./waf --run hello-simulator You should get the output as Hello Simulator $] ./waf --run first This is the example from the ns-3.32/exa