Patching AOMDV into ns2

View: New views
3 Messages — Rating Filter:   Alert me  

Patching AOMDV into ns2

by toyota399 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hello everyone,

Do anybody in this forum know the way to patch the original AODV in ns2
into AOMDV? I have got the AOMDV source code for ns-allinone-2.14ba. But
I do not think I can simply replace the original AODV files with the
AOMDV source files and everything will work. Can anyone please please
help me out on the procedures to install AOMDV for later release of ns2?

Thank you very very much.

Best regards,
Martin

AOMDV for ns-2.29 Available

by Ahmad Khayyat-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi everyone,

I believe I managed to port the old AOMDV code to ns-2.29. It is my
first time ever to do this sort of work, so it is a rough port that was
done in 2 to 3 days. I tried to be explicit in annotating the changes I
made in the source code. Other than that, I made absolutely no effort to
clean up or even to understand the particulars of the implementation. It
was mostly a mechanical port with the only objective of getting AOMDV to
work in ns-2.29.

Now, AOMDV did work for me under ns-2.29 after this port. However, I
made no effort to verify its correctness and hence cannot comment on
that. It achieved better delivery ratios in my preliminary tests in some
scenarios while in other scenarios it was inferior to plain AODV. This
can be a property of the AOMDV protocol, a defect in the implementation,
or a defect in my port.

I came across situations where I 'guessed' what I should do. So,
revisions of the new code are encouraged and comments are welcome.

Note that ns-2.29 does not compile with g++-4.1, so this port is only
known to compile with g++-4.0. It may or may not compile with g++-4.1.

As in the original AOMDV implementation, you can get three versions of
the protocol by modifying the Makefile.in and then running ./configure
and make. The relevant line in the Makefile.in file reads:
       -DAOMDV -DAOMDV_NODE_DISJOINT_PATHS   # By: Ahmad Khayyat - AOMDV
This will produce the node-disjoint-paths version of AOMDV. Replaing
_NODE_ with _LINK_ so that you have:
       -DAOMDV -DAOMDV_LINK_DISJOINT_PATHS   # By: Ahmad Khayyat - AOMDV
produces the link-disjoint-paths version, while commenting the line
altogether should produce plain AODV. However, for plain AODV, it is
advised to use an untampered AODV source as this code does contain
modifications, although I cannot comment on their effect.

Affected files:
    Makefile.in -1 +2
    aodv/aodv.cc -46 +824
    aodv/aodv.h -6 +115
    aodv/aodv_packet.h -1 +26
    aodv/aodv_rtable.cc -1 +255
    aodv/aodv_rtable.h +79
    common/packet.h +6

As for availability of the port, I can only provide an archive
containing the new modified files. These are available at the following URL:

http://www.ccse.kfupm.edu.sa/~akhayyat/aomdv-ns-2.29.zip

I hope this can be useful to other people.

- Ahmad Khayyat


Re: AOMDV for ns-2.29 Available

by Ahmad Khayyat-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi again,

I forgot to mention one more thing. It is best to disable ARP while
using AOMDV (or anything else ;) ). You can do so by simple adding the
following lines at the top of the arpresolve method of the ARPTable
class in the file mac/arp.cc:

int
ARPTable::arpresolve(nsaddr_t dst, Packet *p, LL *ll)
{
// Disable ARP
    hdr_cmn *ch = HDR_CMN(p);
    mac_->hdr_dst((char*) HDR_MAC(p), ch->next_hop());
    return 0;

    ARPEntry *llinfo ;
    ...

Enjoy,

- Ahmad Khayyat

Ahmad Khayyat wrote:

> Hi everyone,
>
> I believe I managed to port the old AOMDV code to ns-2.29. It is my
> first time ever to do this sort of work, so it is a rough port that was
> done in 2 to 3 days. I tried to be explicit in annotating the changes I
> made in the source code. Other than that, I made absolutely no effort to
> clean up or even to understand the particulars of the implementation. It
> was mostly a mechanical port with the only objective of getting AOMDV to
> work in ns-2.29.
>
> Now, AOMDV did work for me under ns-2.29 after this port. However, I
> made no effort to verify its correctness and hence cannot comment on
> that. It achieved better delivery ratios in my preliminary tests in some
> scenarios while in other scenarios it was inferior to plain AODV. This
> can be a property of the AOMDV protocol, a defect in the implementation,
> or a defect in my port.
>
> I came across situations where I 'guessed' what I should do. So,
> revisions of the new code are encouraged and comments are welcome.
>
> Note that ns-2.29 does not compile with g++-4.1, so this port is only
> known to compile with g++-4.0. It may or may not compile with g++-4.1.
>
> As in the original AOMDV implementation, you can get three versions of
> the protocol by modifying the Makefile.in and then running ./configure
> and make. The relevant line in the Makefile.in file reads:
>        -DAOMDV -DAOMDV_NODE_DISJOINT_PATHS   # By: Ahmad Khayyat - AOMDV
> This will produce the node-disjoint-paths version of AOMDV. Replaing
> _NODE_ with _LINK_ so that you have:
>        -DAOMDV -DAOMDV_LINK_DISJOINT_PATHS   # By: Ahmad Khayyat - AOMDV
> produces the link-disjoint-paths version, while commenting the line
> altogether should produce plain AODV. However, for plain AODV, it is
> advised to use an untampered AODV source as this code does contain
> modifications, although I cannot comment on their effect.
>
> Affected files:
>     Makefile.in -1 +2
>     aodv/aodv.cc -46 +824
>     aodv/aodv.h -6 +115
>     aodv/aodv_packet.h -1 +26
>     aodv/aodv_rtable.cc -1 +255
>     aodv/aodv_rtable.h +79
>     common/packet.h +6
>
> As for availability of the port, I can only provide an archive
> containing the new modified files. These are available at the following URL:
>
> http://www.ccse.kfupm.edu.sa/~akhayyat/aomdv-ns-2.29.zip
>
> I hope this can be useful to other people.
>
> - Ahmad Khayyat
>