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]);