Hi,
We recently decided to use IBR DTN on our project. By now we are only trying to connect two virtual machines with Ubuntu16: VM1(master) & VM2(slave). The connection we are trying to make is TCP via port 4556 (I will try to summarize the configuration files below).
I am guessing that this is not really a problem, but we are using the interface ens160 since it does not appear any eth0 when we call the ifconfig command as shown below:
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:0d:4f:20:73 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.2.133 netmask 255.255.255.0 broadcast 172.16.2.255
inet6 fe80::311d:dd0f:5b1f:10a0 prefixlen 64 scopeid 0x20<link>
ether 00:50:56:b8:d3:96 txqueuelen 1000 (Ethernet)
RX packets 48696 bytes 32047604 (32.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14348 bytes 1994383 (1.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1434 bytes 155169 (155.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1434 bytes 155169 (155.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
As soon as we start the daemon at the master this message appears in its log file:
Mon May 10 09:41:37 2021 INFO NativeDaemon: IBR-DTN daemon 1.0.1 (build 294b543)
Mon May 10 09:41:37 2021 INFO Configuration: Configuration: /etc/ibrdtn/ibrdtnd.conf
Mon May 10 09:41:37 2021 INFO NativeDaemon: use logfile for output: /var/log/ibrdtn/ibrdtn.log
Mon May 10 09:41:37 2021 INFO NativeDaemon: Parallel event processing enabled using 3 processes.
Mon May 10 09:41:37 2021 INFO BundleCore: Local node name: dtn://VM1
Mon May 10 09:41:37 2021 INFO BundleCore: Forwarding of bundles enabled.
Mon May 10 09:41:37 2021 INFO SecurityKeyManager: initialized; path: /etc/ibrdtn/bpsec
Mon May 10 09:41:37 2021 INFO NativeDaemon: using bundle storage in memory-only mode
Mon May 10 09:41:37 2021 INFO DTNTPWorker: Time-Synchronization enabled: master mode
Mon May 10 09:41:37 2021 INFO NativeDaemon: API initialized using tcp socket: any:4550
Mon May 10 09:41:37 2021 INFO NativeDaemon: TCP ConvergenceLayer added on ens160:4556
Mon May 10 09:41:37 2021 INFO NativeDaemon: TCP ConvergenceLayer added on any:4556
Mon May 10 09:41:37 2021 INFO DiscoveryAgent: listen to [224.0.0.142]:4551
Mon May 10 09:41:37 2021 INFO DiscoveryAgent: listen to [ff03::142]:4551
Mon May 10 09:41:37 2021 INFO DiscoveryAgent: add interface ens160
Mon May 10 09:41:37 2021 INFO DiscoveryAgent: add interface any
Mon May 10 09:41:37 2021 NOTICE GlobalEvent: Internet connection is available.
Mon May 10 09:41:37 2021 ERROR TCPConvergenceLayer: bind failed (failed to getaddrinfo with address: [fe80::311d:dd0f:5b1f:10a0%ens160]:4556 (link))
Mon May 10 09:41:37 2021 INFO DHTNameService: DHT initialized on Port: 9999 with ID:
Mon May 10 09:41:37 2021 ERROR IPNDAgent: Join failed on ens160 ([fe80::311d:dd0f:5b1f:10a0%ens160]:4551 (link), family: 10); failed to getaddrinfo with address: [fe80::311d:dd0f:5b1f:10a0%ens160]:4551 (link)
Mon May 10 09:41:37 2021 INFO NativeDaemon: Using default routing extensions
Mon May 10 09:41:37 2021 WARNING DHTNameService: bootstrapping from default domain failed with error: -2
Mon May 10 09:41:46 2021 WARNING DHTNameService: bootstrapping from default domain failed with error: -2
Mon May 10 09:42:00 2021 NOTICE NodeEvent: Node dtn://VM2 available
Then, when we start the second daemon this message is shown in its log file:
Mon May 10 09:41:59 2021 INFO NativeDaemon: IBR-DTN daemon 1.0.1 (build 294b543)
Mon May 10 09:41:59 2021 INFO Configuration: Configuration: /etc/ibrdtn/ibrdtnd.conf
Mon May 10 09:41:59 2021 INFO NativeDaemon: use logfile for output: /var/log/ibrdtn/ibrdtn.log
Mon May 10 09:41:59 2021 INFO NativeDaemon: Parallel event processing enabled using 3 processes.
Mon May 10 09:41:59 2021 INFO BundleCore: Local node name: dtn://VM6
Mon May 10 09:41:59 2021 INFO BundleCore: Forwarding of bundles enabled.
Mon May 10 09:41:59 2021 INFO SecurityKeyManager: initialized; path: /etc/ibrdtn/bpsec
Mon May 10 09:41:59 2021 INFO NativeDaemon: using bundle storage in memory-only mode
Mon May 10 09:41:59 2021 INFO DTNTPWorker: Time-Synchronization enabled: slave mode
Mon May 10 09:41:59 2021 NOTICE GlobalEvent: Internet connection is available.
Mon May 10 09:41:59 2021 INFO NativeDaemon: API initialized using tcp socket: any:4550
Mon May 10 09:41:59 2021 INFO NativeDaemon: TCP ConvergenceLayer added on ens160:4556
Mon May 10 09:41:59 2021 INFO DiscoveryAgent: listen to [224.0.0.142]:4551
Mon May 10 09:41:59 2021 INFO DiscoveryAgent: listen to [ff02::142]:4551
Mon May 10 09:41:59 2021 INFO DiscoveryAgent: add interface ens160
Mon May 10 09:41:59 2021 ERROR TCPConvergenceLayer: bind failed (failed to getaddrinfo with address: [fe80::49b0:e031:c4a5:6586%ens160]:4556 (link))
Mon May 10 09:41:59 2021 INFO DHTNameService: DHT initialized on Port: 9999 with ID:
Mon May 10 09:41:59 2021 ERROR IPNDAgent: Join failed on ens160 ([fe80::49b0:e031:c4a5:6586%ens160]:4551 (link), family: 10); failed to getaddrinfo with address: [fe80::49b0:e031:c4a5:6586%ens160]:4551 (link)
Mon May 10 09:41:59 2021 INFO NativeDaemon: Using default routing extensions
Mon May 10 09:42:00 2021 WARNING DHTNameService: bootstrapping from default domain failed with error: -2
Mon May 10 09:42:03 2021 NOTICE NodeEvent: Node dtn://VM1 available
Mon May 10 09:42:03 2021 NOTICE BundleReceivedEvent: Bundle received [0.1547405242] dtn://VM2/dtntp (local)
Mon May 10 09:42:03 2021 NOTICE QueueBundleEvent: New bundle queued [0.1547405242] dtn://VM2/dtntp
Mon May 10 09:42:03 2021 NOTICE BundleEvent: bundle [0.1547405242] dtn:// VM2/dtntp received
Mon May 10 09:42:03 2021 NOTICE ConnectionEvent: connection setup dtn:// VM1
Mon May 10 09:42:03 2021 WARNING TCPConnection: connection to dtn:// VM1 failed
Mon May 10 09:42:03 2021 NOTICE RequeueBundleEvent: Bundle requeued [0.1547405242] dtn://VM2/dtntp
From that point on, the last three messages keep repeating every few seconds.
I have read in past messages from this list that the ERROR line which says “bind failed” only concerns to IPv6 and that we should not worry about it, but the daemons still cannot connect to each other. They can see each other but testing it with Wireshark we have seen that when the slave sends a packet to establish the TCP connection to the master the second one returns a packet with the reset flag activated. I have attached two images on this mail showing the results of the wireshark monitoring of the interface ens160 on both machines.
Looking for the meaning of the reset flag we found that usually means that the port wanted to be used is closed. And indeed, it seems to be closed.
Using the command “netstat -tulpen” we can see the following ports (VM1 example):
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
tcp6 0 0 :::4550 :::* LISTEN -
As you can see the port 4556 does not appear at all. In addition, when we write from VM2 the command “nmap -p- <IP VM1>” the results are the following:
Starting Nmap 7.60 ( https://nmap.org ) at 2021-05-10 11:01 CEST
Nmap scan report for 172.16.2.133
Host is up (0.00031s latency).
Not shown: 65534 closed ports
PORT STATE SERVICE
4550/tcp open gds-adppiw-db
Nmap done: 1 IP address (1 host up) scanned in 1.80 seconds
As you can see again the only port that seems to be open is port 4550, but not port 4556.
I will greatly appreciate any kind of help.
Best regards,
Daniel Serra.
Config files: (the only thing that changes from both machines is that the only config file with the option “time_reference” set to yes is VM1 the rest have this option disabled)
#####################################
# IBR-DTN daemon #
#####################################
logfile = /var/log/ibrdtn/ibrdtn.log
api_interface = any
api_port = 4550
#####################################
# convergence layer configuration #
#####################################
discovery_address = ff03::142 224.0.0.142
discovery_crosslayer = yes
net_interfaces = lan0
net_autoconnect = 60
net_internet = ens160
net_lan0_type = tcp # we want to use TCP as protocol
net_lan0_interface = ens160 # listen on interface ens160
net_lan0_port = 4556 # with port 4556 (default)
#####################################
# routing configuration #
#####################################
routing = default
routing_forwarding = yes
routing_prefer_direct = yes
#####################################
# bundle security protocol #
#####################################
security_path = /etc/ibrdtn/bpsec
security_trusted_ca_path = /etc/ibrdtn/certs
#####################################
# time synchronization #
#####################################
time_reference = yes
time_synchronize = yes
time_discovery_announcements = yes
#####################################
# DHTNameService settings #
#####################################
dht_enabled = ye