Name | Modified | Size | Downloads / Week |
---|---|---|---|
FB-AODV_1.1.tar.gz | 2014-02-26 | 52.5 kB | |
README | 2014-02-26 | 5.7 kB | |
README.ABOUT | 2014-02-26 | 1.6 kB | |
Totals: 3 Items | 59.7 kB | 0 |
Flow-Based AODV (FB-AODV) routing protocol with Weighted Contention and Interference routing Metric (WCIM) Miguel Catalán Cid Wireless Network Group (WNG) - Univesitat Politecnica de Catalunya (UPC) http://genweb.upc.edu/wireless This work is supported by the Spanish Government through project TEC2009-11453 and FEDER. ------------------------------------------------ Plese, use start-aodv.sh for routing protocol module initilization FLOW-BASED ROUTING: -In FB-AODV, routes are based on flows. Each unique flow is determined by a source, a destination and a ToS. The available ToS are defined and can be modified in tos.c. -Kernel r outing is based on Routing Policiy DataBase (RPDB). IP RULES are used in order to point each source to a routing table (up to 255). In each routing table, the routes for the different flows from a unique source are defined. Default routes from the Internet are created in the main route table. - For control or debug purposes, it is possible to route flows without ToS (i.e. 0x00) between neighbors (RREQ-RREP messages are not used). - In order to route flows, it is needed to use iptables MANGLE. Usual linux kernels support only eight different ToS or DSCP: TOS: 0x00, 0x04, 0x08, 0x10 Example: itpables -t mangle -A OUTPUT -p ICMP -j TOS --set-tos 0x10 TOS (DSCP): 0x0c (0x03), 0x14 (0x05), 0x18 (0x06), 0x1C (0x07) - Example: iptables -t mangle -A OUTPUT -p UDP --dport 1234 -j DSCP --set-dscp 0x03 GATEWAYS AND INTERNET: -The routing protocol supports multiple gateways. A gateway should start the kernel module with the option aodv_gateway = 1. It announces itself using ST-RREQ messages (based on AODV-ST). The receivers select a gateway as default by means of the minimum routing metric (Hop Count or ETT). -Access Point and Gateways should apply NAT -A gateway cannot be an intermediate node in a route to the Internet through another Gateway. ROUTING METRICS: -The routing protocol implements three different routing metrics: Hop count, ETT (link quality aware) and WCIM (link quality, interference and load aware). -ETT and WCIM require link quality estimations. Error rate estimation is based on Hello's exchange (like ETX metric). Nominal rate estimation is based on Packet-Pair messages (like WCETT metric). If the rates are fixed, packet-pair messages can be deactivated. -WCIM metric needs load computation (based on the ToS of the flows) and load information exchange (using the Hello messages) PROC FILESYSTEM: /proc/fbaodv It prints a lot of information about the routing protocol procedures: timers, routes, neighbors, link quality estimations... -------------------------------------------- aodv.h - All definitions (timers, messages and structures) aodv_dev - Handles initalizing the device you want to have AODV use. aodv_neigh - Handles neighboring nodes. A neighboring node is one that is one hop away. If we lose communication we know there is a link break. Creating of one-hop routes between neighbors for control purposes aodv_neigh_2h – WCIM needs information about two-hop neighbors. They are discovered by means of the Hello messages aodv_route - Everything needed for routes to other nodes. aodv_thread - This is the process that handles all the task. It is a loop that pulls tasks out of the queue and then sends them to the right function. fbaodv_protocol - This is used when the module gets load and unload. All of the queues get initalized here. The proc filesystem is created here and netfilters are started and stopped. gw_list – Maintenance of the discovered gateways. Default gateway selection hello - Handles the sending and receiving of Hello messages. The sending of Hello messages is triggered by a timer. Neighbors (one- and two-hops) discovering. ETX computation. packet_in - Incoming packets are handled here. If the packet has the AODV port number it goes through other processing. packet_out - All outgoing packets go through here. If they are not broadcast packets, AODV will check to see if there is a route to the destination in the AODV routing table. Packets with both source and destination external to the mesh network, are accepted (NF_ACCEPT). The rest are routed according to FB-AODV. If a route exists, are accepted. If not, they are queued during route discovering. Packet without a supported ToS or arriving to an intermediate node without an active route, are discarded. packet_queue – It handles the queuing and awaking of packets during a route discovery. probe_ett – It handles the packet-pair mechanism if ETT or WCIM metric are used (and rate is not fixed) rerr - Handles the creation and processing of route error messages. Route error messages get built based upon a broken link. Any link that uses this link as a next hop gets added into the Route error message and unicast it to the source. route_alg – ETT and WCIM metric computation rpdb – It handles the RPDB using RTNETLINK sockets. Rules and route tables. rrep - Handles the RREP packets which contain new routes. rreq - When you don't have a route you send out a RREQ. socket - Socket used for FB-AODV signaling messages. src_list – It handles the table of sources with active flows st_rreq – Gateway announcement and discovery task_queue - All major proccessing that needs to be done is placed into the task queue. timer_queue - There is a queue of task that is ordered by the time they should be started. A timer is set to go off when the first task is due. That task then gets passed off to the AODV thread. tos – Definition of supported ToS: average packet size and rate utils - If you can not find a function anywhere else, it is probably here.