АППАРАТНЫЕ ВРЕМЕННЫЕ МЕТКИ СЕТЕВЫХ ПАКЕТОВ: УЛУЧШЕННАЯ СИНХРОНИЗАЦИЯ СЕТЕВЫХ ЧАСОВ
HARDWARE-GENERATED TIME MARKS FOR NETWORK PACKETS: IMPROVED SYNCHRONISATION OF NETWORK CLOCKS

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Один или несколько вариантов осуществления настоящего изобретения, в общем, относятся к сетевой среде и, более конкретно, - к способу и устройству для синхронизации часов реального времени в узлах сетевой среды.
УРОВЕНЬ ТЕХНИКИ
Сетевая среда, такая как распределенная система, обычно включает в себя размещение узлов, которые соединены через сеть связи. Каждый узел сетевой среды может включать в себя локальные часы, которые сохраняют локальное время для узла. Обычно желательно сохранять единое значение времени в сетевой среде синхронизацией локальных времен, сохраненных в локальных часах их узлов.
Одним предшествующим протоколом для синхронизации локальных часов сетевой среды является Сетевой Протокол Времени (NTP). Обычно узел, работающий в соответствии с NTP, периодически генерирует пакет, содержащий значение времени, полученное из его локальных часов, и передает пакет через сеть связи. Узлы, работающие с NTP, обычно собирают эти пакеты из сети связи и выполняют статистический анализ полученных данных о времени и в ответ корректируют значения времени в их локальных часах.
Каждый узел может включать в себя переключатель для канализирования пакета от порта ввода к порту вывода, который отправляет пакет в планируемый пункт назначения. Время, которое тратит переключатель, чтобы передать пакет от порта ввода к порту вывода, может изменяться в зависимости от пакета и других факторов. Это изменение времени передачи пакета через переключатель может быть названо как время ожидания (задержка), которое может стать причиной неустойчивой синхронизации. К сожалению, неустойчивая синхронизация, вносимая переключателем, часто ограничивает синхронизацию локальных часов в узлах.
Следовательно, в технике существует необходимость в способе и устройстве для синхронизации локальных часов в сетевой среде.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Один или несколько вариантов осуществления настоящего изобретения, в общем, ориентированы на способ синхронизации часов реального времени подчиненного компьютера с часами реального времени главного компьютера. Способ заключается в том, что вычисляют первое значение временного смещения между часами реального времени подчиненного компьютера и часами реального времени главного компьютера, вычисляют второе значение временного смещения между часами реального времени подчиненного компьютера и часами реального времени главного компьютера, вычисляют среднее значение временного смещения между часами реального времени подчиненного компьютера и часами реального времени главного компьютера, используя первое значение временного смещения и второе значение временного смещения, и корректируют часы реального времени подчиненного компьютера, используя среднее значение временного смещения.
В одном варианте осуществления при вычислении первого значения временного смещения принимают первый пакет от главного компьютера, фиксируют первое реальное время подчиненного компьютера в ответ на прием первого пакета, принимают второе реальное время, причем второе реальное время показывает время, когда первый пакет был передан с главного компьютера, и вычитают первое реальное время из второго реального времени и добавляют к результату количество времени, затраченное первым пакетом на переход с главного компьютера на подчиненный компьютер.
В другом варианте осуществления при вычислении второго значения временного смещения отправляют второй пакет на главный компьютер, фиксируют третье реальное время в ответ на отправку второго пакета, принимают четвертое реальное время, причем четвертое реальное время показывает время, когда главный компьютер принял второй пакет, и вычитают третье реальное время из четвертого реального времени и вычитают из результата количество времени, затраченное вторым пакетом на переход с подчиненного компьютера на главный компьютер.
Один или несколько вариантов осуществления изобретения также ориентированы на сетевую среду, содержащую главный компьютер и подчиненный компьютер, соединенный с главным компьютером сетью связи. Подчиненный компьютер содержит часы реального времени, память, содержащую программу измерения временного смещения, и процессор, который при выполнении программы измерения временного смещения выполняет операции, содержащие вычисление первого значения временного смещения между часами реального времени подчиненного компьютера и часами реального времени главного компьютера, вычисление второго значения временного смещения между часами реального времени подчиненного компьютера и часами реального времени главного компьютера, вычисление среднего значения временного смещения между часами реального времени подчиненного компьютера и часами реального времени главного компьютера с использованием первого значения временного смещения и второго значения временного смещения, и корректировку часов реального времени подчиненного компьютера с использованием среднего значения временного смещения.
В одном варианте осуществления подчиненный компьютер дополнительно включает в себя модуль проверки текущего состояния для фиксирования реального времени подчиненного компьютера в ответ на отправку или прием пакета подчиненным компьютером.
В другом варианте осуществления подчиненный компьютер включает в себя оптический модуль, приемопередатчик, коммуникационным образом связанный с оптическим модулем, и модуль проверки текущего состояния, расположенный между оптическим модулем и приемопередатчиком.
В еще одном варианте осуществления подчиненный компьютер содержит приемопередатчик, переключатель, коммуникационным образом связанный с приемопередатчиком, и модуль проверки текущего состояния, расположенный между приемопередатчиком и переключателем.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Для того чтобы вышеперечисленные признаки настоящего изобретения можно было детально понять, более конкретное описание изобретения, кратко подытоженное выше, может ссылаться на варианты осуществления, некоторые из которых проиллюстрированы в приложенных чертежах. Следует заметить, тем не менее, что приложенные чертежи иллюстрируют только обычные варианты осуществления этого изобретения и, следовательно, не должны рассматриваться как ограничивающие его объем, изобретение может допускать другие одинаково эффективные варианты осуществления.
Фиг. 1 иллюстрирует сетевую среду в соответствии с одним или несколькими вариантами осуществления настоящего изобретения.
Фиг. 2 более подробно иллюстрирует два узла в сетевой среде фиг. 1.
Фиг. 3 и 4 иллюстрируют блок-схему способа синхронизации часов реального времени подчиненного узла с часами реального времени главного узла в соответствии с одним или несколькими вариантами осуществления изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
Фиг. 1 иллюстрирует сетевую среду 100 в соответствии с одним или несколькими вариантами осуществления настоящего изобретения. Сетевая среда 100 включает в себя узел 130, узел 140, узел 150 и узел 160, причем каждый узел может быть компьютером, сервером, беспроводным устройством, карманным компьютером или любым другим устройством, которое может извлекать пользу из соединения с сетевой средой 100. Хотя сетевая среда 100 иллюстрирует только четыре узла, один или несколько вариантов осуществления изобретения предусматривают любое число узлов в сетевой среде 100. Каждый узел 110 может взаимодействовать с одним или несколькими узлами через сеть 120 связи, которая может быть традиционной компьютерной сетью, такой как сеть Эзернет (Ethernet) или оптоволоконной канальной сетью.
Фиг. 2 иллюстрирует узел 140 и узел 150 более подробно. Узел 140 включает в себя, по меньшей мере, один центральный процессор 205 (CPU), вспомогательные схемы 210 и память 215. CPU 205 может включать в себя один или несколько традиционно имеющихся в наличии микропроцессоров. Вспомогательные схемы 210 могут быть хорошо известными схемами, которые включают кэш, источники питания, схему интерфейса ввода/вывода и тому подобное. Память 215 может включать в себя оперативное запоминающее устройство, постоянное запоминающее устройство, память на съемных дисках, флэш-память и различные комбинации этих типов памяти. Иногда память 215 может быть названа как основная память и может быть частично использована как кэш-память. Память 215 может хранить операционную систему и различные приложения программного обеспечения. Операционная система может быть использована, чтобы управлять работой узла 140. Примеры операционных систем включают в себя Microsoft Windows, UNIX, Apple OS X и тому подобное.
Узел 140 дополнительно включает в себя часы 220 реального времени. Часы реального времени сконфигурированы с возможностью отслеживания времени, даже когда компьютер выключен. Часы реального времени обычно работают на специальной батарейке, которая не соединена с источником питания компьютера. Наоборот, часы, которые не являются часами реального времени, не функционируют, когда компьютер выключен.
Узел 140 может дополнительно включать в себя оптический модуль 230, сконфигурированный с возможностью преобразования оптических сигналов, принятых из сети 120 связи, в электрические сигналы или преобразования электрических сигналов, которые должны передаваться по сети 120 связи, в оптические сигналы. Оптический модуль 230 может быть коммуникационным образом связан с приемопередатчиком 235, таким как Ethernet приемопередатчик BCM 5221, Broadcom Corp. of Irvine, California. Приемопередатчик 235 может быть коммуникационным образом связан с переключателем 240, таким как Ethernet переключатель BCM 5327, Broadcom Corp. of Irvine, California.
Оптический модуль 230 может быть коммуникационным образом связан с приемопередатчиком 235 через модуль 225 проверки текущего состояния, который контролирует данные между оптическим модулем 230 и приемопередатчиком 235. Более конкретно, модуль 225 проверки текущего состояния сконфигурирован с возможностью фиксирования реального времени при передаче или приеме пакета с фиксированным временем, как будет подробно описано в следующих параграфах со ссылкой на фиг. 3. Модулем 225 проверки текущего состояния может быть FPGA (Программируемая Пользователем Вентильная Матрица) или ASIC (Специализированная Интегральная Схема). В одном варианте осуществления модуль 225 проверки текущего состояния может быть расположен между приемопередатчиком 235 и переключателем 240, чтобы контролировать данные между приемопередатчиком 235 и переключателем 240. Другие варианты осуществления изобретения предусматривают другие положения в узле 140, в которых может быть расположен модуль 225 проверки текущего состояния.
Узел 150 включает в себя те же компоненты, что и узел 140. Следовательно, узел 150 включает в себя, по меньшей мере, один центральный процессор 255 (CPU), вспомогательные схемы 260 и память 265. Другие подробности CPU 255, вспомогательных схем 260 и памяти 265 могут быть найдены при ссылке на CPU 205, вспомогательные схемы 210 и память 215 узла 140.
Узел 150 также включает в себя часы 270 реального времени. Другие подробности часов 270 реального времени могут быть найдены при ссылке на часы 220 реального времени узла 140.
Узел 150 может дополнительно включать в себя оптический модуль 280, сконфигурированный с возможностью преобразования оптических сигналов, принятых из сети 120 связи, в электрические сигналы или преобразования электрических сигналов, которые должны передаваться по сети 120 связи, в оптические сигналы. Оптический модуль 280 может быть коммуникационным образом связан с приемопередатчиком 285, который может быть коммуникационным образом связан с переключателем 290. Другие подробности оптического модуля 280, приемопередатчика 285 и переключателя 290 могут быть найдены при ссылке на оптический модуль 230, приемопередатчик 235 и переключатель 240.
Как и при конфигурации узла 140, оптический модуль 280 может быть коммуникационным образом связан с приемопередатчиком 285 через модуль 275 проверки текущего состояния, который контролирует данные между оптическим модулем 280 и приемопередатчиком 285. Более конкретно, модуль 275 проверки текущего состояния сконфигурирован с возможностью фиксирования реального времени при передаче или приеме пакета с фиксированным временем, как будет подробно описано в следующих параграфах со ссылкой на фиг. 3. В одном варианте осуществления модуль 275 проверки текущего состояния может быть расположен между приемопередатчиком 285 и переключателем 290, чтобы контролировать данные между приемопередатчиком 285 и переключателем 290. Другие подробности модуля 275 проверки текущего состояния могут быть найдены при ссылке на модуль 225 проверки текущего состояния узла 140. Другие варианты осуществления изобретения предусматривают другие положения в узле 150, в которых может быть расположен модуль 275 проверки текущего состояния.
Фиг.3 и 4 иллюстрируют блок-схему способа 300 синхронизации часов 270 реального времени узла 150 с часами 220 реального времени узла 140 в соответствии с одним или несколькими вариантами осуществления изобретения. В этом варианте осуществления узел 140 выполняет функцию главного узла, тогда как узел 150 выполняет функцию подчиненного узла. На этапе 310 CPU 205 узла 140 отправляет пакет «с фиксированным временем» на узел 150. В ответ на отправку CPU 205 пакета с фиксированным временем на узел 150 модуль 225 проверки текущего состояния узла 140 обнаруживает или фиксирует реальное время T1 узла 140 и сохраняет T1 в памяти 215 (этап 320). Таким образом, пакет с фиксированным временем заставляет модуль 225 проверки текущего состояния «зафиксировать» время, то есть реальное время T1, узла 140 при передаче пакета с фиксированным временем на узел 150. Затем модуль 225 проверки текущего состояния генерирует сигнал прерывания и отправляет сигнал прерывания на CPU 205 (этап 330).
В ответ на прием сигнала прерывания CPU 205 извлекает T1 и сохраняет его в пакете «информации о времени» и отправляет пакет информации о времени на узел 150 (этап 340). Таким образом, узел 150 снабжается реальным временем (то есть T1) узла 140, с которого передается пакет с фиксированным временем.
На этапе 350 узел 150 принимает пакет с фиксированным временем с узла 140. Время между передачей узлом 140 пакета с фиксированным временем и его приемным узлом 150 может быть названо как время прохождения, то есть t_propagation. В ответ на прием пакета с фиксированным временем модуль 275 проверки текущего состояния фиксирует реальное время T1' узла 150 и сохраняет T1' в памяти 265 (этап 360). Таким образом, пакет с фиксированным временем сконфигурирован таким образом, что заставляет модуль 275 проверки текущего состояния фиксировать реальное время T1' при приеме пакета с фиксированным временем узлом 150. Модуль 275 проверки текущего состояния затем генерирует сигнал прерывания и отправляет сигнал прерывания на CPU 255 (этап 370).
В ответ на прием сигнала прерывания узел 150 принимает пакет информации о времени, содержащий реальное время T1, отправленное узлом 140 (этап 380). T1 может затем быть сохранено в памяти 265. На этапе 390 первое значение D1 временного смещения между часами 220 реального времени узла 140 и часами 270 реального времени узла 150 измеряется согласно:
D1=T1-T1' + t_propagation,  Уравнение (1)
где D1 представляет первое значение временного смещения, T1 представляет реальное время, когда пакет с фиксированным временем был передан с узла 140 на узел 150, T1' представляет реальное время, когда пакет с фиксированным временем был принят узлом 150, и t_propagation представляет количество времени, затраченное пакетом с фиксированным временем на переход с узла 140 на узел 150. На этапе 395 CPU 255 извлекает T1' и сохраняет его в пакете «информации о времени» и отправляет пакет информации о времени на узел 140.
Через заданное количество времени CPU 255 узла 150 отправляет пакет с фиксированным временем на узел 140 (этап 410). Заданное количество времени может быть установлено пользователем. В ответ на отправку CPU 255 пакета с фиксированным временем на узел 140 модуль 275 проверки текущего состояния фиксирует реальное время T2 узла 150 и сохраняет T2 в памяти 265 (этап 420). Модуль 275 проверки текущего состояния затем генерирует сигнал прерывания и отправляет сигнал прерывания на CPU 255 (этап 430).
В ответ на прием сигнала прерывания CPU 255 извлекает T2, сохраняет его в пакете информации о времени и отправляет пакет информации о времени на узел 140 (этап 440).
На этапе 450 узел 140 принимает пакет с фиксированным временем с узла 150. Как уже отмечалось, время, затраченное пакетом с фиксированным временем на переход с узла 150 на узел 140, может быть названо как время прохождения, то есть t_propagation. В ответ на прием пакета с фиксированным временем модуль 225 проверки текущего состояния узла 140 фиксирует реальное время T2' и сохраняет T2' в памяти 215 (этап 460). Модуль 225 проверки текущего состояния затем генерирует сигнал прерывания и отправляет сигнал прерывания на CPU 205 (этап 470).
На этапе 475 узел 140 принимает пакет информации о времени, содержащий реальное время T2, отправленное узлом 150. T2 может быть затем сохранено в памяти 215.
На этапе 480 CPU 205 извлекает реальное время T2' памяти 215, сохраняет его в пакете информации о времени и отправляет пакет информации о времени на узел 150.
На этапе 485 узел 150 принимает пакет информации о времени, содержащий реальное время T2', отправленное узлом 140. T2' может быть затем сохранено в памяти 265. На этапе 490 второе значение D2 временного смещения между часами 220 реального времени узла 140 и часами 270 реального времени узла 150 измеряется согласно
D2=T2'-T2-t_propagation,  Уравнение (2)
где D2 представляет второе значение временного смещения, T2 представляет реальное время, когда пакет с фиксированным временем был передан с узла 150 на узел 140, T2' представляет время, когда пакет с фиксированным временем был принят узлом 140, и t_propagation представляет количество времени, затраченное пакетом с фиксированным временем на переход с узла 150 на узел 140.
На этапе 495 среднее значение D временного смещения между часами 220 реального времени узла 140 и часами 270 реального времени узла 150 может быть измерено согласно
Полагая, что количество времени (t_propagation), затраченное пакетом с фиксированным временем на переход с узла 150 на узел 140, по существу, является тем же, что и количество времени (t_propagation), затраченное пакетом с фиксированным временем на переход с узла 140 на узел 150, два времени прохождения нейтрализуют друг друга. По существу, среднее значение D временного смещения может быть сокращено до
D = (T1 - T1' + T2' - T2)/2,  Уравнение (4)
где значения T1, T1', T2 и T2' могут быть найдены в памяти 265.
На этапе 500 узел 150 корректирует свои часы 270 реального времени, используя среднее значение D временного смещения, вычисленное выше. Часы 270 реального времени могут быть скорректированы с использованием генератора с регулируемым напряжением в сочетании с цифроаналоговым преобразователем или любым другим способом, общеизвестным специалистам в данной области техники.
Способ 300 может быть повторен несколько раз, пока часы 270 реального времени узла 150 не синхронизируются с часами 220 реального времени узла 140. Чем больше раз будет повторен способ 300, тем больше будут совпадать часы 270 реального времени и часы 220 реального времени. В одном варианте осуществления процесс способа 300 может быть обращен, то есть способ 300 начинается с отправки CPU 255 узла 150 пакета с фиксированным временем на узел 140, а не с отправки CPU 205 узла 140 пакета с фиксированным временем на узел 150. Независимо от того, какой узел начинает процесс, подчиненный узел, то есть узел 150, будет узлом, который вычисляет среднее временное смещение D и корректирует свои часы 270 реального времени. В другом варианте осуществления, как только часы реального времени подчиненного узла были синхронизированы с часами реального времени главного узла, подчиненный узел может служить главным узлом для другого подчиненного узла.
Хотя вышеизложенное ориентировано на варианты осуществления настоящего изобретения, другие и дополнительные варианты осуществления изобретения могут быть разработаны без отклонения от его объема, и объем изобретения определяется следующей формулой изобретения.