УПРАВЛЕНИЕ ПОТОКОМ ДАННЫХ С ДУБЛИРОВАННЫМ ПОДТВЕРЖДЕНИЕМ
DATA FLOW CONTROL WITH DOUBLE CONFIRMATION

Область техники, к которой относится изобретение
Настоящее изобретение имеет отношение к способу управления потоком некоего количества данных от передающего однорангового узла до принимающего однорангового узла заданного протокола связи.
Описание предшествующего уровня техники
В области связи известны методики передачи данных, где некое количество данных, которое должно быть передано, разделяется на множество сегментов данных, при этом сегменты данных упорядочиваются в последовательность. Эти сегменты затем передаются в порядке упомянутой последовательности.
Эта процедура имеет место в так называемом передающем одноранговом узле связи, регламентируемой предопределенным протоколом связи, который содержит правила обработки таких сегментов данных. Принимающий объект, ассоциированный с упомянутым предопределенным протоколом, упоминается как принимающий одноранговый узел. Концепции протоколов, иерархий протоколов, многоуровневого представления и одноранговых узлов протоколов общеизвестны в данной области техники, см., например, "TCP/IP Illustrated Volume 1, The Protocols", написанную W. Richard Stevens, Addison Wesley 1994 [D1]. Общеизвестный Протокол Управления Передачей (TCP) из набора протоколов TCP/IP является примером такого протокола, в котором данные, которые должны быть переданы, компонуются в последовательность сегментов.
В типичном случае для того, чтобы быть переданными, отдельные сегменты будут помещены в блоки данных, имеющие структуру, определенную заданным протоколом. Эти блоки в контексте отличающихся протоколов могут называться по-разному, например пакеты, кадры, протокольные блоки данных, ячейки и т.д. В настоящем описании термин “блок данных” будет использован, в общем, чтобы охватить любые подобные описанные структуры данных. В настоящем подробном описании будут попеременно использоваться термины “сегмент” и “блок данных”.
Передающий одноранговый узел будет передавать блок данных по нисходящей на нижерасположенный уровень, например, передающий одноранговый узел TCP будет передавать сегменты TCP через уровень IP канальному уровню, а на приемной стороне принимающий одноранговый узел будет принимать блоки данных с нижерасположенных уровней. Предопределенная структура, определяющая блоки данных, например определяющая начало и конец, позволяет принимающему одноранговому узлу распознавать отдельные сегменты.
Можно отметить, что в соответствии с многоуровневой концепцией OSI не имеет значения, как блоки данных, пересланные на нижерасположенный уровень, обрабатываются на нем и транспортируются на него. То есть заданный передающий одноранговый узел передает поток битов по нисходящей, а принимающий одноуровневый узел принимает поток битов, причем этот поток битов содержит определенные идентифицирующие элементы, такие как указатели границы кадра, с помощью которых принимающий одноранговый узел может идентифицировать отдельные блоки данных и отдельные сегменты.
Для того чтобы гарантировать надежную передачу данных, многие протоколы обеспечивают функциональную возможность повторной передачи блока данных, что означает, что сегменты из последовательности могут быть повторно переданы, если необходимо. В типичном случае это может быть сделано с помощью методики подтверждения, которая означает, что корректный прием блока данных принимающим одноранговым узлом подтверждается с помощью соответствующего сообщения подтверждения, которое принимающий одноранговый узел передает передающему одноранговому узлу. После того, как передающий одноранговый узел принял такое сообщение подтверждения, он может соответствующим образом продолжать передачу дальнейших блоков данных, или если сообщение подтверждения или сообщение неподтверждения не принято, блок данных, который не был корректно принят принимающим одноранговым узлом, может быть повторно передан передающим одноранговым узлом.
Известно несколько механизмов, с помощью которых передающий одноранговый узел, как предполагается, получает указание того, что имела место потеря блока или сегмента данных, так чтобы могла состояться соответствующая повторная передача. Одной такой известной функциональной возможностью является лимит времени ожидания повторной передачи, что означает, что после передачи блока данных отслеживается таймер и, если проходит предопределенное количество времени без приема подтверждения для данного блока данных, то полагается, что блок данных был потерян и, следовательно, он повторно передается.
Еще один такой механизм соответствует подсчету дублированных подтверждений. Дублированным подтверждением является подтверждение, которое указывает, что последний корректно принятый сегмент данных - это сегмент данных, который уже был подтвержден ранее. То есть многие протоколы, такие как, например, TCP, имеют механизм формирования подтверждений для принимающих одноранговых узлов, который функционирует для отсылки сообщения подтверждения для каждого корректно принятого сегмента последовательности, при этом подтверждение идентифицирует последний корректно принятый сегмент данных в порядке последовательности. Другими словами, если, например, сегменты данных с первого до четвертого приняты и подтверждены, а затем принимается пятый сегмент данных, принимающий одноранговый узел будет отсылать подтверждение для этого пятого сегмента. Если после этого седьмой и восьмой сегменты корректно приняты, то принимающий одноранговый узел будет вновь отсылать одно или два сообщения подтверждения, но эти сообщения подтверждения будут идентифицировать только пятый сегмент, потому что пятый был последним сегментом, который был корректно принят в порядке последовательности. То есть принимающий одноранговый узел ожидает шестой сегмент и даже если он корректно принимает сегменты, следующие за шестым сегментом, он будет продолжать подтверждать пятый сегмент. Следовательно, прием дублированных подтверждений передающим одноранговым узлом дает передающему одноранговому узлу указание, что блок данных был потерян.
Как следствие, в протоколах, которые используют описанный выше механизм подтверждения, в соответствии с которым сообщения подтверждения подтверждают только последний блок данных, который был корректно принят в порядке последовательности, даже если приняты блоки данных, которые находятся дальше в упомянутой последовательности, может быть реализован механизм повторной передачи, который выполняет повторную передачу, если предопределенное количество дублированных подтверждений принято передающим одноранговым узлом. В TCP соответствующий механизм известен как “быстрая повторная передача”, в котором повторная передача происходит после приема трех дублированных подтверждений. Подробное описание механизма быстрой повторной передачи в TCP может быть найдено, например, в вышеупомянутой книге [D1], глава 21.7.
Проблема, лежащая в основе настоящего изобретения
Для всех алгоритмов, подобных вышеописанным, которые предназначены для приема указания, что блок данных был потерян, характерна проблема, заключающаяся в том, что передающий одноранговый узел принимает только непрямое указание, что блок данных был потерян, а в действительности появление предопределенного инициирующего события (истечение лимита времени ожидания или предопределенное число дублированных подтверждений) не обязательно означает, что блок данных действительно был потерян. Эти инициирующие события также могут быть вызваны ложно, например, если блок данных задерживается в сети передачи, в то время как блоки данных, ассоциированные с сегментами, следующими далее в последовательности, доставляются упомянутой сетью. Такое явление еще упоминается как переупорядочивание.
Задача настоящего изобретения
Задачей настоящего является общее улучшение возможностей оперирования повторной передачей сегментов в передающем одноранговом узле.
Сущность изобретения
Эта задача настоящего изобретения решается посредством способа управления потоком последовательности сегментов данных от передающего однорангового узла до принимающего однорангового узла, содержащего этапы, на которых передают сегменты данных от передающего однорангового узла до принимающего однорангового узла в порядке последовательности; принимают сообщения подтверждения от принимающего однорангового узла, при этом сообщение подтверждения указывает корректный прием сегмента данных в правильном порядке последовательности; принимают дублированное сообщение подтверждения от принимающего однорангового узла в передающем одноранговом узле, если сегмент данных был принят, но не в правильном порядке последовательности, причем упомянутое дублированное сообщение подтверждения принимается ассоциированным с последним корректно принятым пакетом в порядке последовательности сегментов данных; принимают решение, что сегмент данных, который был передан, но не подтвержден, был потерян, если количество дублированных сообщений подтверждения, принятых передающим одноранговым узлом, достигает порогового показателя дублированного подтверждения, определенного, исходя из размера окна приема, причем размер окна приема соответствует количеству сегментов данных, которые могут быть сохранены в буферном пространстве принимающего однорангового узла; и повторно передают сегмент данных, определенный как потерянный.
Соответственно, передающий одноранговый узел может устанавливать пороговый показатель дублированного подтверждения, учитывая ситуацию в принимающем одноранговом узле.
В соответствии с еще одним вариантом осуществления настоящего изобретения пороговый показатель дублированного подтверждения устанавливается в соответствии с размером окна приема так, чтобы сегмент данных, определенный как потерянный, повторно передавался до момента времени в последовательности сегментов данных, выбранного так, чтобы сообщение подтверждения, указывающее корректный прием сегмента данных, определенного как потерянный, то есть повторно передаваемого сегмента данных, предположительно было принято передающим одноранговым узлом до передачи сегмента данных с порядковым номером, превышающим порядковый номер сегмента данных, определенного как потерянный, на размер окна приема. Следовательно, пороговый показатель всегда может поддерживаться на значении с оптимальным использованием ресурсов принимающего однорангового узла.
В соответствии с еще одним вариантом осуществления настоящего изобретения пороговый показатель дублированного подтверждения определяется на основе размера используемого окна, определяемого разностью между размером окна приема и размером неподтвержденных данных, где размер неподтвержденных данных представляет количество переданных сегментов данных, которые еще не были подтверждены.
Кроме того, пороговый показатель дублированного подтверждения может быть определен, исходя из разности между размером используемого окна и размером неподтвержденных данных.
В соответствии с еще одним вариантом осуществления настоящего изобретения пороговый показатель дублированного подтверждения определяется в момент времени, предшествующий приему первого дублированного сообщения, как большее значение из значения 1 и значения, полученного с помощью вычисления
(размер окна приема - (k × размер неподтвержденных данных)),
где k - варьируемый параметр. Преимущественно k = 2.
Кроме того, пороговый показатель дублированного подтверждения может быть определен как
размер окна приема - (2 × размер неподтвержденных данных) + N,
где N представляет собой параметр настройки, удовлетворяющий условию
(2 × размер неподтвержденных данных) - размер окна приема + 1<N<3.
В соответствии с еще одним вариантом осуществления настоящего изобретения пороговый показатель дублированного подтверждения обновляется при определении изменения размера окна приема.
В качестве альтернативы, пороговый показатель дублированного подтверждения может быть обновлен, по меньшей мере, каждый первый раз, когда принимается дублированное сообщение подтверждения для одного из сегментов данных. В этом случае параметру N настройки может быть присвоено значение 5, что предпочтительно.
В качестве еще одной альтернативы, пороговый показатель дублированного подтверждения обновляется каждый раз, когда принято сообщение подтверждения.
В соответствии с еще одним вариантом осуществления настоящего изобретения сегмент данных, определенный как потерянный, повторно передается, если передающий одноранговый узел блокирован от передачи не переданного ранее сегмента данных.
В этом варианте осуществления настоящего изобретения передающий одноранговый узел считается блокированным, если выполняется одно из следующих условий: количество не переданных ранее сегментов данных превышает размер окна приема; количество не переданных ранее сегментов данных превышает размер окна передачи; приложение, представляющее собой источник сегментов данных, не подает сегменты данных для передачи.
Компьютерная программа может быть приспособлена для выполнения, по меньшей мере, одной из вышеупомянутых операций при ее исполнении на компьютере.
Машиночитаемое устройство памяти может хранить такую компьютерную программу.
Кроме того, задача настоящего изобретения решается посредством устройства связи, управляющего потоком последовательности сегментов данных от передающего однорангового узла до принимающего однорангового узла и содержащего средство для передачи сегментов данных от передающего однорангового узла до принимающего однорангового узла в порядке последовательности, средство для приема сообщений подтверждения от принимающего однорангового узла, при этом сообщение подтверждения указывает корректный прием сегмента данных в правильном порядке последовательности, средство для приема дублированного сообщения подтверждения от принимающего однорангового узла в передающем одноранговом узле, если сегмент данных был принят, но не в правильном порядке последовательности, причем дублированное сообщение подтверждения принимается ассоциированным с последним корректно принятым пакетом в порядке последовательности сегментов данных, средство для принятия решения, что сегмент данных, который был передан, но не подтвержден, был потерян, если количество дублированных сообщений подтверждения достигает порогового показателя дублированного подтверждения, определенного, исходя из размера окна приема, причем размер окна приема соответствует количеству сегментов данных, которые могут быть сохранены в буферном пространстве принимающего однорангового узла; и средство для повторной передачи сегмента данных, определенного как потерянный.
Перечень фигур чертежей
Фиг.1 - иллюстрация операций способа управления потоком последовательности в соответствии с вариантом осуществления настоящего изобретения.
Фиг.2 - иллюстрация операций для определения порогового показателя дублированного подтверждения в соответствии с вариантом осуществления настоящего изобретения.
Фиг.3 - иллюстрация операций для управления потоком сегментов данных от передающего однорангового узла до принимающего однорангового узла в соответствии с еще одним вариантом осуществления настоящего изобретения, конкретно отображающая последовательность операций для повторной передачи неподтвержденного сегмента данных.
Фиг.4 - иллюстрация действий для обновления порогового показателя дублированного подтверждения в соответствии с вариантом осуществления настоящего изобретения.
Фиг.5 - иллюстрация действий для обновления порогового показателя дублированного подтверждения в соответствии с вариантом осуществления настоящего изобретения.
Фиг.6 - иллюстрация устройства связи для управления потоком сегментов данных, причем данное устройство связи, по меньшей мере, выступает в роли передающего однорангового узла.
Фиг.7 - подробная иллюстрация, показывающая поток сегментов данных и сообщений подтверждения между передающим одноранговым узлом и принимающим одноранговым узлом для того, чтобы иллюстрировать определение порогового показателя дублированного подтверждения.
Описание предпочтительных вариантов осуществления
Настоящее изобретение применимо к любой реализации заданного протокола связи, в котором количество данных, которое должно быть передано, разделяется на множество сегментов данных, а упомянутые сегменты данных упорядочиваются в последовательность, при этом сегменты данных передаются от передающего однорангового узла до принимающего однорангового узла в порядке упомянутой последовательности, причем принимающий одноранговый узел передает подтверждения передающему одноранговому узлу, упомянутые подтверждения указывают корректный прием в правильном порядке последовательности, так что сообщение подтверждения указывает последний корректно принятый сегмент данных упомянутой последовательности, который был принят в правильном порядке последовательности, и при этом, если передающий одноранговый узел принимает пороговое количество сообщений подтверждения, каждое из которых идентифицирует один и тот же сегмент данных как последний корректно принятый сегмент данных, то есть сегмент, который был принят в правильном порядке, повторно передается сегмент, следующий сразу за сегментом, для которого были приняты дублированные подтверждения.
Примером такого протокола является TCP. Однако особо отметим, что настоящее изобретение также применимо к любому другому протоколу связи, который имеет вышеописанные характеристики, поскольку они важны для реализации изобретательской концепции.
В соответствии с настоящим изобретением пороговое количество сообщений подтверждения, то есть пороговый показатель дублированного подтверждения, это параметр, определенный, исходя из размера окна приема, причем размер окна приема представляет количество сегментов данных, которые могут быть сохранены в буферном пространстве принимающего однорангового узла.
Следовательно, как уже упоминалось ранее, пороговый показатель дублированного подтверждения - это параметр, который ассоциирован с решением передающего однорангового узла в отношении того, как долго ожидать, пока заданный сегмент, для которого принимаются дублированные подтверждения, будет считаться потерянным. Благодаря подходу, отвечающему настоящему изобретению, в соответствии с которым пороговый показатель адаптируется, возможно сделать само это решение адаптивным и, тем самым, более гибким.
Фиг.1 иллюстрирует операции для управления потоком сегментов данных между передающим одноранговым узлом и принимающим одноранговым узлом (не показан) в соответствии с вариантом осуществления настоящего изобретения.
В первой операции 101 передающий одноранговый узел считается осуществляющим обычную процедуру передачи сегментов данных на принимающий одноранговый узел в некоторой заданной последовательности. Например, сегменты данных последовательно нумеруются, как 01, 02, 03, 04, 05, 06, …, и планируются для передачи передающим одноранговым узлом в порядке последовательной нумерации. Последовательная нумерация может быть соответствующим образом поставлена в соответствие выходным сегментам данных источника данных, как, например, известно в данной области техники. Понятно, что сегменты данных могут переносить любые типы данных полезной нагрузки, то есть данных, относящихся к любому типу приложения или формата, такие как голосовые данные, данные обмена между вычислительными устройствами во время сеанса связи, видеоданные, аудиоданные и им подобные.
Принимающий одноранговый узел (не показан на Фиг.1) принимает сегменты данных и подтверждает прием сегментов данных посредством сообщения подтверждения, возвращаемого одноранговому узлу передачи. Эти сообщения подтверждения от принимающего однорангового узла принимаются передающим одноранговым узлом в операции 102. Если операция прошла нормально и сегменты данных, переданные в последовательности, принимаются в такой же последовательности принимающим одноранговым узлом, каждый пакет данных подтверждается посредством сообщения подтверждения и передающий одноранговый узел знает, что сегменты данных приняты в правильном порядке последовательности. Сегменты данных, которые были переданы от передающего однорангового узла и правильно подтверждены, могут быть сброшены, например, удалены из буфера передачи передающего однорангового узла, так как повторная передача переданных сегментов данных не потребуется.
Обычно, каждый корректно принятый сегмент данных, то есть без ошибок и порядке последовательности, инициирует сообщение подтверждения в принимающем одноранговом узле, которое возвращается передающему одноранговому узлу. Если после корректно принятого сегмента данных принимается сегмент данных, который не находится в порядке последовательности, то есть произошла задержка или ошибка в передаче сегмента данных, то сообщение подтверждения для последнего корректно принятого сегмента данных повторяется, и это повторяемое сообщение подтверждения называется дублированным сообщением подтверждением.
В вышеупомянутом примере, если по той или иной причине сегмент данных не принят в правильном порядке передаваемой последовательности, например, если сегмент 05 данных принят после сегментов 01, 02, 03, но перед сегментом 04 данных, соответственно, принимающий одноранговый узел не возвращает сообщение подтверждения одноранговому узлу передачи. Вместо этого, принимающий одноранговый узел передает передающему одноранговому узлу дублированное сообщение подтверждения, указывающее, что сегмент данных был принят, но не в порядке последовательности. Это дублированное сообщение подтверждения ассоциировано с последним корректно принятым пакетом в порядке последовательности сегментов данных. В вышеупомянутом примере приема сегмента 05 данных перед сегментом 04 данных дублированное сообщение подтверждения будет указывать, что последним сегментом данных, который был корректно принят в порядке последовательности, был сегмент 03 данных.
Следовательно, дублированное сообщение подтверждения, принятое передающим одноранговым узлом в операции 103, извещает передающий одноранговый узел о том, что может потребоваться повторная передача пакета, следующего за последним корректно принятым пакетом, если оказывается или определяется, что этот пакет данных действительно был потерян на трассе передачи от передающего однорангового узла до принимающего однорангового узла. Поэтому передающий одноранговый узел может не сбрасывать из буфера передачи все те пакеты данных, которые были переданы после последнего корректно принятого пакета данных, указанного дублированным сообщением подтверждением, принятым в операции 103.
Однако передающий одноранговый узел продолжает передавать принимающему одноранговому узлу сегменты данных, и, тем самым предполагая, что в вышеупомянутом примере сегмент 04 данных еще не принят принимающим одноранговым узлом в течение длительного периода времени, принимающий одноранговый узел продолжает передавать дублированные сообщения подтверждения для каждого принятого сегмента данных. Таким образом, передающий одноранговый узел принимает увеличивающееся количество дублированных сообщений подтверждения, и с каждым дублированным сообщением подтверждения вероятность того, что неподтвержденный сегмент данных действительно был потерян, увеличивается.
Теперь в операции 104 передающий одноранговый узел принимает решение в отношении того, достигло ли или превысило ли количество дублированных сообщений подтверждения надлежащим образом установленный (как будет описано позже) пороговый показатель дублированного подтверждения, установленный в передающем одноранговом узле. Если в операции 104 решение - “НЕТ”, что указывает, что еще не достигнут пороговый показатель дублированного подтверждения, последовательность операций возвращается к операции 101, то есть передающий одноранговый узел продолжает передавать сегменты данных в порядке последовательности.
Однако если в операции 104 решение - “ДА”, что указывает, что достигнут или превышен пороговый показатель дублированного подтверждения, в операции 105 передающий одноранговый узел принимает решение, что сегмент данных, который был передан, но не подтвержден, был потерян. Продолжая вышеупомянутый пример, посредством дублированных сообщений подтверждения, указывающих, что последним корректно принятым сегментом данных в порядке последовательности был сегмент 03 данных, передающий одноранговый узел примет решение, что сегмент 04 данных действительно был потерян.
В операции 106 сегмент данных, определенный как потерянный, то есть в упомянутом примере сегмент 04 данных, повторно передается. Повторная передача может быть осуществлена, например, посредством быстрой повторной передачи в соответствии с протоколом TCP.
Конечно, крайне важно соответствующим образом установить пороговый показатель дублированного подтверждения, принимая во внимание, что преждевременная повторная передача пакетов данных приводит к ненужному трафику, а слишком долгое сдерживание повторной передачи может привести к блокированию дальнейших передач, потому что все сегменты данных, которые были переданы, но не подтверждены, должны быть сохранены в буферах передающего однорангового узла.
Наиболее важно, для наилучшего управления потоком, что пороговый показатель дублированного подтверждения может быть установлен, принимая во внимание размер окна приема принимающего однорангового узла, причем размер окна приема представляет собой количество сегментов данных, которые могут быть сохранены в буферном пространстве принимающего однорангового узла. Этот размер окна приема может быть сообщен принимающим одноранговым узлом, например, с сообщениями подтверждения так, чтобы передающий одноранговый узел всегда знал текущий размер окна приема.
Точнее, этот пороговый показатель должен быть установлен так, чтобы передача сегментов данных не прекращалась в какой-то момент времени из-за достижения в передающем одноранговом узле максимально допустимого количества переданных, но не подтвержденных сегментов данных, причем это максимальное количество равно размеру окна приема. Отметим, что в соответствии с протоколом скользящего окна, сегмент данных от передающего однорангового узла, в соответствии с протоколом связи, может быть запланирован для передачи, только если разность порядковых номеров наиболее давно подтвержденного сегмента данных и очередного сегмента данных для передачи не превышает размера окна приема.
Выше проиллюстрирован вариант осуществления настоящего изобретения, в котором при вычислении порогового показателя дублированного подтверждения используется размер окна приема. Отметим, что хотя далее здесь не описано, пороговый показатель дублированного подтверждения может вдобавок ко всему быть дополнительно адаптирован, исходя из ситуации в передающем одноранговом узле, например, размера окна в передающем одноранговом узле, для того, чтобы дополнительно усовершенствовать установку порогового показателя дублированного подтверждения.
Ниже, со ссылкой на Фиг.2, будет описан дальнейший вариант осуществления настоящего изобретения. Фиг.2 иллюстрирует операции для установки порогового показателя дублированного подтверждения соответствующим образом.
Как отмечено выше, пороговый показатель должен быть соответствующим образом выбран так, чтобы можно было надежно избежать переполнения буфера принимающего однорангового узла и чтобы можно было надежно избежать дальнейшей остановки передачи сегментов данных от передающего однорангового узла. Остановка или блокировка передачи на передающем одноранговом узле может произойти, если количество переданных, но не подтвержденных сегментов данных близко к превышению размера окна приема.
Чтобы удовлетворять этим условиям, всегда должно быть гарантировано, что количество сегментов данных, которые были переданы после самого давнего неподтвержденного сегмента данных включительно, не превышало размера окна приема принимающего однорангового узла.
Следовательно, если сегмент данных не подтвержден, должна быть запланирована повторная передача этого сегмента данных в момент времени, который еще позволяет подтверждению правильного приема повторной передачи этого сегмента данных достигнуть передающего однорангового узла до того, как сегмент данных с неким порядковым номером будет запланирован для передачи, которая потенциально привела бы к переполнению буфера приемной стороны, если не было бы принято надлежащее подтверждение повторной передачи.
Другими словами, повторная передача неподтвержденного сегмента данных должна быть выполнена так, чтобы подтверждение, относящееся к этой повторной передаче, предположительно было принято передающим одноранговым узлом до того, как количество переданных сегментов данных, начиная с этого и неподтвержденного сегмента данных включительно, превысит размер окна приема. Если эти условия не были бы удовлетворены, передающему одноранговому узлу не была бы разрешена дальнейшая передача пакетов данных, а соединение было бы остановлено.
Со ссылкой на Фиг.2, в операции 201 принимается решение, должен ли быть обновлен пороговый показатель дублированного подтверждения, в соответствии с условиями, которые будут описаны позже. Если решение - “ДА”, в операции 202, в соответствии с вышеупомянутым, пороговый показатель дублированного подтверждения устанавливается в соответствии с размером окна приема так, чтобы сегмент данных, определенный как потерянный, повторно передавался в или до момента времени в последовательности сегментов данных, выбранного так, чтобы сообщение подтверждения, указывающее правильный прием сегмента данных, определенного как потерянный, предположительно было принято принимающим одноранговым узлом до того, как сегмент данных с порядковым номером, превышающим порядковый номер сегмента данных, определенного как потерянный, будет запланирован для передачи. Следовательно, можно избежать того, что передающий одноранговый узел будет ограничен от дальнейшей передачи сегментов данных.
В этом случае можно избежать обусловленной окном остановки в передаче данных и, кроме того, можно избежать переполнения буфера приема.
На Фиг.3 показана блок-схема последовательности операций, которая описывает вариант осуществления настоящего изобретения. Левая сторона блок-схемы относится к обычному управлению потоком, а из-за того обстоятельства, что настоящее изобретение не связано с обычным типом управления потоком, например, который предоставлен TCP или любым другим протоколом управления потоком, эта часть показана лишь схематически, в виде пунктирной линии. Правая сторона Фиг.3 раскрывает процедуру обработки дублированных подтверждений. А именно, если в ходе обычного управления потоком принимаются подтверждения (АСК), смотри операцию 301, то инициируется процедура обработки дублированных подтверждений.
В операции 302 определяется, является ли подтверждение дублированным подтверждением. А именно определяется количество раз N, которое было принято конкретное подтверждение, идентифицирующее последний корректно принятый сегмент данных последовательности, который был принят в правильном порядке последовательности, и оценивается, является ли это количество больше чем 1. Если нет, то это АСК не является дублированным АСК, и процедура возвращается к обычному управлению потоком.
Если результат операции 302 указывает, что данное подтверждение является дублированным подтверждением, процедура переходит к операции 303, в которой определяется, достигло ли N(АСК) порогового показателя Th дублированного подтверждения. В зависимости от реализации, пороговый показатель дублированного подтверждения можно считать достигнутым, если N(АСК) равно пороговому показателю дублированного подтверждения. В качестве альтернативы, пороговый показатель дублированного подтверждения можно считать достигнутым, если N(АСК) больше, чем пороговый показатель дублированного подтверждения.
Эта операция может быть осуществлена любым подходящим методом, например, посредством простого сохранения записи последнего подтвержденного сегмента и установления ассоциированного счетчика так, чтобы если вновь принятое подтверждение идентично предыдущему подтверждению (то есть дублированное подтверждение), счетчик увеличивался на единицу, а если новое подтверждение идентифицирует сегмент, который является следующим за сегментом, идентифицированным в последнем принятом подтверждении, то счетчик сбрасывается на 1.
В примере на Фиг.3 N(АСК) указывает количество раз, которое передающий одноранговый узел принял данное подтверждение АСК. Другими словами, N = 1 означает, что подтверждение для данного сегмента принято первый раз, а количество N > 1 указывает, что это дублированное подтверждение.
Если операция 303 определяет, что количество подтверждений достигло порогового показателя, то самый давний неподтвержденный сегмент повторно передается в операции 305. Самый давний неподтвержденный сегмент, в таком случае, сразу следует за сегментом, идентифицированным в дублированном подтверждении. С другой стороны, если результат операции 303 отрицателен, последовательность операций возвращается к операции 304 для того, чтобы также рассмотреть ситуацию в передающем одноранговом узле.
В операции 304 определяется, блокирован ли передающий одноранговый узел от передачи сегментов данных из-за условия, возникающего в передающем одноранговом узле. “Блокирован” в этом контексте означает, что передающему одноранговому узлу запрещается или же он неспособен передавать сегменты данных принимающему одноранговому узлу.
В соответствии с примером, передающий одноранговый узел считается блокированным, если количество не переданных ранее сегментов данных превышает размер окна приема. Например, вследствие ошибки или непредвиденной ситуации пороговый показатель дублированного подтверждения может быть выбран слишком большим и может быть достигнут размер окна приема. Эта ситуация может быть названа как “ограничение по приемной стороне”.
В соответствии с еще одним примером, передающий одноранговый узел считается блокированным, если количество не переданных ранее сегментов данных превышает размер окна передачи. Например, буфер передачи передающего однорангового узла может быть совместно используемой областью памяти с пространством, предоставленным для хранения сегментов данных сокращенного размера, например, меньше размера окна приема. Эта ситуация может быть названа как “ограничение по передающей стороне”.
В соответствии с еще одним примером, передающий одноранговый узел считается блокированным, если приложение, представляющее собой источник сегментов данных, не подает сегменты данных для передачи. Например, сегменты данных могут формироваться динамически, например для web-страницы, и приложение может временно приостанавливать формирование новых сегментов данных. Кроме того, приложение может просто не иметь сейчас дальнейших сегментов данных для передачи. Эта ситуация может быть названа как “ограничение по приложению”.
Если в операции 304 определяется, что передающий одноранговый узел блокирован от передачи сегментов данных, то самый давний неподтвержденный сегмент повторно передается в операции 305.
Если в операции 304 определяется, что передающий одноранговый узел не блокирован от передачи сегментов данных, то очередной сегмент в последовательности, следующий за сегментом, который следует сразу за сегментом, идентифицированным в дублированном подтверждении, передается в операции 306.
После операции 305 или 306 процедура возвращается к обычному управлению потоком.
Отметим, что операция 304 может быть необязательной и, в качестве альтернативы, если решение в операции 303 - “НЕТ”, последовательность операций взамен может возвратиться к обычной последовательности операций или перейти к операции 306 для передачи очередного сегмента данных в последовательности.
Можно отметить, что вариант осуществления настоящего изобретения, иллюстрированный на Фиг.3, это лишь один пример, и этот пример может быть изменен многими методами. Специалист в данной области техники поймет, что упомянутые операции также могут быть упорядочены иначе. Кроме того, операция 306 является только примером, так как настоящее изобретение не имеет отношения конкретно к процедуре после того, как пороговый показатель дублированного подтверждения превышен. Другими словами, после превышения порогового показателя дублированного подтверждения могут быть выбраны любые подходящие или соответствующие методы, в которых отличающиеся возможности для протоколов, подобных TCP, будут рассмотрены далее.
Равным образом, отклик на дублированные подтверждения при обычном управлении потоком не важен в настоящем изобретении. Например, после отрицательного результата операции 303, который означает, что дублированное подтверждение принято, но количество дублированных подтверждений еще не достигло порогового показателя, обычное управление потоком может остановить передачу любых дальнейших сегментов или может с тем же успехом продолжить передавать дальнейшие сегменты.
Пороговый показатель дублированного подтверждения может быть установлен или обновлен любым подходящим или желаемым методом. Например, он может обновляться с регулярными интервалами, основанными на одном или более значениях, используемых для адаптации этого порогового показателя. Другими словами, эти одно или более значений регулярно измеряются или определяются, а пороговый показатель Th соответственно обновляется. Этот процесс происходит за пределами того, что показано на Фиг.3, в независимой процедуре. Следовательно, эта независимая процедура регулярно обновляет значение Th, которое соответствующим образом сохраняется, а операции 303 и 304 просто осуществляют доступ или вызывают текущее значение Th. С другой стороны, также возможно обновлять Th при наступлении предопределенного инициирующего события. Одна из возможностей может заключаться в обновлении Th, только если одно или более из упомянутых одного или более значений, используемых для адаптации Th, изменится. Такая процедура опять-таки является независимой от того, что показано на Фиг.3, а операции 303 и 304 просто осуществляют доступ или вызывают текущее значение Th.
Однако заданное инициирующее событие также может быть частью процедуры, показанной на Фиг.4. А именно возможно выполнять обновление Th в случае возникновения инициирующего события, которое ассоциировано с приемом подтверждений. Например, Th может обновляться при каждом первом приеме дублированного АСК. Это показано на Фиг.4, на которой те же ссылочные номера, которые использованы на Фиг.3, ссылаются на те же операции. Другими словами, операции 401 и 402, показанные на Фиг.4, выполняются между операциями 302 и 303, которые показаны на Фиг.3. После того, как операцией 302 определено, что было принято дублированное подтверждение, операция 401 определяет, является ли дублированное подтверждение первым дублированным подтверждением, то есть действительно ли N(ACK) = 2, и если это так, то Th обновляется в операции 402. После операции 401 или 402 выполняется операции 303 и все остальные действия, уже рассмотренные в контексте Фиг.3, так что дополнительное рассмотрение не требуется.
Также возможно выполнять обновление Th при каждом дублированном подтверждении. Это показано на Фиг.5. А именно операция 501 обновления следует за операцией 301, так что каждое дублированное подтверждение приводит к обновлению Th.
В качестве еще одной альтернативы, которая не показана на чертежах, пороговый показатель Th также может быть обновлен при каждом подтверждении. Другими словами, на Фиг.3 операция обновления могла бы быть осуществлена между операциями 301 и 302. Еще один вариант может заключаться в обновлении порогового показателя Th при каждом АСК, которое относится к неподтвержденным сегментам данных, то есть только для таких подтверждений, при которых N(ACK) = 1. Следовательно, на Фиг.3 операция обновления могла бы быть осуществлена при отрицательном результате операции 302.
Как описано выше, обновление порогового показателя Th дублированного подтверждения может быть сделано всякий раз, когда удобно или желательно. Равным образом, это может быть сделано на любой соответствующей или подходящей основе, принимая во внимание размер окна приема принимающего однорангового узла, как отмечено выше.
Далее со ссылкой на Фиг.6 будет описан дальнейший вариант осуществления настоящего изобретения. Фиг.6 иллюстрирует элементы передающего однорангового узла для управления потоком сегментов данных, передаваемых между передающим одноранговым узлом и принимающим одноранговым узлом, используя, например, протокол TCP или любой другой подходящий протокол связи.
Фиг.6 иллюстрирует одноранговый узел 600 передачи, такой как любой вид вычислительного устройства, например настольный компьютер, портативный компьютер, мобильное вычислительное устройство, такое как PDA или мобильный телефон, и т.п. Настоящее изобретение равным образом применимо как к проводному обмену данными, так и беспроводной или, по меньшей мере, частично беспроводной передаче данных.
Передающий одноранговый узел содержит средство 601 передачи/повторной передачи для передачи в порядке последовательности сегментов данных от передающего однорангового узла до принимающего однорангового узла и для повторной передачи сегмента данных, определенного как потерянный, как, например, упоминалось со ссылкой на предыдущие варианты осуществления настоящего изобретения.
Кроме того, передающий одноранговый узел содержит средство 602 приема для приема сообщений подтверждения от принимающего однорангового узла, причем сообщение подтверждения появляется в случае корректного приема сегмента данных в правильном порядке последовательности, и для приема дублированного сообщения подтверждения от принимающего однорангового узла, если сегмент данных принят, но в неправильном порядке последовательности, при этом принятое дублированное сообщение подтверждения ассоциировано с последним корректно принятым сегментом данных в порядке последовательности сегментов данных.
Кроме того, передающий одноранговый узел содержит средство 603 определения потери пакета для принятия решения в отношении того, что сегмент данных, который был передан, но не подтвержден, потерян, если количество дублированных сообщений подтверждения достигает порогового показателя дублированного подтверждения, определенного, исходя из размера окна приема, причем упомянутый размер окна приема соответствует количеству сегментов данных, которые могут быть сохранены в буферном пространстве принимающего однорангового узла. Средство определения потери пакета может получать информацию о размере окна приема вместе с сообщениями подтверждения, принимаемыми от принимающего однорангового узла, или любым другим способом.
Кроме того, средство определения потери пакета может быть адаптировано для установки порогового показателя дублированного подтверждения в соответствии с размером окна приема так, чтобы сегмент данных, определенный как потерянный, повторно передавался в последовательности сегментов данных в момент времени, выбранный так, чтобы сообщение подтверждения, указывающее правильный прием сегмента данных, определенного как потерянный, то есть повторно передаваемого сегмента данных, предположительно было принято передающим одноранговым узлом до передачи сегмента данных с порядковым номером, превышающим порядковый номер сегмента данных, определенного как потерянный.
Далее со ссылкой на Фиг.7 будет описан дальнейший вариант осуществления настоящего изобретения.
Фиг.7 подробно иллюстрирует вариант осуществления настоящего изобретения для дальнейшей иллюстрации принципов определения порогового показателя дублированного подтверждения на примере протокола ТСР.
Фиг.7 иллюстрирует передающий одноранговый узел и принимающий одноранговый узел, которые, например, упоминались при рассмотрении предыдущих вариантов осуществления настоящего изобретения.
В передающем одноранговом узле иллюстрирована последовательность сегментов данных, обозначенных 01, 02, 03 … 30, для передачи принимающему одноранговому узлу, включая повторную передачу сегмента 01 данных, который считается потерянным или чрезмерно задерживающимся на трассе передачи. Сегмент 01 данных повторно передается после сегмента 22 данных по причинам, объясненным далее.
В этом варианте осуществления настоящего изобретения по Фиг.7 пороговый показатель дублированного подтверждения устанавливается, исходя из размера окна приема, а более точно устанавливается в соответствии с размером окна приема так, чтобы сегмент данных, определенный как потерянный, повторно передавался в последовательности сегментов данных в момент времени, выбранный так, чтобы сообщение подтверждения, указывающее надлежащий прием сегмента данных, определенного как потерянный, предположительно было принято передающим одноранговым узлом до передачи сегмента данных с порядковым номером, превышающим порядковый номер сегмента данных, определенного как потерянный. Момент времени для повторной передачи сегмента 01 данных представляет собой самый последний возможный момент времени до того, как могла бы произойти остановка на одноранговом узле связи. Следовательно, при дальнейшей задержанной передаче, то есть дальнейшем увеличении порогового показателя дублированного подтверждения, чего следует избегать, меньшая задержка, то есть уменьшение порогового показателя дублированного подтверждения, в общем была бы возможна.
В данном примере считается, что размер окна приема должен быть 30, то есть буфер приема имеет 30 ячеек памяти для сегментов данных. Для передачи сегментов данных это означает, что 31-й сегмент данных может быть передан только после приема подтверждения для первого сегмента данных.
В примере на Фиг.7, как отмечено выше и что указано пунктирной стрелкой, сегмент 01 данных, переданный передающим одноранговым узлом как первый сегмент данных, считается потерянным на трассе передачи. Предполагается, что сегменты 02, 03 и т.д. данных будут переданы и приняты надлежащим образом.
Следовательно, поскольку сегмент 01 данных отсутствует в принимающем одноранговом узле, прием принимающим одноранговым узлом сегмента 02 данных будет инициировать возвращение первого дублированного сообщения подтверждения (DUPACK), которое, как считается, принято передающим одноранговым узлом после передачи пакета 10 данных и до передачи пакета 11 данных. Эта задержка DUPACK связана с задержками передачи, задержками обработки и т.п. Аналогично, поскольку сегмент 01 данных продолжает отсутствовать, все последующие приемы принимающим одноранговым узлом сегментов данных будут инициировать передачу от принимающего однорангового узла до передающего однорангового узла дублированных сообщений подтверждения, при этом передающий одноранговый узел принимает увеличивающееся количество дублированных сообщений подтверждения, как указано на Фиг.7 с левой стороны. Если бы передающий одноранговый узел продолжал передавать сегменты данных в порядке последовательности без повторной передачи первого сегмента 01 данных, в конце концов был бы передан сегмент 30 данных и передача была бы прекращена, так как был бы достигнут размер окна приема. Другими словами, после сегмента 30 данных дальнейшие передачи были бы не возможны, так как отсутствуют подтверждения для 30 сегментов данных, эти 30 сегментов данных начинаются с сегмента 01 данных включительно. Остановка или блокировка передачи передающего однорангового узла может, например, произойти, если количество переданных, но не подтвержденных сегментов данных близко к превышению размера окна приема.
Для того чтобы избежать этой ситуации, как показано на Фиг.7, первый пакет 01 данных повторно передается после приема 13-го дублированного сообщения подтверждения, инициированного 14-м переданным пакетом данных, пакетом 14 данных, чтобы предоставить достаточно времени для того, чтобы подтверждение повторно переданного сегмента 01 данных достигло передающего однорангового узла до того, как должен быть передан сегмент 31 данных. Следовательно, сегмент 01 данных должен быть передан в точности или самое позднее после приема 13-го дублированного сообщения подтверждения, после сегмента 22 данных, что позволяет избежать остановки передачи последовательности сегментов данных после сегмента 30 данных.
Следовательно, в этом примере повторной передачи сегмента 01 данных после 13-го дублированного сообщения подтверждения необходимо избежать, если не происходит остановка передачи или ее возможно избежать другими средствами. Более ранняя передача не ведет к какой-либо остановке, но увеличивает сетевой трафик из-за возможных ненужных повторных передач. Другими словами, до тех пор, пока возможно, необходимо отложить повторную передачу сегмента 01 данных так, чтобы можно было избежать остановки передачи передающего однорангового узла, как изображено на Фиг.7.
Преимущественно, пороговый показатель дублированного подтверждения в результате определяется на основании размера используемого окна, представляющего собой разность между размером окна приема и размером неподтвержденных данных, где упомянутый размер неподтвержденных данных представляет собой количество переданных сегментов данных, которые еще не подтверждены. Если, например, предположить, что пороговый показатель дублированного подтверждения вычисляется, когда сегмент 10 данных передан, размер неподтвержденных данных, то есть переданные, но еще не подтвержденные сегменты данных, равен 10. Кроме того, используемое окно, как указано на Фиг.7, определяется как размер окна приема минус размер окна передачи, то есть разность между левой границей окна передачи, являющейся наименьшим порядковым номером сегментов данных, которые переданы, но не подтверждены, и правой границей окна передачи, являющейся наименьшим порядковым номером сегментов данных, которые еще не переданы. Используемое окно, другими словами, является количеством данных, которые передающая сторона ТСР может передавать в любой заданный момент времени, который удовлетворяет условиям, пока не будет ограничен принимающим одноранговым узлом.
Кроме того, предпочтительно устанавливать пороговый показатель дублированного подтверждения, исходя из разности между размером используемого окна и размером неподтвержденных данных. Точнее, в соответствии с еще одним примером, если снова предположить, что пороговый показатель дублированного подтверждения вычисляется прямо перед приемом первого дублированного сообщения подтверждения, то есть когда передается сегмент 10 данных, упомянутый пороговый указатель дублированного подтверждения, удовлетворяющий условию, показанному на Фиг.7 и объясненному выше, представляет собой
размер используемого окна + 2 - (размер неподтвержденных данных - 1), что эквивалентно
размер используемого окна - размер неподтвержденных данных + 3.
Если в качестве еще одной альтернативы предположить, что пороговый показатель дублированного подтверждения вычисляется при приеме первого дублированного сообщения подтверждения, то есть при передаче сегмента 11 данных, обратитесь к предыдущим вариантам осуществления настоящего изобретения относительно обновления порогового показателя, используемое окно было бы уменьшено на 1, размер неподтвержденных данных был бы увеличен на 1 и, следовательно, пороговый показатель дублированного подтверждения вычислялся бы как
размер используемого окна - размер неподтвержденных данных + 5.
В более общих обозначениях пороговый показатель дублированного подтверждения может быть вычислен как
размер используемого окна - размер неподтвержденных данных + N, а при объясненном выше условии, что
используемое окно = окно приема - размер неподтвержденных данных,
пороговый показатель дублированного подтверждения получается как
размер окна приема - 2 × размер неподтвержденных данных
или, еще более обще,
размер окна приема - (k × размер неподтвержденных данных),
где k - варьируемый параметр.
Кроме того, в соответствии с еще одним примером, пороговый показатель дублированного подтверждения определяется как
размер окна приема - (2 × размер неподтвержденных данных) + N,
где N представляет собой параметр настройки, удовлетворяющий условию
(2 × размер неподтвержденных данных) - размер окна приема + 1<N<3,
если предполагается, что пороговый показатель дублированного подтверждения вычисляется за одну операцию перед приемом первого дублированного сообщения подтверждения, как указано на Фиг.7. С другой стороны, как отмечено ранее, если пороговый показатель дублированного подтверждения вычисляется за одну операцию после, то есть по приему первого сообщения дублированного подтверждения, N < 3 должно быть заменено на N < 5. Преимущественно, в этом случае, параметр настройки N может быть установлен равным 5, таким образом удовлетворяя вышеупомянутому условию, что подтверждение для повторно передаваемого сегмента принимается до того, как количество не переданных ранее сегментов данных, то есть сегментов, которые передаются впервые, превысит размер окна приема. Если бы условие не удовлетворялось, это привело бы к остановке передачи на передающем одноранговом узле, так как передающему одноранговому узлу только разрешено передавать дальнейший сегмент данных в последовательности, если количество переданных, но не подтвержденных сегментов данных не превышает размера окна приема, которой сообщен принимающим одноранговым узлом.
Используя вышеупомянутые формулы, можно получить отрицательный пороговый показатель дублированного подтверждения в случае, когда размер неподтвержденных данных больше, чем окно приема. Для того чтобы избежать такого отрицательного порогового показателя дублированного подтверждения, может быть использован оператор max, который может препятствовать достижению пороговым показателем дублированного подтверждения таких отрицательных значений. Следовательно, предпочтительным методом вычисления порогового показателя во время, указанное на Фиг.7, то есть предшествующее приему первого дублированного сообщения подтверждения, является
пороговый показатель дублированного подтверждения = max(размер окна приема - 2 × размер неподтвержденных данных + N, 1).
В следующих примерах описано, каким образом может быть определен параметр N настройки. Как отмечено выше, когда N = 3 и при определении порогового показателя дублированного подтверждения за одну операцию перед приемом первого дублированного сообщения подтверждения, подтверждение для повторной передачи первого пакета 01 данных принимается сразу после того, как “заполняется” окно приема. Это, однако, действенно только при условии, что был потерян только один пакет и что не произошло переупорядочивание пакетов. В случае когда два эти условия удовлетворены, любое увеличение N выше 3 в конце концов привело бы к обусловленной окном остановке, то есть передающему одноранговому узлу не было бы разрешено передавать какие-либо дальнейшие пакеты данных. Поэтому N = 3 считается верхней границей для N. Однако отмечалось, что в случае, когда потерян более чем один сегмент, возможно увеличивать N еще и еще для того, чтобы избежать остановки окна. Это, однако, не должен быть типичный случай, и N = 3 предпочтительно может быть выбран в качестве верхней границы.
Относительно нижней границы для N разумным требованием является то, что алгоритм для вычисления порогового показателя дублированного подтверждения должен вычислять значение, большее или равное 1. Этот показатель получается, если
N = (2 × размер неподтвержденных данных - окно приема - 1).
Обычно, если N уменьшается, система становится менее консервативной, то есть исправление ошибки инициируется раньше, другими словами, раньше делается вывод о том, что пакет данных потерян. Однако с уменьшением N и, соответственно, порогового показателя дублированного подтверждения, передающий одноранговый узел становится менее устойчивым к сетевому переупорядочиванию пакета.
В качестве подходящего значения между верхней границей и нижней границей, ведущего к хорошим результатам, пороговый показатель дублированного подтверждения может быть установлен, как
max(размер окна приема - 2 × размер неподтвержденных данных, 1),
то есть N = 0.
Показанное на Фиг.6 устройство связи может быть сконфигурировано для выполнения вышеупомянутых вычислений и действий.
Более конкретно в еще одном варианте осуществления, устройство связи содержит средство для установки порогового показателя дублированного подтверждения в соответствии с размером окна приема так, чтобы сегмент данных, определенный как потерянный, повторно передавался до момента времени в последовательности сегментов данных, выбранного так, чтобы сообщение подтверждения, указывающее надлежащий прием сегмента данных, определенного как потерянный, то есть повторно передаваемый сегмент данных, предположительно был принят передающим одноранговым узлом до передачи сегмента данных с порядковым номером, превышающим порядковый номер сегмента данных, определенного как потерянный.
Кроме того, в еще одном варианте осуществления настоящего изобретения устройство связи содержит средство для определения порогового показателя на основе размера используемого окна, составленного из разности между размером окна приема и размером неподтвержденных данных, причем упомянутый размер неподтвержденных данных представляет собой количество переданных сегментов данных, которые еще подтверждены.
Кроме того, в еще одном варианте осуществления настоящего изобретения устройство связи содержит средство для определения порогового показателя дублированного подтверждения, исходя из разности между размером используемого окна и размером неподтвержденных данных. Упомянутое средство для определения порогового показателя дублированного подтверждения может быть адаптировано выполнять определение момента времени, предшествующего приему первого дублированного сообщения, как большее значение из значения 1 и значения, полученного посредством вычисления
(размер окна приема - (k × размер неподтвержденных данных)),
где k - варьируемый параметр.
Упомянутое средство для определения порогового показателя дублированного подтверждения может быть адаптировано для использования k = 2.
Кроме того, в еще одном варианте осуществления настоящего изобретения устройство связи содержит средство для определения порогового показателя дублированного подтверждения как
размер окна приема - (2 × размер неподтвержденных данных) + N,
где N представляет собой параметр настройки, удовлетворяющий условию
(2 × размер неподтвержденных данных) - размер окна приема + 1<N<3.
Кроме того, в еще одном варианте осуществления настоящего изобретения устройство связи содержит средство для обновления порогового показателя дублированного подтверждения после определения изменения в размере окна приема.
Кроме того, в еще одном варианте осуществления настоящего изобретения устройство связи содержит средство для обновления порогового показателя дублированного подтверждения, по меньшей мере, каждый первый раз, когда принято дублированное сообщение подтверждения для одного из сегментов данных.
Кроме того, в еще одном варианте осуществления настоящего изобретения устройство связи содержит средство для обновления порогового показателя дублированного подтверждения, по меньшей мере, каждый раз, когда принято дублированное сообщение подтверждения.
Помимо вышеизложенной установки порогового показателя дублированного подтверждения, исходя из размера окна приема, где упомянутый размер окна приема представляет собой количество сегментов данных, которое может быть сохранено в буферном пространстве принимающего однорангового узла, также может быть принята во внимание ситуация в передающем одноранговом узле. Точнее, в соответствии с еще одним вариантом осуществления настоящего изобретения, сегмент данных, определенный как потерянный, повторно передается, если передающий одноранговый узел заблокирован от передачи непереданного ранее сегмента данных. В этом случае передающий одноранговый узел может считаться блокированным, если выполняется одно из следующих условий: количество непереданных ранее сегментов данных превышает размер окна приема; количество непереданных ранее сегментов данных превышает размер окна передачи; приложение, представляющее собой источник сегментов данных, не предоставляет сегменты данных для передачи.
Способ согласно настоящему изобретению на практике может быть реализован любым соответствующим или подходящим путем, и, главным образом, в виде компьютерной программы, и, следовательно, также в виде носителя информации, служащего носителем этой компьютерной программы. Равным образом, настоящее изобретение может быть представлено в виде устройства связи, приспособленного работать в соответствии со способом настоящего изобретения.
Несмотря на то, что настоящее изобретение описано в виде подробных вариантов осуществления, это не означает, что настоящее изобретение ограничивается этими вариантами осуществления, при этом его объем определяется прилагаемой формулой изобретения. Также ссылочные номера в формуле изобретения не должны быть поняты как ограничение, так как они служат только для того, чтобы сделать формулу изобретение легче читаемой.