СПОСОБ ИЗМЕНЕНИЯ СОСТОЯНИЯ ПРОТОКОЛА ПЕРЕДАЧИ С УПРАВЛЕНИЕМ ПОТОКОМ
METHOD FOR CHANGING STATUS OF STREAM CONTROL TRANSFER PROTOCOL

Область техники
Данное изобретение касается интегрирования сети связи с коммутацией каналов и сети IP, в частности способа изменения состояния протокола передачи с управлением потоком (SCTP, stream control transmission protocol).
Уровень техники
С постепенным становлением технологии сетей IP возникла потребность передачи по ним протокола сигнализации сети с коммутацией каналов, такого как система сигнализации №7. Чтобы удовлетворить потребность в передаче протокола сигнализации в сети IP, сетевая рабочая группа IETF (Инженерная группа по развитию Интернета) создала специальную группа по передаче сигнализации, и созданный ими протокол передачи сигнализации по сети IP (протокол SIGTRAN, signaling transmission) поддерживает передачу традиционной сигнализации системы с коммутацией каналов через сеть IP. В 2000 году рабочая группа IETF официально выпустила протокол SCTP (см. запрос на комментарии RFC 4960 для последнего протокола), и таким образом потоки служб как пользовательской плоскости, так и плоскости управления могут быть переданы в единой сети IP с использованием SCTP. SCTP является протоколом транспортного уровня с установлением соединения, который использует алгоритмы управления трафиком и перегрузками, подобные протоколу TCP, и гарантирует достоверную передачу пользовательских данных между двумя конечными точками SCTP посредством собственного механизма подтверждения и повторной передачи. По сравнению с другими протоколами передачи, такими как TCP, SCTP имеет более короткую задержку передачи, может препятствовать тому, чтобы определенные данные большого объема блокировали другие данные и имеет более высокую надежность и безопасность.
Как можно заметить при обращении к фиг.1, SCTP первоначально был разработан для использования при передаче системы сигнализации №7 (SS7) по протоколу IP и позволяет включить некоторые свойства надежности сетей с сигнализацией SS7 в сеть IP. Стеками протокола нижнего уровня являются все стеки SCTP/IP, чтобы предоставить услуги, такие как проверка и повторная передача сигнализации более высокого уровня, и в максимально возможной степени уменьшить влияние сети IP нижнего уровня на сигнализацию более высокого уровня. На фиг.1 М2РА (где М2РА - это эквивалентный уровень адаптации МТР2 (Message Transfer Part Level 2, уровень 2 части передачи сообщения)), M2UA (где M2UA - пользовательский уровень адаптации МТР2), M3UA (где M3UA - пользовательский уровень адаптации МТР3 (Message Transfer Part Level 3, уровень 3 части передачи сообщения)), SUA (где SUA - пользовательский уровень адаптации SCCP (Signaling Connection Control Part, часть управления соединением сигнализации)), IUA (где IUA - пользовательский уровень адаптации ISDN (Integrated Services Digital Network, цифровая сеть с интеграцией служб)) и V5UA (где V5UA - пользовательский уровень адаптации V5.2) являются всеми пользователями верхнего уровня, обслуживаемыми SCTP, рассматриваемым в данном изобретении. Эта схема показывает только позицию SCTP в стеке протоколов SIGTRAN.
Фиг.2 является блок-схемой ЗАКРЫТИЯ (сообщение ЗАКРЫТИЕ (SHUTDOWN)) (где ЗАКРЫТИЕ является примитивом закрытия ассоциации в SCTP, и пользователи верхнего уровня, обслуживаемые SCTP, используют этот примитив, чтобы корректно закрыть ассоциацию). Пользователь SCTP на этой схеме представляет собой пользователя верхнего уровня, обслуживаемого SCTP на конце А. Когда SCTP на конце А получает запрос ЗАКРЫТИЕ, отправленный от обслуживаемого пользователя верхнего уровня, это сразу изменяет состояние ассоциации SCTP на состояние ОЖИДАНИЕ ЗАКРЫТИЯ (SHUTDOWN-PENDING) (где состояние ОЖИДАНИЕ ЗАКРЫТИЯ является состоянием во время процесса корректного закрытия SCTP, и когда SCTP получает сообщение ЗАКРЫТИЕ, отправленное от пользователя верхнего уровня, обслуживаемого SCTP, SCTP сначала изменяет состояние ассоциации на это состояние, и это состояние не изменится, пока все данные, имеющиеся на локальном конце, не будут полностью переданы к противоположному концу), затем проверяет, есть ли все еще данные в буфере передачи локального конца, и отправляет данные, если они есть. Эти данные будут передаваться повторно, если ответ не будет получен от конца В в назначенное время, пока все данные не будут успешно переданы противоположному концу (концу В на схеме) (ответы принимают для всех переданных данных), и в это время концу В будет отправлено сообщение ЗАКРЫТИЕ, и состояние будет изменено на состояние ОТПРАВЛЕНО ЗАКРЫТИЕ (где ОТПРАВЛЕНО ЗАКРЫТИЕ (SHUTDOWN-SENT) - это состояние во время процесса корректного закрытия SCTP, и состояние изменяется на это состояние после того, как SCTP отправляет сообщение ЗАКРЫТИЕ к SCTP противоположного конца, ожидая от SCTP противоположного конца ответа на этот примитив).
Как можно заметить при обращении к фиг.2 и к спецификации RFC4960 протокола, если SCTP на локальном конце получает примитив ЗАКРЫТИЕ, отправленный пользователем верхнего уровня, чтобы запросить ЗАКРЫТИЕ ассоциации, SCTP на локальном конце входит в состояние ОЖИДАНИЕ ЗАКРЫТИЯ. Согласно условиям текущего протокола, когда в буфере передачи есть данные, все эти данные должны быть успешно переданы к противоположному концу, и SCTP на локальном конце будет поддерживать это состояние ОЖИДАНИЕ ЗАКРЫТИЯ до тех пор, пока есть данные, которые успешно не отправлены, поэтому ассоциация SCTP на локальном конце никогда не сможет использоваться снова в случае, если данные не будут переданы успешно в течение долгого времени (например, когда окно приема противоположного конца слишком мало).
Сущность изобретения
Техническая проблема, которая решается данным изобретением, состоит в том, чтобы обеспечить способ изменения состояния протокола передачи с управлением потоком, посредством которого, когда SCTP на локальном конце получает запрос ЗАКРЫТИЕ от пользователя верхнего уровня, чтобы закрыть ассоциацию, и если есть данные, которые должны быть отправлены SCTP на противоположном конце, и данные не могут быть отправлены успешно в течение долгого времени, потому что буфер приема SCTP противоположного конца мал или из-за других причин, ассоциация может быть снова быстро использована.
Чтобы решить вышеупомянутую техническую проблему, данное изобретение предлагает способ изменения состояния протокола передачи с управлением потоком, включающий следующее:
если протокол передачи с управлением потоком (SCTP) на локальном конце решает, что имеются неотправленные данные в буфере передачи, и окно приема SCTP противоположного конца больше или равно длине первых неотправленных в настоящий момент данных после входа ассоциации SCTP на локальном конце в состояние ОЖИДАНИЕ ЗАКРЫТИЯ, то SCTP на локальном конце отправляет первые неотправленные данные к SCTP противоположного конца и закрывает ассоциацию SCTP, если ответ не будет получен от SCTP противоположного конца.
Кроме того, упомянутое отсутствие ответа от SCTP противоположного конца означает отсутствие ответа от SCTP противоположного конца в пределах ограничения по времени, установленного системой.
Кроме того, упомянутое отсутствие ответа от SCTP противоположного конца конкретно означает, что:
SCTP на локальном конце устанавливает максимальное число попыток повторной передачи данных и повторно передает первые неотправленные данные к SCTP противоположного конца, если ответ не получен от SCTP противоположного конца в пределах ограничения по времени, установленного системой, после того как первые неотправленные данные переданы к SCTP противоположного конца; и
SCTP на локальном конце решает, что ответ не получен от SCTP противоположного конца, когда число попыток повторной передачи данных равное максимальному числу попыток повторной передачи данных, и ответ не получен от SCTP противоположного конца в пределах ограничения по времени, установленного системой.
Кроме того, при закрытии ассоциации SCTP на локальном конце также сообщает о разрыве ассоциации пользователю верхнего уровня и отправляет сообщение ПРЕРЫВАНИЕ (ABORT) к SCTP противоположного конца, и при этом изменяет состояние SCTP на локальном конце на закрытое состояние.
Кроме того, когда SCTP на локальном конце решает, что имеются неотправленные данные в буфере передачи, и окно приема SCTP противоположного конца меньше, чем длина первых неотправленных в настоящий момент данных, способ далее включает следующие шаги:
SCTP на локальном конце отправляет сообщение зондирования к SCTP противоположного конца, где сообщение зондирования является первыми данными, помеченными как неотправленные в буфере передачи; запускает таймер Tw ожидания передачи сообщения зондирования, и если SCTP на локальном конце получает сообщение ответа от SCTP противоположного конца до истечения таймера Tw ожидания передачи сообщения зондирования, то SCTP на локальном конце определяет порядковый номер передачи (TSN, Transmission Sequence Number) и окно приема в выборочном подтверждении приема (SACK, Selective Acknowledgement) в сообщении ответа; и если он определяет, что TSN, полученный от противоположного SCTP, равен или больше TSN первых данных, помеченных как неотправленные в буфере передачи, а окно приема в сообщении ответа больше или равно длине первых данных, помеченных как неотправленные в буфере передачи, то тогда удаляет данные, TSN которых равен TSN в SACK, и все данные перед упомянутыми данными в буфере передачи, и определяет все остающиеся данные в буфере передачи как неотправленные.
Кроме того, если SCTP на локальном конце не получает сообщение ответа от SCTP противоположного конца после истечения таймера Tw ожидания передачи сообщения зондирования, то SCTP на локальном конце закрывает ассоциацию, сообщает о разрыве ассоциации пользователю верхнего уровня и отправляет сообщение ПРЕРЫВАНИЕ к SCTP противоположного конца, и при этом изменяет состояние SCTP на локальном конце на закрытое состояние.
Кроме того, если SCTP на локальном конце не получает сообщение ответа от SCTP противоположного конца после истечения таймера Tw ожидания передачи сообщения зондирования, то SCTP на локальном конце определяет, является ли число попыток передачи сообщения зондирования меньшим, чем максимальное число попыток передачи сообщения зондирования, и если да, то SCTP на локальном конце повторно передает сообщение зондирования и добавляет 1 к числу попыток передачи сообщения зондирования; а иначе SCTP на локальном конце закрывает ассоциацию, сообщает о разрыве ассоциации пользователю верхнего уровня и отправляет сообщение ПРЕРЫВАНИЕ к SCTP противоположного конца, и при этом изменяет состояние SCTP на локальном конце на закрытое состояние.
Кроме того, если SCTP на локальном конце решает, что нет никаких неотправленных данных в буфере передачи, то SCTP на локальном конце проверяет, имеются ли данные, отмеченные как отправленные, и если нет, то SCTP на локальном конце отправляет сообщение ЗАКРЫТИЕ противоположному концу, и при этом переключает состояние SCTP локального конца на ОТПРАВЛЕНО ЗАКРЫТИЕ; а если есть данные, отмеченные как отправленные, то SCTP на локальном конце определяет, получен ли ответ от SCTP противоположного конца в пределах ограничения по времени, установленного системой.
Кроме того, после того как SCTP на локальном конце отправляет первые неотправленные данные к SCTP противоположного конца, SCTP на локальном конце помечает эти данные как отправленные, корректирует окно приема SCTP противоположного конца, вычитая из него длину данных, переданных в этот раз, и если ответ получен от SCTP противоположного конца в пределах ограничения по времени, установленного системой, то SCTP на локальном конце удаляет данные, для которых ответ был получен от SCTP противоположного конца, из буфера передачи;
после того как все данные из буфера передачи SCTP локального конца успешно отправлены, и ответ получен от SCTP противоположного конца, SCTP локального конца отправляет сообщение ЗАКРЫТИЕ к SCTP противоположного конца, и переключает состояние SCTP на локальном конце в состояние ОТПРАВЛЕНО ЗАКРЫТИЕ.
Упомянутое "окно приема" относится к размеру остающегося пространства в буфере приема в SCTP противоположного конца, и этот размер передают в данных ответа от SCTP противоположного конца; упомянутое "сообщение зондирования" относится к сообщению, переданному от SCTP локального конца к SCTP противоположного конца для того, чтобы обнаружить данные, принятые в SCTP противоположного конца, и длину окна приема.
По сравнению с известным уровнем техники, согласно данному изобретению, когда SCTP на локальном конце получает запрос ЗАКРЫТИЕ от пользователя верхнего уровня, чтобы закрыть ассоциацию, и если есть данные, которые должны быть отправлены к SCTP противоположного конца, и эти данные не могут быть отправлены успешно в течение долгого времени, потому что буфер приема SCTP противоположного конца мал или из-за других причин, ассоциация может быть снова быстро использована.
Краткое описание чертежей
Фиг.1 является структурной иллюстрацией положения SCTP локального конца в стеке протоколов SIGTRAN;
фиг.2 поясняет состояние, когда SCTP локального конца закрывает ассоциацию после приема сообщения ЗАКРЫТИЕ от пользователя верхнего уровня; и
фиг.3 является блок-схемой способа изменения состояния протокола передачи с управлением потоком согласно данному изобретению.
Предпочтительные варианты осуществления изобретения
Согласно способу данного изобретения, после того как SCTP локального конца входит в состояние ОЖИДАНИЕ ЗАКРЫТИЯ, если в буфере передачи есть данные, которые должны быть отправлены, то эти данные последовательно отправляют, и затем эти данные повторно передают, если ответа не будет получено от противоположного конца в пределах заданного времени. Ассоциацию завершают, когда число повторных передач данных превышает максимальное число повторных передач данных, чтобы гарантировать, что SCTP на локальном конце сможет войти в состояние обслуживания как можно скорее, и таким образом эффективно решая проблему недоступности ассоциации в течение длительного времени.
На фиг.1 пользовательский уровень М2РА одноранговой адаптации МТР2, пользовательский уровень M2UA адаптации МТР2, пользовательский уровень M3UA адаптации МТР3, пользовательский уровень SUA адаптации SCCP, пользовательский уровень IUA адаптации ISDN и пользовательский уровень V5UA адаптации V5.2 являются всеми пользователями верхнего уровня, обслуживаемыми SCTP.
Данное изобретение будет далее описано со ссылкой на чертежи и конкретные варианты осуществления изобретения.
Как показано на фиг.3, способ изменения состояния протокола передачи с управлением потоком согласно данному изобретению включает следующие шаги.
Шаг 100, после того как SCTP на локальном конце получает примитив ЗАКРЫТИЕ от пользователя верхнего уровня, ассоциация входит в состояние ОЖИДАНИЕ ЗАКРЫТИЯ.
Шаг 110, SCTP на локальном конце проверяет, имеются ли неотправленные данные в буфере передачи, и если да, то выполняется шаг 120; иначе выполняется шаг 170.
Шаг 120, SCTP на локальном конце решает, больше ли или равно окно приема SCTP противоположного конца, чем длина первых неотправленных данных в текущем буфере передачи, и если да, то выполняется шаг 130; иначе выполняется шаг 150;
где окно приема - это размер остающегося пространства в буфере приема SCTP противоположного конца, который переносится в данных ответа.
Шаг 130, SCTP локального конца передает противоположному концу первые неотправленные данные, имеющиеся в буфере передачи, тем временем помечая эти данные как отправленные, корректируя окно приема SCTP противоположного конца путем вычитания длины данных, переданных в этот раз, обнуляя число передач сообщения зондирования и запуская таймер Та ожидания ответа.
Таймер Та ожидания ответа используется, чтобы определить, получен ли ответ на данные, отправленные к SCTP противоположного конца, в пределах заданного времени; таймер Та запускают после того, как данные отправлены, и выключают после того, как ответ получен, время таймера может быть сконфигурировано и динамически подстроено в диапазоне от 500 до 2000 мс.
Средство таймера используется в этом примере, чтобы определить, что ответ не получен от SCTP противоположного конца в пределах ограничения по времени, установленного системой, и счетчик или другие средства могут также использоваться в других примерах. Данное изобретение этим не ограничено.
Шаг 131, если таймер Та не истек, то выполняется шаг 132; иначе выполняется шаг 140.
Шаг 132, если SCTP на локальном конце получает ответ от SCTP противоположного конца, то выполняется шаг 135; иначе выполняется шаг 110.
Шаг 135, SCTP на локальном конце удаляет данные, для которых ответ был получен от SCTP противоположного конца, из буфера передачи и обнуляет число повторных передач данных, тем временем прекращая работу таймера Та и переходя к шагу 136.
Шаг 136, SCTP на локальном конце определяет, были ли все данные буфера переданы, и если да, то переходит к шагу 171; а иначе возвращается к шагу 110, продолжая передачу данных.
Шаг 140, SCTP на локальном конце определяет, меньше или равно число повторных передач данных максимальному числу повторных передач данных (где максимальное число повторных передач данных может быть обозначено Max.Data.Retran), выполняя шаг 145, если оно меньше, чем максимальное число повторных передач данных, и выполняя шаг 160, если оно равно максимальному числу повторных передач данных.
Максимальное число повторных передач данных означает, что данные повторно передают после истечения таймера Та ожидания ответа, и если число передач превышает максимальное число повторных передач данных, то ассоциация должна быть закрыта. Максимальное число повторных передач данных может быть сконфигурировано и динамически подстроено, например, оно может быть равно 5.
Шаг 145, SCTP локального конца определяет все данные в буфере передачи как неотправленные, тем временем добавляя 1 к числу повторных передач данных, далее следует переход к шагу 110.
Шаг 150, SCTP на локальном конце отправляет сообщение зондирования, которое является первыми данными, помеченными как неотправленные в буфере передачи, или пустым сообщением, запускает таймер Tw ожидания передачи сообщения зондирования, тем временем добавляя 1 к числу передач сообщения зондирования, отменяя таймер Та, если он работает, и переходя к шагу 152, если SCTP на локальном конце получает сообщение ответа от SCTP противоположного конца перед истечением таймера Tw; а иначе выполняя шаг 155.
Сообщение зондирования - это сообщение, переданное от SCTP локального конца к SCTP противоположного конца для того, чтобы обнаружить данные, принятые в SCTP противоположного конца, и длину окна приема.
После того как SCTP противоположного конца получает это сообщение зондирования, SCTP противоположного конца возвращает SACK (Selective АСK, выборочное подтверждение приема), которое переносит TSN и длину окна приема SCTP противоположного конца.
Таймер Tw ожидания передачи сообщения зондирования предназначается для того, чтобы быть запущенным, когда окно приема противоположного конца SCTP становится слишком малым, чтобы отправлять данные, и он отменяется, когда данные могут быть отправлены; время таймера Tw может быть сконфигурировано и динамически подстроено в диапазоне от 100 до 500 мс.
Шаг 152, если SCTP на локальном конце определяет, согласно порядковому номеру передачи (TSN) и параметру a_rwnd в SACK, что TSN, полученный от противоположного SCTP, больше или равен TSN первых данных, помеченных как неотправленные в буфере передачи, и окно приема в сообщении ответа (a_rwnd) больше или равно длине первых данных, помеченных как неотправленные в буфере передачи, то он удаляет данные, TSN которых равен TSN из полученного SACK, и все данные перед упомянутыми данными из буфера передачи, тем временем определяя все остающиеся данные в буфере передачи как неотправленные, отменяя работу таймера Tw и обнуляя число передач сообщения зондирования, а далее следует переход к шагу 120.
Шаг 155, если SCTP на локальном конце не получает сообщения ответа от противоположного конца после истечения Tw или приема неправильного ответа, то SCTP на локальном конце определяет, является ли число передач сообщения зондирования меньшим, чем максимальное число передач сообщения зондирования (где максимальное число передач сообщения зондирования может быть обозначено Max.Probe.Retran), и если да, то выполняется шаг 150, а иначе выполняется шаг 160.
Максимальное число передач сообщения зондирования означает, что когда число передач сообщения зондирования равно максимальному числу передач сообщения зондирования, то предполагается, что SCTP противоположного конца имеет сбой и, таким образом, неспособен принять данные, и ассоциация должна быть закрыта. Максимальное число передач сообщения зондирования может быть сконфигурировано и динамически скорректировано, например, оно может быть равно 5.
Шаг 160, SCTP на локальном конце закрывает ассоциацию, сообщая о разрыве ассоциации пользователю верхнего уровня и отправляя сообщение ПРЕРЫВАНИЕ к SCTP противоположного конца, тем временем изменяя состояние SCTP на локальном конце на состояние ЗАКРЫТО, на этом данная последовательность операций заканчивается.
Шаг 170, SCTP на локальном конце проверяет, имеются ли данные, помеченные как отправленные, если нет выполняется шаг 171; если да, выполняется шаг 131.
Шаг 171, SCTP на локальном конце отправляет сообщение ЗАКРЫТИЕ к SCTP противоположного конца, тем временем изменяя состояние SCTP на локальном конце на ОТПРАВЛЕНО ЗАКРЫТИЕ, на этом данная последовательность операций заканчивается.
Настоящий способ может в максимально возможной степени гарантировать, что данные могут быть безопасно переданы к SCTP противоположного конца, когда ассоциация закрывается сообщением ЗАКРЫТИЕ, и, если это требуется, снова быстро использовать ассоциацию SCTP. Настоящий способ может быть модифицирован следующим образом: без обнуления числа повторных передач данных и числа передач сообщения зондирования, или число повторных передач данных и число передач сообщения зондирования накапливается; или без повторных передач данных и сообщения зондирования, при этом SCTP на локальном конце закрывает ассоциацию SCTP, если локальный конец не получает ответа от SCTP противоположного конца, когда таймер Та ожидания ответа и/или таймер Tw ожидания передачи сообщения зондирования истекает, что может быть скорректировано согласно практической среде осуществления изобретения.
Данное изобретение будет далее описано в отношении конкретных примеров.
В способе изменения состояния протокола передачи с управлением потоком способ обработки данных включает следующее.
Шаг 1: SCTP на локальном конце закрывает ассоциацию после приема сообщения ЗАКРЫТИЕ, отправленного пользователем верхнего уровня, обслуживаемым SCTP.
Шаг 2: SCTP на локальном конце сначала изменяет состояние на ОЖИДАНИЕ ЗАКРЫТИЯ.
Шаг 3: SCTP на локальном конце определяет, есть ли данные, которые должны быть отправлены, в его буфере передачи.
Шаг 4: если нет никаких данных на шаге 3, и нет никаких данных, помеченных как отправленные, то SCTP локального конца отправляет примитив ЗАКРЫТИЕ к SCTP противоположного конца, тем временем изменяя свое состояние на ОТПРАВЛЕНО ЗАКРЫТИЕ; если есть данные, помеченные как отправленные, то следует ожидание истечения таймера Та, определение, больше ли или равно число повторных передач данных DataRetranNum, чем максимальное число повторных передач данных Max.Data.Retran после истечения Та; SCTP локального конца посылает ПРЕРЫВАНИЕ к SCTP противоположного конца, если DataRetranNum больше или равно Max.Data.Retran, отправляет ПОДТВЕРЖДЕНИЕ ПРИЕМА ЗАКРЫТИЯ пользователю верхнего уровня и закрывает ассоциацию, если DataRetranNum меньше, чем Max.Data.Retran, и затем следует выполнение шага 3.
Шаг 5: если на шаге 3 есть данные в буфере передачи, предположим, что есть данные D1 (TSN=1, длина=100), D2 (TSN=2, длина=200), D3 (TSN=3, длина=300), которые должны быть отправлены, то далее определяют, больше ли окно приема SCTP противоположного конца, чем длина 100 данных, которые должны быть отправлены в этот раз.
Шаг 6: если на шаге 5 окно приема SCTP противоположного конца больше или равно длине данных, которые должны быть отправлены в этот раз, то, полагая, что данными, которые должны быть отправлены в этот раз, являются данные D1, отправляют данные D1 и помечают D1 как отправленные, запускают таймер Та (который полагаем равным 1 с), тем временем продолжая способ выполнением шага 3.
Шаг 7: если на шаге 5 окно приема SCTP противоположного конца является меньшим, чем длина данных, которые должны быть отправлены в этот раз, полагая, что данные D1 являются данными зондирования, которые должны быть отправлены в этот раз, следует отправка данных D1, запуск таймера Tw (который принят равным 200 мс) и установка числа передач сообщения зондирования как ProbeNum, к которому прибавлена 1.
Шаг 8: если таймер Та на шаге 6 истекает, то определяют, получен ли ответ от SCTP противоположного конца в пределах времени 1 с.
Шаг 9: согласно результату шага 8, если ответ не получен от SCTP противоположного конца, то определяют, больше ли или равно DataRetranNum, чем Max.Data.Retran.
Шаг 10: согласно результату шага 9, если DataRetranNum больше или равно Max.Data.Retran, то SCTP локального конца посылает ПРЕРЫВАНИЕ к противоположному концу SCTP, посылает пользователю верхнего уровня ПОДТВЕРЖДЕНИЕ ПРИЕМА ЗАКРЫТИЯ (SHUTDOWN ACK) (ПОДТВЕРЖДЕНИЕ ПРИЕМА ЗАКРЫТИЯ является примитивом для ответа пользователю верхнего уровня, после того как SCTP локального конца корректно закрывает ассоциацию, и SCTP локального конца использует этот примитив, чтобы ответить на ЗАКРЫТИЕ, инициируемое пользователем верхнего уровня, обслуживаемым SCTP) и закрывает ассоциацию; а если DataRetranNum меньше, чем Max.Data.Retran, то добавляет 1 к DataRetranNum и продолжает способ выполнением шага 3.
Шаг 11: согласно результату шага 8, если SACK получен от SCTP противоположного конца, предположим, что TSN Ack=1, a_rwnd=300, и имеет место установка DataRetranNum=0, то выполняют удаление данных D1 из буфера передачи и продолжают способ шагом 3.
Шаг 12: согласно рабочему состоянию таймера Tw на шаге 7, если ответ SACK получен от SCTP противоположного конца, когда время Tw истекло, и при этом TSN Ack=1, a_rwnd=300, а установка ProbeNum=0, то удаляют данные D1 из буфера передачи и продолжают способ шагом 3; а если ответ SACK получен от SCTP противоположного конца, где TSN Ack=0, a_rwnd=50, или если ответ не получен от SCTP противоположного конца после истечения времени Tw, то определяют, больше ли или равно ProbeNum, чем Max.Probe.Retran.
Шаг 13: если ProbeNum больше или равно Max.Probe.Retran на шаге 12, то SCTP локального конца посылает ПРЕРЫВАНИЕ к противоположному концу SCTP, посылает пользователю верхнего уровня ПОДТВЕРЖДЕНИЕ ПРИЕМА ЗАКРЫТИЯ и закрывает ассоциацию; а если ProbeNum меньше, чем Max.Probe.Retran, тогда способ продолжается шагом 7.
Предшествующее описание представляет только конкретные предпочтительные варианты осуществления данного изобретения, но объем данного изобретения не ограничен этим описанием, и все вариации или замены, легко выполнимые обычным специалистом в рамках технического контекста, раскрытого данным изобретением, находятся в пределах данного изобретения. Объем данного изобретения определен приложенной формулой изобретения.
Промышленная применимость
С использованием данного изобретения, когда SCTP на локальном конце получает запрос ЗАКРЫТИЕ от пользователя верхнего уровня, чтобы закрыть ассоциацию, если есть данные, которые должны быть отправлены к SCTP противоположного конца, и данные не могут быть успешно посланы в течение долгого времени, потому что буфер приема SCTP противоположного конца мал или из-за других причин, ассоциация может быть снова быстро использована.