Протокол разрешения имен для проводного соединения равноправных устройств и используемая в нем структура данных формата сообщения
Иллюстрации
Показать всеИзобретение относится к протоколам связи в одноранговой инфраструктуре, в частности к расширяемой структуре данных для сообщений в протоколе разрешения имен для соединения равноправных устройств. Техническим результатом является повышение надежности обработки сообщений. В структуре данных сообщений используется ряд полей, каждое из которых содержит элемент сообщения. Предпочтительно первое поле является заголовком сообщения, который включает в себя информацию протокола и идентифицирует тип сообщения. Каждый элемент сообщения содержит ряд полей. Эти поля элемента сообщения включают в себя поле типа, поле длины и содержимое или полезную нагрузку элемента сообщения. Для правильной работы протокола разрешения имен для соединения равноправных устройств (PNRP) формируется, по меньшей мере, десять сообщений, а именно: RESOLVE («разрешение»), RESPONSE («ответ»), SOLICIT («ходатайство»), ADVERTISE («объявление»), REQUEST («запрос»), FLOOD («распространение»), INQUIRE («вопрос»), AUTHORITY («полномочие»), АСК («квитирование»), и REPAIR («исправление»). 5 н. и 42 з.п. ф-лы, 6 ил., 35 табл.
Реферат
Область техники к которой относится изобретение
Настоящее изобретение относится, в целом, к протоколам связи в одноранговой инфраструктуре и, в частности, структурам данных формата сообщения, обеспечивающим структурированную связь в одноранговом графе.
Предшествующий уровень техники
Различные технологии связи в Интернете позволяют пользователям с общими интересами сотрудничать, совместно использовать файлы, осуществлять интерактивную переписку, передавать в многоадресном режиме аудио- и видеоинформацию для презентаций и групповых встреч и участвовать в играх для множества игроков. Однако в настоящее время связь в Интернете осуществляется, в основном, в централизованной среде с серверами, где весь трафик идет на большие центральные серверы или через них, с которыми индивидуумы могут соединяться для участия в этой связи.
С повторным появлением технологии равноправных устройств современная модель связи в Интернете на основе серверов быстро вытесняется. Действительно, технологии равноправных устройств позволяют пользователям связываться друг с другом в бессерверной среде, свободной от ограничений связи в Интернете на основе серверов. В системе на основе равноправных устройств можно обеспечивать анонимность и приватность пользователей, поскольку связь осуществляется непосредственно между равноправными устройствами в сети. Однако, хотя индивидуальная связь и совместное использование файлов относительно хорошо развиты в одноранговых сетях, установление, обнаружение, подключение, поддержание и совместное использование информации в среде равноправных устройств не столь хорошо развиты.
Связь между равноправными устройствами и, фактически, все типы связи зависят от возможности установления правильных соединений между избранными объектами или узлами. Эти объекты или узлы могут представлять собой равноправные устройства (т.е. пользователи или машины) или группы, сформированные в сети равноправных устройств. Соединения между узлами образуют одноранговый граф, который позволяет осуществлять связь и передавать информацию на узлы и между ними. Однако объекты могут иметь один или несколько адресов, которые, могут изменяться по причине перемещения этих объектов в сети, изменения топологии, отсутствия возможности возобновления пользования адресом, изменения функции или цели группы и т.д. Классическое архитектурное решение для решения этой проблемы состоит в том, что каждому объекту присваивают неизменяемое имя и «разрешают» это имя относительно текущего адреса, когда необходимо соединение. Это преобразование имени в адрес может быть очень устойчивым и также должно допускать простые и быстрые обновления.
Для повышения вероятности нахождения адреса объекта теми, кто стремится связаться с ним, многие протоколы соединения равноправных устройств позволяют объектам объявлять свой(и) индивидуальный(е) или групповой(ые) адрес(а) с помощью различных механизмов. Некоторые протоколы могут позволять клиенту узнавать адреса других объектов посредством обработки запросов от других присутствующих в сети. Действительно, именно это получение адреса обеспечивает успешную работу одноранговых сетей за счет поддержания устойчивого графа. То есть, чем лучше информация о других равноправных устройствах и группах в сети (т.е. чем более устойчив граф), тем выше вероятность того, что поиск конкретного ресурса или записи увенчается успехом.
Как и в централизованной среде с серверами, одноранговые графы могут быть полностью открытыми, что допускает поиск файлов в Интернете и совместное использование их в графе. Однако, поскольку одноранговые сети сформированы в виде графа распределенных пользователей или равноправных узлов, необходимо, чтобы связь и данные (записи) передавались от одного равноправного устройства к другому до того, как все равноправные устройства в сети смогут получить совместно используемую информацию. Системы, которые обеспечивают такую маршрутизацию, включают в себя Usenet и OSPF. Однако такие современные системы подвержены ограничениям, которые, на сегодняшний день, сдерживают развитие технологии связи между равноправными устройствами. Кроме того, для одноранговых сетей в настоящее время характерно недостаточно адекватное управление графом, которое временами допускает «разрыв» или расщепление графов, когда один из членов покидает группу. В таком случае информация от одной части графа может уже не передаваться равноправным членам по другую сторону раздела, созданного выбытием одного из равноправных устройств. Еще один недостаток состоит в отсутствии адекватного механизма обнаружения такого раздела.
Помимо функциональных проблем, присущих уровню техники, объем сетевого трафика может легко перегружать равноправные устройства, участвующие в облаке. Размер и структура сообщения уменьшают способность равноправных устройств к быстрой обработке сообщений и приводит к задержкам или обрывам связи с ростом облака.
Поэтому уровень техники испытывает необходимость в протоколе обмена сообщениями между равноправными устройствами и в структуре данных, которые решают вышеописанные и другие проблемы, существующие в технике.
Сущность изобретения
Концепции изобретения, раскрытые в данной заявке, предусматривают расширяемую структуру данных для сообщений, пригодную для использования в протоколе разрешения имен для соединения равноправных устройств. Эта структура данных сообщения использует поля данных сообщения для построения различных сообщений, используемых в PNRP. Каждое поле данных сообщения содержит элемент сообщения. Предпочтительно первое поле является элементом заголовка сообщения, который содержит информацию протокола и идентифицирует тип сообщения.
Как и сами сообщения, каждый элемент сообщения содержит ряд полей данных элемента сообщения. Эти поля элемента сообщения включают в себя поле типа, поле длины и содержимое или полезную нагрузку элемента сообщения. Поле типа включает в себя идентификатор, который обозначает тип элемента сообщения. Поле длины определяет длину элемента сообщения, включая поля типа поля и длины.
В одном варианте осуществления для правильной работы протокола разрешения имен для соединения равноправных устройств (PNRP) формируются по меньшей мере десять сообщений. Эти десять сообщений включают в себя сообщение RESOLVE («разрешение»), сообщение RESPONSE («ответ»), сообщение SOLICIT («ходатайство»), сообщение ADVERTISE («объявление»), сообщение REQUEST («запрос»), сообщение FLOOD («распространение»), сообщение INQUIRE («вопрос»), сообщение AUTHORITY («полномочие»), сообщение ACK («квитирование») и сообщение REPAIR («исправление»). Эти сообщения построены из двадцати двух разных элементов сообщения, существующих в предпочтительном варианте осуществления.
Перечень чертежей
Прилагаемые чертежи, включенные в описание изобретения и составляющие его часть, иллюстрируют некоторые аспекты настоящего изобретения и, совместно с описанием, служат для объяснения принципов изобретения.
На чертежах:
фиг.1 - обобщенная блок-схема иллюстративной компьютерной системы, на которой базируется настоящее изобретение;
фиг.2 - упрощенная блок-схема функциональных элементов протокола разрешения имен для соединения равноправных устройств (PNRP);
фиг.3 - схема обмена сообщениями протокола, иллюстрирующая один аспект настоящего изобретения;
фиг.4 - схема обмена сообщениями протокола, иллюстрирующая другой аспект настоящего изобретения;
фиг.5 - схема структуры данных, иллюстрирующая модель расширяемой структуры данных, отвечающей настоящему изобретению, которая позволяет строить сообщения, согласно настоящему изобретению;
фиг.6 - упрощенная схема структуры данных, иллюстрирующая конструкцию иллюстративного сообщения, отвечающего настоящему изобретению.
Хотя изобретение описано применительно к определенным предпочтительным вариантам осуществления, эти варианты осуществления не следует рассматривать в порядке ограничения. Напротив, предполагается охват всех альтернатив, модификаций и эквивалентов, отвечающих сущности и объему изобретения, заданным прилагаемой формулой изобретения.
Подробное описание изобретения
На чертежах, где одинаковые элементы обозначены одинаковыми ссылочными позициями, проиллюстрирована реализация изобретения в подходящей вычислительной среде. Хотя это и не требуется, изобретение описано в общем контексте машиноисполняемых команд, например программных модулей, выполняемых персональным компьютером. В целом, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задания или реализуют определенные абстрактные типы данных. Кроме того, специалистам в данной области очевидно, что изобретение можно применять на практике к другим конфигурациям компьютерных систем, в том числе к портативным устройствам, многопроцессорным системам, программируемой бытовой электронике, в том числе на основе микропроцессора, сетевым ПК, миникомпьютерам, универсальным компьютерам и т.п. Изобретение также можно применять на практике в распределенных вычислительных средах, где задания выполняются удаленными обрабатывающими устройствами, связанными посредством сети связи. В распределенной вычислительной среде программные модули могут размещаться как в локальных, так и в удаленных устройствах хранения.
На фиг.1 показан пример подходящей среды 100 вычислительной системы, в которой можно реализовать изобретение. Среда 100 вычислительной системы является всего лишь примером подходящего вычислительного устройства и не призвана как-либо ограничивать объем использования или функциональные возможности изобретения. Также, среду 100 вычислительной системы не следует рассматривать как имеющую какую-либо зависимость или требование в отношении к какому-либо одному компоненту, проиллюстрированному в иллюстративной операционной среде 100, или их комбинации.
Изобретение применимо ко многим другим средам или конфигурациям вычислительной системы общего или специального назначения. Примеры общеизвестных вычислительных систем, сред и/или конфигураций, которые могут быть пригодны для использования в соответствии с изобретением, включают в себя, но не в ограничительном смысле, персональные компьютеры, компьютеры-серверы, карманные или портативные устройства, многопроцессорные системы, системы на основе микропроцессора, телевизионные приставки, программируемую бытовую электронику, сетевые ПК, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, и т.п.
Изобретение можно описать в общем контексте машиноисполняемых команд, например программных модулей, выполняемых компьютером. В целом, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задания или реализуют определенные абстрактные типы данных. Изобретение также можно применять на практике в распределенных вычислительных средах, где задания выполняются удаленными обрабатывающими устройствами, связанными посредством сети связи. В распределенной вычислительной среде программные модули могут размещаться как на локальных, так и на удаленных компьютерных носителях данных, включая запоминающие устройства.
Согласно фиг.1 иллюстративная система для реализации изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не в ограничительном смысле, процессор 120, системную память 130 и системную шину 121, которая подключает различные компоненты системы, включая системную память, к процессору 120. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, с использованием разнообразных шинных архитектур. В порядке примера, но не ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенного стандарта ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину подключений периферийных компонентов (PCI), также именуемую шиной расширения.
Компьютер 110 обычно содержит разнообразные машиночитаемые носители. Машиночитаемые носители могут представлять собой любые имеющиеся носители, к которым может осуществлять доступ компьютер 110, и включают в себя энергозависимые и энергонезависимые носители, сменные и стационарные носители. В порядке примера, но не ограничения, машиночитаемый носитель может представлять собой компьютерный носитель данных или среду передачи данных. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, сменные и стационарные носители, реализованные посредством любого способа или технологии для хранения информации, например машиночитаемых команд, структур данных, программных модулей или других данных. Компьютерные носители данных включают в себя, но не в ограничительном смысле, ОЗУ, ПЗУ, электрически стираемые программируемые ПЗУ, флэш-память или память другой технологии, CD-ROM, цифровые универсальные диски (DVD) или иные оптические дисковые носители данных, магнитные кассеты, магнитную ленту, магнитные дисковые носители данных или иные магнитные запоминающие устройства или любой другой носитель, который можно использовать для хранения полезной информации и к которому компьютер 110 может осуществлять доступ. Среды передачи данных обычно воплощают машиночитаемые команды, структуры данных, программные модули или другие данные в виде сигнала, модулированного данными, такими как несущая волна или иной транспортный механизм. Среды передачи данных также включают в себя любые среды доставки информации. Термин «сигнал, модулированный данными» означает сигнал, одна или несколько характеристик которого изменены так, чтобы кодировать информацию в этом сигнале. В порядке примера, но не ограничения, среды передачи данных содержат проводные среды, например проводную сеть или прямое проводное соединение, и беспроводные среды, например акустические, радиочастотные, инфракрасные и другие беспроводные среды. В число машиночитаемых носителей также включены комбинации любых из вышеперечисленных позиций.
Системная память 130 содержит компьютерные носители данных в виде энергозависимой и/или энергонезависимой памяти, например постоянной памяти (ПЗУ) 131 и оперативной памяти (ОЗУ) 132. Базовая система ввода/вывода (BIOS) 133, содержащая основные процедуры, которые помогают переносить информацию между элементами компьютера 110, например при запуске, хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, которые оперативно доступны процессору 120 и/или в данный момент обрабатываются им. В порядке примера, но не ограничения, на фиг.1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.
Компьютер 110 может также включать в себя другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители данных. В порядке примера, на фиг.1 показан носитель 141 на жестких дисках, который производит считывание со стационарного энергонезависимого магнитного носителя и запись на него, дисковод 151 для магнитного диска, который производит считывание со сменного энергонезависимого магнитного диска 152 и запись на него, и дисковод 155 для оптического диска, который производит считывание со сменного энергонезависимого оптического диска 156, например CD-ROM или другого оптического носителя, и запись на него. Другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители данных, которые можно использовать в иллюстративной операционной среде, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, ленту для цифрового видео, твердотельные ОЗУ, твердотельное ПЗУ и т.д. Накопитель 141 на жестких дисках обычно подключен к системной шине 121 посредством интерфейса стационарной памяти, например интерфейса 140, а дисковод 151 для магнитного диска и дисковод 155 для оптического диска обычно подключены к системной шине 121 посредством интерфейса сменной памяти, например, интерфейса 150.
Накопители и дисководы и соответствующие компьютерные носители данных, описанные выше и показанные на фиг.1, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг.1 показано, что в накопителе 141 на жестких магнитных дисках хранятся операционная система 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Заметим, что эти компоненты могут быть идентичны операционной системе 134, прикладным программам 135, другим программным модулям 136 и данным 137 программ или отличны от них. Операционная система 144, прикладные программы 145, другие программные модули 146 и данные 147 программ обозначены здесь иными позициями, чтобы показать, что они, как минимум, представляют собой другие копии. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, например клавиатуру 162 и указательное устройство 161, под которым обычно понимают мышь, шаровой манипулятор или сенсорную панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода часто подключают к процессору 120 через интерфейс 160 пользовательского ввода, который подключен к системной шине, но можно подключать посредством других структур интерфейса и шины, например параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 191 или устройство отображения другого типа может также быть подключен к системной шине 121 через интерфейс, например видеоинтерфейс 190. Помимо монитора, компьютеры могут содержать другие периферийные устройства вывода, например громкоговорители 197 и принтер 196, которые могут быть подключены через периферийный интерфейс 195 вывода.
Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или несколькими удаленными компьютерами, например удаленным компьютером 180. В качестве удаленного компьютера 180 может выступать другой персональный компьютер, сервер, маршрутизатор, сетевой ПК, равноправное устройство или другой общий сетевой узел, который обычно содержит многие или все элементы, описанные выше применительно к персональному компьютеру 110, хотя на фиг.1 показано только запоминающее устройство 181. Логические соединения, указанные на фиг.1, включают в себя локальную сеть (ЛС, LAN) 171 и глобальную сеть (ГС, WAN) 173, но также могут включать в себя другие сети. Такие сетевые среды обычно используются в офисах, компьютерных сетях масштаба предприятия, интрасетях и в Интернете.
При использовании в сетевой среде ЛС персональный компьютер 110 подключен к локальной сети 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГС компьютер 110 обычно содержит модем 172 или другие средства установления соединения через ГС 173, такие как Интернет. Модем 172, который может быть внутренним или внешним, может быть подключен к системной шине 121 через интерфейс 160 пользовательского ввода или другой соответствующий механизм. В сетевой среде программные модули, указанные в отношении персонального компьютера 110, или часть из них могут храниться в удаленном запоминающем устройстве. В порядке примера, но не ограничения, на фиг.1 показано, что удаленные прикладные программы 185 размещены в запоминающем устройстве 181. Очевидно, что показанные сетевые соединения являются иллюстративными и что можно использовать другие средства установления линии(й) связи между компьютерами.
Ниже изобретение будет описано со ссылкой на действия и символические представления операций, которые выполняются одним или несколькими вычислительными устройствами, если не указано обратное. При этом следует понимать, что такие действия и операции, которые иногда называют машиноисполняемыми, включают в себя манипуляции, выполняемые процессором компьютера в отношении электрических сигналов, представляющих данные в структурированной форме. Эти манипуляции сводятся к преобразованию данных или поддержанию их в ячейках системы памяти компьютера, в результате чего происходит переконфигурирование или иное изменение работы компьютера путем, хорошо известным специалистам в данной области. Структуры данных, где поддерживаются данные, являются физическими ячейками памяти, которые имеют конкретные свойства, заданные форматом данных. Однако, хотя изобретение описано в вышеприведенном контексте, это не означает, и это очевидно специалистам в данной области, что некоторые из описанных ниже действий и операций не могут также быть реализованы в аппаратных средствах.
Согласно вышесказанному успех протокола связи между равноправными устройствами (Р2Р) зависит от способности протокола устанавливать правильные соединения между выбранными объектами. Аналогично, формирование групп в такой сети Р2Р опирается на эту способность. Поскольку конкретный пользователь может подключаться к сети различными способами в разных местах, имеющих разные адреса, предпочтительный подход состоит в присвоении пользователю или группе уникального идентификатора с последующим разрешением этого идентификатора относительно конкретного адреса или адресов посредством протокола. Такой протокол разрешения имен для соединения равноправных устройств (PNRP), в частности применяемый в системе и способе управления идентификацией, описан в совместно рассматриваемой заявке №09/942,164, озаглавленной «Peer-To-Peer Name Resolution Protocol (PNRP) And Multilevel Cache For Use Therewith», поданной 29 августа 2001 г., в совместно рассматриваемой заявке №10/122,863, озаглавленной «Multilevel Cache Architecture and Cache Management Method for Peer-To-Peer Name Resolution Protocol», поданной 15 апреля 2002 г., и в совместно рассматриваемой заявке №09/955,923, озаглавленной «Peer-To-Peer Group Management and Method for Maintaining Peer-To-Peer Graphs», поданной 19 сентября 2001 г., идеи и содержание которых включены в данное описание во всей полноте посредством ссылки.
Аналогично, в совместно рассматриваемой заявке №09/956,260, озаглавленной «Peer-To-Peer Name Resolution Protocol (PNRP) Security Infrastructure And Method», поданной 19 сентября 2001 г., описана лежащая в основе инфраструктура защиты, которая позволяет гарантировать действительность идентификаторов различных сетевых объектов, не обременяя без необходимости сеть избыточным трафиком. В групповой среде Р2Р совместно рассматриваемая заявка №09/955,924, озаглавленная «Peer-To-Peer Name Resolution Protocol (PNRP) Group Security Infrastructure And Method», поданная 19 сентября 2001 г., описывает лежащую в основе инфраструктуру защиты, используемую для таких групп. Идеи и содержание этих заявок также включены в данное описание во всей полноте посредством ссылки. Однако, хотя интерфейсы и способы, отвечающие настоящему изобретению, находят конкретное применение в таком PNRP и взаимодействуют с ним, специалистам в данной области очевидно, что настоящее изобретение не ограничивается этим, но применимо к любой системе Р2Р или протоколу, который желает обеспечить функции управления графом Р2Р.
Согласно рассмотренному во включенной выше совместно рассматриваемой заявке, описывающей PNRP, и чтобы обеспечить некоторые полезные исходные сведения протокол разрешения имен для соединения равноправных объектов (PNRP) является протоколом разрешения имени относительно адреса на основе равноправных устройств. Ресурсы равноправного устройства могут быть представлены «именем равноправного устройства» (Peer Name). Приложение может регистрировать «имя равноправного устройства» с помощью PNRP, чтобы другие равноправные устройства могли обнаружить его. Другие приложения могут использовать PNRP для разрешения «имени равноправного устройства», чтобы получить соответствующий IP-адрес и порт регистрирующего приложения. PNRP не обеспечивает никакого механизма отыскания или просмотра «имен равноправных устройств». Механизм распространения «имен равноправных устройств» должен осуществляться другими средствами. Разрешение «имен равноправных устройств» относительно адресов осуществляется за счет того, что участвующие равноправные устройства кооперируются в пересылке сообщений друг другу, и за счет поддержания распределенного кэша отображений «имени равноправного устройства» в адрес. Механизм регистрации и разрешения не опирается на существование серверов, за исключением инициализации. При первом появлении экземпляра PNRP ему нужно найти адрес каких-либо других экземпляров PNRP для обмена данными с ними. В отсутствие других средств, для получения списка других экземпляров PNRP, используются общеизвестные серверы.
Другими словами, PNRP позволяют приложениям равноправных устройств регистрировать отображение «имени равноправного устройства» в конечную точку и разрешать «имя равноправного устройства» для получения конечной точки. Теперь будут уместны некоторые определения. «Имя равноправного устройства» (Peer Name) - это строка, идентифицирующая ресурс равноправного устройства. Для регистрации «имени равноправного устройства» приложение должно иметь доступ к паре открытого/секретного ключей. Пара ключей используется для подписания некоторых сообщений во избежание фальсификации. «Имя равноправного устройства» можно также извлечь из открытого ключа, чтобы обеспечить проверку принадлежности идентификатора. Конечная точка представляет собой один адрес, порт и протокол IPv6/IPv4. В действительности список конечных точек можно зарегистрировать с одним «именем равноправного устройства», и этот список возвращается при разрешении «имени равноправного устройства». Узел является экземпляром службы протокола PNRP. Обычно на компьютер приходится один узел. Облако представляет собой сеть узлов, доступных друг для друга. Один узел может быть подключен к более чем одному облаку. Облако имеет свойство области действия, которое эквивалентно областям действия, заданным в IPv6 - «глобальная» (Global), «пространственно-локальная» (Site Local) и «канально-локальная» (Link Local). Узел может иметь несколько пространственно-локальных облаков и несколько канально-локальных облаков. Связь между узлами никогда не должна проходить от одного облака к другому. Для различения облаков используются имена облаков. «Имя равноправного устройства» можно регистрировать на более чем одном узле. PNRP различает каждую регистрацию. С каждым экземпляром «имени равноправного устройства» будет связан отдельный список конечных точек. Узел также может регистрировать «имя равноправного устройства» на более чем одном облаке, к которому подключен узел. Все эти регистрации отличаются друг от друга. Обычно списки конечных точек также различаются во всех этих экземплярах. Пытаясь разрешить «имя равноправного устройства», узел делает это на выбранном облаке. Разрешение будет успешным, только если «имя равноправного устройства» зарегистрировано в том же облаке. Можно одновременно разрешать «имя равноправного устройства» на более чем одном облаке, но эти разрешения обрабатываются как независимые запросы разрешения.
Служба PNRP состоит из нескольких модулей, действующих совместно, как показано на фиг.2. Компонент 200 «управление службой» имеет дело с простыми служебными действиями, как то: запуском и остановкой службы PNRP. Сервер RPC (удаленный вызов процедуры) и суррогаты 202 обеспечивают интерфейс между клиентскими процессами и службой PNRP. Это позволяет управлять открытым интерфейсом, обеспечивая точки ввода для запросов и извещения о событиях и выполнении запроса. Они также имеют дело с восстановлением из прекращения клиентского процесса. «Средство управления (Менеджер) облаков» 204 поддерживает состояние конкретных клиентских запросов и поддерживает список имеющихся облаков PNRP. Он отвечает за создание облаков и информирование клиентов об изменениях в состояниях облаков.
«Менеджер кэша» 206 поддерживает локальный кэш PNRP и список локально зарегистрированных имен PNRP для каждого облака. Он является частью распределенного кэша PNRP. Он обеспечивает поиск и выбор следующего скачка для запросов разрешения, поступающих от других компьютеров. Он осуществляет поддержку на уровне своего собственного кэша, периодически инициируя запросы разрешения, чтобы обеспечить хорошо структурированный кэш. Он осуществляет обнаружение разрывов облаков и пытается исправить их. Он обеспечивает возможность иметь несколько зарегистрированных «идентификаторов (ИД) равноправного устройства» (Peer ID) и структурирует кэш, чтобы поддерживать каждый из них. «Менеджер протокола» 208 имеет дело с созданием и отправкой действительных сообщений PNRP и с обработкой принятых сообщений PNRP. Он действует совместно с «кэш-менеджером» 206, реализуя протокол PNRP. Наконец, «транспорт сообщений» 210 имеет дело с фактическими отправкой и приемом сообщений. Он оперирует множеством сетевых интерфейсов и адресами и обнаруживает изменения в наборе локальных адресов. Если требуется множество протоколов (IPv4 и IPv6), то этот компонент будет работать с обоими протоколами.
Каждый узел PNRP поддерживает кэш отображений «имени равноправного устройства» в конечную точку для некоторых других узлов в облаке. Осуществляется обмен сообщениями, построенными в соответствии с настоящим изобретением, между узлами для распространения информации об «именах равноправных узлов» по узлам в облаке. Каждый узел отвечает за надлежащее поддержание своего кэша. Согласно описанному в вышеупомянутых заявках, протокол PNRP задает числовое пространство имен. Каждое «имя равноправного узла» преобразуется в число, и эти числа можно сравнивать, чтобы определить степень близости в пространстве имен. При поступлении на узел запроса разрешения «имени равноправного устройства» узел может сравнить число с числами в своем кэше, чтобы найти узел, который численно ближе к нужному узлу. Таким образом, запрос разрешения переходит от узла к узлу, с каждым скачком приближаясь к своей цели.
«Имена равноправных узлов» преобразуются в 128-битовые числа, именуемые идентификаторами (ИД) Р2Р (P2P ID), с использованием хэш-функций, описанных во включенных выше заявках. Одно и то же «имя равноправного устройства» всегда порождает один и тот же ИД Р2Р. Конкретный экземпляр регистрации «имени равноправного устройства» также имеет 128-битовое число, именуемое «местоположением службы» (Service Location). Оба вместе они образуют 256-битовое число, именуемое ИД PNRP. Участок ИД PNRP, связанный с «местоположением службы», обеспечивает уникальность конкретного экземпляра регистрации «имени равноправного устройства» в сети.
Приложение может регистрировать «имя равноправного устройства» с помощью PNRP. На основе имени создается ИД PNRP, и отправляются сообщения, информирующие другие узлы о регистрации. Одно и то же «имя равноправного устройства» можно регистрировать на более чем одном узле. ИД Р2Р будет одинаковым на каждом узле, но ИД PNRP будет уникальным для каждого узла. Приложение может запрашивать разрешение «имени равноправного устройства» относительно адреса. Из «имени равноправного устройства» извлекается ИД Р2Р, и на другие узлы отправляются сообщения для определения местоположения узла, зарегистрировавшего этот ИД Р2Р. При разрешении ИД Р2Р относительно адреса возвращается сертифицированный адрес равноправного устройства (CPA). CPA включает в себя участок ИД PNRP, связанный со «местоположением службы» целевого устройства, текущий IP-адрес, открытый ключ и многие другие поля. Для предотвращения фальсификации CPA снабжается подписью.
Заданный ИД Р2Р может регистрироваться многими разными узлами. PNRP использует суффикс «местоположение службы» (Service Location), гарантирующий, что каждый зарегистрированный экземпляр имеет уникальный ИД PNRP. «Местоположение службы» - это 128-битное число, соответствующее уникальной конечной точке сетевой службы. Значение создается путем объединения адреса, порта, протокола IPv6 и части открытого ключа. «Местоположения службы» следует считать непрозрачными для клиентов PNRP. «Местоположение службы» имеет два важных свойства. В любой момент «местоположение службы» идентифицирует уникальный экземпляр «имени равноправного устройства». При сравнении двух «местоположений служб» длина их общего префикса является адекватной мерой сетевой близости. Два «местоположения служб», начинающихся с четырех одинаковых битов, обычно отстоят друг от друга не дальше, чем начинающиеся с трех одинаковых битов. Эти преимущества могут применяться только для собственных глобальных адресов IPv6 для однонаправленной передачи.
Создание и регистрация идентификаторов PNRP является только одной частью службы PNRP. Действие службы PNRP можно разделить на четыре фазы. Первая состоит в обнаружении облака PNRP. Новый узел должен найти существующий узел в облаке, к которому он желает присоединиться. Облако может быть глобальным облаком PNRP, пространственно-локальным облаком (в масштабе предприятия) или канально-локальным облаком. Вторая фаза - это присоединение к облаку PNRP. Обнаружив существующий узел, новый узел осуществляет процедуру SYNCHRONIZE («синхронизация»), чтобы получить часть верхнего уровня кэша существующих узлов. Подмножество отдельного уровня кэша предоставляет новому узлу достаточно информации, чтобы он мог начать участвовать в облаке. Третья фаза предусматривает активное участие в облаке. По завершении инициализации узел может участвовать в регистрации и разрешении ИД PNRP. На этой фазе равноправное устройство также осуществляет регулярную поддержку кэша. Конечная фаза относится к выходу равноправного устройства из облака. Узел отменяет регистрацию любых локально зарегистрированных ИД PNRP, после чего заканчивает работу.
Протокол PNRP, отвечающий настоящему изобретению, содержит десять разных типов сообщений, позволяющих выполнять различные функции PNRP. На высоком уровне эти сообщения включают в себя сообщение RESOLVE («разрешение»), которое используется для запрашивания разрешения целевого ИД PNRP относительно CPA. Сообщение RESPONSE («ответ») используется как результат выполнения запроса разрешения. Сообщение FLOOD («распространение») содержит CPA, предназначенный для кэша PNRP получателя. Сообщение SOLICIT («ходатайство») используется, чтобы просить узел PNRP «объявить» свой верхний уровень кэша. Сообщение ADVERTISE («объявление») содержит список идентификаторов (ИД) PNRP для адресов CPA в верхнем уровне кэша. Сообщение REQUEST («запрос») используется, чтобы просить узел распространить подмножество «объявленных» CPA. Сообщение INQUIRE («вопрос») используется, чтобы спрашивать узел, зарегистрирован ли на этом узле конкретный ИД PNRP. Сообщение AUTHORITY («полномочие») используется для подтверждения локальной регистрации ИД PNRP и, в необязательном порядке, для обеспечения цепи сертификатов, помогающей подтверждать действительность CPA для этого ИД. Сообщение ACK («квитирование») используется для подтверждения приема и/или успешной обработки тех или иных сообщений. Наконец, сообщение REPAIR («исправление») используется при попытках слияния облаков, которые могут быть расщеплены.
Узел может инициировать шесть основных типов транзакций в PNRP, при выполнении которых используются сообщения, отвечающие настоящему изобретению. Эти транзакции включают в себя обнаружение облака, синхронизацию, разрешение, распространение, подтверждение действительности идентификации и исправление. Чтобы дать возможность понять сущность этих транзакций, подробности которых объяснены в вышеуказанных заявках, кратко опишем эти транзакции в отношении сообщений и структур сообщений настоящего изобретения.
Транзакция обнаружения облака позволяет равноправному устройству обнаружить облако равноправных устройств. Согласно предпочтительному варианту осуществления каждый узел может присоединиться к нескольким облакам. Множество облаков, к которым можно присоединиться, зависит от способности узла к соединению в сети. Если компьютер узла имеет несколько адаптеров интерфейса,