Table of Contents

IMA-DTN

Based on IBR-DTN

This is the guide to setting up simple DTN demo. The demo involves Android device and APs running OpenWRT. Android DTN-App can at least send GPS data to a receiving DTN-App installed on OpenWRT.

Openwrt dev

Install ibrdtn

  opkg update
  opkg list | grep ibrdtn
  opkg install ibrdtnd ibrdtn ibrdtn-tools
  configure the daemon via /etc/config/ibrdtn 
  you have to start/stop it via /etc/init.d/ibrdtn start|stop.

Setup WLAN AP / Ad-hoc

Create WiFi Interface

Edit /etc/config/network and define a new interface section:

  config 'interface' 'wlan0' 
      option 'proto' 'static' 
      option 'ipaddr' '10.0.0.1' 
      option 'netmask' '255.255.255.0'

Enable Wireless (disabled by default)

Edit /etc/config/wireless

config wifi-device  radio0
        option type     mac80211
        option channel  11
        option hwmode   11g
        option path     'pci0000:00/0000:00:1c.1/0000:02:00.0/0000:03:07.0/0000:07:00.0'
        option htmode   HT20
        # REMOVE THIS LINE TO ENABLE WIFI:
        option disabled 0   <---------- HERE

config wifi-iface
        option device   radio0
        option network  wlan0
        option mode     adhoc
        option ssid     openwireless.org
        option encryption none

Start / Stop Wifi

  wifi (up - default)
  wifi up (devicename)
  wifi down (devicename)

Regenerate Configuration

To rebuild the configuration file, e.g. after installing a new wireless driver, remove the existing wireless configuration (if any) and use the wifi detect command with stdout redirected to the /etc/config/wireless file:

  
  rm -f /etc/config/wireless wifi detect > /etc/config/wireless
  wifi detect > /etc/config/wireless
  

DHCP for WiFi-AP Mode

a new dhcp pool must be defined in /etc/config/dhcp:

  config 'dhcp' 'wlan0' 
      option 'interface' 'wlan0' 
      option 'start' '50' 
      option 'limit' '200' 
      option 'leasetime' '1h'
 

If DHCP not working, check:

 
  config 'dnsmasq' 
      list 'interface' 'lan' 
      list 'interface' 'guest'

Configure WiFi Firewall

config 'zone' 
    option 'name' 'guest' 
    option 'network' 'guest' 
    option 'input' 'REJECT' 
    option 'forward' 'REJECT' 
    option 'output' 'ACCEPT' 

# Allow Guest -> Internet 
config 'forwarding' 
    option 'src' 'guest' 
    option 'dest' 'wan' 

# Allow DNS Guest -> Router 
# Client DNS queries ordinate from dynamic UDP ports (>1023) 
config 'rule' 
    option 'name' 'Allow DNS Queries' 
    option 'src' 'guest' 
    option 'dest_port' '53' 
    option 'proto' 'tcpudp' 
    option 'target' 'ACCEPT' 

# Allow DHCP Guest -> Router 
# DHCP communication uses UDP ports 67-68 
config 'rule' 
    option 'name' 'Allow DHCP request' 
    option 'src' 'guest' 
    option 'src_port' '67-68' 
    option 'dest_port' '67-68' 
    option 'proto' 'udp' 
    option 'target' 'ACCEPT'

Configure WiFi Bandwidth

Apply changes

Enable the new wireless network

  /etc/init.d/network restart

Restart the firewall

  /etc/init.d/firewall restart

Restart the DHCP service

  /etc/init.d/dnsmasq restart

Start traffic shaping

  /etc/init.d/wshaper start

Make traffic shaping permanent

  /etc/init.d/wshaper enable

WiFi Key

http://wiki.openwrt.org/doc/uci/wireless/encryption

opkg install wpad-mini

vim /etc/config/wireless

config wifi-iface
	option device 'radio0'
	option network 'wlan0'
	option mode 'ap'
	option ssid 'IMARSU-AP'
	option encryption 'psk2'
	option key 'imademo123' <------ min 8 max 64

Open firewall ports

  vim /etc/config/firewall
    # add this
    #Allow videos control on wan
        config rule
        option src              wan
        option dest_port        4000:5000
        option proto            tcp
        option target           ACCEPT

#Allow MCAST
        config rule
        option name             'Allow IPMG'
        option src              wan
        option proto            igmp
        option target           ACCEPT

        config rule
        option name             'Allow Mcast FWD'
        option src      wan
        option proto    udp
        option dest     lan
        option dest_ip  224.0.0.0/4
        option target   ACCEPT
        option family   ipv4

        config rule
        option name             'Allow Mcast INPUT'
        option src      wan
        option proto    udp
        option dest_ip  224.0.0.0/4
        option target   ACCEPT
        option family   ipv4


Multicast forwading

With IGMP snooping, multicast forwarding is disabled for bridges. One pure bridge solution is to disable multicast_snooping.

Add the following in /etc/rc.local

echo “0”

> /sys/devices/virtual/net/br-lan/bridge/multicast_snooping

Replace br-lan with your actual bridge interface, sometimes also called br0.

This will forward all multicast packets to all ports on your bridge, making igmpproxy or udpxy unnecessary. In large networks, this may not be desirable.

How to add iptables rules???

OpenVPN to DAI

Install openvpn-openssl: kernel dependency

  opkg install openvpn-openssl --force-depends

Test Connection

    dtnping dtn://hostname/echo
    
    

DAI router openvpn settings

root@voyage:~# cat /etc/openvpn/MESSSE-UMTS.conf 
client
dev tun
remote openvpn.dai-labor.de 1194 udp
remote-cert-tls server
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
;comp-lzo
fragment 1300
cipher BF-CBC

verb 3
mute 5

<cert>
-----BEGIN CERTIFICATE-----
MIIEVjCCAz6gAwIBAgIJAP1gg2v3Nw5jMA0GCSqGSIb3DQEBBQUAMIGIMQswCQYD
VQQGEwJERTEPMA0GA1UECBMGQmVybGluMRIwEAYDVQQKEwlEQUktTGFib3IxFzAV
BgNVBAsTDkFkbWluaXN0cmF0aW9uMRcwFQYDVQQDEw5EQUkgT3BlblZQTiBDQTEi
MCAGCSqGSIb3DQEJARYTYWRtaW5zQGRhaS1sYWJvci5kZTAeFw0xMzA0MTkxMzMw
MzZaFw0xODA0MTgxMzMwMzZaMGAxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIEwZCZXJs
aW4xEjAQBgNVBAoTCURBSS1MYWJvcjEXMBUGA1UECxMOQWRtaW5pc3RyYXRpb24x
EzARBgNVBAMTCk1FU1NFLVVNVFMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
ANwIsP7/JfZU6/QjOYTtxIKHhBx4y1Q9ze6FORgZ3PywfPFkbz2qVA/EdarF8KMJ
bfn+S3oHKZqJ4ZpdFSOlwNoKYbn+wlrGiy4e2DWXMgZojVoyik4BWWRQAJnKXrSB
Sa4D8gugQpNHzY3Pnpa4foiYypRD1uY+Q6h1KGYqXfobAgMBAAGjggFsMIIBaDAJ
BgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIHgDALBgNVHQ8EBAMCA4gwEwYDVR0l
BAwwCgYIKwYBBQUHAwIwHQYDVR0OBBYEFEZxgBxgEVzNwMu5+MaPFTCar9OHMIG9
BgNVHSMEgbUwgbKAFPDpi7xCdYsnihU2BK38MhYy+GEVoYGOpIGLMIGIMQswCQYD
VQQGEwJERTEPMA0GA1UECBMGQmVybGluMRIwEAYDVQQKEwlEQUktTGFib3IxFzAV
BgNVBAsTDkFkbWluaXN0cmF0aW9uMRcwFQYDVQQDEw5EQUkgT3BlblZQTiBDQTEi
MCAGCSqGSIb3DQEJARYTYWRtaW5zQGRhaS1sYWJvci5kZYIJAP1gg2v3Nw4KMAkG
A1UdEgQCMAAwPAYJYIZIAYb4QgEEBC8WLWh0dHA6Ly9pbnRlcm4uZGFpLWxhYm9y
LmRlL2NhL29wZW52cG4tY3JsLnBlbTANBgkqhkiG9w0BAQUFAAOCAQEAeYOzBH8H
qs5U1iYaz7RU2Xv8o/wKffu/MuCInW8tv29N2QXNvuUv6MxRGxyaMSxHPB3xjAD5
5u4ee/Ajia07DjmFjIKD1tJOARni7Z0PgAUevPwCMmQawKomGsnUBGUL0mPBkzv0
6JKx2ssJ8qZmdZjb70nMpgjQnXC/lOvKEwuMDo6xyKGYFxIqqjh/m5S1PuqC0Ke5
KSoQuSMwe16C4cedM+jn6CR+M6eT5nUgQB3oJUgyfUqjnmKfgHOsKZAp8GyWHNKF
IfTxdkTLGlhCwu0NPFqfEx7PB51QFFwxMDJYXH45JUuODjL7El4ZBc8jpicLga3u
014EvHCAMK4K7g==
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANwIsP7/JfZU6/Qj
OYTtxIKHhBx4y1Q9ze6FORgZ3PywfPFkbz2qVA/EdarF8KMJbfn+S3oHKZqJ4Zpd
FSOlwNoKYbn+wlrGiy4e2DWXMgZojVoyik4BWWRQAJnKXrSBSa4D8gugQpNHzY3P
npa4foiYypRD1uY+Q6h1KGYqXfobAgMBAAECgYBV/juWXQdsH0JcFswrDHXJgcb7
DaaBlOn/tydaKPl59EvQV602D3Rs+R33kQZ74XqOwnijB1uWHx8BojFZzjTxCJZS
uzosx7XpU9Q2r/pa3r1E3o88glaJ58CC6GIF35Wmc+5TAeZP4q40kyG7S9xc0Pln
cKrQD3rXPp7f2+Q70QJBAPSn63mhWAtPSxLS/eEdoSfq/r8Hlta4CkqhHM4Y4Zow
fGuiCfgd97VCa2p+DtIp8l1T6EnhVkK8dwUTHjw0NYMCQQDmPIHVXn/WyHSEA5fh
aEEjzrVoQVkWq4EJy+0zE1teCvNZy+d3xjze37LohG0Ed/Euxx3l2M9MJezeN0yF
NJ2JAkEAxOb0fDKfUpLhn+fRzkDzd9YIaqRoAK2kEsYyEakywM6vBE0oatlriCVJ
oC6OLRT3a6dhNzy1GQbnX10wo1F9kwJBAMrLtRi5+iS3wFmfyKIU8HuX0ZYZKV2c
hzaX10DL5gi54IvR3PpVNLyjkbTZICV1eI1Zee5AwKc0KKW7U71pEPECQBZzgbrh
gfoNbeipYXGKgcJGuPL/bWodZCahM81tvlJ9TCaRo4FoKsBNQFv7iPCUwnAjIJzv
O80/jm+A6BuVPno=
-----END PRIVATE KEY-----
</key>
<ca>
-----BEGIN CERTIFICATE-----
MIIExjCCA66gAwIBAgIJAP1gg2v3Nw4KMA0GCSqGSIb3DQEBBQUAMIGIMQswCQYD
VQQGEwJERTEPMA0GA1UECBMGQmVybGluMRIwEAYDVQQKEwlEQUktTGFib3IxFzAV
BgNVBAsTDkFkbWluaXN0cmF0aW9uMRcwFQYDVQQDEw5EQUkgT3BlblZQTiBDQTEi
MCAGCSqGSIb3DQEJARYTYWRtaW5zQGRhaS1sYWJvci5kZTAeFw0wODA3MjMxNTQ5
MzVaFw0xODA3MjExNTQ5MzVaMIGIMQswCQYDVQQGEwJERTEPMA0GA1UECBMGQmVy
bGluMRIwEAYDVQQKEwlEQUktTGFib3IxFzAVBgNVBAsTDkFkbWluaXN0cmF0aW9u
MRcwFQYDVQQDEw5EQUkgT3BlblZQTiBDQTEiMCAGCSqGSIb3DQEJARYTYWRtaW5z
QGRhaS1sYWJvci5kZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKnZ
7NotpE043LU/E/8pKX6h7EAmLfvPDcKU3/O+4vw0R+8GN7lUxACDQa734/Ykky6S
dq4rsKtnpBvk7uM/BqgSNY3muOcChp8mzDjnYx30hQVYv92V6o7LoG9V+LybGVrI
9IbL0K4Rpd0sYuXt607QGxwV+y686wwIngMu42hBGkJodnjWa0h/7WWOSfSmg7W4
XxNkBzjY+ey7A6pO30FNDdFjADeCgVrfm50ZVKGJBGSTQ4fv9jReGp+7GBUnmdho
g86su/72WtjDii7X0Cwexmd24vKlClDNcOzwNF+C8XdFPpHWSLNVOX7Np/rI5Bb5
VBbOx7ipSMftb4a2DbkCAwEAAaOCAS8wggErMB0GA1UdDgQWBBTw6Yu8QnWLJ4oV
NgSt/DIWMvhhFTCBvQYDVR0jBIG1MIGygBTw6Yu8QnWLJ4oVNgSt/DIWMvhhFaGB
jqSBizCBiDELMAkGA1UEBhMCREUxDzANBgNVBAgTBkJlcmxpbjESMBAGA1UEChMJ
REFJLUxhYm9yMRcwFQYDVQQLEw5BZG1pbmlzdHJhdGlvbjEXMBUGA1UEAxMOREFJ
IE9wZW5WUE4gQ0ExIjAgBgkqhkiG9w0BCQEWE2FkbWluc0BkYWktbGFib3IuZGWC
CQD9YINr9zcOCjAMBgNVHRMEBTADAQH/MDwGCWCGSAGG+EIBBAQvFi1odHRwOi8v
aW50ZXJuLmRhaS1sYWJvci5kZS9jYS9vcGVudnBuLWNybC5wZW0wDQYJKoZIhvcN
AQEFBQADggEBAEcvD0WJ8LIwPalNS6MEZjcyWt9366ZbgqwjbPr6GVa0TA1oLQx5
XyI4vXhRO5PEeB1Wl2lLvwiPHkKoDx90unn9yVvHlLsMTTBDqxXBy7qbRBy3Gv9G
zZILGkILeD7M/PVXkQbnhqzOKol7yb1H/9Es6q6He79V8kyZSr+/XmvFeA2ZBch0
a4LjMCxMZjKgVelNMmVS471w9g3T+1Df5I6ccwg69oYEza3sEj9xZghVPSCeGmIL
CFTmsFVmo4kmSmTUbsm2b7rFCtP3rYsMjA1ISlIAuMdYLuIVO+dywrmbgLQrgVDj
Q80MCY0kFOMiDXYCVKDAIo+asOmLvRfBXec=
-----END CERTIFICATE-----
</ca>

Android dev

OpenWRT App dtnimarecv

This DTN-App receives GPS data from Smartphone and forward the data to GPSInfo-Agent on platform. The communication to GPSInfo-Agent is simple TCP, which can be later replaced by more advanced method e.g., ICN.

Source on Fedora

Copy apps from “ibrdtn/tools” as starting:

  cp -rp $ibrdtn_repo/ibrdtn/tools $ibrdtn_ws/ibrdtn_imaapp
  cd $ibrdtn_ws/ibrdtn_imaapp

Prepare source for dtnimarecv app:

cp src/dtnrecv.cpp src/dtnimarecv.cpp
vim Makefile.ac
# search for dtnrecv and copy to dtnimarecv
./autogen.sh

Compile source:

  ./configure --help
  ./configure --prefix=/home/dang/data/src/01_ima_ws/60_ibr_dtn/ibrdtn-prefix --with-ibrcommon=/home/dang/data/src/01_ima_ws/60_ibr_dtn/ibrdtn-repo/ibrcommon --with-ibrdtn=/home/dang/data/src/01_ima_ws/60_ibr_dtn/ibrdtn-repo/ibrdtn/ibrdtn  <---- NOTE: ibrdtn_src
  make install
  OK...
  

Test

Start dtnd and dtnimarecv:

  cd $ibrdtn_ws
  source ibrdtn-env.rc
  dtnd -c ibrdtnd.conf -i wlp3s0: -d 9
  dtnimarecv --name gps
  

Start Android IMADTNApp with dest set to “dtn:\/\/localhost.localdomain\/gps”

  Sent Lon/Lat from Android

Observe on dtnimarecv console:

dtnimarecv --name gps
Lat:52.512808Lon:13.322360

Creating OpenWRT app

Prepare workspace:

  cd /home/dang/data/src/01_ima_ws/ima_carpc_ws/carpcd_dev_ws/ima_pj/openwrt-feed/branches/x86_64_dev/packages/
  ls -la
  ima-carpc  libdaiutil  libllcp  liboonet  libphidget  log4cxx  nfc-client  README.md  testphidget  yajl   
  mkdir ibrdtn-imaapp
  cp ima-carpc/Makefile ibrdtn-imaapp/

Copy Fedora source to openWRT package:

  cp -rp /home/dang/data/src/01_ima_ws/60_ibr_dtn/ibrdtn_imaapp ibrdtn-imaapp/src
  

Dev imadtn app for OpenWRT

https://cvs.dai-labor.de/svn/dang/ima_pj/openwrt-feed/branches/boost_pipeline/packages/ima-carpc/src/README

x.1 Branch Feature
--------------------
  * Merge with trunk 20151201
	* Merge with datapipeline
	* Developing imadtnapp

x.2 Branch Status
--------------------
Segfault with pipeline 

Fix Makefile and ibrdtn-imaapp Source

Init script /etc/init.d/dtnimaapp

http://wiki.openwrt.org/inbox/procd-init-scripts



Platform app

Test run

Edit config file

  interface ethxx
  forwarding flooding
  dtnping dtn://hostname/echo

Work-log

2015-12-01

TODO:

2014-11-15/19

DONE

2014-11-12/13/14