Tuesday, November 11, 2014

OLSR mobile ad-hoc network (MANET) routing protocol

OLSR là 1 routing protocol hỗ trợ Mobile Ad-hoc network (MANET). Dạng link-state, active protocol. Các node trong mạng tự xây dựng route table đến tất cả các node khác trong mạng (nếu được). Cập nhật là route table nếu 1 node nào đó trong mạng đứt kết nối. Xem thêm tại RFC 3626.


- Bản build OLSR (beta-1.5) routing cho wireless adhoc (MANET) dựa trên Quagga (0.99.22.1) software routing suite.
(hongvuonganh@gmail.com ; anhhv04@mp.hcmiu.edu.vn)

- Hỗ trợ:
  + Sẵn có trên Quagga: RIP, OSPF, OSPFv6, ISIS, BGP, Babel (distance vector cho MANET). Static route config, access-list... (xem thêm tại quagga.net)
  + OLSR: core OLSR routing (RFC 3626), IPv4 (IPv6 đang làm ^^).
  + Hỗ trợ CLI (Cisco like) qua telnet
  + Các command 

(sẵn có của Quagga)
enable: vào mode enable của router.
configure terminal: vào mode config của router
interface eth0 : vào interface ethernet 0 của máy
exit: thoát mode hiện tại về mode trên 1 bậc
write: lưu cấu hình vào file .conf
show ip route: xem route table.
show interface: xem thông tin interface
....

(của OLSRd)
router olsr: khởi tạo OLSR routing process
network IF_NAME: chạy OLSR routing trên interface (vd: network wlan0: chạy OLSR trên wlan0)
olsr willingness <0-7>        : setup node's willingness
olsr neighb-hold-time <1-65535>    : setup neighbor tuple holding time
olsr dup-hold-time <1-65535>    : setup duplicate tuple holding time
olsr top-hold-time <1-65535>        : setup topology tuple holding time
olsr mpr-update-time <1-65535>    : MPR update time
olsr rt-update-time <1-65535>    : Routing table update time
olsr hello-interval <1-65535>        : Update hello emission interval
olsr mid-interval <1-65535>        : Update mid   emission interval
olsr tc-interval <1-65535>        : Update tc    emission interval
show ip olsr                : show OSLR information
show ip olsr neighbor            : show neighbor set
show ip olsr linkset            : show link set
show ip olsr topset            : show topology set
show ip olsr mid            : show mid set
show ip olsr hop2            : show 2nd hop set
show ip olsr routes            : show OLSR routing table
olsr debug <1-Event | 2-Details>: enable debug mode


- Yêu cầu: Nix kernel 2.6 -> 3.2 (đã test trên Ubuntu , 10.04, 11, 12.04 LTS, CentOS 6.3), gawk, dia. Để tùy chỉnh cần thêm autotool (automake, autoconf, autoreconf) (ít nhất 1.6 trở lên)


- Cài đặt
  + Tải về, xả nén
$cp adhoc-iu-beta-1.5.tar.gz /tmp
$cd /tmp
$tar -zxvf adhoc-iu-beta-1.5.tar.gz
$cd adhoc-iu

  + Tạo folder trước:
$sudo mkdir -p /data/quagga/etc         #chứa file config (giống cái startup-config của Cisco á)
$sudo mkdir -p /data/quagga/state      #pid file.

  + Cài (mặc định vào /data/quagga , user là root)
$make
$sudo make install

  + Nếu cần thay đổi path thì chạy configure như dưới (trước make và make install)
$./configure --prefix=<working folder> --localstatedir=<pid folder> --sysconfdir=<conf folder> --enable-user=<user> --enable-group=<group>

- Tạo file config trước
$cd /data/quagga/
$sudo cp ./etc/zebra.conf.sample /etc/zebra.conf
$sudo cp ./etc/olsrd.conf.sample /etc/olsrd.conf

- Chạy (thêm -d nếu muốn chạy mode daemon)
$sudo ./sbin/zebra -d   
$sudo ./sbin/olsrd -d

- Sử dụng
+ zebra daemon: dùng cấu hình cho interface (ip add, bandwidth...) , add/delete static route...
+ olsrd daemon: enable/disable OLSR routing, update 1 số parameter của protocol này (Hello, TC, MID interval, willingness...
+ Chú ý: port để telnet vty cho zebra : 2601 ,cho olsrd là 2611.

- Ví dụ: giờ có 3 cái laptop L1 , L2 , L3. L1 & L2 nằm trong vùng sóng của nhau, tương tự cho 2, 3. L1 và L3 nằm ngoài. Khi chạy olsrd trên 3 máy -> các máy "link" lại được (có route đến máy còn lại).
  Lap1  <-------------> Lap2 <------------------> Lap3

+ Cài như trên cho 3 máy rồi chạy 2 daemon như trên

+ Chuyển mode cho card wifi trên 3 máy (đang kiếm cách tích hợp vào chtrinh luôn)
$sudo ifconfig wlan0 down
$sudo iwconfig wlan0 mode ad-hoc
$sudo iwconfig wlan0 essid olsrd
$sudo iwconfig wlan0 channel 5
$sudo ifconfig wlan0 up

+ Cấu hình IP cho interface wlan0
#Kết nối tới zebra daemon cấu hình IP cho interface wireless (wlan0)




#Cấu hình IP cho interface wlan0
telnet localhost 2601
enter telnet password (mặc định zebra)
host>enable (nhập enable pass, mặc định zebra)
host#conf t
host(config)#int wlan0
host(config-if)#ip add 10.1.1.1/24
host(config-if)#exithost(config)#exithost#write
host#exit

#Làm tương tự cho L2(10.1.1.2/24), L3 (10.1.1.3/24)

+ Chạy OLSR routing. Làm các bước bên dưới cho từng máy
telnet localhost 2611
<nhập password , mặc định zebra>
host>enable
<nhập enable password, mặc định zebra>
host#conf t
host(config)#router olsr
host(config-olsr)#network wlan0
host(config-olsr)#exit
host(config)#exithost#write
host#exit


+ Xong, 3 máy sẽ trao đổi thông tin, tìm đường ,tạo route table. Giờ 3 máy "thông" nhau. Nếu có máy nào đó tắt wifi , các máy còn lại tự cập nhật lại route table, nếu máy tắt mở lại , các máy tự động cập nhật tìm đường lại.

Bạn có ý kiến, góp ý, gửi về hongvuonganh@gmail.com hay anhhv04@mp.hcmiu.edu.vn

No comments:

Post a Comment