ПРЯМАЯ ПОТОКОВАЯ ПЕРЕДАЧА МЕЖДУ ОДНОРАНГОВЫМИ ЭЛЕМЕНТАМИ
DIRECT STREAMING BETWEEN PEER-TO-PEER ENTITIES

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Описанные варианты осуществления в целом относятся к одноранговым сетям, конкретно к одноранговому протоколу для потоковой передачи контента.
Одноранговая сеть включает в себя несколько одноранговых элементов, которые имеют установленные соединения друг с другом. Каждый одноранговый элемент действует и как поставщик (то есть отправитель), и как потребитель (то есть получатель) ресурсов, что отличается от традиционной модели клиент-сервер, в которой серверы «поставляют», а клиенты «потребляют».
Одноранговая сеть может использоваться для распространения контента прямой передачи (например, передачи потоком записи события, происходящего в реальном времени) на множество одноранговых элементов. Один способ распространения контента прямой передачи (в реальном времени) состоит в том, что каждый одноранговый элемент в сети пересылает каждый блок данных принятого контента на соседние с ним одноранговые элементы. Этот подход влечет за собой значительные издержки в том, что каждый одноранговый элемент будет принимать один и тот же блок многократно от различных одноранговых элементов. Другой способ распространения контента прямой передачи состоит в том, что каждый одноранговый элемент явно запрашивает необходимые блоки данных от других одноранговых элементов. Однако этот подход может иметь результатом повышение времени ожидания (то есть времени, которое требуется одноранговому узлу для приема блока данных).
КРАТКОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
Описанные в документе варианты осуществления обеспечивают протокол для потоковой передачи контента в одноранговых сетях. Согласно протоколу, одноранговая сеть включает в себя несколько объединений (clubs) и несколько одноранговых элементов, которые принимают контент, распространяемый источником в сети. Каждый элемент из множества одноранговых элементов является частью по меньшей мере двух объединений. Если контент сформирован, источник разделяет контент на несколько блоков данных и назначает каждый блок данных объединению. Каждый блок данных передается на одноранговые элементы, которые относятся к объединению, назначенному для блока данных. Когда одноранговый элемент в объединении принимает блок данных, назначенный этому объединению, одноранговый элемент распространяет блок данных на другие одноранговые элементы в объединении. Дополнительно одноранговый элемент передает блок данных на одноранговые элементы в других объединениях. Кроме того, одноранговый элемент принимает блоки данных, назначенные другим объединениям, от одноранговых элементов, которые не являются членами объединения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг. 1 - блок-схема сетевой среды согласно одному варианту осуществления.
Фиг. 2 - блок-схема, иллюстрирующая функциональное представление типичной компьютерной системы для использования в качестве источника, элемента отслеживания («трекера») и/или однорангового элемента согласно одному варианту осуществления.
Фиг. 3 - блок-схема архитектуры одноранговой сети согласно одному варианту осуществления.
Фиг. 4 - блок-схема, иллюстрирующая процесс для однорангового элемента, подсоединяющегося к одноранговой сети для приема контента, согласно одному варианту осуществления.
Фиг. 5 - блок-схема, иллюстрирующая процесс потоковой передачи контента в одноранговой сети согласно одному варианту осуществления.
Фиг. 6 - блок-схема, иллюстрирующая процесс для однорангового элемента, распространяющего контент, принимаемый в одноранговой сети, согласно одному варианту осуществления.
На чертежах изображены различные варианты осуществления с целью иллюстрации. Специалист в данной области техники легко поймет из последующего обсуждения, что могут использоваться альтернативные варианты осуществления структур и способов, иллюстрируемых в документе, без выхода за рамки принципов, описанных в документе.
ПОДРОБНОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
ОБЩИЙ ОБЗОР
На Фиг. 1 показана блок-схема сетевой среды 100 согласно одному варианту осуществления. Среда 100 включает в себя источник 104, элемент 106 отслеживания и одноранговые элементы 108(a)-108(h), осуществляющие связь посредством одноранговой сети 102. Источник 104 создает соединения с одноранговыми элементами 108, и одноранговые элементы 108 создают соединения друг с другом, чтобы образовать одноранговую сеть 102. Источник 104 и одноранговые элементы 108 совместно используют контент согласно одноранговому протоколу, описанному в этом документе. Одноранговый протокол позволяет передавать потоком контент в одноранговой сети 102 и является особо полезным для потоковой передачи контента прямой трансляции («в живую») вследствие его характеристик низкого времени ожидания и низких издержек. Хотя иллюстрируемая среда 100 включает в себя лишь один источник, один элемент отслеживания и ограниченное количество одноранговых элементов, другие варианты осуществления включают в себя дополнительные количества для каждого (например, большее количество одноранговых элементов).
Источник 104 является компьютерной системой, которая обеспечивает контент, совместно используемый одноранговыми элементами 108 в сети 102 (то есть доставляет контент в сеть 102). В одном варианте осуществления контентом является веб-канал мультимедийного контента (например, видео и/или аудио). В одном варианте осуществления контент представляет подачу в реальном времени, формируемую в то время, как она передается потоком внутри сети 102. Источник 104 распространяет контент на одноранговые элементы 108 в сети 102 согласно одноранговому протоколу, описанному ниже. Источник 104 и одноранговые элементы 108, совместно использующие контент, могут в совокупности именоваться «группа» (swarm) или «одноранговая сеть» 102.
Элемент 106 отслеживания является компьютерной системой, которая отслеживает одноранговые элементы 108, которые являются частью группы. В одном варианте осуществления элемент 106 отслеживания поддерживает перечень одноранговых элементов 108 в группе. Для каждого однорангового элемента в группе элемент 106 отслеживания в одном варианте осуществления включает адрес по протоколу Internet (IP) и номер порта однорангового элемента (идентификационная информация). Когда одноранговый элемент подсоединяется к группе, элемент 106 отслеживания добавляет к перечню IP-адрес и номер порта однорангового элемента.
В одном варианте осуществления каждый одноранговый элемент в группе периодически передает сообщение на элемент 106 отслеживания, чтобы уведомить элемент 106 отслеживания, что он все еще является частью группы. Если элемент 106 отслеживания не принимает сообщение от однорангового элемента в течение определенного времени, он удаляет одноранговый элемент из перечня, и одноранговый элемент более не является частью группы.
Элемент 106 отслеживания помогает одноранговому узлу в подсоединении к группе. В одном варианте осуществления элемент 106 отслеживания помогает путем предоставления одноранговому узлу перечня или части перечня с тем, чтобы одноранговый элемент мог создать соединения с одноранговыми элементами 108 группы.
Каждый одноранговый элемент является компьютерной системой с возможностями приема данных от других одноранговых элементов 108 (то есть загрузки) и передачи данных на другие одноранговые элементы 108 (то есть пересылки). Одноранговый элемент может быть, например, персональным компьютером, мобильным телефоном, планшетным компьютером, персональным цифровым ассистентом (PDA), телевизионной приставкой или любым другим подключаемым к сети устройством. В одном варианте осуществления каждый одноранговый элемент хранит компьютерную программу, которая управляет загрузками от одноранговых элементов 108 и пересылками на одноранговые элементы 108 согласно одноранговому протоколу.
АРХИТЕКТУРА КОМПЬЮТЕРНОЙ СИСТЕМЫ
На Фиг. 2 показана блок-схема, иллюстрирующая функциональное представление типичной компьютерной системы 200 для использования в качестве источника 104, элемента 106 отслеживания и/или однорангового элемента. Иллюстрируется по меньшей мере один процессор 202, связанный с микропроцессорным набором 204. Микропроцессорный набор 204 включает в себя концентратор 220 контроллера памяти и концентратор 222 контроллера ввода/вывода (I/O). Память 206 и графический адаптер 212 связаны с концентратором контроллера памяти 220, и устройство 218 отображения связано с графическим адаптером 212. Устройство 208 хранения данных, клавиатура 210, указательное устройство 214 и сетевой адаптер 216 связаны с концентратором 222 контроллера ввода/вывода. Другие исполнения компьютера 200 имеют другую архитектуру. Например, память 206 является непосредственно связанной с процессором 202 в некоторых исполнениях.
Устройство 208 хранения данных является не временным машиночитаемым носителем данных, таким как накопитель на жестком диске, постоянное ЗУ на компакт-диске (CD-ROM), цифровой многофункциональный диск (DVD) или устройство твердотельной памяти. Память 206 содержит команды и данные, используемые процессором 202. Указательное устройство 214 является мышью, шаровым манипулятором или другим типом указательного устройства и используется в комбинации с клавиатурой 210 для ввода данных в компьютерную систему 200. Графический адаптер 212 воспроизводит изображения и другую информацию на устройстве 218 отображения. Сетевой адаптер 216 позволяет компьютерной системе 200 осуществлять связь по одноранговой сети 102. Некоторые исполнения компьютерной системы 200 имеют компоненты, отличающиеся и/или другие, чем показанные на Фиг. 2.
Компьютерная система 200 приспособлена для исполнения модулей компьютерной программы, чтобы обеспечивать функциональность, описанную в этом документе. Как используется в документе, термин "модуль" относится к командам компьютерной программы и другой логике, используемым для обеспечения указанной функциональности. Таким образом, модуль может быть реализован в виде аппаратных средств, программно-аппаратных средств и/или программных средств. В одном варианте осуществления программные модули, сформированные из исполнимых команд компьютерной программы, сохраняются на устройстве 208 хранения данных, загружаются в память 206 и исполняются процессором 202.
Тип компьютерных систем 200, используемый источником 104, элементом 106 отслеживания и одноранговыми элементами 108, может изменяться в зависимости от исполнения и используемой вычислительной мощности. Например, компьютерная система однорангового элемента может иметь меньшую вычислительную мощность, чем компьютерная система источника 104 или элемента 106 отслеживания.
АРХИТЕКТУРА СЕТИ
В одном варианте осуществления, согласно одноранговому протоколу, группа/сеть 102 имеет несколько объединений, и каждый одноранговый элемент в группе является частью объединения. В одном варианте осуществления в группе имеется всего двенадцать объединений. Однако в других вариантах осуществления может быть включено большее или меньшее число объединений. Каждое объединение включает в себя источник 104 и подмножество одноранговых элементов 108 из группы, которые объявили себя объединением. Следовательно, объединение включает в себя группировку данных и подмножество одноранговых элементов 108 группы.
В одном варианте осуществления каждый одноранговый элемент является частью нескольких объединений (например, 2-х объединений). Преимущество того, что каждый одноранговый элемент являться частью по меньшей мере двух объединений состоит в том, что это помогает распределять между объединениями пропускную способность пересылки. Например, при условии, что имеются двенадцать объединений, восемь одноранговых элементов в группе имеют хорошую способность пересылки, и каждый одноранговый элемент является участником только одного объединения. Поскольку каждый одноранговый элемент является участником только одного объединения, по меньшей мере у четырех объединений не будет однорангового элемента с хорошей способностью пересылки, и способность пересылки каждого из этих четырех объединений может быть недостаточной. С другой стороны, если каждый из восьми одноранговых элементов с хорошей способностью пересылки подсоединяется к двум объединениям, имеется высокая вероятность, что каждое объединение будет включать в себя один из восьми одноранговых элементов.
На Фиг. 3 иллюстрируется пример архитектуры 300 в сети 102 согласно одноранговому протоколу. На Фиг. 3 показаны четыре объединения (302(a), 302(b), 302(c) и 302(d)) из двенадцати, имеющихся в группе. Как можно видеть, источник 104 является частью каждого объединения, и в этом примере каждый одноранговый элемент является частью двух объединений из этих двенадцати объединений. Например, одноранговый элемент 108(a) является частью объединений 302(a) и 302(c).
Источник 104 и одноранговые элементы 108 в объединении устанавливают соединения друг с другом. В одном варианте осуществления соединения являются однонаправленными соединениями по протоколу дейтаграмм пользователя (UDP). В однонаправленном соединении соединение имеет место между передающим одноранговым элементом и принимающим одноранговым элементом. Передающий одноранговый элемент передает данные через соединение на принимающий одноранговый элемент, но принимающий одноранговый элемент не передает данные на передающий одноранговый элемент через соединение.
В одном варианте осуществления каждый одноранговый элемент в объединении старается иметь некоторое количество соединений пересылки и соединений загрузки с другими одноранговыми элементами 108 в объединении 302. В одном варианте осуществления каждый одноранговый элемент объединения старается иметь не более трех и не менее двух соединений каждого типа соединения (соединений пересылки и загрузки) в объединении для того, чтобы быстро распространять данные внутри объединения и сохранять низкими издержки. Например, если одноранговый элемент в объединении имеет только одно соединение загрузки в объединении, то одноранговый элемент будет предпринимать попытки создать другое соединение загрузки в объединении. Подобным образом, если у однорангового элемента имеется четыре соединения пересылки в объединении, одноранговый элемент может удалить одно из соединений пересылки. В других вариантах осуществления одноранговый элемент в объединении старается иметь более трех или менее двух соединений каждого типа соединений.
В соединении пересылки для однорангового элемента, одноранговый элемент является передающим одноранговым элементом однонаправленного соединения. В соединении загрузки для однорангового элемента одноранговый элемент является принимающим одноранговым элементом однонаправленного соединения. Например, на Фиг. 3 у однорангового элемента 108(f) в объединении 302(a) имеются два соединения пересылки с одноранговыми элементами 108(h) и 108(c) и одно соединение загрузки с одноранговым элементом 108(a).
У каждого однорангового элемента в объединении также имеются соединения с одноранговыми элементами 108 в других объединениях 302. В одном варианте осуществления каждый одноранговый элемент в объединении также старается иметь соединение загрузки с одноранговым элементом в каждом объединении, частью которого он не является. Эти соединения загрузки позволяют одноранговому узлу принимать данные, которые не назначаются его объединениям, как будет описано более подробно ниже. Например, на Фиг. 1 у однорангового элемента 108(c) в объединении 302(a) может иметься соединение загрузки с одноранговым элементом 108(b) в объединении 302(c), а также соединение загрузки с одноранговым элементом 108(d) в объединении 302(d).
В одном варианте осуществления у источника 104 имеются два соединения пересылки с одноранговыми элементами 108 в каждом объединении. Например, в объединении 302(c) у источника 104 имеется соединение пересылки с одноранговыми элементами 108(b) и 108(e). В других вариантах осуществления источник 104 имеет более двух или менее двух соединений пересылки в объединении.
ПОДСОЕДИНЕНИЕ К СЕТИ
Согласно одноранговому протоколу, когда одноранговый элемент желает подсоединиться к группе для получения контента, обеспечиваемого источником 104, одноранговый элемент передает на элемент 106 отслеживания запрос информации об одноранговых элементах 108 в группе. Элемент 106 отслеживания предоставляет одноранговому узлу полный или частичный перечень одноранговых элементов 108, которые являются частью группы (то есть идентификационную информацию одноранговых элементов в группе), и уведомляет одноранговый элемент об общем количестве объединений 302 в группе. В одном варианте осуществления элемент 106 отслеживания также рекомендует одноранговым элементам объединения элементов в группе для подсоединения. В одном варианте осуществления элемент 106 отслеживания рекомендует одноранговому узлу два объединения элементов для подсоединения. В одном варианте осуществления объединения являются только рекомендациями, и одноранговый элемент может выбирать для подсоединения любое объединение из объединений 302. В другом варианте осуществления одноранговому узлу требуется подсоединиться к рекомендуемым объединениям.
В одном варианте осуществления для создания рекомендации на подсоединение однорангового элемента относительно того, к каким объединениям 302 подсоединяться, элемент 106 отслеживания создает перечень рекомендаций, который включает в себя объединения 302 в группе. Элемент 106 отслеживания перемешивает объединения 302 в перечне. Каждый раз, когда новый одноранговый элемент запрашивает подсоединение к группе, элемент 106 отслеживания рекомендует, например, два первых объединения 302 в перечне рекомендаций и удаляет их из перечня. Элемент 106 отслеживания продолжает это делать до тех пор, пока в перечне больше не будет объединений 302. Как только объединения 302 более не находятся в перечне, элемент 106 отслеживания заново создает перечень. Этот процесс рекомендации объединений позволяет, чтобы объединения 302 были сбалансированными с точки зрения количества одноранговых элементов 108. В других вариантах осуществления элемент отслеживания использует другие алгоритмы балансировки нагрузки для рекомендации объединений.
Подсоединяющийся одноранговый элемент использует перечень одноранговых элементов 108, обеспеченный элементом 106 отслеживания, чтобы создать соединения, необходимые по протоколу (то есть соединения с одноранговыми элементами в выбранных объединениях и соединения с одноранговыми элементами, не находящимися в выбранных объединениях). В одном варианте осуществления, чтобы создать соединение с другим одноранговым элементом в объединении, подсоединяющийся одноранговый элемент посылает на включенные в перечень одноранговые элементы 108 запрос, запрашивающий информацию относительно одноранговых элементов 108, которая им известна, в объединении. Одноранговые элементы 108, принимающие сообщение, отвечают одноранговым элементам 108, которые находятся в объединении. Ответы включают в себя IP-адреса и номера портов одноранговых элементов 108 в объединении.
Подсоединяющийся одноранговый элемент передает сигнал проверки связи (ping) на одноранговые элементы 108, которые находятся в объединении. Подсоединяющийся одноранговый элемент принимает ответы на сигнал проверки связи от одноранговых элементов 108. На основании ответов на сигнал проверки связи подсоединяющийся одноранговый элемент выбирает одноранговый элемент в объединении, с которым создавать соединение. В одном варианте осуществления факторы, используемые для определения, создавать ли соединение с одноранговым элементом, включают в себя количество времени, которое потребуется для приема ответа на сигнал проверки связи от однорангового элемента, и объем данных в очереди на передачу в одноранговом узле. Объем данных в очереди включается в ответ однорангового элемента. Подсоединяющийся одноранговый элемент осуществляет связь с выбранным одноранговым элементом, и соединение создается. В одном варианте осуществления адреса одноранговых элементов, которые были проверены с помощью запросов сигнала проверки связи, сохраняются для возможного использования в следующий раз, когда подсоединяющемуся одноранговому узлу потребуется создать соединение. В одном варианте осуществления ответы на сигнал проверки связи также сохраняются.
В одном варианте осуществления одноранговый элемент, который уже является частью группы, создает соединение с одноранговым элементом в объединении образом, подобным описанному для подсоединяющегося однорангового элемента. Одно отличие состоит в том, что вместо посылки запроса на одноранговые элементы 108 в перечне, принятом от элемента 106 отслеживания, запрос передается на одноранговые элементы 108 в группе, с которыми у создающего однорангового элемента уже имеются соединения.
В одном варианте осуществления, когда создающий одноранговый элемент принимает информацию относительно одноранговых элементов 108 в объединении, создающий одноранговый элемент передает сигнал проверки связи на одноранговые элементы 108 в объединении, от которых создающий одноранговый элемент недавно не принял ответ на сигнал проверки связи (то есть в заданный промежуток времени). Если создающий одноранговый элемент недавно принял от однорангового элемента в объединении ответ на сигнал проверки связи при создании другого соединения, создающий одноранговый элемент будет использовать этот ответ на сигнал проверки связи для определения, создавать ли соединение с одноранговым элементом.
На основании ответов на сигнал проверки связи и перечня запрещенных элементов для создающего однорангового элемента, создающий одноранговый элемент выбирает одноранговый элемент в объединении, с которым создавать соединение. Перечень запрещенных элементов включает в себя одноранговые элементы 108, с которыми создающий одноранговый элемент ранее имел соединения и должен был удалить соединения. Подробности относительно того, каким образом одноранговый элемент добавляется к перечню запрещенных элементов, представлены ниже. В одном варианте осуществления создающий одноранговый элемент задает более высокий приоритет созданию соединений с одноранговыми элементами 108 не из перечня запрещенных элементов. В одном варианте осуществления создающий одноранговый элемент не будет создавать соединение с одноранговым элементом в перечне запрещенных элементов.
РАСПРОСТРАНЕНИЕ КОНТЕНТА
Согласно одноранговому протоколу, если подача контента является формируемой, подача принимается источником 104, например, от устройства захвата мультимедиа. В одном варианте осуществления источник 104 принимает подачу контента с помощью протокола обмена сообщениями в реальном времени (RTMP). Если формируемая подача контента принимается источником 104, источник 104 разделяет подачу контента на блоки данных, которые имеют приблизительно одинаковый размер. В одном варианте осуществления блоки последовательно нумеруются. Каждый блок данных назначается объединению. В одном варианте осуществления чтобы определять, какому объединению назначен блок, источник 104 вычисляет остаток целочисленного деления порядкового номера блока на число объединений 302 в группе. Результатом операции является объединение, которому блок назначен.
В одном варианте осуществления аутентификационная подпись присоединяется с каждым блоком данных с тем, чтобы одноранговые элементы 108 могли определять, что блок данных поступает от источника 104 и не является недействительным блоком данных. В одном варианте осуществления аутентификационная подпись создается для каждого установленного числа блоков данных в последовательности (то есть подпись создается для пакета блоков данных). Например, аутентификационная подпись может создаваться для каждых 12 блоков данных в последовательности. Аутентификационную подпись пакета присоединяют к каждому блоку данных в пакете.
В одном варианте осуществления аутентификационной подписью для пакета является хеш-значение корня хеш-дерева. Для создания хеш-дерева создается хеш-значение для каждого блока данных пакета. Хеш-значения блоков данных являются первым уровнем хеш-дерева. Каждые два хеш-значения для блоков данных хешированы вместе, чтобы создать второй уровень хеш-дерева. Дополнительные уровни создаются путем хеширования двух дочерних хеш-значений вместе до тех пор, пока не будет создан конечный уровень только с корневым хеш-значением.
Источник 104 передает каждый блок данных, назначенный объединению, на одноранговые элементы 108 в объединении, с которыми у источника 104 имеются соединения пересылки. Например, на Фиг. 3 для блока данных, назначенного объединению 302(d), источник 104 передаст блок на одноранговые элементы 108(d) и 108(f). В одном варианте осуществления, в дополнение к передаче блока данных с его соответственной аутентификационной подписью, источник 104 передает некоторые хеш-значения, соответствующие хеш-дереву, используемому для формирования подписи, чтобы позволять принимающему одноранговому узлу верифицировать аутентификационную подпись блока.
В одном варианте осуществления источник 104 также включает оценку скорости передачи битов подачи контента с каждым передаваемым блоком данных. Оценка скорости передачи битов позволяет одноранговым элементам 108 знать скорость, с которой можно отправлять блоки данных. В одном варианте осуществления в течение промежутка времени источник 104 определяет оценку скорости передачи битов подачи контента на основании количества блоков данных, переданных источником в предшествующем промежутке времени.
В одном варианте осуществления источник 104 настраивает определенную оценку скорости передачи битов для текущего промежутка времени на основании разности между оцененной скоростью передачи битов для предыдущего промежутка времени и фактическим количеством блоков данных, переданных в предыдущем промежутке времени. В одном варианте осуществления, если оценка скорости передачи битов, определенная для промежутка времени, меньше оцененной скорости передачи битов для предыдущего промежутка времени, источник 104 получает разность между предыдущей оценкой скорости передачи битов и определенной оценкой скорости передачи битов. Источник 104 задает, что оценкой скорости передачи битов для текущего промежутка времени будет предыдущая оценка скорости передачи битов минус доля разности (например, 0,6 от разности). Преимуществом этого подхода является то, что скорость передачи битов снижается асимптотически.
В одном варианте осуществления, когда одноранговый элемент в объединении элементов принимает блок данных, назначенный объединению, одноранговый элемент аутентифицирует блок данных, используя принятые подпись, присоединенную к блоку данных, и хеш-значения, соответствующие хеш-дереву. Если одноранговый элемент не может аутентифицировать блок данных, блок данных отбрасывается. С другой стороны, если одноранговый элемент успешно аутентифицирует блок данных, одноранговый элемент подготавливает блок для воспроизведения и уведомляет другие одноранговые элементы 108 в объединении, с которыми одноранговый элемент имеет соединение загрузки, что уже принял блок данных. Уведомление других одноранговых элементов предотвращает прием одноранговым элементом нескольких копий блока данных (то есть это снижает количество избыточных передач внутри объединения). В качестве примера, на Фиг. 3, когда одноранговый элемент 108(a) в объединении 302(a) принимает от источника 104 блок данных, назначенный объединению 302(a), одноранговый элемент 108(a) уведомляет одноранговый элемент 108(h), что он уже принял блок данных.
Для каждого принимающего однорангового элемента в объединении, с которым у однорангового элемента имеется соединение пересылки, одноранговый элемент передает блок данных на принимающий одноранговый элемент, если не было принято сообщение, указывающее, что принимающий одноранговый элемент уже принял блок данных. Например, когда одноранговый элемент 108(a) в объединении 302(a) принимает блок данных, назначенный объединению 302(a), одноранговый элемент 108(a) передает блок на одноранговый элемент 108(f), пока не будет принято сообщение, что у однорангового элемента 108(f) блок уже имеется. Преимущество старания каждого однорангового элемента в объединении иметь по меньшей мере два соединения загрузки и по меньшей мере два соединения пересылки в объединении элементов состоит в том, что это позволяет блокам, назначенным объединению, быть распространенными внутри объединения с экспоненциальной скоростью.
Одноранговый элемент также предоставляет блок данных на одноранговые элементы 108 в других объединениях 302, с которым у однорангового элемента имеются соединения пересылки. Однако одноранговый элемент задает более высокий приоритет маршрутизации блока данных на одноранговые элементы, которые являются членами объединения относительно блока данных. В одном варианте осуществления, если некоторое количество блоков данных подряд передаются одноранговым элементом внутри объединения (например, 9 блоков данных подряд), одноранговый элемент передает блок данных из объединения. Это помогает предотвращать недостаточность соединений пересылки с одноранговыми элементами в других объединениях.
В одном варианте осуществления всякий раз, когда одноранговый элемент передает блок данных на принимающий одноранговый элемент, одноранговый элемент также передает хеш-значения, соответствующие хеш-дереву, используемому для формирования аутентификационной подписи блока. Хеш-значения требуются принимающему одноранговому узлу для того, чтобы аутентифицировать блок данных. В одном варианте осуществления одноранговый элемент отслеживает, какие хеш-значения и подписи были посланы на принимающий одноранговый элемент или сформированы им. В следующий раз, если блок данных передается на принимающий одноранговый элемент, если хеш-значение или подпись, которые необходимо посылать на принимающий одноранговый элемент для аутентификации, были ранее посланы для другого блока данных, то это повторно не передается одноранговым элементом. Принимающий одноранговый элемент может использовать ранее принятые хеш-значение или подпись, чтобы аутентифицировать новый блок данных.
В одном варианте осуществления, когда одноранговый элемент принимает блок данных от объединения, к которому одноранговый элемент не относится, одноранговый элемент не распространяет блок данных на другие одноранговые элементы 108 (например, одноранговые элементы в своем объединении). Другими словами, в этом варианте осуществления, каждый одноранговый элемент основывается на одноранговых элементах 108 в других объединениях 302 для приема блоков данных, которые не являются назначенными его соответственным объединениям 302.
УПРАВЛЕНИЕ ПЕРЕГРУЗКОЙ
В соответствии с одноранговым протоколом, с целью управления перегрузкой, в условиях некоторых ситуаций соединение может отключаться. В одном варианте осуществления блок данных, принятый одноранговым элементом по соединению загрузки, запускает управление перегрузкой, если односторонняя задержка (то есть время ожидания) блока выше порогового времени. В одном варианте осуществления пороговое время задается системным администратором. В одном варианте осуществления пороговое время включается в блок данных. Одноранговый элемент, принимающий блок данных, измеряет задержку путем вычитания момента времени, в который блок был принят, из момента времени передачи, включенного в блок данных. Принимающий одноранговый элемент сравнивает вычисленную задержку с пороговым временем. Если задержка выше порогового времени, соединение загрузки отключается принимающим одноранговым элементом.
В одном варианте осуществления, когда блок данных принимается одноранговым элементом через соединение загрузки, принимающий одноранговый элемент отключает соединение загрузки, если порядковый номер блока данных имеет значение, отличное от значения порядкового номера принятого предыдущего блока данных плюс единица. Если порядковый номер блока данных является не тем, что ожидается, это указывает, что промежуточный блок данных был отброшен, что обычно означает, что необходимо управление перегрузкой.
В одном варианте осуществления принимающий одноранговый элемент соединения загрузки отключит соединение, если прошел установленный промежуток времени с момента последнего приема принимающим одноранговым элементом блока данных через соединение. Это действие является особо полезным для соединений загрузки с одноранговыми элементами 108 в различных объединениях 302, поскольку обеспечивает, что принимающий одноранговый элемент будет принимать блоки данных, которые ему необходимы, от других объединений 302. В одном варианте осуществления передающий одноранговый элемент в соединении пересылки отключит соединение, если передающий одноранговый элемент не принимает подтверждающее активность сообщение в течение установленного промежутка времени с момента последнего приема подтверждающего активность сообщения от принимающего однорангового элемента в соединении. Подтверждающее активность сообщение предписывает передающему одноранговому узлу поддерживать соединение.
В одном варианте осуществления, когда одноранговый элемент является инициатором отключения соединения по одной из описанных причин, одноранговый элемент добавляет другой одноранговый элемент отключенного соединения к перечню запрещенных элементов однорангового элемента. Как описано выше, перечень запрещенных элементов используется одноранговым элементом при создании новых соединений. В одном варианте осуществления после того, как одноранговый элемент находился в перечне запрещенных элементов в течение некоторого промежутка времени, одноранговый элемент удаляется из запрещенных элементов.
В другом варианте осуществления, каждое установленное значение времени (например, каждые 5 секунд), для каждого однорангового элемента в перечне запрещенных элементов, одноранговый элемент по случайному закону определяет, удалять ли запрещенный одноранговый элемент из своего перечня (то есть одноранговый элемент принимает решение с некоторой вероятностью, удалять ли запрещенный одноранговый элемент). Например, одноранговый элемент может «сыграть» в кости на восемь относительно запрещенного однорангового элемента. Если в игре в кости выпадает восемь, запрещенный одноранговый элемент удаляется.
В одном варианте осуществления, когда соединение отключается, вопрос создания замещающего соединения зависит от типа отключенного соединения и стороны, с какой это рассматривается. Со стороны принимающего однорангового элемента отключенного соединения, если принимающий одноранговый элемент не находится в том же объединении, что и передающий одноранговый элемент отключенного соединения, принимающий одноранговый элемент создает замещающее соединение загрузки с другим одноранговым элементом в объединении, соответствующем передающему одноранговому узлу. Соединение создается с использованием описанного выше процесса для создания соединения. В одном варианте осуществления, когда создается новое соединение загрузки, принимающий одноранговый элемент посредством битового поля уведомляет другой одноранговый элемент, какие блоки данных его объединения он уже имеет, с тем результатом, что другому одноранговому узлу будет известно, какие блоки передавать. В одном варианте осуществления битовое поле кодируется с длиной серий с использованием кодирования по алгоритму Elias, чтобы поддерживать минимальной длину кодирования.
С другой стороны, если принимающий одноранговый элемент находится в том же объединении, что и передающий одноранговый элемент отключенного соединения, создание замещающего соединения зависит от того, сколько оставшихся соединений загрузки имеется у принимающего однорангового элемента в объединении. В одном варианте осуществления, если оставшееся число соединений загрузки является равным числу соединений загрузки, которое одноранговый элемент старается иметь в объединении (например, 2), то новое соединение не создается. В одном варианте осуществления, если оставшееся число соединений загрузки меньше числа соединений загрузки, которое одноранговый элемент старается иметь, принимающий одноранговый элемент создает новое соединение загрузки с одноранговым элементом в объединении, используя описанный выше процесс.
Со стороны передающего однорангового элемента, если принимающий одноранговый элемент отключенного соединения находится в объединении, отличающемся от объединения передающего однорангового элемента, передающий одноранговый элемент не принимает меры для замещения соединения. Если принимающий одноранговый элемент находился в том же объединении, что и передающий одноранговый элемент, создание замещающего соединения зависит от того, сколько оставшихся соединений пересылки имеется у передающего однорангового элемента. В одном варианте осуществления, если оставшееся число соединений пересылки равно или больше числа соединений пересылки, которое одноранговый элемент старается иметь, замещающее соединение не создается. В одном варианте осуществления, если оставшееся число соединений пересылки меньше числа соединений пересылки, которое одноранговый элемент старается иметь, принимающий одноранговый элемент создает замещающее соединение пересылки, используя описанный выше процесс.
В одном варианте осуществления, когда одноранговый элемент (неинициирующий одноранговый элемент) принимает от другого однорангового элемента (инициирующего однорангового элемента) запрос на создание соединения в некотором направлении (соединения пересылки или загрузки), неинициирующий одноранговый элемент разрешает создание соединения. Если инициирующий одноранговый элемент находится в том же объединении, что и неинициирующий одноранговый элемент, и новое соединение заставляет неинициирующий одноранговый элемент иметь больше соединений в одном направлении, чем он старается иметь, неинициирующий одноранговый элемент отключает одно из соединений в этом направлении. В одном варианте осуществления неинициирующий одноранговый элемент случайным образом выбирает соединение для отключения. В другом варианте осуществления неинициирующий одноранговый элемент отключает самое старое или самое новое соединение.
ВОСПРОИЗВЕДЕНИЕ
В соответствии с одноранговым протоколом, если одноранговый элемент в группе принимает блоки данных контента, передаваемого потоком посредством источника 104, одноранговый элемент повторно собирает контент путем упорядочения блоков данных согласно их соответственному порядковому номеру. В одном варианте осуществления мультимедийный проигрыватель в одноранговом узле воспроизводит упорядоченные блоки данных контента потоковой передачи. В одном варианте осуществления первоначальное воспроизведение контента начинается, как только одноранговый элемент принял блоки данных, по величине соответствующие некоторой продолжительности воспроизведения (например, одной секунде воспроизведения).
Одноранговый элемент старается воспроизводить блоки данных с задержкой воспроизведения, находящейся в пределах допустимого диапазона от момента времени посылки источником блока данных в группу. Если одноранговый элемент определяет, что задержка воспроизведения меньше допустимого диапазона, одноранговый элемент побуждает замедление воспроизведения для предотвращения заметных остановок кадров при воспроизведении контента. Если задержка воспроизведения больше допустимого диапазона, одноранговый элемент побуждает ускорение воспроизведения контента, чтобы ликвидировать отставание.
В одном варианте осуществления, в то время как контент воспроизводится, если одноранговый элемент не принял следующий блок данных, подлежащий воспроизведению, одноранговый элемент побуждает пропуск воспроизведения блока данных. В другом варианте осуществления, если одноранговый элемент не принял следующий блок данных, подлежащий воспроизведению, одноранговый элемент приостанавливает воспроизведение не более чем на установленную величину времени. Если блок принимается одноранговым элементом в течение установленного времени, воспроизведение повторно запускается после приема. Если блок не принимается в течение установленного времени, воспроизведение повторно запускается, но блок пропускается.
ОТКАЗ БЕЗ НАРУШЕНИЯ РАБОТОСПОСОБНОСТИ ОДНОРАНГОВОГО ЭЛЕМЕНТА
В одном варианте осуществления каждый одноранговый элемент в группе периодически определяет меру того, насколько хорошо данные источника 104 распределяются внутри группы (то есть меру качества группы). В одном варианте осуществления мера качества определяется на основании числа раз в течение некоторого промежутка времени, которое один или несколько блоков данных пропускались во время воспроизведения, поскольку вовремя не были приняты от других одноранговых элементов. В одном варианте осуществления мера качества определяется на основании числа раз в течение некоторого промежутка времени, которое воспроизведение останавливалось, поскольку один или несколько блоков данных вовремя не были приняты от других одноранговых элементов. Каждая мера качества имеет связанный с ней порог (скорости) пересылки. Если текущая скорость пересылки для однорангового элемента меньше порога (скорости) пересылки, связанного с определенной мерой качества, одноранговый элемент останавливает всю активность загрузки и пересылки. Преимуществом этого подхода является то, что он предотвращает перегрузку группы.
ПРОЦЕССЫ
На Фиг. 4 показана блок-схема, иллюстрирующая процесс 400 подсоединения однорангового элемента к одноранговой сети 102 согласно одноранговому протоколу. Одноранговый элемент передает 402 на элемент 106 отслеживания запрос информации относительно одноранговых элементов 108, которые являются частью одноранговой сети 102, в которой контент передается потоком посредством источника 104. Одноранговый элемент принимает 404 от элемента 106 отслеживания перечень одноранговых элементов 108, которые являются частью одноранговой сети 102. Одноранговый элемент выбирает 406 по меньшей мере два объединения элементов в одноранговой сети 102 для подсоединения. В одном варианте осуществления объединения для подсоединения рекомендуются блоком 106 отслеживания. Одноранговый элемент запрашивает и принимает 408 от одноранговых элементов 108 в виде перечня информацию относительно одноранговых элементов 108, которые являются частью каждого выбранного объединения. Одноранговый элемент создает 410 соединения с одноранговыми элементами 108 из каждого выбранного объединения.
На Фиг. 5 показана блок-схема, иллюстрирующая процесс 500 потоковой передачи контента в одноранговой сети 102 согласно одноранговому протоколу. Источник 104 принимает 502 подачу контента и разделяет 504 подачу на несколько блоков данных. Источник 104 назначает 506 каждый блок данных одному из объединений элементов в одноранговой сети 102. Источник 104 передает 508 каждый из блоков данных на одноранговые элементы 108, которые являются частью назначенного объединения.
На Фиг. 6 показана блок-схема, иллюстрирующая процесс 600 для однорангового элемента, распространяющего в одноранговой сети принимаемый контент, согласно одноранговому протоколу. Одноранговый элемент принимает 602 блок данных, назначенный объединению элементов одноранговой сети 102, причем одноранговый элемент - часть объединения. Одноранговый элемент подготавливает 604 блок данных для воспроизведения. В одном варианте осуществления до подготовки блока данных для воспроизведения одноранговый элемент аутентифицирует блок данных. Одноранговый элемент уведомляет 606 одноранговые элементы 108 объединения, с которыми одноранговый элемент имеет соединение загрузки, что блок данных был принят. Одноранговый элемент для каждого соединения пересылки, которое одноранговый элемент имеет в объединении элементов, определяет 608, было ли принято сообщение от принимающего однорангового элемента соединения, указывающее, что блок данных был принят от другого однорангового элемента. Одноранговый элемент передает 610 блок данных на принимающий одноранговый элемент каждого соединения пересылки, для которого не было принято сообщение. Одноранговый элемент также передает 612 блок данных на одноранговые элементы 108 в других объединениях 302 в сети 102, с которыми у однорангового элемента имеются соединения пересылки.
Специалисты в данной области техники увидят, что другие варианты осуществления могут исполнять этапы по Фиг. 4, 5, и 6 в других порядках следования. Кроме того, другие варианты осуществления могут включать в себя другие и/или дополнительные этапы, чем таковые, описанные выше.
Ссылка в описании на "один вариант осуществления" или на "вариант осуществления" означает, что конкретный признак, структура или характеристика включена по меньшей мере в одно описанное исполнение. Различные вхождения фразы "в одном варианте осуществления" или "предпочтительный вариант осуществления" в различных местах в описании не обязательно относятся к одному и тому же варианту осуществления.
Некоторые части вышеуказанного представлены в терминах способов и символических представлений операций над битами данных в машинной памяти. Эти описания и представления являются средствами, используемыми специалистами в данной области техники для более эффективной передачи сущности их работы другим специалистам в данной области. Способ в этом документе и в целом задумывается как самодостаточная последовательностью этапов (команд), ведущих к требуемому результату. Этапами являются таковые, требующие физических манипуляций физическими величинами. Обычно, хотя не обязательно, эти величины принимают форму электрических, магнитных или оптических сигналов, способных быть сохраненными, передаваемыми, объединяемыми, сравниваемыми и управляемыми иным образом. Удобно иногда, преимущественно по причинам широкого употребления, ссылаться на эти сигналы как на биты, значения, элементы, символы, знаки, термины, числа или подобное. Кроме того, также удобно иногда ссылаться на некоторые схемы этапов, требующих физических манипуляций физическими величинами, как на модули или схемы кодирования, без потери общности.
Следует принять во внимание, однако, что все эти и подобные термины должны связываться с надлежащими физическими величинами и являются просто удобными обозначениями, применимыми к этим величинам. Если конкретно не утверждается иное, как очевидно из предшествующего обсуждения, принимается, что по всему описанию обсуждения, использующие термины, такие как "обработка" или "обработка с применением компьютера" или "вычисление", либо "определение" или "отображение" или "определение" и подобное, относятся к действию и процессам вычислительной системы или подобному электронному вычислительному устройству, которое манипулирует данными и преобразовывает данные, представленные в виде физических (электронных) величин в рамках запоминающих устройств или регистров компьютерной системы или других таких устройств хранения, передачи или отображения информации.
В заключение, следует отметить, что язык, используемый в описании, преимущественно выбирался для обеспечения удобочитаемости и целей инструктирования и не мог выбираться для установления границы или ограничения описанного объекта изобретения. Соответственно, раскрытие подразумевается примерным, а не ограничительным для описанного объема изобретения.