На каждом физическом сервере, на котором находится
IRC сервер обслуживающий
сеть IRC-IoT,
может быть запущен отдельный сервис синхронизации времени –
Global Time Service (GTS).
Единственный сервис в
IRC-IoT
сети должен иметь (NickName) имя: GTS,
если же сервисов множество, то все NickName этих серверов можно узнать у специального
сервиса HelpServ, который в любой
IRC-IoT
сети должен быть в единственном экземпляре, и содержать реестр запущенных
IRC-IoT
сервисов. GTS реализуют часть протокола
IRC-IoT
по синхронизации времени, используя алгоритм, описанный Keith Marzullo из
UCSD. Аналогичная часть
протокола может быть реализована и в любом
IRC-IoT Bot,
подключенном к
IRC-IoT сети.
Протокол, в данной части, должен содержать следующие сообщения:
сообщение с Object Type = timereq (Time Request)
сообщение с Object Type = timeack (Time Acknowledgment)
сообщение с Object Type = timenfo (Time Information)
Возникает резонный вопрос: зачем в протоколе
IRC-IoT
определяются механизмы синхронизации времени? Не проще ли просто взять время с
IRC сервера, или синхронизировать по
SNTP? Дело в том, что потенциально протокол
IRC-IoT
может работать на базе другого протокола, а не IRC.
Поэтому, в нём должны быть независимо реализованы все необходимые алгоритмы.
В некоторых случаях, сеть Internet вовсе может быть недоступна. Помимо этого, упомянутый
алгоритм позволяет точно синхронизировать время именно между конкретными участниками
сети – IRC-IoT-Bot, например, обеспечив возможность одновременно
начать какой-либо процесс, вне зависимости от качества администрирования
IRC серверов, как транспортной
составляющей.