Лекция 7. Многопоточные протоколы транспортного уровня (Лекции)
Описание файла
Файл "Лекция 7. Многопоточные протоколы транспортного уровня" внутри архива находится в папке "1. лекции". PDF-файл из архива "Лекции", который расположен в категории "". Всё это находится в предмете "управление качеством" из 12 семестр (4 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Многопоточные протоколытранспортного уровняЧемерицкий Евгений Викторовичк.ф.-м.н.Зачем нужны такие протоколы?• Повышение отказоустойчивости– Если отказывает одна из линий,соединениеостаётся работоспособным• Увеличение пропускной способности– Соединение может использовать пропускныеспособности сразу нескольких линий• Снижение задержки на передачу– Данных можно передать быстрее– Перераспределение отправки во времени• Повышение утилизации сети– Балансировка нагрузки по нескольким маршрутамВчём разница сбалансировкойнагрузки на других уровнях TCP/IP?• Потоки многопоточного соединения необязательно идут разными маршрутами– Всилу малой эффективности алгоритмовуправления перегрузками при больших задержкахвыгодно создавать больше потоков• Балансировка данных внутри одноготранспортного соединения– L2/L3балансировка не может разделять данныетранспортного потока из-за проблемы нарушенияпорядка доставки– Балансирока на L5требует изменения логикиработы прикладных программStreamControlTransmissionProtocolкакие потребности не охватывает UDPиTCP?• TCP–––––Абстракция потока байтовСохранение последовательности передачиНет поддержки Multi-homingHead-of-LineBlockingПодверженатакамSYN-Flooding• UDP– Ненадёжная передача данных– Нет встроенных механизмов управленияперегрузкой потокаStreamControlTransmissionProtocol• Надёжная передача данных• Множество потоков на каждое соединение• Поддержка Multi-homing:– Поддержка хостов снесколькими адресами– Сохранение работоспособности при отказе• Абстракция сообщений• Возможность неупорядоченной доставки• Встроенные механизмы управленияперегрузкой (аналогичные TCP)Сегменты TCPvsПакеты SCTP• Состоит из заголовка имножества чанков• Чанки делятся на несколько типов• PayloadData,Acknowledgment,Heartbeat,etc• Могут хранить как пользовательские данных,так ислужебную информацию• Служебные чанки всегда хранятся первымиТипы чанков SCTPУстановка SCTPсоединенияВSCTPсоединения называются ассоциациями• Init &Init ACKмогут включать всебя дополнительные адреса• Init &Init AСKне могут использоваться для передачи данных• CookieEcho&CookieAck могут содержать чанки сданнымиАтака типа SYN-FloodSYN128.3.4.5TCBSYN-ACKACKTCBTCBTCBSYN221.3.5.10SYN-ACKACKTCBЗарезервированные под соединения ресурсы•••Злоумышленники инициируют открытие большого количествасоединений,но не подтверждают их установкуСервер разервирует под эти соединения ресурсыОбычне пользователи не могут подключиться ксерверу,потому чтодля их обслуживания ресурсов не остаётсяИдентификация данных вSCTPКаждый чанк сданными имеет три идентификатора:•••TransmissionSequenceNumber(TSN)– номер внутри ассоциации• Подтверждение доставки иисключение дублированияStreamIdentifier(SI)– задействованный для передачи потокStreamSequenceNumber(SSN)– идентификатор внутри потока• Решение проблемы HeadofLineBlockingПодтверждение данных• Подтверждаются только чанки спользовательскими данными– Только уних есть идентификаторы =)• Для этого используется чанк типа SACK– Содержит СumTSN – идентификатор последнегочанка,полученного по порядку,и– Множество Gapблоков,перечисляющихдиапазоны счанками,доставленными не попорядку• Для подтверждения служебных чанковиспользуются чанки других типовПример передачи данных черезустановленное SCTPсоединениеПодтверждение доставкиПример передачи данных черезустановленное SCTPсоединениеУправление перегрузкой получателяРабота всетях сMultihoming• Абонент SCTPассоцииации может иметьсразу несколько адресов• Один из них считается основным (primary)• По умолчанию все данные отправляются наосновной адрес (через primarypath)• Вслучае повторной передачи данныеотправляются по другим путям– Если всети возникла перегрузка,то повторнаяпередача не усугубит ситуациюПроблемы SCTP• Данные передаются внесколько потоковтолько при потере,или при явном указаниипользователя• Можно ли передавать данныеодновременно?– ConcurrentMultipathTransferusingStreamControlTransmissionProtocol(CMT-SMTP)– MultipathTransmissionControlProtocol(MPTCP)SCTPvsMPTCPSCTP••••Многопоточный протоколПоддержка multihomingПоддержка отказа потокаНадёжная доставкаMPTCP••••Многопоточный протоколПоддержка multihomingПоддержка отказа потокаНадёжная доставка• Передача сообщений• Возможность организациинеупорядоченной доставкисообщений• Автоматрическаябалансировка по потокам• Обратная совместимость cостандартным TCP• Необходимо изменениелогики работы программы• Требует внедрения новогофункционала встек ОСMultiPathTCP(MPTCP)ApplicationLayerStandardTCPsocketAPIFlowSpawningSegmentschedulingTransportLayerCongestionavoidanceShadowsocketNetworkLayerMastersocketShadowsocketОрганизация MPTCP• Протокол является расширением TCPииспользует стандартный TCPsocketAPI– Не требует изменения логики приложений• Для синхронизации используютсяопциональные поля заголовка TCP– Опасность потери данных– Накладные расходы• Потоки могут добавляться иудалятьсядинамически впроцессе работы протоколаУстановка MPTCPсоединенияХост AХост B• Как открыть MPTCPвместообычного TCP?•Опция MP_CAPABLE• Что будет,если middleboxвырежет опцию MP_CAPABLEизSYNили SYN/ACK?•Сработает Fallbackна TCP• Как добавить поток ксуществующему соединению?••Опция MP_JOINИдентификация соединенияпо ключу• Как не позволитьзлоумышленникуподключиться коткрытомусоединению?•Аутенрификация HMACMPTCP:Управление Перегрузкой• Принцип справедливость требует уважатьоднопоточные TCPсоединения– На алгоритмы управления перегрузкойнакладываются дополнительные ограничения– Для большинства популярных алгоритмовуправления перегрузкой есть MPTCPверсииMPTCP:автоматическоепланирование пакетов по потокам• RoundRobin– Плохо работает на потоках разного качества• Минимальное время доставки– Приводит кпроблеме увеличения времени откликасоединения ипереполнению буфера получателя• Сохранение изначальной последовательностидоставки пакетов на стороне получателя– Необходим сбор ианализ большого количествастатистической информацииMPTCP:управление количествомпотоков• Количество открытых потоков должносоотвествовать состоянию сети– Если слишком много – накладные расходы приведут кпадению производительности– Если слишком мало – сеть работает неоптимально,скорость может увеличиться• Существующие подходы:––––Открывать Nпотоков на старте соединенияОткрывать по 1потоку на каждом интерфейсеИзменять количество потоков динамическиСколько времени нужно для адаптации соединения?MPTCP:маршрутизация потоков• Базовая эвристика – разные потокисоединения должны проходить понепересекающимся маршрутам• Втрадиционных сетях управлениемаршрутизацией на уровне отдельных потоковзатруднительно– ECMPраспределяет потоки случайно• Впрограммно-конфигурируемых сетяхприводит кувеличению времени отклика ичрезмерной нагрузке на контроллер– Flow(De)MultiplexingProtocolГде используется MPTCP?• Центры обработки данных– Копирование больших объёмов данных– Инфраструктура сбольшой избыточностью• Удалённые населённые пункты– Несколько медленных каналов– Ненадёжная связь• Мобильные телефоны– Несколько сетевых интерфейсов– Поддерживается IOSначиная сверсии 7Flow(De)MultiplexingProtocol(FDMP)Алгоритм адаптации количества потоков#% − ' > Δ#;(p)()% − ' ≥ Δ,+N"<=>?#'?@OC% − ' ≥ Δ#*% − ' < Δ";% - currentspeed' - speedatpreviousphase"% - currenttime' - timeatpreviousphaseМаршрутизация потков FDMPвПКСУстановка нового соединенияHasMP_CAPABLE option?InstallnewFDMPconnection!SDNControllerHostASYNMPCAPKeyAHostBМаршрутизация потков FDMPвПКСУстановка нового соединенияHasMP_CAPABLE option?CompletepartialFDMPconnection!SDNControllerHostASYN,ACKMPCAPKeyBHostBМаршрутизация потков FDMPвПКСУстановка нового соединенияHasMP_JOIN option?InstallnewFDMPsubflow foraknownconnection!SDNControllerHostASYNMPJOINTokenBHostBМаршрутизация потков FDMPвПКСДобавление потока коткрытому соединениюSubflow isnotactiveanymore!Removethepath!SDNControllerHostAActually,westoremetadataandallowsomesubflows toresume.Weuseflowevictiontoremovethisdata.HostBМаршрутизация потков FDMPвПКСДобавление потока коткрытому соединениюGetFDMPpacketofaexpiredsubflow!Eitherreroutetherememberedsubflow,orforcehoststocloseitRST SDNControllerClosevioletsubflow!Reschedulethepackettoredsubflow!HostAActually,westoremetadataandallowsomesubflows toresume.Weuseflowevictiontoremovethisdata.Closevioletsubflow!HostBРезюме• Многопоточная маршрутизация натранспортном уровне – перспективноенаправление для исследований– SCTPоктрывает много возможностей,нотребует изменения логики приложений– Устандартных TCPиUDPесть недостатки– MPTCPинтегрируется ссуществующимиприлжоениями относительно просто.