Способ синхронизации и передачи выгруженного соединения сетевого стека в сетевой стек

Иллюстрации

Показать все

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

Реферат

ОБЛАСТЬ ТЕХНИКИ

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

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

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

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

Различные функции, которые выполняются с пакетом данных, когда он переходит между уровнями, могут интенсивно использовать программное обеспечение и часто требуют значительного количества ресурсов центрального процессора и памяти. Например, некоторые функции, которые выполняются с пакетом на различных уровнях, потребляют чрезвычайно много ресурсов центрального процессора, например вычисление и проверка контрольной суммы пакета, шифрование и расшифровка данных (например, шифрование протокола безопасных соединений (SSL) и шифрование протокола IP Security), вычисление профиля сообщения, сегментация TCP, обработка повторной передачи TCP и подтверждения (ACK), фильтрация пакета для защиты от атак отказа в обслуживании и фрагментация пакета протокола пользовательских дейтаграмм (UDP). Когда каждая из этих функций выполняется, результирующие требования к центральному процессору могут сильно повлиять на производительность и работу всей компьютерной системы.

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

Компьютерная промышленность распознала эту возможность и разработала способы, как разгрузить ЦП от задач и функций, потребляющих много ресурсов центрального процессора, которые ранее выполнялись центральным процессором. Например, патент США № 6141705 Anand et al., и патентные заявки № 09/657510 «Method and Computer Program Product for Offloading Processing Tasks from Software to Hardware», поданная 7 сентября 2000 г., и № 09/726 082 «Method and Computer Program Product for Offloading Processing Tasks from Software to Hardware», поданная 29 ноября 2000, обеспечивают решения, необходимые для того, чтобы сделать запрос периферийных устройств и выгрузить определенные задачи процессора на периферийные устройства, которые способны выполнять ресурсоемкие задачи и функции. Обычно также специфические выгружаемые задачи включают в себя такие задачи, как вычисление контрольной суммы TCP (протокола управления передачей) и/или IP (межсетевого протокола), сегментация TCP, например, при выгрузке от посылки больших пакетов (РПБП, LSO), и шифрование и расшифровка протокола обеспечения безопасности Интернет (IPSEC).

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

Другой подход, который пробовали осуществить изготовители периферийных устройств, состоял в том, чтобы разгрузить все TCP-соединение от основного стека к сетевой интерфейсной плате (СИП). Этот подход обходит весь стек протоколов, используя собственный интерфейс, и он требует, чтобы периферийное устройство обрабатывало все сообщения TCP, сообщения IP (межсетевого протокола), сообщения протокола управляющих сообщений в сети Интернет (ПУСИ, ICMP), сообщения сервера доменных имен (СДИ, DNS) и сообщения протокола маршрутной информации (ПМИ, RIP), требуя, чтобы СИП обрабатывала все. Дополнительно, этот подход не обращается к многосетевым средам и не вполне интегрируется с утилитами управления сетью операционной системы хоста. Когда состояние изменяется, разгруженное подключение может легко выйти из строя.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Настоящее изобретение обеспечивает способ разгрузки соединения сетевого стека, такого как стек, основанный на протоколе TCP. Данные, которые обычно посылаются через путь спецификации интерфейса сетевых драйверов (СИСД, NDIS), который имеет многочисленные программные уровни, на периферийное устройство, выгружаются в путь (маршрут) от уровня коммутатора на периферийное устройство. Поддерживается жесткая синхронизация с сетевым стеком и обрабатывающим блоком (процессором). Запрос на разгрузку стека посылают через путь СИСД к периферийному устройству. Запрос включает в себя список требований к ресурсам так, чтобы периферийное устройство имело информацию, необходимую для распределения ресурсов. Каждый уровень в пути СИСД добавляет свои требования к ресурсам в список. Если периферийное устройство принимает запрос, то периферийное устройство распределяет ресурсы и посылает дескриптор разгрузки каждому из программных уровней так, чтобы программные уровни могли связаться с периферийным устройством. Состояние для каждого программного уровня посылается периферийному устройству, как только программному уровню сообщается о том, что периферийное устройство принимает разгрузку (выгружаемые данные). Альтернативно состояние посылается с запросом на разгрузку, и только изменения в состоянии посылаются периферийному устройству. Каждое состояние имеет переменные состояния, и каждая переменная состояния классифицируется как постоянная переменная, кэшируемая переменная или делегированная переменная. Постоянные переменные не изменяются во время выгрузки стека протоколов. Кэшируемые переменные обрабатываются с помощью центрального процессора, и делегированные переменные обрабатываются с помощью периферийного устройства.

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

Во время выполнения выгрузки или загрузки может произойти модификация (обновление информации) (например, модификация протокола преобразования адресов (ППА, ARP) или модификация протокола маршрутной информации (ПМИ)). Для гарантирования того, что используется самое последнее сообщение модификации, если многочисленные сообщения модификации принимаются периферийным устройством, применяется присвоение порядкового номера для того, чтобы периферийное устройство не использовало устаревшие данные.

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

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

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

Фиг. 3 - структурная схема, иллюстрирующая функциональные уровни маршрута СИСД и пути обхода в соответствии с настоящим изобретением;

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

Фиг. 5a-5c - диаграммы, иллюстрирующие обращенное дерево настоящего изобретения;

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

Фиг. 7 - многоступенчатая схема, иллюстрирующая механизм загрузки настоящего изобретения;

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

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

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

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

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

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

Обращаясь к фиг.1, примерная система для осуществления данного изобретения включает в себя универсальное вычислительное устройство в виде компьютера 110. Компоненты компьютера 110 могут включать в себя процессор 120, системную память 130 и системную шину 121, соединяющую различные системные компоненты, которые включают в себя системную память процессора 120, но не ограничены ими. Системная шина 121 может быть любой из нескольких типов шинных структур, которые включают в себя шину памяти или контроллер памяти, периферийную шину, перекрещивающиеся магистрали, коммутируемую шинную связную архитектуру и локальную шину, которые используют любую из разнообразия шинной архитектуры. Системная шина 121 может также быть иерархией шин. Для примера, а не в качестве ограничения такая архитектура включает в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенной стандартной архитектуры для промышленного применения (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA), шину архитектуры с некэшируемым доступом к неоднородной оперативной памяти (NC-NUMA), шину архитектуры с кэш-когерентным доступом к неоднородной оперативной памяти (CC-NUMA) и шину соединения периферийных устройств (PCI), также известную как шина расширения.

Компьютер 110 типично включает в себя разнообразие считываемых компьютером носителей. Считываемые компьютером носители могут быть любыми доступными носителями, к которым может обращаться компьютер 110, и они включают в себя и энергозависимые, и энергонезависимые носители, съемные и несъемные носители. Для примера, а не в качестве ограничения считываемые компьютером носители могут содержать компьютерные носители данных и средства связи. Компьютерные носители данных включают в себя и энергозависимые, и энергонезависимые, съемные и несъемные носители, воплощенные любым способом или технологией для хранения информации, такой как считываемые компьютером команды, структуры данных, модули программ или другие данные. Компьютерные носители данных включают в себя оперативную память (ОП), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ), флэш-память или память другой технологии, компакт-диск (CD-ROM), цифровые многофункциональные диски (DVD) или другое запоминающее устройство на оптическом диске, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства или любой другой носитель, который может использоваться для хранения требуемой информации и к которому может обращаться компьютер 110, но не ограничены ими. Средства связи типично воплощают считываемые компьютером команды, структуры данных, модули программ или другие данные в модулированном сигнале данных, таком как несущая, или используют другой механизм транспортировки и включают в себя любые средства доставки информации. Термин «модулированный сигнал данных» означает сигнал, который имеет одну или более из своих характеристик, которые устанавливаются или изменяются таким образом, чтобы кодировать информацию в сигнале. Для примера, а не в качестве ограничения средства связи включают в себя проводные каналы связи, такие как проводные сети или прямое проводное подключение, и беспроводные каналы связи, такие как акустические, радиочастотные (РЧ), инфракрасные и другие беспроводные каналы связи. Считываемые компьютером носители могут также включать в себя комбинации любого из вышеупомянутых носителей и средств связи.

Системная память 130 включает в себя компьютерные носители данных в форме энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 131 и оперативная память (ОП) 132. Базовая система ввода-вывода 133 (BIOS), содержащая основные подпрограммы, которые помогают перемещать информацию между элементами в пределах компьютера 110, например во время запуска, типично хранится в ПЗУ 131. ОП 132 обычно содержит данные и/или модули программ, которые мгновенно доступны для обработки и/или в данный момент обрабатываются процессором 120. Для примера, а не в качестве ограничения фиг. 1 показывает операционную систему 134, прикладные программы 135, другие модули 136 программ и данные 137 программ.

Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных. Только для примера фиг. 1 показывает накопитель 141 на жестком диске, который считывает информацию или записывает информацию на несъемный энергонезависимый магнитный носитель, накопитель 151 на магнитном диске, который считывает информацию или записывает информацию на съемный энергонезависимый магнитный диск 152, и привод 155 оптического диска, который считывает информацию или записывает информацию на съемный энергонезависимый оптический диск 156, такой как компакт-диск или другой оптический носитель. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители, которые могут использоваться в типичной рабочей среде, включают в себя кассеты с магнитной лентой, платы флэш-памяти, цифровые многофункциональные диски, цифровую видеоленту, полупроводниковую ОП, полупроводниковое ПЗУ и т.п., но не ограничены ими. Накопитель 141 на жестком диске типично подключается к системной шине 121 через интерфейс (средство сопряжения) с несъемным запоминающим устройством, например через средство 140 сопряжения с накопителем на магнитном диске 151, и привод 155 оптического диска типично подключается к системной шине 121 через средство сопряжения со съемным запоминающим устройством, например через средство 150 сопряжения.

Накопители и связанные с ними компьютерные носители данных, описанные выше и показанные на фиг. 1, обеспечивают хранение считываемых компьютером команд, структур данных, модулей программ и других данных для компьютера 110. На фиг. 1, например, жесткий диск 141 показан в качестве устройства хранения операционной системы 144, прикладных программ 145, других модулей 146 программ и данных 147 программ. Следует обратить внимание, что эти компоненты могут совпадать с или отличаться от операционной системы 134, прикладных программ 135, других модулей 136 программ и данных 137 программ. Операционной системе 144, прикладным программам 145, другим модулям 146 программ и данным 147 программ присвоены другие номера для того, чтобы показать, что они, как минимум, являются различными копиями.

Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода данных, такие как клавиатура 162 и устройство позиционирования 161, обычно называемое «мышь», шаровой манипулятор («трекбол») или сенсорная панель. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер, устройство ввода видеоинформации или подобные им. Эти и другие устройства ввода данных часто подключаются к процессору 120 через входной пользовательский интерфейс 160, который присоединен к системной шине, но могут быть связаны через другой интерфейс и шинные структуры, такие как параллельный порт, игровой порт или универсальная последовательная шина (УПШ, USB). Монитор 191 или другой тип устройства отображения также связан с системной шиной 121 через интерфейс, такой как видео интерфейс 190. В дополнение к монитору компьютеры могут также включать в себя другие периферийные устройства вывода, такие как динамики 197, принтер 196 и устройство видеовывода, которые могут быть связаны через средство 195 сопряжения с периферийными устройствами вывода информации.

Компьютер 110 может работать в сетевой среде, используя логические подключения к одному или более удаленному компьютеру, такому как удаленный компьютер 180. Удаленный компьютер 180 может быть другим персональным компьютером, сервером, маршрутизатором, сетевым периферийным устройством (например, принтером), сетевым ПК, одноранговым маршрутизатором или другим обычным сетевым узлом, и типично включает в себя многие или все элементы, описанные выше относительно персонального компьютера 110, хотя только запоминающее устройство 181 показано на фиг. 1. Логические подключения (соединения), изображенные на фиг. 1, включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но могут также включать в себя другие сети. Такие сетевые среды являются обычными в офисах, компьютерных сетях в масштабах предприятия, корпоративных сетях (интранет) и Интернет.

Когда используется сетевая среда с ЛС, персональный компьютер 110 соединяется с ЛС 171 через сетевой интерфейс или адаптер (например, через сетевую интерфейсную плату (СИП)) 170. Когда используется сетевая среда с ГС, компьютер 110 типично включает в себя модем 172 или другие средства для установления связи по ГС 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может быть связан с системной шиной 121 через пользовательский входной интерфейс 160 или другой соответствующий механизм. В сетевой среде модули программ, изображенные относительно персонального компьютера 110 или его частей, могут храниться в удаленном запоминающем устройстве. Для примера, а не в качестве ограничения фиг. 1 показывает удаленные прикладные программы 185 как находящиеся в запоминающем устройстве 181. Следует признать, что показанные сетевые подключения являются примером и что могут использоваться другие средства установления связи между компьютерами.

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

Фиг.2 иллюстрирует взаимосвязь некоторых из компонентов, которые составляют сетевую модель, и компонентов настоящего изобретения. Во время нормальной работы сетевые сообщения посылаются приложением 200 через сетевой стек 202 на периферийное устройство 204, откуда сообщения посылаются другим устройствам и приложениям в сети и принимаются от других устройств и приложений. Сетевой стек 202 включает в себя один или более промежуточных программных уровней 206. Данные, посылаемые от приложения 200, перемещаются через промежуточный программный уровень (ни) 206, где с данными могут выполняться определенные операции, такие как упаковка данных, надежная передача данных, шифрование данных и вычисление профиля сообщения.

Коммутатор (переключатель) 208 используется для разгрузки (освобождения) процессора 120 от выполнения сетевым стеком операций для промежуточного программного уровня (ней) 206. Хотя коммутатор 208 показан отдельно, следует отметить, что коммутатор 208 может быть интегрирован в верхний промежуточный уровень сетевого стека 202. Данные посылаются периферийному устройству 204 через обходной тракт 210 к периферийному устройству 204 для выполнения операций сетевого стека. В этой иерархии промежуточные программные уровни не должны исключительно постоянно находиться в хосте или периферийном устройстве, и это позволяет любому из промежуточных уровней быть или полностью выгруженным, или оставаться в хосте, или быть их комбинацией (например, выгружать одно или более из определенных соединений). Дополнительно, одни обходные тракты могут наслаиваться поверх других обходных трактов (например, обходной тракт протокола IPSEC может быть расположен поверх обходного тракта протокола TCP). Подключение (соединение) может быть комбинацией надежной и ненадежной передачи данных, одноадресной или многоадресной передачи данных. Если промежуточный уровень остается в хосте, то хост модифицирует кэшируемые переменные (как описано ниже) в периферийном устройстве 204. Например, элемент (запись) состояния блока управления транспортировкой (TCB) для соединения может быть выгружен(а) для транспортного уровня с помощью элемента кэша маршрута (ЭКМ, RCE) для сетевого уровня, выгруженного на периферийное устройство 204. Коммутатор 208 продолжает посылать трафик для различных TCB через сетевой стек 202, который совместно использует тот же самый ЭКМ, когда коммутатор 208 посылает трафик через обходной тракт 210 для выгруженного TCB.

Коммутатор 208 инициирует выгрузку, посылая промежуточному уровню 206 запрос на выгрузку. Запрос на выгрузку включает в себя информацию о ресурсах, которая помогает периферийному устройству 204 решить, может ли оно успешно выгрузить соединение. Каждый промежуточный уровень 206 или отказывается от запроса на выгрузку, или добавляет информацию о ресурсах к запросу на выгрузку и посылает запрос на выгрузку к смежному программному уровню в сетевом стеке 202. Когда периферийное устройство 204 принимает запрос на выгрузку, оно вычисляет, имеет ли оно ресурсы, доступные для выгрузки соединения. Периферийное устройство 204 отказывается от запроса на выгрузку, если выгрузка невозможна. Иначе, периферийное устройство 204 принимает запрос на выгрузку и распределяет ресурсы для соединения (подключения). Периферийное устройство 204 завершает запрос на выгрузку, посылая сообщение завершения, имеющее список параметров, связанный с промежуточным программным уровнем(нями) 206. Связанный список параметров обеспечивает передачу информации к промежуточному программному уровню(ням) 206 и коммутатору (переключателю) 208 для того, чтобы дать возможность промежуточному программному уровню(ням) 206 и коммутатору 208 связываться с периферийным устройством. Каждый промежуточный программный уровень 206 удаляет информацию для своего уровня из связанного списка параметров.

Когда промежуточный уровень 206 принимает сообщение завершения выгрузки, промежуточный уровень 206 передает свое состояние на периферийное устройство 204. Каждое состояние может иметь три типа переменных: КОНСТАНТА, КЭШИРУЕМАЯ и ДЕЛЕГИРОВАННАЯ. Состояние может иметь все три типа переменных или подмножества из трех типов переменных. Переменные КОНСТАНТА - константы, которые никогда не изменяются в течение продолжительности жизни выгруженного подключения. Они не считываются назад к уровням, когда подключение (данные соединения) загружается. Главный процессор 120 поддерживает монопольное использование КЭШИРУЕМЫХ переменных и гарантирует, что любые изменения в КЭШИРУЕМОЙ переменной в главном процессоре 120 модифицируются в периферийном устройстве 204. Управляющие сообщения, которые изменяют КЭШИРУЕМОЕ состояние, обрабатываются сетевым стеком 202. В результате хост записывает, но не должен считывать назад КЭШИРУЕМЫЕ переменные при загрузке (данных) подключения. Главный процессор 120 передает монопольное использование ДЕЛЕГИРОВАННЫХ переменных периферийному устройству 204. ДЕЛЕГИРОВАННЫЕ переменные записываются один раз, когда происходит выгрузка, и считываются назад, когда выгрузка прекращается. Из-за того что только ДЕЛЕГИРОВАННЫЕ переменные возвращаются обратно, минимизируется непроизводительная нагрузка возвращения подключения к хосту. Состояние, которое должно иметь совместный доступ (например управление) от сетевого стека 202 и периферийного устройства 204, которое по различным причинам производительности выгружается (т.е. делегируется), просто разделяется между сетевым стеком 202 и обходным трактом 210 (например, идентификатор IP при выгрузках TCP) таким образом, что и сетевой стек 202, и периферийное устройство 204 владеет эксклюзивной частью состояния. Главный процессор 120 запрашивает от периферийного устройства 204 ДЕЛЕГИРОВАННЫЕ переменные, когда это необходимо (например, для статистической информации). Главный процессор 120 может также запросить переменные КОНСТАНТА или КЭШИРУЕМЫЕ переменные для диагностики. Деление состояния на три категории дает возможность сетевому стеку 202 хорошо сосуществовать с обходным трактом 210. Следует отметить, что запрос на выгрузку может включать в себя состояние. Это может быть сделано, если состояние или не содержит делегированные переменные состояния, или содержит делегированные переменные состояния, которые не будут изменяться между началом запроса на выгрузку и завершением запроса на выгрузку.

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

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

Многочисленные подключения (соединения) могут выгружаться промежуточным программным уровнем 206 на периферийное устройство 204. Промежуточным программным уровнем 206 поддерживается счетчик обращений для количества объектов состояния верхнего уровня (т.е. объектов состояния уровней, расположенных выше промежуточного программного уровня 206), которые обращаются к объекту состояния промежуточного программного уровня для выгрузки. В данной работе считается, что объект состояния - это совокупность переменных состояния для конкретного уровня, которые категоризируются как переменные КОНСТАНТА, КЭШИРУЕМАЯ или ДЕЛЕГИРОВАННАЯ. Если выгруженный объект состояния промежуточного уровня не имеет обращений к нему от уровня, расположенного выше его, то промежуточный уровень 206 посылает сообщение периферийному устройству 204, чтобы загрузить объект состояния для промежуточного уровня и послать делегированные переменные состояния промежуточному уровню 206. Периферийное устройство 204 удаляет объект состояния для промежуточного уровня 206, и промежуточный уровень 206 посылает сообщение завершения коммутатору 208.

Обращаясь к фиг.3 теперь, когда описана полная концепция, подробности изобретения будут описаны в варианте осуществления, где периферийное устройство 204 - СИП 170, коммутатор 208 - коммутатор (переключатель) интерфейса транспортного уровня (ИТУ, TLI) 306, и сетевой стек 202 содержит транспортный уровень 300, сетевой уровень 302 и уровень 304 создания кадра. Сетевой уровень 302 также известен как уровень пути (маршрута), и уровень 304 создания кадра также известен как соседний уровень.

Во время работы сетевые сообщения посылаются приложением 200 через сетевой стек 202 к СИП 170. Данные, посылаемые от приложения 200, перемещаются через коммутатор 306 ИТУ, который управляет тем, идут ли данные в расположенный в хосте сетевой стек 202, или в обходной тракт 308. Следует обратить внимание, что коммутатор 306 ИТУ может быть внедрен в верхний уровень сетевого стека 202. Программные уровни в сетевом стеке 202 принимают данные от приложения 200, упаковывают его в пакет и посылают его аппаратным средствам периферийного устройства 314 через минидрайвер 310 СИСД. Другие задачи, которые может выполнять сетевой стек 202, когда пакет данных проходит через стек 202, включают в себя шифрование данных, надежную передачу данных и вычисление профиля сообщения (например, контрольной суммы или циклического избыточного кода (ЦИК, CRC) для пакета данных). Многие из этих задач выполняются процессором 120 и потребляют много ресурсов про