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.
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.
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'
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
wifi (up - default) wifi up (devicename) wifi down (devicename)
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
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'
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'
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
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
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???
opkg install openvpn-openssl --force-depends
dtnping dtn://hostname/echo
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>
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.
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...
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
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
x.1 Branch Feature -------------------- * Merge with trunk 20151201 * Merge with datapipeline * Developing imadtnapp x.2 Branch Status -------------------- Segfault with pipeline
Edit config file
interface ethxx forwarding flooding
dtnping dtn://hostname/echo
TODO:
DONE