====== IMA-DTN ======
Based on IBR-DTN
* http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn/wiki/docs
* http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn/wiki/source
* http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn/wiki/android-dev
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) ====
* http://wiki.openwrt.org/doc/uci/wireless
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 =====
* http://wiki.openwrt.org/doc/howto/vpn.openvpn
* http://wiki.openwrt.org/doc/howto/vpn.client.openvpn.tap
==== Install openvpn-openssl: kernel dependency ====
* https://forum.openwrt.org/viewtopic.php?id=51221
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
-----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-----
-----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-----
-----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-----
====== 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:
* DONE: Turn ibrdtn-imaapp to openwrt app.
* /home/dang/data/src/01_ima_ws/ima_carpc_ws/carpcd_dev_ws/ima_pj/openwrt-feed/branches/openwrt_dtnimaapp/packages/ima-carpc/src
* This branch compiled and dtnimaapp runs on Owrt
* startup script using procd
* Segfault pipeline
* ima-carpc compiled with pipeline?
===== 2014-11-15/19 =====
DONE
* Install Openwrt AP.
* OpenWRT app receiving GPS data from Android app
* Dev on Fedora: /home/dang/data/src/01_ima_ws/60_ibr_dtn/ibrdtn_imaapp
* OpenWRT x86_64 source: /home/dang/data/src/01_ima_ws/ima_carpc_ws/carpcd_dev_ws/ima_pj/openwrt-feed/branches/x86_64_dev/packages/ibrdtn-imaapp
* Feature: receive DTN package from Android containing GPS JSON.
* Forward JSON to ima-server.. successfully tested.
* Android app uses JSONParser util from Transport Adaptor. Create JSON from JavaObject completed.
===== 2014-11-12/13/14 =====
* Start with Android
* Android app sending GPS data... done
* Start with Owrt... done
* configure AP mode... done
* install, configure ibr-dtn... done
* using /home/dang/data/src/01_ima_ws/ima_carpc_ws/carpc_hw_openwrt/build_root/openwrt_experiment to build
* Creating openwrt feed for ibr-dtn ibrdtn is already in the OpenWRT package feed.
* Test DTN with whisper app. Turn off DTN on android 1, send msg from android 2 over IMARSU-AP, turn off adnroid 2, turn on android 1. OK!