Bug Report: --badclock, clocksynchronisation
Dear Sir or Madam,
i am currently experimenting with your IBR-DTN-implementation. During my work and research i found your instruction to use AgeBlock and the argument --badclock to avoid problems with unsynchronized clocks. If you use it the way you described it "dtnd -i eth0 --badclock" you will recieve the error message "dtnd: unrecognized option '--badclock'". So somehow your documentation is wrong or the feature isn´t included as it was planed. If you check every function of IBR-DTN with the --help-argument you will never find a possibility to use a argument called --badclock.
An other thing i found out is the fact, that you can abuse the built-in DT-NTP for automatic time-synchronization. If you set all knotes of the DTN to the slave mode, time-synchronization isn´t working the way it should anymore. The clocks can be very unsynchronisted, you can ping each other, and no "bundle expire" appears. In the same setting but with outcommented arguments in the .conf-file you will receive the error-message.
Last but not least there are some linking mistakes in the pdf-file for the api. For example on page 5 "...The available data formats are described in section ??....".
My .conf-file will be added in the appedix. The used IBR-DTN version is: IBR-DTN version: 1.0.1 (build 294b543)
I hope that the described bugs are real and not just a product of my incompetence.
If you have further questions, don´t hasitate to ask. I would be very thankful if you could answer my questions or problems.
Thanking you in advance. Yours sincerely,
Kevin Baron
------------------------
.conf-file:
##################################### # IBR-DTN daemon # #####################################
# # the local eid of the dtn node # default is the hostname # local_uri = dtn://piOne
# # routing strategy # # values: default | epidemic | flooding | prophet | none # # In the "default" the daemon only delivers bundles to neighbors and static # available nodes. The alternative module "epidemic" spread all bundles to # all available neighbors. Flooding works like epidemic, but do not send the # own summary vector to neighbors. Prophet forwards based on the probability # to encounter other nodes (see RFC 6693). # routing = flooding
# # forward bundles to other nodes (yes/no) # routing_forwarding = yes
# # set to yes if this node is connected to a high precision time reference # like GPS, DCF77, NTP, etc. #
# Time-slave #time_reference = no #time_synchronize = yes
# Time-master #time_reference = yes #time_discovery_announcements = yes
##################################### # DHTNameService settings # #####################################
# # Enable the DHT, if it was compiled # Default is no # dht_enabled = yes
# # Set the udp port, the DHT should working on # Default is 9999 # If Port is 0, a random Port will be chosen for each run # dht_port = 9999
# # Here you can choose a static DHT ID, which is very common # Default is none -> a random ID per run will be generated # dht_id = DHTpiOne
# # Enables DHT on IPv6 socket # Default is yes # dht_enable_ipv6 = no
# # Enable DNS Bootstrapping for the DHT # dht_bootstrapping = no
Hello Mr. Baron,
see my comments below inline...
Am 04.08.2015 um 14:00 schrieb Kevin Baron:
During my work and research i found your instruction to use AgeBlock and the argument --badclock to avoid problems with unsynchronized clocks. If you use it the way you described it "dtnd -i eth0 --badclock" you will recieve the error message "dtnd: unrecognized option '--badclock'". So somehow your documentation is wrong or the feature isn´t included as it was planed. If you check every function of IBR-DTN with the --help-argument you will never find a possibility to use a argument called --badclock.
That is correct. At least since version 1.0 this option is no longer present. Instead a node configured with "time_reference = no" which has not been synchronized yet will act as if it was configured with "--badclock" before.
An other thing i found out is the fact, that you can abuse the built-in DT-NTP for automatic time-synchronization. If you set all knotes of the DTN to the slave mode, time-synchronization isn´t working the way it should anymore. The clocks can be very unsynchronisted, you can ping each other, and no "bundle expire" appears. In the same setting but with outcommented arguments in the .conf-file you will receive the error-message.
That is also correct. If no node in the network knows about the correct time, there is no way to figure out when bundles should be purged. The time synchronization approach always requires at least one master in the network. The corresponding paper [1] will explain the approach in more detail.
[1] https://www.ibr.cs.tu-bs.de/bib/xml/Morgenroth:Chants:2012.html
Last but not least there are some linking mistakes in the pdf-file for the api. For example on page 5 "...The available data formats are described in section ??....".
Oh, yes. You are right. Patches are welcome if you want to contribute a fix for that issue.
My .conf-file will be added in the appedix.
If you want to enable time synchronization, you should configure "time_discovery_announcements" to "yes" on slave nodes too or leave it commented out. Only that way, synchronization will be done across multiple hops.
Kind regards, Johannes Morgenroth
participants (2)
-
Johannes Morgenroth
-
Kevin Baron