Real World Application Integration
The goal of this proposed project is to develop frameworks and strategies that enable people to integrate already existing code into the simulator. Depending on the application, this can be a straightforward or laborious process, but still should be preferable in many cases to rewriting these protocols from scratch, and hopefully this project can come up with techniques to make these ports even easier.
Here are some initial pointers to how this problem has been worked in the past:
- previous work on integrating Quagga protocols to ns-2 and GTNetS simulator
- BGP++: http://www.ece.gatech.edu/research/labs/MANIACS/BGP++/
- OSPFv3 on GTNetS at http://hipserver.mct.phantomworks.org/ietf/ospf : See the GTNetS Simulation tab
- the INETQuagga project of OMNeT++: http://www.omnetpp.org/pmwiki/index.php?n=Main.INETQuagga
- Naval Research Lab (NRL) has developed a number of nice open source abstraction libraries for ns-2. One is called "protolib" and it allows for C-based routing daemons to run in ns-2, OPNET, and also as a userspace daemon. There is a related one called "Agent J" that allows Java-based apps to run in ns-2 (or also on top of real sockets). http://downloads.pf.itd.nrl.navy.mil/protolib/
Liu Jian(email@example.com) started the gsoc project from April 2008.
The purpose of the project is to develop frameworks and strategies that enable people to integrate already existing code into the ns-3 simulator, it will be accomplished by integrating Quagga, a routing deamon which implement many useful routing protocols. The project will begin by learning experence that Quagga ever ported to INET simulator, then porting Quagga to ns3 by adding some patchings, through the porting job, summariced,documented and structured properly, a adaption layer or some methodologies for ns-3 will be implemented, through which other real world application will be easily ported by the next person.
- looking at quagga to identify the system calls it use.
functions like socket, time, signal,etc. After investigation, there were 4 class functions need to be implemented in ns_simu API.
1,sockets: accept;bind;close;connect;listen;recv;recvfrom;recvmsg;select;send;sendmsg;sendto;socket; getaddrinfo;freeaddrinfo;gai_strerror;getservbyname;getsockname;getsockopt;setsockopt 2,time: ctime;gettimeofday;gmtime;localtime;mktime;strftime;time 3,signal&thread&process: exit;fork;getuid;geteuid;getpid;setpgid;setregid;setreuid;abort;kill;prctl;shutdown; sigaction;sigfillset;getgroups;setgroups;sysconf;waitpid; 4,others: daemon;access;openlog;closelog;execv;getrusage;hostperror ZCMSG_FIRSTHDR(__cmsg_nxthdr)
- implememt these function as simu_* in the ns-3-simu tree.
- porting quagga to ns3.
- listed all system functions which quagga calls. there is about 30 funs of total 150 need to be implemented in ns-3-simu.
- next: implement these simu_xxx functions(there would be a great job)
- ~-4.30 read quagga source code, compile and run simple test; list simu_xxx sys-calls; finish the first step
- 5.1~5.4 four days vacation
see information here:http://www.quagga.net/docs/docs-info.php