Предоставление возможности сетевым устройствам выполнять несколько алгоритмов управления перегруженностью

Иллюстрации

Показать все

Изобретение относится к вычислительной технике, а именно к устройствам создания различных модулей управления перегруженностью (ССМ). Техническим результатом является предоставление возможности выбора модуля управления перегруженностью (ССМ) из множества доступных модулей управления перегруженностью на основе соединения. Сетевое устройство для управления перегруженностью на одном или более сетевых соединений между этим сетевым устройством и сетью передачи данных содержит: процессор, память, стек сетевой передачи данных, модули управления перегруженностью. 2 н. и 13 з.п. ф-лы, 1 табл., 9 ил.

Реферат

Уровень техники

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

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

Сетевое научное сообщество предложило несколько усовершенствований и модификаций в алгоритм управления перегруженностью TCP в попытке повысить его производительность в высокоскоростных сетях. Необходимо принимать во внимание несколько факторов, и нет решения типа "один масштаб подходит для всего". Чем более активный алгоритм, тем более неблагоприятный он для других TCP-потоков. Дополнительно, поскольку нет универсального общепринятого стандарта, решение о том, какой алгоритм управления перегруженностью реализовать для данной операционной системы, является достаточно сложным.

Сущность изобретения

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

В данном документе раскрыты системы, способы и программное обеспечение (к примеру, инфраструктура) для создания различных модулей управления перегруженностью (CCM), которые могут взаимодействовать (к примеру, быть "встроенными") со стеком сетевой передачи данных (к примеру, стеком TCP/IP). Программно-реализованные абстракции, задающие события управления транспортировкой, алгоритмы управления перегруженностью (CCA) и другую информацию, могут быть раскрыты через интерфейс прикладного программирования, к примеру, операционной системы. Эти абстракции могут быть использованы для того, чтобы определять тип CCM, из которого несколько CCM могут быть сформированы (к примеру, созданы экземпляры).

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

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

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

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

В некоторых вариантах осуществления сетевой интерфейсный модуль, к примеру, сетевая интерфейсная карта (NIC), может формировать временные метки для пакетов, принимаемых в соединении. Для каждого пакета, принимаемого из сети, временная метка может быть сформирована и передана в стек сетевой передачи данных, чтобы использоваться для управления перегруженностью соединения. Например, сетевой интерфейсный модуль может сохранять информацию временных меток, ассоциативно связывающую временную метку и соединение, в структуре данных (к примеру, в структуре данных NET_BUFFER и/или NET_BUFFER_LIST операционной системы Windows® Vista™). Эта информация временных меток может быть использована посредством стека сетевой передачи данных для того, чтобы определять RTT и/или другую информацию управления транспортировкой по соединению. Стек сетевой передачи данных может сообщать RTT и/или другую информацию в CCM, управляющий перегруженностью для соединения. CCM может обновлять переменные состояния соединения и предоставлять обновленные значения одной или более переменных состояния соединения в стек сетевой передачи данных. Стек затем может модифицировать свое управление соединением соответствующим образом.

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

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

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

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

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

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

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

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

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

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

Краткое описание чертежей

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

Фиг.2 - это блок-схема, иллюстрирующая пример системы определения типов CCM для управления перегруженностью сетевого соединения, согласно некоторым вариантам осуществления изобретения.

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

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

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

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

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

Фиг.8 - это блок-схема, иллюстрирующая пример компьютерной системы, в которой могут быть реализованы некоторые варианты осуществления изобретения.

Фиг.9 - это блок-схема, иллюстрирующая пример системы хранения, которая может быть использована в качестве части компьютерной системы, чтобы реализовать некоторые варианты осуществления изобретения.

Подробное описание изобретения

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

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

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

При использовании в данном документе, будь то подробное описание или формула изобретения, термины "содержащий", "включающий в себя", "переносящий", "имеющий", "содержащий в себе", "влекущий за собой" и т.п. должны пониматься как открытые, т.е. означать включающий в себя, но не только. Только промежуточные фразы "состоящий из" и "состоящий главным образом из", соответственно, должны быть замкнутыми или полузамкнутыми промежуточными фразами, как изложено, со ссылкой на формулу изобретения, в "Руководстве по проведению патентной экспертизы" Патентного ведомства США (восьмое издание, редакция 2, май 2004 года), раздел 2111.03.

Примеры

Фиг.1 - это блок-схема, иллюстрирующая пример системы 100 управления перегруженностью одного или более сетевых соединений между сетевым устройством 102 и сетью 128 передачи данных, согласно некоторым вариантам осуществления изобретения. Система 100 является просто иллюстративным вариантом осуществления системы 100 управления перегруженностью одного или более сетевых соединений между сетевым устройством и сетью передачи данных и не предназначена для того, чтобы ограничивать область применения изобретения. Любые из множества других реализаций такой системы, например, варианты системы 100 возможны и предназначены для того, чтобы попадать в рамки области применения изобретения.

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

При использовании в данном документе "сетевое устройство" - это устройство, выполненное с возможностью обмениваться данными по сети, в том числе, но не только: рабочие станции, персональные компьютеры, терминалы, портативные компьютеры, конечные станции, пользовательские устройства, серверы, шлюзы, директории, коммутаторы, маршрутизаторы, концентраторы, мосты, каталоги, передатчики, приемники, приемо-передатчики, беспроводные точки доступа (AP), повторители и любые комбинации вышеозначенного. При использовании в данном документе "пользовательское устройство" - это сетевое устройство, из/в которое пользователь может принимать/отправлять данные и которое может выступать в качестве конечной точки для связи по сети передачи данных. Пользовательские устройства включают в себя, но не только: рабочие станции; персональные компьютеры (к примеру, ПК); переносные компьютеры, блокнотные компьютеры; телефоны (к примеру, стационарные или мобильные); пейджеры; устройства марки Blackberry™, PCS-устройства, персональные цифровые устройства (PDA), приемо-передающие радиостанции (к примеру, "переносные дуплексные приемо-передающие устройства"), другие типы пользовательских устройств и любую надлежащую комбинацию вышеуказанного.

Сеть может быть или включать в себя любые из множества типов сетей, в том числе, но не только, локальную сеть (LAN), городскую сеть (MAN), глобальную сеть (WAN), беспроводную сеть, наземную сеть мобильной связи общего пользования (PLMN), сеть глобальной системы мобильной связи (GSM), сеть общей службы пакетной радиопередачи (GPRS), сеть универсальной системы мобильной связи (UMTS), сеть с множественным доступом с кодовым разделением (CDMA), оптическую сеть, сеть передачи данных, корпоративную сеть, беспроводную персональную сеть (PAN), домашнюю сеть, сеть дистанционной связи, коммутируемую телефонную сеть общего пользования (PSTN), широкополосную сеть, другой тип сети или любую надлежащую комбинацию вышеозначенного.

Сетевое устройство 102 может включать в себя любое из: одного или более приложений 108; операционной системы 104; сетевого интерфейсного модуля 122; одного из модулей 116 управления перегруженностью (CCM); других компонентов; или любой надлежащей комбинации вышеозначенного.

Сетевой интерфейсный модуль 122 может быть любым из множества типов сетевых компонентов, таких как, к примеру, сетевая интерфейсная карта (NIC). Модуль 122 может быть выполнен с возможностью принимать пакеты 126 из сети 128, например, по одному или более сетевых соединений, и выполнять операции с пакетами. Например, сетевой интерфейсный модуль 122 может выполнять любые из множества широко распространенных операций. Дополнительно, модуль 122 может быть выполнен с возможностью формировать временные метки для пакетов, когда они принимаются. Например, формирователь 124 временных меток может формировать временную метку во время, максимально близкое к времени, в которое каждый пакет принимается. Информация, ассоциативно связывающая временную метку 118 с пакетом (т.е. информация временной метки) может быть сохранена в структуре данных (к примеру, в структуре данных NET_BUFFER или NET_BUFFER_LIST операционной системы Windows® Vista™). Эта структура данных (или информация временных меток, сохраненная в ней) может передаться или делаться доступной для стека 110 сетевой передачи данных. Как подробнее описано ниже, информация временных меток может быть использована для того, чтобы определять перегруженность сети по сетевому соединению.

Операционная система 104 может включать в себя любое из: одной или более структур 106 данных управления передачей; стека 110 сетевой передачи данных; других компонентов и любой надлежащей комбинации вышеозначенного. Стек 110 сетевой передачи данных может быть любым из множества типов стеков сетевой передачи данных, таких как, например, стек TCP/IP. Стек 110 сетевой передачи данных может быть выполнен с возможностью принимать пакеты 120 и управлять соединениями, по которым принимаются пакеты 120 (и по которым передаются пакеты). Хотя не показано на фиг.1 и не обсуждается в данной заявке, следует принимать во внимание, что стек 110 сетевой передачи данных также может быть выполнен с возможностью передавать пакеты в сеть 128, например, через сетевой интерфейсный модуль 122.

Стек 110 может применять одну или более структур 106 данных управления передачей для того, чтобы управлять соединениями между сетевым устройством 102 и сетью 128. Например, для каждого соединения отдельная структура 106 данных управления передачей может быть использована для того, чтобы сохранять и обновлять информацию, относящуюся к соединению (к примеру, информацию состояния), которую стек 110 может использовать для того, чтобы управлять обменом данными по соединениям. Структура 106 данных управления передачей может быть или включать в себя любые из множества различных типов структур данных, такие как, например, блок управления передачей (TCB). Хотя структуры 106 данных управления транспортировкой показаны как размещающиеся в операционной системе 104, изобретение не ограничено таким образом. Эти структуры могут размещаться в любых из множества расположений сетевого устройства 102, в том числе в сетевом интерфейсном модуле 122.

Стек 110 может быть выполнен с возможностью обнаруживать и/или определять одно или более событий управления транспортировкой, обновлять одну или более структур 106 данных управления передачей соответствующим образом и/или сообщать эти одно или более событий 112 управления транспортировкой в один или более CCM 116. Эти события могут включать в себя любое из следующего: таймаут на повторную передачу по соединению; изменение времени на передачу и подтверждение приема; подтверждение приема новых данных; прием дублированного подтверждения приема; отправка нового пакета данных; другие события управления транспортировкой либо любую надлежащую комбинацию вышеозначенного.

В типичном протоколе транспортного уровня (уровня 4) (к примеру, TCP), когда сетевое устройство (к примеру, получатель) принимает данные по соединению, оно отвечает в сетевое устройство, которое отправило данные (к примеру, в отправитель), подтверждением приема (т.е. ACK). Таймаут на повторную передачу возникает у отправителя (к примеру, на сетевом устройстве 102) для соединения, когда сообщение подтверждения приема для данных, ранее отправленных отправителем по соединению, не принималось от получателя в течение предварительно определенного количества времени. Возникновение таймаута на повторную передачу может приводить к повторной передаче данных, для которых возник таймаут.

Время на передачу и подтверждение приема (RTT) - это интервал времени, которое истекает, когда отправитель отправляет данные в другой объект и когда отправитель принимает подтверждение приема от другого объекта о том, что данные приняты. Информация RTT может быть использована для того, чтобы задавать таймер для таймаута на повторную передачу. Изменение RTT возникает, когда RTT для данного соединения изменяется, например, в результате уменьшения или снижения перегруженности сети по соединению.

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

Типичный протокол транспортного уровня, такой как, к примеру, TCP, отслеживает порядок этих фрагментов и то, какие фрагменты приняты получателем, и повторно собирает эти фрагменты в надлежащем порядке. Получатель отправляет подтверждения приема отправителю пакета, указывающие то, какие фрагменты данных он принял, и может указывать те фрагменты, которые он еще не принял. Например, рассмотрим данные, поделенные на фрагменты 1-90. Если получатель этих данных принимает фрагменты 1-20 в одном пакете, 31-60 в другом пакете и 61-90 в третьем пакете, он может отправлять подтверждение приема отправителю каждый раз, когда он принимает эти пакеты. Подтверждение приема указывает то, какие фрагменты он принял, и также может указывать то, какие фрагменты данных он еще не принял. Например, получатель может принять первый пакет, включающий в себя фрагменты 1-20, и отправить подтверждение приема, указывающее то, что он принял фрагменты 1-20. Затем он может принять пакеты, включающие в себя фрагменты 31-60, и отправить подтверждение приема о том, что он принял фрагменты 1-20 и 31-60, но не фрагменты 21-30. Он может принять еще один пакет, включающий в себя фрагменты 61-90, и отправить подтверждение приема о том, что он принял фрагменты 1-20 и 31-90, но не фрагменты 21-30. Таким образом, отправитель может принимать несколько подтверждений приема от получателей, указывающих то, что получатель еще не принял фрагменты 1-30.

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

Дублированное подтверждение приема - это любое подтверждение приема, отличное от первого подтверждения приема, указывающее то, что конкретный фрагмент данных не принят получателем. Прием дублированного подтверждения приема может указывать разрыв (к примеру, фрагменты 21-30) в данных, принятых получателем.

Стек 110 сетевой передачи данных может быть выполнен с возможностью обнаруживать эти одно или более событий управления транспортировкой или других событий через анализ значимой информации в пакетах 120, принятых от сетевого интерфейсного модуля 122. Т.е. помимо обработки пакетов 120 перед передачей их содержимого в одно или более приложений 108, стек 110 также может проанализировать информацию в этих пакетах, управляющую их транспортировкой, включая управление перегруженностью соединения(й), по которому эти пакеты передаются. В некоторых вариантах осуществления стек 110 может выбирать информацию не из всех пакетов, которые он принимает. Эта выборка может выполняться для того, чтобы уменьшать объем информации состояния, которая обязательно должна храниться для каждого соединения посредством соответствующего CCM 116. Частота выборки для каждого соединения может быть определена на основе скорости передачи и RTT соединения. Эта выборка может быть выполнена, как подробнее описано ниже в связи с фиг.4-7.

При использовании в данном документе "модуль управления перегруженностью" или "CCM" - это программно-реализованная абстракция, которая определяет CCA для управления перегруженностью одного или более соединений. Каждый CCM 116 может соответствовать только одному соединению между сетевым устройством 102 и объектом в сети 128, и каждый CCM может реализовать конкретный тип CCA. Стек 110 сетевой передачи данных может сообщать в CCM 116 события управления транспортировкой для соединения, по которому CCM управляет перегруженностью. CCM 116 может хранить переменные состояния соединения для соединения и может обновлять эти переменные состояния в ответ на события управления транспортировкой. CCM может предоставлять обновленные значения переменных состояния в стек 110 сетевой передачи данных, и стек может модифицировать свое управление соединением соответствующим образом. В течение продолжительности существования данного соединения CCM 116 может выделяться часть памяти для того, чтобы управлять соединением, и эта часть памяти может оставаться непрозрачной для стека 110 и структуры 106 данных управления передачей. Эта часть памяти может принадлежать CCM и быть использована для того, чтобы отслеживать и обновлять переменные состояния соединения, используемые для того, чтобы управлять перегруженностью соединения.

Стек 110 сетевой передачи данных может быть выполнен с возможностью выбирать один из нескольких доступных CCM 116 для того, чтобы управлять перегруженностью для данного соединения. Этот выбор может быть основан на любых из множества факторов, включая, но не только: сетевое окружение; характеристики тракта соединения; характеристики линии связи в соединении; значение параметра сокета приложения 108; другие факторы и любую надлежащую комбинацию вышеозначенного. Т.е. CCM 116 могут быть выбраны и реализованы на основе соединения посредством стека 110, и несколько CCM 116 могут работать параллельно. Каждый из этих CCM может быть различного типа, либо два или более из этих CCM могут быть одного типа (т.е. выполнять один тип CCA).

В некоторых вариантах осуществления изобретения, когда определенные версии Windows® (к примеру, Windows® Vista™) используются в качестве операционной системы, может быть предусмотрен сетевой программный интерфейс (NPI). NPI может помогать в разработке и конфигурировании сетевого интерфейса между сетевым устройством (к примеру, устройством 102) и сетью (к примеру, 128). NPI может предоставлять структуру данных (к примеру, регистратор сетевых модулей (NMR)), который предоставляет возможность ассоциативного связывания одного или более CCM 116 со стеком 110 сетевой передачи данных. Например, стек 110 (к примеру, драйвер tcp.sys в Windows® Vista™) может регистрироваться как CCM-клиент, и один или более CCM 116 могут регистрироваться как CCM-поставщики. NPI для Windows® Vista™, включая использование NMR, подробнее описан в библиотеке Microsoft Developers Network (MSDN) по адресу http://msdn.microsoft.com/library в следующем каталоге: Device and Driver Technologies/Network/Windows Codename Longhorn Networking.

В некоторых вариантах осуществления изобретения CCM может быть сформирован (к примеру, создан экземпляр) с помощью абстракции типа CCM. Абстракция типа CCM может быть определена с помощью одной или более предварительно определенных программно-реализованных абстракций (к примеру, типов объектов), которые могут быть предоставлены через CCM API, например, как описано ниже в связи с фиг.2.

Фиг.2 - это блок-схема, иллюстрирующая пример системы 200 определения типа CCM для управления перегруженностью сетевого соединения, согласно некоторым вариантам осуществления изобретения. Система 200 является просто иллюстративным вариантом осуществления системы определения типов CCM и не предназначена для того, чтобы ограничивать область применения изобретения. Любые из множества других реализаций такой системы, например, варианты системы 200 возможны и предназначены для того, чтобы попадать в рамки области применения изобретения.

Как должно стать более очевидным из последующего описания, в некоторых вариантах осуществления изобретения система 200 автономно и/или в комбинации с системой 100 предоставляет одно или более следующих свойств: простой способ для того, чтобы реализовать любые из множества типов CCA; возможность для кого-либо (к примеру, программиста или разработчика) писать CCA без необходимости изучения кода TCP; возможность выбирать CCM из множества доступных CCM на основе соединения, к примеру, на основе сетевого окружения, характеристик тракта и/или линии связи, посредством параметра сокета и т.д.; возможность управлять тем, сколько данных отправляется по соединению; и возможность управлять тем, какие байты данных отправлены по соединению.

Система 200 может включать в себя любое из: среды 202 разработки программного обеспечения; CCM интерфейса 204 прикладного программирования (API); других компонентов; или любых надлежащих комбинаций вышеозначенного. При использовании в данном документе "интерфейс прикладного программирования" или "API" - это набор из одной или более машиночитаемых инструкций, которые предоставляют доступ к одному или более других наборов из одной или более машиночитаемых инструкций, которые задают функции и/или типы данных, так что эти функции и/или типы данных могут быть выполнены с возможностью выполняться в компьютере вместе с прикладной программой. API может рассматриваться как "связующий элемент" между прикладными программами и конкретным вычислительным окружением или платформой (к примеру, любыми из описанных в данном документе) и может предоставлять возможность программисту программировать приложения, чтобы выполняться на одной или более конкретных вычислительных платформ или в одном или более конкретных вычислительных окружений.

Тип CCM может быть разработан в среде 202 разработки приложений, по меньшей мере, частично пос