Слайд 2
1. Вероятность ошибки доставки (BER) невелика и потеря пакета вероятнее
всего происходит из-за переполнения буфера. Если потеря пакета из-за его
искажения существенна, понижение CWND не поможет, и пакеты будут теряться с той же вероятностью (здесь было бы уместно поискать оптимальное значение MTU).
2. Время доставки (RTT) достаточно стабильно и для его оценки можно использовать простые линейные аппроксимации. Здесь подразумевается, что в рамках сессии все пакеты следуют одним и тем же путем и смена порядка прихода пакетов, хотя и допускается, но маловероятна. Разрешающая способность внутренних часов отправителя должна быть достаточно высока, в противном случае возникают серьезные потери из-за таймаутов.
3. Сеть имеет фиксированную полосу пропускания и, во всяком случае, не допускает скачкообразных ее вариаций. В противном случае потребовался бы механизм для прогнозирования полосы пропускания, а действующие алгоритмы задания CWND оказались бы не эффективными
4. Буферы сетевых устройств используют схему первый_вошел-первым_вышел (FIFO). Предполагается, что размер этих буферов соответствует произведению RTT*B (B - полоса пропускания, RTT - сумма времен транспортировки сегмента от отправителя к получателю и времени движения отклика от получателя к отправителю). Если последнее условие нарушено, пропускная способность неизбежно понизится и будет определяться размером буфера, а не полосой пропускания канала
Слайд 3
5. Длительность TCP-сессии больше нескольких RTT, чтобы оправдать используемую протокольную
избыточность. Короткие ТСР-сессии, широко используемые WEB-технологией снижают эффективность обмена. (Именно
это обстоятельство вынудило в версиях HTTPv1.1 и выше не разрывать ТСР-соединение после вызова очередной страницы).
6. Чтобы минимизировать влияние избыточности, связанной с заголовком (20 байт IP +20 байт ТСР + МАС-заголовок), используемое поле данных должно иметь большой объем. Для узкополосных каналов, где MTU мало, нарушение данного требования делает канал низкоэффективным. По этой причине выявление допустимого MTU в начале сессии должно приветствоваться.
7. Взаимодействие с другими ТСР-сессиями не должно быть разрушительным, приводящим к резкому снижению эффективности виртуального канала
Данные условия выполняются отнюдь не всегда, и система не рухнет, если эти условия нарушаются часто. Но эффективность работы соединения окажется не оптимальной.
Слайд 4
Трудности в реализации модели протокола ТСР возникли при работе с
современными быстрыми (1-10 Гбит/с) и длинными (RTT>200мсек) каналами. Для пакетов
с длиной 1500 байт время формирования окна оптимального размера достигает 83333 RTT (режим предотвращения перегрузки), что при RTT=100мсек составляет 1,5 часа!
Слайд 5TCP-reno
cwnd(t)=1; ssth(t)=(cwnd(t))/2;
В настоящее время наиболее популярной является модель NewReno, изложенная
в документе RFC-3782 (апрель 2004 года), и использующая алгоритм Fast
Retransmit & Fast Recovery. Алгоритм NewReno использует переменную recover (восстановление), исходное значение которой равно исходному порядковому номеру пакета.
Слайд 8Сравнение функций отклика для разных протоколов
Слайд 9Алгоритм TCP HYBLA
Основной идеей TCP Hybla является достижение для соединений
с большим (напр. спутниковых) тех же скоростей передачи, B(t), что
и для проводных TCP-каналов
Слайд 10Несовершенство версии протокола TCP Newreno для каналов с разными значениями
Слайд 12
Рост окна в модели CUBIC осуществляется в соответствии с выражением:
W(t)
= C(t-K)3 + Wmax
где C параметр CUBIC, t -
время с момента последнего уменьшения ширины окна, а K равно периоду времени, который необходим для увеличения W до Wmax, его значение вычисляется с привлечением выражения:
Слайд 14Работа протокола TCP AIMD
Additive-Increase, Multiplicative-Decrease (Область линейного увеличения CWND)
Работа протокола TCP AIMD в режиме исключения перегрузок можно характеризовать
формулой:
BW=
где BW - полоса пропускания;
MSS - максимальный размер сегмента в байтах, используемый сессией.
RTO - таймаут повторной пересылки.
ρ - частота потери пакетов (0.01 означает 1% потерь)
Эта формула является наилучшей аппроксимацией. Некоторое упрощение формулы можно получить, считая RTO=5*RTT.
Более упрощенная формула
Слайд 15Взаимодействие с чужими потоками
При получении трех дублированных подтверждений (DUPACK) отправитель
считает пакет потерянным и посылает его повторно.
каждое соединение обычно теряет
около двух пакетов в каждом эпизоде перегрузки В среднем следует ожидать потерю трех пакетов на одно столкновение.
ECN - Explicit Congestion Notification
Слайд 16NTCP
Темп заполнения буфера определяется производной db/dt. Если уровень заполнения достигает
Вmax, следующий пришедший сегмент будет потерян. Значение Вmax в общем
случае определяется неравенством Вmax > B ×RTT/MSS. Сетевое устройство должно отслеживать уровень заполнения своего буфера. И, если после получения очередного сегмента оказывается, что
(b(t) + db/dt ×RTT + δ) >Вmax,
то всем отправителям-соседям, которые используют данное устройства для передачи данных, должен быть послан отклик с window=0 (сигнал прекращения передачи). δ - конфигурационный параметр.
Слайд 17NTCP
То же, что и на предыдущем рисунке но для протокола
NTCP. Здесь протокол, предвидя переполнение буфера, реагирует снижением CWND
Слайд 19Multipath TCP
RFC-6824 TCP Extensions for Multipath Operation with Multiple Addresses
Слайд 20Сравнение стандартного TCP и стеков MPTCP-протокола
Слайд 21Пример сценария использования MPTCP
Слайд 23Опция MP_CAPABLE
A=1 = Необходима контрольная сумма
B=0, является флагом расширения
с C
по H - используются для согласования используемого криптоалгоритма.
Слайд 24Опция MP_JOIN (для исходного SYN)
Слайд 25Опция Join соединение (MP_JOIN) (для третьего ACK)
Слайд 26Пример использования аутентификации в MPTCP
Слайд 27Опция DSS (Data Sequence Signal)
A = Data ACK присутствует
a
= Data ACK имеет 8 октетов (если a=0, Data ACK
имеет 4 октета)
M = DSN (Data Sequence Number - порядковый номер данных]), SSN (Subflow Sequence Number - порядковый номер субпотока), длина уровня данных и контрольная сумма присутствуют.
m = порядковый номер данных имеет 8 октетов (если не определен, DSN имеет 4 октета)