NS2 Projects for B Tech

What is TORA?

  • The main objective of TORA is to limit control message propagation in the highly dynamic mobile computing environment.
  • This is an on demand routing protocols
  • Each node has to explicitly initiate a query when it needs to send data to a particular destination


Three steps are involved in establishing a network:

  • Creating routes
  • Maintaining routes
  • Erasing invalid routes


Types of messages used in TORA:

  • QRY (query) message for creating route
  • For creating and maintaining routes use update (UPD) message
  • For erasing code use clear (CLR) message.

Features of TORA routing:

  • control messages are localized into a small set of nodes near the occurrence of topology changes
  • If a node loses its last downstream link, it generates a new reference level and broadcasts the reference to its neighbors
  • links are reversed to reflect the topology change and adapt to the new reference level
  • Erase operation in TORA floods CLR packets through the network and erase invalid routes


Architecture of TORA:





Sample code for TORA routing protocol:

int toraAgent::command(int argc, const char*const* argv)
    if(argc == 2) {
        Tcl& tcl = Tcl::instance();
        if(strncasecmp(argv[1], "id", 2) == 0) {
            tcl.resultf("%d", index);
            return TCL_OK;
        }    }
    else if(argc == 3) {
         if(strcmp(argv[1], "log-target") == 0 || strcmp(argv[1], "tracetarget") == 0 ) {
            logtarget = (Trace*) TclObject::lookup(argv[2]);
            if(logtarget == 0)
                return TCL_ERROR;
            return TCL_OK;
        else if(strcmp(argv[1], "drop-target") == 0) {
                int stat = rqueue.command(argc,argv);
            if (stat != TCL_OK) return stat;
                    return Agent::command(argc, argv);        }
        else if(strcmp(argv[1], "if-queue") == 0) {
            ifqueue = (PriQueue*) TclObject::lookup(argv[2]);