Системы и способы для управления трафиком в одноранговой сети

Иллюстрации

Показать все

Заявленное изобретение относится к области управления графиком в одноранговой сети. Технический результат заключается в максимизировании пропускной способности наряду с минимизацией потери пакетов. Для этого в одноранговой сети определяются одно или более событий перегрузки, которые подразумевают перегрузку в сети. В дополнение определяются одно или более событий без перегрузки, которые подразумевают отсутствие перегрузки в сети. Когда узел обнаруживает появление одного или более из определенных событий перегрузки, узел увеличивает интервал между пакетами протокола без установления соединения (например, UDP), которые отправляются узлом. Когда узел обнаруживает наступление одного или более из определенных событий без перегрузки, узел уменьшает интервал между пакетами протокола без установления соединения, которые отправляются узлом. 12 н.п. ф-лы, 15 ил.

Реферат

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Настоящее изобретение в целом относится к компьютерам и имеющим отношение к компьютерам технологиям. Более точно, настоящее изобретение относится к системам и способам для управления трафиком в одноранговой сети.

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

Компьютерные и коммуникационные технологии продолжают продвигаться быстрыми шагами. Действительно, компьютерные и коммуникационные технологии вовлечены во многие аспекты повседневной жизни человека. Например, многочисленные устройства, используемые потребителями сегодня, содержат компьютер внутри устройства. Эти небольшие компьютеры входят в употребление в варьирующихся размерах и степенях изощренности. Эти небольшие компьютеры включают в себя все - от одного микроконтроллера до полнофункциональной завершенной компьютерной системы. Например, эти небольшие компьютеры могут быть однокристальным компьютером, таким как микроконтроллер; бортовым типом компьютера, таким как контроллер, типичным настольным компьютером, таким как совместимый с ПК фирмы IBM, и т.п.

Компьютеры типично содержат один или более процессоров в основе компьютера. Процессор(ы) обычно взаимосвязаны с разными внешними устройствами ввода и устройствами вывода и функционируют, чтобы управлять конкретным компьютером или устройством. Например, процессор в термостате может быть присоединен к клавишам, используемым для выбора температурных настроек, к отопительному котлу или воздушному кондиционеру для изменения температуры и к датчикам температуры для считывания и отображения текущей температуры на дисплее.

Многие приборы, устройства и т.п. включают в себя один или более небольших компьютеров. Например, термостаты, отопительные котлы, системы воздушного кондиционирования, холодильники, телефоны, пишущие машинки, автомобили, торговые автоматы и многочисленные разные типы промышленного оборудования в настоящее время типично содержат небольшие компьютеры или процессоры внутри них. Компьютерное программное обеспечение работает на процессорах этих компьютеров и выдает команды процессорам, каким образом выполнять определенные задачи. Например, компьютерное программное обеспечение, работающее в термостате, может предписывать воздушному кондиционеру останавливать работу, когда достигнута конкретная температура, или может побуждать нагреватель включаться, когда необходимо.

Эти типы небольших компьютеров, которые являются частью устройства, прибора, инструментального средства и т.п. часто упоминаются как встроенные устройства или встроенные системы. (Термины «встроенное устройство» и «встроенная система» в материалах настоящей заявки будут использоваться взаимозаменяемо.) Встроенная система обычно относится к компьютерным аппаратным средствам и программному обеспечению, которые являются частью большей системы. Встроенные системы могут не иметь типичных устройств ввода и вывода, таких как клавиатура, мышь и/или монитор. Обычно в основе каждой встроенной системы имеют место один или более процессоров.

Система освещения может включать в себя встроенную систему. Встроенная система может использоваться для контроля и управления эффектами системы освещения. Например, встроенная система может предусматривать элементы управления для затемнения яркости ламп в системе освещения. В качестве альтернативы, встроенная система может предусматривать элементы управления для повышения яркости ламп. Встроенная система может предусматривать элементы управления для включения определенной картины освещения среди отдельных ламп в системе освещения. Встроенные системы могут быть связаны с отдельными выключателями в системе освещения. Эти встроенные системы могут выдавать команду выключателям включать питание или выключать питание отдельных ламп или всей системы освещения. Подобным образом, встроенные системы могут быть присоединены к отдельным лампам в системе освещения. Состояние яркости или мощности каждой отдельной лампы может управляться встроенной системой.

Система безопасности также может включать в себя встроенную систему. Встроенная система может использоваться для управления отдельными защитными датчиками, которые составляют систему безопасности. Например, встроенная система может предусматривать элементы управления, чтобы автоматически включать питание каждого из защитных датчиков. Встроенные системы могут быть присоединены к каждому из отдельных защитных датчиков. Например, встроенная система может быть присоединена к датчику движения. Встроенная система может автоматически включать питание отдельного датчика движения и предусматривать элементы управления для приведения в действие датчика движения, если обнаружено движение. Приведение в действие датчика движения может включать в себя выдачу команд для включения питания СИД (светоизлучающего диода, LED), расположенного в датчике движения, вывода сигнала тревоги из портов вывода датчика движения и тому подобного. Встроенные системы также могут быть присоединены к датчикам, контролирующим дверь. Встроенная система может выдавать команды на датчики, контролирующие дверь, для приведения в действие, когда дверь открывается или закрывается. Подобным образом, встроенные системы могут быть присоединены к датчикам, контролирующим окно. Встроенная система может выдавать команды для приведения в действие датчика, контролирующего окно, если окно открывается или закрывается.

Некоторые встроенные системы также могут использоваться для управления беспроводными изделиями, такими как сотовые телефоны. Встроенная система может выдавать команды для включения питания светодиодного дисплея сотового телефона. Встроенная система также может приводить в действие звуковые динамики в сотовом телефоне, чтобы снабжать пользователя звуковым уведомлением, относящимся к сотовому телефону.

Бытовые приборы также могут включать в себя встроенную систему. Бытовые приборы могут включать в себя приборы, типично используемые на обычной кухне, например, печь, холодильник, микроволновую печь и т.п. Бытовые приборы также могут включать в себя приборы, которые относятся к здравоохранению и здоровью пользователя. Например, массажное устройство изменения угла наклона может включать в себя встроенную систему. Встроенная система может выдавать команды, чтобы автоматически изменять наклон задней части кресла согласно предпочтениям пользователя. Встроенная система также может выдавать команды, чтобы приводить в действие вибрационные компоненты в кресле, которые вызывают вибрации в устройстве изменения наклона согласно предпочтениям пользователя.

Дополнительные изделия, типично обнаруживаемые в домах, также могут включать в себя встроенные системы. Например, встроенная система может использоваться в туалете для управления уровнем воды, используемой для пополнения резервуарного бака. Встроенные системы могут использоваться в гидромассажных ваннах, чтобы управлять истечением воздуха.

Как указано, встроенные системы могут использоваться для мониторинга или управления многими разными системами, ресурсами, изделиями и т.п. С ростом сети Интернет и Всемирной паутины (www) встроенные системы все больше и больше подключаются к сети Интернет, так что они могут удаленно отслеживаться и/или управляться. Другие встроенные системы могут присоединяться к компьютерным сетям, в том числе локальным сетям, глобальным сетям и т.п. В качестве используемого в материалах настоящей заявки термин «компьютерная сеть» (или просто «сеть») относится к любой системе, в которой последовательность узлов соединены трактом связи. Термин «узел» относится к любому устройству, которое может быть присоединено в качестве части компьютерной сети. Встроенная система может быть узлом сети. Другие примеры узлов сети включают в себя компьютеры, персональные цифровые секретари (PDA), сотовые телефоны и т.п.

Некоторые встроенные системы могут поставлять данные и/или услуги другим вычислительным устройствам с использованием компьютерной сети. Могут предоставляться многие разные виды услуг. Некоторые примеры услуг включают в себя предоставление температурных данных с места, предоставление данных наблюдения, предоставление информации о погоде, поставку аудиопотока, поставку видеопотока и т.п.

Некоторое количество узлов (включающих в себя по меньшей мере некоторые встроенные системы) могут быть взаимосвязаны, с тем чтобы формировать одноранговую сеть. Одноранговая компьютерная сеть является сетью, в которой каждый узел может осуществлять связь с любым другим узлом, не присоединяясь к отдельному серверному компьютеру или серверному программному обеспечению. Одноранговая сеть скорее полагается на вычислительную мощность и полосу пропускания участников в сети, нежели ее концентрацию на относительно малом количестве серверов. Одноранговые сети могут использоваться для соединения узлов через в значительной степени самоорганизующиеся соединения.

Некоторое количество узлов в пределах одноранговой сети могут осуществлять связь один с другим приблизительно одновременно, и, как результат, сеть может становиться перегруженной. Если это происходит, то узлы могут не быть способными использовать сеть, в то время как другие узлы свободно отправляют пакеты. Отсутствие центрального серверного узла при работе в одноранговой сети делает эту проблему более острой. Известные попытки минимизировать потерю пакетов чрезмерно влияют на пропускную способность, то есть объем данных, которые передаются через сеть. Соответственно, преимущества могут быть реализованы усовершенствованиями, имеющими отношение к управлению трафиком в одноранговой сети, для того, чтобы максимизировать пропускную способность наряду с минимизацией потери пакетов.

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

Раскрыты системы и способы для управления трафиком в одноранговой сети. В примерном варианте осуществления определяются одно или более событий перегрузки, которые подразумевают перегрузку в одноранговой сети. В дополнение определяются одно или более событий без перегрузки, которые подразумевают отсутствие перегрузки в одноранговой сети, но которые могут помогать прогнозировать/предсказывать будущую перегрузку сети. Когда узел обнаруживает наступление одного или более из таких определенных событий перегрузки, узел увеличивает интервал между пакетами протокола без установления соединения (например, протокола дейтаграмм пользователя), которые отправляются узлом. Когда узел обнаруживает наступление одного или более из определенных событий без перегрузки, узел уменьшает интервал между пакетами протокола без установления соединения, которые отправляются узлом. Некоторые из узлов в одноранговой сети могут быть встроенными системами.

Могут быть определены многие разные виды событий без перегрузки и событий перегрузки. Примерное событие без перегрузки состоит в том, что узел принимает многоадресный запрос и список ответчиков, который ассоциирован с многоадресным запросом, и узел включен в список ответчиков. Наоборот, примерное событие перегрузки состоит в том, что узел принимает многоадресный запрос и список ответчиков, который ассоциирован с многоадресным запросом, и узел не включен в список ответчиков, когда был бы должен.

Другое примерное событие перегрузки состоит в том, что узел отправляет многоадресный запрос. Еще одно примерное событие перегрузки состоит в том, что узел принимает многоадресный запрос, но не принимает список ответчиков, который ассоциирован с многоадресным запросом, и узел отправляет многочисленные ответы на многоадресный запрос. Другое примерное событие перегрузки состоит в том, что узел принимает многоадресный запрос при ожидании отправки пакета. Еще одно примерное событие перегрузки состоит в том, что узел принимает одноадресный ответ при ожидании отправки пакета.

ПЕРЕЧЕНЬ ЧЕРТЕЖЕЙ

Примерные варианты осуществления изобретения будут становиться более очевидными из последующего описания и прилагаемой формулы изобретения, взятых в сочетании с прилагаемыми чертежами. С пониманием, что эти чертежи изображают только примерные варианты осуществления и потому не должны рассматриваться ограничивающими объем изобретения, примерные варианты осуществления изобретения будут описаны с дополнительной спецификой и детализацией посредством использования прилагаемых чертежей, на которых:

фиг.1 иллюстрирует примерную одноранговую сеть, в которой некоторые варианты осуществления могут быть осуществлены на практике;

фиг.2A-2F иллюстрируют пример, показывающий, каким образом узлы в одноранговой сети могут взаимодействовать для того, чтобы предоставлять данные и/или услуги один другому;

фиг.3 - схема потоков данных, которая иллюстрирует различные компоненты программного обеспечения, которые могут использоваться узлом в одноранговой сети согласно варианту осуществления;

фиг.4 - еще одна схема потоков данных, которая иллюстрирует различные компоненты программного обеспечения, которые могут использоваться узлом в одноранговой сети согласно варианту осуществления;

фиг.5 - блок-схема последовательности операций, которая иллюстрирует работу узла в пределах одноранговой сети согласно варианту осуществления;

фиг.6 иллюстрирует пример события без перегрузки, которое может быть определено для узла согласно варианту осуществления;

фиг.7 иллюстрирует пример события перегрузки, которое может быть определено для узла согласно варианту осуществления;

фиг.8 иллюстрирует еще один пример события перегрузки, которое может быть определено для узла согласно варианту осуществления;

фиг.9 иллюстрирует еще один пример события перегрузки, которое может быть определено для узла согласно варианту осуществления;

фиг.10 иллюстрирует еще один пример события перегрузки, которое может быть определено для узла согласно варианту осуществления;

фиг.11 иллюстрирует еще один пример события перегрузки, которое может быть определено для узла согласно варианту осуществления;

фиг.12 - структурная схема компонентов аппаратных средств, которые могут использоваться во встроенной системе, которая сконфигурирована согласно варианту осуществления;

фиг.13 иллюстрирует примерную систему освещения, в которой могут быть реализованы настоящие системы и способы;

фиг.14 иллюстрирует примерную систему безопасности, в которой могут быть реализованы настоящие системы и способы; и

фиг.15 иллюстрирует примерную систему домашнего контроллера, в которой могут быть реализованы настоящие системы и способы.

НАИЛУЧШИЙ ВАРИАНТ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ

Различные варианты осуществления изобретения далее описаны со ссылкой на чертежи, где одинаковые номера ссылок указывают идентичные или функционально подобные элементы. Варианты осуществления настоящего изобретения, которые в общих чертах описаны и проиллюстрированы на фигурах, могли бы быть скомпонованы и сконструированы в широком многообразии разных конфигураций. Таким образом, последующее более подробное описание нескольких примерных вариантов осуществления настоящего изобретения, которые представлены на фигурах, не подразумевается ограничивающим объем изобретения, который определяется формулой изобретения, а только является представляющим варианты осуществления изобретения.

Слово «примерный» используется в материалах настоящей заявки, исключительно чтобы означать «служащий в качестве примера, отдельного случая или иллюстрации». Любой вариант осуществления, описанный в материалах настоящей заявки как «примерный», необязательно должен истолковываться как предпочтительный или преимущественный над другими вариантами осуществления. Несмотря на то, что различные аспекты вариантов осуществления представлены на чертежах, чертежи необязательно начерчены для представления в определенном масштабе, если не указано специально.

Многие признаки вариантов осуществления, раскрытых в материалах настоящей заявки, могут быть реализованы в качестве компьютерного программного обеспечения, электронных аппаратных средств или комбинации обоих. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные компоненты, как правило, будут описаны в показателях своих функциональных возможностей. Реализованы ли такие функциональные возможности в виде аппаратных средств или программного обеспечения, зависит от конкретного применения и проектных ограничений, накладываемых на всю систему. Специалисты могут реализовать описанные функциональные возможности отличающимися способами для каждого конкретного применения, но такие реализационные решения не должны интерпретироваться в качестве служащих причиной выхода за рамки объема настоящего изобретения.

В тех случаях, когда описанные функциональные возможности реализованы в качестве компьютерного программного обеспечения, такое программное обеспечение может включать в себя любой тип компьютерной команды или исполняемого компьютером кода, расположенных в пределах устройства памяти и/или передаваемых в виде электронных сигналов по системной шине или сети. Программное обеспечение, которое реализует функциональные возможности, ассоциированные с компонентами, описанными в материалах настоящей заявки, может содержать одиночную команду или многочисленные команды и может быть распределено по нескольким разным кодовым сегментам, среди разных программ, и по нескольким устройствам памяти.

Фиг.1 иллюстрирует примерную одноранговую сеть 100, в которой некоторые варианты осуществления могут быть осуществлены на практике. Сеть 100 включает в себя некоторое количество узлов 102. В частности, сеть 100 включает в себя узел A 102a, узел B 102b, узел C 102c и узел D 102d. Сеть 100 также включает в себя концентратор 104, который присоединяет узлы 102 один к другому, и маршрутизатор 106, который дает узлам 102 возможность поддерживать связь с другими устройствами вне сети 100 через сеть 108 Интернет. Конечно, сеть 108 Интернет является только одним типом сети, которая могла бы подвергаться доступу через маршрутизатор 106.

Сплошные линии, показанные на фиг.1, представляют физические соединения между узлами 102. Таким образом, каждый узел 102 физически присоединен к концентратору 104. Маршрутизатор 106 также физически присоединен к концентратору 104 и к сети 108 Интернет. Пунктирные линии, показанные на фиг.1, показывают, что каждый узел 102 в сети 100 способен поддерживать связь со всеми из других узлов 102 в сети 100. К тому же одно или более устройств в сети 108 Интернет может поддерживать связь с узлами 102 в сети 100, и наоборот.

Варианты осуществления, описанные в материалах настоящей заявки, могут быть осуществлены на практике в одноранговой сети 100, где по меньшей мере некоторые из узлов 102 являются встроенными системами. Как обсуждено выше, термин «встроенная система» обычно относится к компьютерным аппаратным средствам и программному обеспечению, которые являются частью большей системы. В сети 100, которая изображена на фиг.1, некоторые из узлов 102 могут быть встроенными системами.

Сеть 100, показанная на фиг.1, предоставлена только в целях примера. Для простоты, сеть 100, показанная на фиг.1, включает в себя всего лишь несколько узлов 102. Однако варианты осуществления могут быть осуществлены на практике в одноранговых сетях, которые включают в себя гораздо больше узлов 102. Варианты осуществления также могут быть осуществлены на практике в одноранговых сетях, которые включают в себя меньшее количество узлов 102.

Некоторые или все из узлов 102 в сети 100 могут быть сконфигурированы для многоадресной передачи сообщений на другие узлы 102 в сети 100. В качестве используемого в материалах настоящей заявки термин «многоадресная передача» относится к последовательности операций отправки сообщения одновременно на более чем один узел 102 в сети 100. Многоадресная передача отлична от широковещательной передачи тем, что многоадресная передача означает отправку сообщения в определенные группы узлов 102 в пределах сети 100, тогда как широковещательная передача подразумевает отправку сообщения на все из узлов 102 в сети 100. Узлы 102 в пределах сети 100 также могут быть сконфигурированы для одноадресной передачи сообщений на другие узлы 102 сети. Термин «одноадресная передача» относится к отправке сообщения на определенный узел 102 в сети 100. Транспортный протокол без установления соединения, такой как протокол дейтаграмм пользователя (UDP), может использоваться как для многоадресной передачи, так и для одноадресной передачи сообщений на другие узлы 102 сети. В качестве альтернативы, варианты осуществления изобретения могут быть осуществлены на практике с сетью 100, где широковещательная передача используется вместо многоадресной передачи. Широковещательная передача является особым случаем многоадресной передачи, где группа многоадресной передачи включает в себя все узлы 102.

По меньшей мере некоторые из узлов 102 могут предоставлять данные и/или услуги другим узлам 102 в сети 100. Узлы 102 также могут предоставлять данные и/или услуги устройствам, которые расположены вне сети 100, например, через сеть 108 Интернет.

В качестве используемого в материалах настоящей заявки термин «многоадресный запрос» относится к запросу в отношении данных и/или одной или более услуг, которые отправляются посредством многоадресной передачи. Многоадресный запрос адресуется группе многоадресной передачи и (умозрительно) доставляется на все узлы 102, которые объединили группу многоадресной передачи. «Запросчик» является узлом 102, который отправляет многоадресный запрос. «Ответчик» является узлом 102, который отвечает на многоадресный запрос. Фиг.2A-2F иллюстрируют, каким образом узлы 202 в одноранговой сети 100 могут взаимодействовать для того, чтобы предоставлять данные и/или услуги один другому. Проиллюстрированный пример включает в себя четыре узла 202, а именно узел A 202a, узел B 202b, узел C 202c и узел D 202d.

Как показано на фиг.2A, узел A 202a вначале многоадресно передает запрос 210 на услугу 212. В дополнение к запросу 210 узел A 202a также многоадресно передает список 214 ответчиков, который ассоциирован с запросом 210. Например, ID (идентификатор) транзакции может быть назначен обоим, запросу 210 и списку 214 ответчиков. В общих чертах список 214 ответчиков, который ассоциирован с многоадресным запросом 210, является списком 202 узлов, которые ответили на многоадресный запрос 210 раньше. Список 214 ответчиков может использоваться для расширения пропускной способности данных в сети 100, как будет более подробно пояснено ниже. На фиг.2A список 214 ответчиков пуст. Это происходит потому, что фиг.2A показывает запросчика 202a, отправляющего многоадресный запрос 210 в первый раз. Конечно, запрос 210 и список 214 ответчиков могут отправляться по сети 100 совместно.

В проиллюстрированном примере будет предполагаться, что узел B 202b, узел C 202c и узел D 202d объединились в группу многоадресной передачи, которой адресован запрос 210. Узел B 202b и узел C 202c - оба принимают многоадресный запрос 210, когда он отправляется в первый раз. Однако узел D 202d не принимает многоадресный запрос 210, когда он отправляется в первый раз. Есть многообразие причин, почему многоадресный запрос 210 может не приниматься узлом D 202d. Например, сеть 100 может быть слишком перегруженной трафиком, и запрос 210 может отбрасываться в некоторой точке, существующей на маршруте от узла A 202a до узла D 202d. Когда пакет, такой как многоадресный запрос 210, отбрасывается до того, как он достигает своего пункта назначения, это иногда упоминается как потеря пакета. (Термин «пакет» соответствует блоку информации, который передается с одного узла 202 на другой узел 202 по сети 100. Типично, многоадресный запрос 210 содержится в одиночном пакете.)

Когда узел 202 принимает многоадресный запрос 210, он определяет, способен ли он к предоставлению запрошенных данных и/или услуг(и). Если способен, узел 202 отправляет ответ 216 на узел 202, который отправлял многоадресный запрос 210. Фиг.2B показывает работу узла B 202b, узла C 202c и узла D 202d в ответ на отправку узлом A 202a запроса 210 в первый раз. Узел B 202b и узел C 202c - оба предоставляют запрошенную услугу 212. Соответственно, узел B 202b отправляет ответ 216b обратно на узел A 202a. К тому же узел C 202c отправляет ответ 216c обратно на узел A 202a. Ответы 216b, 216c могут отправляться посредством одноадресной передачи. Так как узел D 202d не принимал запрос 210, он не будет отвечать на многоадресный запрос 210.

Через определенный период времени узел A 202a повторно отправляет запрос 210 ради требуемой услуги 212. Фиг.2C показывает узел A 202a, отправляющий запрос 210 и список 214 ответчиков во второй раз. Фиг.2D показывает работу узла B 202b, узла C 202c и узла D 202d в ответ на отправку узлом A 202a запроса 210 и списка 214 ответчиков во второй раз.

Как и раньше, оба, запрос 210 и список 214 ответчиков, отправляются посредством многоадресной передачи. Так как узел B 202b и узел C 202c раньше ответили на многоадресный запрос 210, список 214 ответчиков теперь включает в себя как узел B 202b, так и узел C 202c. Как показано на фиг.2C, каждый из узла B 202b, узла C 202c и узла D 202d принимает многоадресный запрос 210 и список 214 ответчиков, когда они отправлены во второй раз. Когда узел B 202b и узел C 202c принимают многоадресный запрос 210 и список 214 ответчиков, они оба распознают, что они включены в список 214 ответчиков. Как результат, ни узел B 202b, ни узел C 202c не отвечают на этот многоадресный запрос 210. Однако узел D 202d распознает, что он не включен в список 214 ответчиков. Соответственно, как показано на фиг.2D, узел D 202d отправляет ответ 216d обратно на узел A 202a. Ответ 216d может отправляться посредством одноадресной передачи.

Через определенный период времени узел A 202a еще раз повторно отправляет запрос 210 ради требуемой услуги 212. Фиг.2E показывает узел A 202a, отправляющий запрос 210 и список 214 ответчиков в третий раз. Фиг.2F показывает работу узла B 202b, узла C 202c и узла D 202d в ответ на отправку узлом A 202a запроса 210 и списка 214 ответчиков в третий раз.

Как и раньше, оба, запрос 210 и список 214 ответчиков, отправляются посредством многоадресной передачи. Так как узел B 202b, узел C 202c и узел D 202d раньше ответили на многоадресный запрос 210, список 214 ответчиков теперь включает в себя узел B 202b, узел C 202c и узел D 202d. Как показано на фиг.2E, каждый из узла B 202b, узла C 202c и узла D 202d принимает многоадресный запрос 210 и список 214 ответчиков, когда они отправлены в третий раз. Каждый из этих узлов 202b, 202c, 202d распознает, что он включен в список 214 ответчиков. Как результат, ни один из этих узлов 202b, 202c, 202d не отвечает на этот многоадресный запрос 210.

Количество раз, которое запросчик (например, узел A 202a) повторно отправляет многоадресный запрос 210 после начальной попытки, в материалах настоящей заявки будет упоминаться как количество «повторов». Запросчик может быть сконфигурирован так, что он отправляет определенное количество повторов. В примере, показанном на фиг.2A-2F, была одна начальная попытка и два повтора. Конечно, запросчик может быть сконфигурирован для отправки дополнительных повторов или меньшего количества повторов в соответствии с вариантами осуществления, раскрытыми в материалах настоящей заявки.

Фиг.3 - схема потоков данных, которая иллюстрирует различные компоненты программного обеспечения, которые могут использоваться узлом 302 в одноранговой сети 100 согласно варианту осуществления. Узел 302, показанный на фиг.3, включает в себя модуль 318 прикладных программ. Модуль 318 прикладных программ может предоставлять данные и/или услуги другим узлам 102 в сети 100. Модуль 318 прикладных программ также может получать данные и/или услуги от других узлов 102 по сети 100.

Проиллюстрированный узел 302 также включает в себя модуль 320 связи. Модуль 320 связи обеспечивает связь между модулем 318 прикладных программ и другими узлами 102 в сети 100. Модуль 320 связи может быть сконфигурирован для отправки сообщений на и приема сообщений из других узлов 102 сети посредством многоадресной передачи и/или посредством одноадресной передачи.

Модуль 318 прикладных программ и модуль 320 связи могут работать вместе, для того чтобы узел 302 взаимодействовал с другими узлами 102 в сети 100 образом, проиллюстрированным выше в связи с фиг.2A-2F. Для того чтобы получать данные и/или одну или более услуг, предоставляемых одним или более другими узлами 102, по сети 100, модуль 318 прикладных программ может производить один или более вызовов в отношении модуля 320 связи для многоадресной передачи запроса 210 ради данных и/или услуг(и). Когда другой узел(ы) 102 в сети 100 отвечает на многоадресный запрос 210, ответ(ы) 216 может приниматься модулем 320 связи, а затем направляться в модуль 318 прикладных программ.

Фиг.4 - еще одна схема потоков данных, которая иллюстрирует различные компоненты программного обеспечения, которые могут использоваться узлом 302 в одноранговой сети 100 согласно варианту осуществления. Как указано выше, варианты осуществления, раскрытые в материалах настоящей заявки, относятся к управлению трафиком в одноранговой сети 100, для того чтобы максимизировать пропускную способность наряду с минимизацией потери пакетов. Компоненты, показанные на фиг.4, могут использоваться для реализации этих функциональных возможностей.

В изображенном варианте осуществления некоторое количество событий 422 определено в качестве подразумевающих перегрузку в сети 100. Эти события 422 в материалах настоящей заявки будут упоминаться как события 422 перегрузки. В дополнение, некоторое количество событий 424 определено в качестве подразумевающих отсутствие перегрузки в сети 100. Эти события 424 в материалах настоящей заявки будут упоминаться как события 424 без перегрузки. События 424 без перегрузки могут помогать прогнозировать/предсказывать будущую перегрузку сети. Некоторые примеры событий 422 перегрузки и событий 424 без перегрузки будут обсуждены ниже.

Модуль 426 обнаружения событий предусмотрен на узле 402. Модуль 426 обнаружения событий отслеживает активность узла 402 на предмет наступления одного из событий 422 перегрузки или одного из событий 424 без перегрузки.

Модуль 428 интервала между пакетами также предусмотрен на узле 402. Когда модуль 426 обнаружения событий обнаруживает любое из определенных событий 422 перегрузки или событий 424 без перегрузки, он уведомляет модуль 424 интервала между пакетами. Если обнаружено одно (или более) из определенных событий 422 перегрузки, модуль 424 интервала между пакетами увеличивает интервал между пакетами, которые отправляются узлом 402. Другими словами, узел 402 увеличивает количество времени, которое он ожидает после отправки одного пакета до того, как он отправляет другой пакет. Это делается в целях уменьшения объема трафика по сети 100, тем самым уменьшая перегрузку сети 100. Наоборот, если обнаружено одно (или более) из определенных событий 424 без перегрузки, это означает, что нет значительного объема трафика в сети 100, и в ответ модуль 428 интервала между пакетами уменьшает интервал между пакетами, которые отправляются узлом 402 (то есть он уменьшает количество времени, которое он ожидает после отправки одного пакета, до того как он отправляет другой пакет).

В некоторых вариантах осуществления модуль 428 интервала между пакетами регулирует интервал между пакетами, только которые отправляются согласно протоколу без установления соединения, такому как UDP. Модуль 428 интервала между пакетами может быть сконфигурирован так, что он не оказывает влияния на интервал между пакетами, которые отправляются в соответствии с основанным на соединении протоколом, таком как TCP/IP (протокол управления передачей/межсетевой протокол).

Фиг.5 - блок-схема последовательности операций, которая иллюстрирует работу узла 102 в пределах одноранговой сети 100 согласно варианту осуществления. В соответствии с проиллюстрированным способом 500 определяются 502 одно или более событий 422 перегрузки. К тому же определяются 504 одно или более событий 424 без перегрузки.

Модуль 426 обнаружения событий в узле 102 может отслеживать 506 активность узла 102 на предмет наступления одного из событий 422 перегрузки или одного из событий 424 без перегрузки. Когда обнаруживается 508 событие 422 перегрузки, модуль 428 интервала между пакетами в узле 102 может увеличивать 510 интервал между пакетами, которые отправляются узлом 102, в стремлении уменьшить перегрузку сети. Наоборот, когда обнаружено событие 424 без перегрузки, модуль 428 интервала между пакетами может увеличивать 512 интервал между пакетами, которые отправляются узлом 102.

В некоторых вариантах осуществления многочисленные узлы 102 в сети 100 работают в соответствии со способом 500, показанным на фиг.5. Другими словами, многочисленные узлы 102 могут быть сконфигурированы для увеличения интервала между пакетами, когда обнаруживаются события 422 перегрузки, и для уменьшения интервала между пакетами, когда обнаруживаются события 424 без перегрузки. Фактически все из узлов 102 в сети 100 могут быть сконфигурированы для работы этим способом. Таким образом, может быть предусмотрен механизм для максимизации пропускной способности данных в пределах сети 100 наряду с минимизацией потери пакетов. Преимущественно, центральному серверу необязательно управлять интервалом между пакетами отдельных узлов 102 в сети 100. Взамен узлы 102 сами регулируют интервал между пакетами в ответ на условия сети.

Далее будет обсужден пример специального алгоритма, который может использоваться узлом 102 в одноранговой сети 100 согласно варианту осуществления. Хотя будет обсужден специальный алгоритм, варианты осуществления не ограничены этим специальным алгоритмом. В самом деле, любой адаптивный алгоритм может использоваться с вариантами осуществления, раскрытыми в материалах настоящей заявки. Некоторые примеры адаптивных алгоритмов, которые могут использоваться, включают в себя алгоритмы нейронных сетей, алгоритмы нечеткой логики, генетические алгоритмы и т.п.

Фиг.6 иллюстрирует пример события 624 без перегрузки, которое может быть определено для узла 102 согласно варианту осуществления. Событие 624 без перегрузки, показанное на фиг.6, включает в себя два условия 630a, 630b. Первое условие 630a состоит в том, что узел 102 принял многоадресный запрос 210 и список 214 ответчиков, который ассоциирован с многоадресным запросом 210. Второе условие 630b состоит в том, что узел 102 включен в список 214 ответчиков. Если модуль 426 обнаружения событий определяет, что оба из этих условий 630a, 630b удовлетворены, то модуль 426 обнаружения событий определяет, что произошло событие 624 без перегрузки.

Как указано выше, в ответ на обнаружение события 624 без перегрузки узел 102 может уменьшать свой интервал между пакетами. В некоторых вариантах осуществления, когда происходит событие 624 без перегрузки, которое показано на фиг.6, узел 102 может уменьшать свой интервал между пакетами в соответствии с уравнением 1:

swnd new = swnd *(1-1/shrink factor) (1)

В уравнении 1 член swnd является текущим значением окна на передачу. Окно на передачу является переменной, которая может быть определена для узла 102. Окно на передачу указывает, как долго узел 102 ожидает между отправкой пакетов. Член swnd new является новым значением окна на передачу. Член shrink factor является множителем, который может использоваться для управления тем, насколько быстро окно на передачу уменьшается при благоприятных условиях сети 100. В примерном варианте осуществления значение shrink factor может быть установлено равным 16.

Фиг.7 иллюстрирует пример события 722 перегрузки, которое может быть определено для узла 102 согласно варианту осуществления. Событие 722 перегрузки, показанное на фиг.7, включает в себя два условия 730a, 730b. Первое условие 730a состоит в том, что узел 102 принял многоадресный запрос 210 и список 214 ответчиков, который ассоциирован с многоадресным запросом 210. Второе условие 730b состоит в том, что узел 102 не включен в список 214 ответчиков, хотя он предоставляет услугу 212. Если модуль 426 обнаружения событий определяет, что оба из этих условий 730a, 730b удовлетворены, то модуль 426 обнаружения событий определяет, что произошло событие 722 перегрузки.

Как указано выше, в ответ на обнаружение события 722 пер