1. Trang chủ
  2. » Thể loại khác

Integration of re active ad hoc routing daemon into Quagga routing suite for wireless ad hoc routers

6 144 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 0,96 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Integration of Re-active Ad-hoc Routing Daemon into Quagga Routing Suite for Wireless Ad-Hoc Routers Quan LE-TRUNG School of CSE, International University at HCM city Wireless Embedded

Trang 1

Integration of Re-active Ad-hoc Routing Daemon into Quagga Routing Suite for Wireless Ad-Hoc Routers

Quan LE-TRUNG School of CSE, International University at HCM city

Wireless Embedded Internet group

Ho Chi Minh city, Vietnam

ltquan@hcmiu.edu.vn

Van-Hau PHAM Faculty of Computer Network and Communication University of Information Technology Vietnam National University HCMC

haupv@uit.edu.vn

Abstract—Research in Mobile Ad-hoc Networks (MANETs)

has been in-progress towards the real implementation of ad-hoc

routing protocols to be used in the real-time applications

However, existing approaches implement ad-hoc routing

protocols as standalone daemons to serve only pure routing

functionalities, leading to difficulties on the network

configuration once multiple routing protocols are running in the

network In this paper, we use another approach, in which

ad-hoc routing protocols are integrated into the Quagga routing

software suite, and aodvd, a re-active ad-hoc routing daemon, is

used for the real integration demonstration

Keywords—MANETs; ad-hoc routing; implementation;

daemons; protocols

I INTRODUCTION Mobile ad-hoc networks (MANETs) are subset of wireless

network that helps us to overcome the limited freedom of

mobility of infrastructure wireless network MANETs are

infrastructure-less, self-organized and seft-healing networks

that consists of mobile nodes, interconnected by multi-hop

wireless paths Due to these characteristics, MANETs are

suitable for instant applications without the need of any

network infrastructures, e.g., group communication between

soldiers in the battlefield, between rescuers in the disaster area,

between partners in a conference, just to list a few Currently,

we have been in progress to develop a smart building

application that uses 802.11 technology operated in low-power

mode for wireless communication, instead of the conventional

802.15.4 technology Our purpose is to achieve the energy

efficiency, while reducing the number of hops on collecting

sensor readings, and thus, increasing the performance (higher

data delivery ratio, shorter latency) of the system In our

application architecture, a MANET node, i.e., a wireless ad-hoc

router (WADR), takes an important role on the delivery of

sensor readings Fig 1 shows the mapping network

architecture (on the right) of our motivation example (on the

left) on a smart building application, in which a WADR takes

the role of a cluster head (in each room, or floor) for the local

data, code, and context repository, as well as for the

communication via 802.11 technology to disseminate sensor

readings back to the sink, and/or the management station

Many routing protocols have been proposed and

implementation versions were developed for routing purposes

in MANETs environment [6] However, these ad-hoc routing

protocols are normally implemented as standalone routing

daemons, e.g., aodvd [5], olsrd [7], to serve only for pure routing functionalities such as access control list, route map policy, redistribute mechanism In these existing routing approaches, there will be difficulties in the routing configuration once there is the need to run either multiple or

alternative routing protocols in the network In this paper, we

use an integrated approach, in which ad-hoc routing protocols are added into the Quagga routing software suite

[4], that provides TCP/IP based routing services with routing protocols support such as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, BGP-4+, and IPv6 routing protocols

In particular, a re-active ad-hoc routing protocol, aodvd [5],

is used to illustrate for this integration in the Linux platforms Our work can be thought as a complement to

OLSRdq [8], in which a pro-active ad-hoc routing, olsrd [7], is

integrated into Quagga framework Fig 2 shows the Quagga

system architecture with the aodvd daemon integration

Fig 1 The network architecture of our smart building application

Normally, a legacy routing software, e.g., ripd [10], ospfd

[11], is made as a one process program which provides all of the routing protocol functionalities Quagga takes a different approach It is made from a collection of several daemons that work together to build the routing table Fig 2 also shows several protocol-specific routing daemons For changing the Linux kernel routing table and for redistribution of routes between different routing protocols, there is a kernel routing

Trang 2

table manager, i.e., zebra daemon It is easy to add a new

routing protocol daemon to the entire routing system without

affecting any other software Only the protocol daemons

associated with routing protocols in use are needed to run

Thus, user may run a specific daemon and send routing reports

to a central routing console The zebra daemon also tells

routing protocol daemons for interface status changing,

interface IP address update [4] This Quagga multi-process

architecture brings extensibility, modularity and

maintainability At the same time, it also brings many

configuration files and terminal interfaces, and Quagga

provides integrated user interface shell called vtysh, that

connects to each daemon with Unix/Linux domain socket and

then works as a proxy for user input [4] These features are

useful in solving the configuration difficulties once either

multiple or alternative routing protocols are running in the

network, and to be exploited in this paper for the integration of

a re-active ad-hoc routing daemon (aodvd)

Fig 2 Quagga system architecture with aodvd

This paper is organized as follows Section II shows in details

the architecture, the implementation, and the integration of

aodvd daemon into the Quagga routing software suite Section

III presents a real MANET testing case, and discusses on the

recorded results Section IV shows the related work Finally,

Section V ends this paper with conclusions and future work

II INTEGRATION OF AODVD INTO QUAGGA ROUTING SUITE

In this Section, we describe the main flows in the

implementation of aodvd routing daemon, which is integrated

into the Quagga infrastructure in the Linux platforms Details

of the synchronization between aodvd routing table with zebra

routing table, and the Linux kernel routing table, are also

shown

AODV [1] is a re-active (on-demand) ad-hoc routing

protocol which means the routing daemon must be triggered

for the route discovery process if a route to the destination host,

or destination network, is not available This characteristic

makes AODV different from traditional routing protocols

supported in Unix/Linux, which are pro-active (table-driven)

In our aodvd implementation, we have kept the same netfilter

hooks [9] as the original aodvd implementation [5], for packet

processing In particular, these netfilter hooks will capture

traversed packets, identify the packet types, and tell netfilter to

accept the packets, or queue the packets, for later processing at

user-space However, the tasks to update the kernel routing

table are transferred to zebra daemon [4] Fig 3 shows the flows of packet handling in our aodvd implementation

Incoming AODV control messages are accepted and queued for processing on a separated UDP socket using port

654 The message is processed by the aodv_socket module,

which checks the message type field and calls the correspondent functions to handle Outgoing AODV message

generated locally will also be caught by netfilter hook

NL_IP_LOCAL_OUT , queued by the kaodv-mod module, and received by the kaodv-queue module The kaodvd-queue module will return an accept verdict to the kaodv-netlink and the packet will then be caught by the netfilter hook

NL_IP_POST_ROUTING The packet has also updated the latest routing information and finally sent out [3]

Fig 3 Flows of packet handling in aodvd implementation

For handling data packet, if the destination of the packet (determined by its destination IP address) is the current host, the packet is a broadcast packet, or Internet gateway mode has been enabled and the packet is not a broadcast within the current subnet, the packet is accepted This means that the packet under these circumstances will be handled as usual by the operating system Otherwise, the packet should be forwarded, queued or dropped The internal routing table of

aodvd is used for checking whether an active route to the specified destination exists or not If such a route exists, the next hop of the packet is set and the packet is forwarded Otherwise, provided that the packet was generated locally, the

kaodv-netlink module for indirectly queuing the packet until

aodvd has decided on an action, and a route discovery is initiated If the packet was not generated locally, and no route was found, it is instead dropped and an error message is sent to the source of the packet Figs 4-5 show in details the packet

processing in kernel-space, and in user-space, respectively, of our aodvd implementation

When aodvd daemon updating its routing table, changes in

aodvd routing table are synchronized to the kernel routing table

via zebra call functions A Unix/Linux socket is initialized to

Trang 3

create a communication channel between aodvd and zebra

daemons Route updates are then sent to zebra daemon

(aodv_route) using zebra protocol Upon receiving route

updates, zebra will recalculate its routing tables (Routing

Information Base-RIB and Forwarding Information Base-FIB),

and zebra FIB is then fed to the kernel routing table The

user-space module of aodvd performs the kernel route update via

three modules: i) nl_send_add_route_msg() for adding a new

route to the kernel, ii) nl_send_del_route_msg() for deleting a

route from kernel, and iii) nl_send_no_route_found_msg() for

announcement of no route found These functions are called

when aodvd performs an update on its routing table to

synchronize aodvd routing table and the kernel routing table

With the integration with Quagga, aodvd will tell zebra

daemon for route updates (add, or update, or delete) This is

done by the module aodv_route(), which is defined in the file

zebra.c The destination information is stored in the data

structure prefix_ipv4 p, the next_hop, metric and interface

index are also used to generate the data structure zapi_ipv4 api

Finally, the module zapi_ipv4_route() is called to perform

appropriate actions (add route, or delete route)

Fig 4 Packet processing in kernel-space of aodvd implementation

Fig 5 Packet processing in user-space of aodvd implementation

The zebra protocol is a streaming protocol with a common

header, and is used by our aodvd daemon to communicate with

the zebra daemon The aodvd daemon can now request and

send information to and from the zebra daemon, such as

interface states, routing state, next-hop validation, and so on

The zebra daemon manages which route is installed into the

forwarding table with the kernel The zebra daemon is also the

core daemon of Quagga routing suite, it acts as an abstraction

layer between other user-defined routing daemons (aodvd in

our case), and the underlying Unix/Linux kernel That means,

it will send and receive routing requests from aodvd daemon;

add, delete and update the kernel routing table The data

structure zserv defined in zebra/zserv.h represents the zebra daemon It has sock parameter, which is the socket to communicate with aodvd daemon zebra daemon supports two

types of socket s– TCP socket and Unix/Linux socket

When zebra daemon starts, zebra_zserv_socket_init() is called to create zebra server socket, zebra_serv() function is called if zebra daemon support TCP socket, otherwise,

zebra_serv_un() function is called to create zebra Unix/Linux

domain socket with file descriptor at /var/run/zserv.api by default The aodvd daemon will connect to this Unix/Linux socket for communicating with the zebra daemon The zebra daemon has three buffer; *ibuf and *obuf for input/output buffer to client, and *wb for data waiting to be written to client Sub-thread *t_read is periodically reschedule to listen to aodvd daemon requests Once the zebra_client_read() function is

called, it reads messages from Unix/Linux socket, filters command types and performs the correspondent functions for handling the client requests In this paper, we focus on kernel

routing table update requests - ZEBRA_IPVX_ROUTE_ADD and ZEBRA_IPVX_ROUTE_DELETE (X stands for IPv4/v6)

Fig 6 shows the kernel route flow in our implementation

Fig 6 Kernel route update flow in zebra/Quagga framework

aodvd routing daemon operates and send route updates to the

zebra daemon by calling the function zapi_ipv4_route() (for IPv6 route, zapi_ipv6_route() is called instead) Route

information (with command for add or delete) is then sent to

the zebra socket, and the zclient_socket()/zclient_socket_un() function is called to establish the connection The zebra

daemon periodically listens to the socket Upon receiving a

zread_ipv4_add()/zread_ipv4_delete() is called to handle add

or delete request The zebra routing information base will then

be updated with client’s route requests by calling the

rib_add_ipv4_multipath() function for adding a new route, and

the rib_delete_ipv4() function for deleting a route After updating, the rib_process() function is called to process the

zebra Routing Information Base (RIB) At this stage,

Trang 4

Forwarding Information Base (FIB) is calculated The zebra

daemon feeds the FIB to the Linux kernel, which allows the IP

stack in the kernel to forward packets according to the routes

computed by the Quagga The kernel FIB is updated in an

OS-specific way, e.g., the netlink interface is used on Linux [3]

III DEMONSTRATION This Section presents a real test case with three physical

machines (laptops with attached or integrated WLAN cards

and operated in ad-hoc mode) to carry out the test on the aodvd

routing daemon operations such as the routing information and

message exchanging between the aodvd daemon and the zebra

daemon, and the Linux kernel routing table The test case also

comes with some movement action to mimic nodes mobility

Log files, screen dumps, data records are also collected for

troubleshooting the source code functionalities Fig 7 shows

the network architecture for this test case

L a p to p _ A

1 0 1 1 1 0 /2 4

L a p to p _ B

1 0 1 1 3 0 /2 4

L a p to p _ A

1 0 1 1 1 0 /2 4

L a p to p _ C

1 0 1 1 2 0 /2 4 L a p to p _ B

1 0 1 1 3 0 / 2 4

M o b ility

Fig 7 The network architecture for a real test case

Each laptop is installed with Linux Ubuntu 10.04 (kernel

2.6.32-38-generic) , and our developed adhoc-iu-0.1.tar.gz

package (including Quagga 0.99.22.1 source code [4], and our

developed aodvd routing daemon from AODV-UU 0.9.6 source

code [5]) The procedures in this test case are carried out as

follows:

Step-1: Machine A and B are placed near each other

(within each other coverage range) Both machines

run aodvd and zebra daemons

Step-2: Machine A pings machine B successfully, and

vice verse

Step-3: Capture zebra routing table on both machine

A and B

Step-4: Move machine B away from machine A’s

coverage range

Step-5: Machine A and machine B is now

disconnected

Step-6: Now place a machine C in the middle of A and B, and C is in both A and B’s coverage range

Run aodvd and zebra on C

The results are shown in Figs 8-16 In particular, Figs 8-10 show results for Steps 1-3, Fig 11 shows results for Steps 4-5, and Figs 12-16 show results for Step 6

Fig 8 aodvd route update status on machine A about machine B

Fig 9 Machine A zebra routing table with route update to machine B

Fig 10 The establishment of connection between machines A-B

Fig 11 Link break route update status on A once machine B moves away A

Trang 5

Fig 12 aodvd route update status on machine C (between A-B)

Fig 13 Machine C zebra routing table with route update to machines A-B

Fig 14 aodvd route update status on machine A once C is inserted

Fig 15 Machine A zebra routing table with route update to machines C-B

Fig 16 Re-establishment of connection between machines A-B via C

IV RELATED WORK

In this Section, we show a current review on existing implementation of MANET ad-hoc routing protocols, network testbeds, or semi-testbeds We do not consider other simulators and/or emulators used for testing and measuring MANET

A number of standalone ad-hoc routing protocols have been partly implemented and tested piconet [12] implements

an ad-hoc routing protocol, i.e., dynamic source routing (DSR) [6], for IP on Linux which will allow a dynamic network of mobile devices to be self-organizing and self-configuring It assumes that the network interface is up before installing the

DSR module kernel-aodv [13] is a loadable kernel module for

Linux It implements aodv routing between computers

equipped with WLAN devices Like piconet, kernel-aodv only

implements a single ad-hoc routing protocol However, in this package, it additionally adds multiple characteristics, e.g., supporting for multiple interfaces and internetworking with the

Internet awds [14] implements a layer 2 routing protocol for

wireless mesh networks, based on link-state routing, similar to the olsr routing For communicating with applications, the

awds daemon creates a virtual Ethernet interface (i.e., awds0) The device emulates an Ethernet interface, and thus all kinds of protocols that work with Ethernet can be used through virtual

Ethernet tunnel established over wireless link APE [15] is a

universal ad-hoc test-bed for protocol evaluation in realistic scenario, and APE distribution also comes pre-configured and contains tools for data gathering at both IP and Ethernet level Moreover, APE source code allows building customized APE distribution packages, with new scenarios, protocols, and much more, it also contains analysis tools for analysis of gathered data There are popular ad-hoc routing protocols integrated into

APE , including aodv, dsr, olsr However, each routing protocol

has to be configured separately and manually, and APE is platform-dependent with many assumptions about underlying software and hardware platforms In contrast, our work in this

paper overcomes these issues with the integration of a re-active

ad-hoc AODV routing daemon into the Quagga routing

software suite OLSRdq [8] is both the most similar and a complement to our work, in which a pro-active OLSR routing

protocol is used for the integration

V CONCLUSIONS This paper has shown part of our work in developing wireless ad-hoc routers to be used in smart building applications In

particular, a re-active ad-hoc routing daemon, i.e., aodvd, has

been integrated into the Quagga routing suite for the comfortable configuration of multiple routing protocols A real test case has also demonstrated the operations of our developed wireless ad-hoc routers

With this release adhoc-iu-0.1.tar.gz, our developed aodvd daemon does not support all zebra message types, only route

ADD, route UPDATE, and route DELETE messages The

aodvd daemon has also still not re-acted to interface status changing during its operation which is a drawback to be taken care of in later work New IPv6 address support is also an important module that the author should target The security and memory leak are missing in this release and yet to be fulfilled in future work As for testing purposes, proposed test

Trang 6

cases are simple and not cover many aspects in ad-hoc

environment – number of nodes, hidden node problem, signal

strength, internet gateway testing, re-distribution between

multiple routing protocols, are some other approaches to focus

on

ACKNOWLEDGMENT This research is funded by Vietnam National University

HoChiMinh City (VNU-HCM) under grant number

HS2014-28-01

REFERENCES [1] C Perkins, E Belding-Royer, and S Das, “Ad-hoc On-Demand

Distance Vector (AODV) Routing,” IETF Network Working Group,

RFC 3561, July 2003

[2] B Wiberg, “Porting AODV-UU Implementation to ns-2 and Enabling

Trace-based Simulation,” Master’s Thesis at Uppsala University,

Sweden, 2002

[3] K Wehrle, F Pählke, H Ritter, D Müller, and M Bechler, “The Linux® Networking Architecture: Design and Implementation of

Network Protocols in the Linux Kernel,” Prentice Hall, August 2004 [4] The Quagga Routing Software Suite, http://www.nongnu.org/quagga/ [5] The AODV-UU project, http://aodvuu.sourceforge.net/

[6] IETF MANETs charter, http://datatracker.ietf.org/wg/manet/charter/ [7] The olsrd Routing Daemon, http://www.olsr.org/

[8] OLSRdq – OLSR Daemon for Quagga, http://olsrdq.sourceforge.net/ [9] The netfilter Framework, http://www.netfilter.org/

[10] The IETF Routing Information Protocol (RIP) charter,

http://datatracker.ietf.org/wg/rip/charter/ [11] The IETF Open Shortest Path First (OSPF) charter,

http://datatracker.ietf.org/wg/ospf/charter/

[12] The piconet Project, http://sourceforge.net/projects/piconet/

[13] The kernel-aodv Project, http://w3.antd.nist.gov/wctg/aodv_kernel/ [14] The awds Project, http://awds.berlios.de/

[15] The APE Project, http://apetestbed.sourceforge.net/

Ngày đăng: 16/12/2017, 15:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm