====== 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!