The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Представлен SSH3, вариант протокола SSH, использующий HTTP/3, opennews (?), 17-Дек-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


91. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +1 +/
Сообщение от Ivan_83 (ok), 17-Дек-23, 21:36 
1. В сетях эзернет как раз таки есть Flow Control, он реализуется сетевыми адаптерами и свичами, аппаратно.
Я не вдавался в его работу но сомневаюсь что всё вами перечисленное нужно.
Насколько я вникал при перегрузке получатель отправляет сообщение отправителю с просьбой помолчать немного.

2. "TCP - это протокол для потоковой передачи данных сквозь широкополосную сеть с большими задержками." - а причём тут задержки?!

3. "TCP постоянно теряет пакеты, это норма" - а причём тут TCP!?

"TCP не просто может восстановить потерянные данные в потоке, а то что на самом деле он растит пропускную способность пока не начнутся потери и потом её снижает на основании получения запроса на Retransmit. По умолчанию он так управляет потоком. TCP сейчас использует CUBIC для контролирования пропускной способности и очередную вариацию slow start чтобы начать соединение." - я бы на вашем месте не пытался даже словами описать что там происходит, потому что даже CUBIC чуть сложнее, а уж мой любимый RACK и подавно.


"Он считает, что раз потери - значит перегрузка. А бывает так, что потери - проблема с уровнем сигнала." - это сильно зависит от используемого СС.

Вы плохо понимаете суть, но предлагаете такие глобальные изменения. У вас и UDP тормозить будет :)

Ответить | Правка | Наверх | Cообщить модератору

99. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +/
Сообщение от Аноним (93), 17-Дек-23, 22:06 
> В сетях эзернет как раз таки есть Flow Control, он реализуется сетевыми адаптерами и свичами, аппаратно.

И работает так: прилетает pause frame и передача всего трафика на порту, куда фрейм прилетел, встаёт. Потому его первым делом везде отключают, где он по каким-то причинам включен по-умолчанию, чтобы сеть при перегрузке не переходила в старт-стоповый режим.

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

В общем, DCB используют только когда ну прям очень надо и вышележащий протокол почему-то congestion control не поддерживает, а бесконтрольная перегрузка при этом крайне нежелательна. Примером такого протокола, является, например, ROCE v1 и v2 (RDMA поверх Ethernet-а).

Ответить | Правка | Наверх | Cообщить модератору

105. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +2 +/
Сообщение от Аноним (79), 17-Дек-23, 23:39 
Я немного уточню ваш ответ, с вашего позволения...

> довольно дорогих энтерпрайзных железках

Ну только если брать свежайшие и супер крутые. А если надо дёшево, чтобы заработал DCB как часы то вот на ebay продают:
- Juniper QFX5100 (10G или 40G через breakout) $500-$1000 за штуку
- NVIDIA (Mellanox) ConnectX-4 Lx на 10/25G $50 за штуку + еще DAC-и
Дешево и сердито, опять же, если вам не нужно строить еще и SDN и Datacenter Interconnect. Если надо, то нужно начинать с 5110/5120, а они дороже.
Вообще, если не брать Cisco, а брать коммутаторы Juniper, Arista, то коммутатор на 25G вам обойдётся примерно $3500-$5000, а 100GB от $9500.
Я бы не сказал, что это супер дорого, просто у Cisco фичи раскиданы так, что чтобы всё это корректно работало вам нужно купить n9k и обвесить его подписочными лицензиями.

> требуют конфигурирования квалифицированным сетевиком, а также требуют поддержки всей цепочкой прохождения трафика в L2-сегменте

Опять же, если у вас не сетвик с дипломом Cisco... то да. Обычно-то с этим проблем нету. И никакого L2 повсюду не надо.

Вам не нужно тащить ваш QoS на L2 по всему датацентру. L2 достаточно держать только на Top-Of-Rack коммутаторах, а дальше поднять BGP, причем желательно iBGP, если у вас там еще OSPF и вообще локации маленькие, с ним будет проще. И дальше все QoS маркировать в IP-пакеты.
https://www.ipspace.net/Data_Center_BGP/

> ROCE v1

Ой! Не произносите это вслух! Это страшная неудаха, которую нужно выключить на сетевых адаптерах. Она инкапсулирует Infiniband Payload в Ethernet-фреймы, оно не масштабируется. Вам реально придётся L2 тащить повсюду. Просто выключите её. Поставьте MTU 4200 и включите на сетевках RoCEv2 режим принудительно с размером фрейма RoCE в 4096 и будет вам счастье. RoCEv2 работает поверх UDP и можно настроить Congestion Control поверх DSCP так, чтобы у вас и PFC и RDMA даже в L3-сетях работал. Хотя между локациями гнать lossless-трафик не нужно, вам хватит ECN/QCN Congestion Control.

> вышележащий протокол почему-то congestion control не поддерживает

Реальность слегка поменялась в последние годы...
https://www.juniper.net/documentation/us/en/software/junos/t...

Вы теперь наоборот должны в TCP выключить CUBIC и перейти на DCTCP, потому что стандартный профиль с CUBIC это для внешнего интернета и если вы можете использовать нормальный Flow Control, пусть даже без PFC (он обязателен только в Storage-сетях), то сделайте это. Без него ваши NFS, SMB и прочие iSCSI, которые вы цепляете куда-то по-старинке или для пользователей начнут икать.

Кстати в последних общепринятых изменениях в профилировании Congestion Control для TCP и выражается медленная смерть iWarp и его замена на RoCEv2. В современных условиях в современных Linux/FreeBSD/Windows, чтобы iWarp заработал с так же эффективно как RoCEv2 вам нужно мало того что настроить весь DCB, так еще и перенастроить весь TCP-стек ОС, к которой что-то цепляется через iWarp, а это иногда, ох, как неудобно...

Я просто из личной практики говорю... но в целом вы абсолютно правы.

Ответить | Правка | Наверх | Cообщить модератору

115. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +/
Сообщение от Аноним (79), 18-Дек-23, 01:11 
> 1. В сетях эзернет как раз таки есть Flow Control, он реализуется сетевыми адаптерами и свичами, аппаратно.

При помощи магии что ли? Нет. Это требует обязательной настройки QoS, потому что единственный живой Ethernet Flow Control - это Priority-based Flow Control (PFC). Раньше был Ethernet Pause (802.3x), но сейчас на всем новом оборудовании по умолчанию блокируется EtherType 0x8808, чтобы никакая железка не смела это выдать. Сначала эту неудаху, которая каскадно блокирует порты по всей инфраструктуре просто предали забвению, но когда у людей начали появляться дешевые и глупые "Smart"-телевизоры в которых сетевки глючили и слали эту дрянь, её начали не просто не настраивать, а явно блокировать повсюду.

Еще раз, Pause-фреймы штормят:
- Конечное устройство блокирует порт коммутатора паузой
- У коммутатора переполняется очередь на отправку на этот порт
- Коммутатор шлёт паузу вышестоящему коммутатору
- Вся сеть встала колом
Проблема еще и в том, что когда сеть ляжет целиком, вы не зайдёте никуда и весь служебный трафик тоже ляжет.
Для разрешения подобных проблем нужно делить трафик на приоритеты и разрешать паузы только на некоторых. На каждом устройстве должен висеть Watchdog-сервис, который мониторит очереди и буферы, дропает пакеты и блокирует приём и отправку пауз, а все паузы теперь привязаны к приоритетам QoS либо на L2 (PCP-приоритеты) либо через маппинг PCP к DSCP на L3. Сложности добавляет расчет резервирования буферов для PFC, то есть для этого нужно сначала ETS настроить и подстроиться под его процентовки. Ничего из этого не работает из коробки и должно быть настроено вручную. Все вендоры оборудования имеют следующий дефолт:
- весь трафик Best Effort
- PFC отключен
- Pause запрещен
То есть никакого аппаратного Flow Control у вас нету, пока вы его сами не настроите. Когда вы подняли ETS в связке с PFC и поделили трафик на вашем сервере, сцепив его с QoS на оборудовании, которое тоже настроили сами, вот тогда вы можете отрубить себе Slow Start и слать пакеты потоком сразу со скоростью линка. ETS вам сделает полисинг в случае перегрузки, а PFC не даст потеряться пакетам на том приоритете, где он настроен. И всё это надо настраивать.

> это сильно зависит от используемого СС.

И какой у вас выбор по Congestion Control, я стесняюсь спросить? Обычный ECN или более продвинутый QCN или их полное отсутствие.

Давайте так. Если у вас нет ECN, то первичное снижение Transmission Rate после Slow Start у вас произойдёт по факту получения первого запроса на ретрансмит (первого дропа). Дроп пакета вам устроил вышестоящий коммутатор, которому ваш TCP-поток либо очередь зашатал, либо потому что там стоит полисер, который настроил сетевой администратор и он режет пропускную способность. Если у вас есть ECN и вы используете RED-алгоритмы, то коммутатор начнёт считать вероятности дропа (по настройкам сетевого администратора) и помечать пакеты, которые возможно дропнутся, если поток начнет расти. Пометка проставится в биты ECN и назначение потока должно прислать на источник Congestion Notification Packet, чтобы сетевой стек ОС источника, на котором, конечно же тоже вы заблоговременно включили и настроили ECN отреагирует на это и снизит Transmission Rate не дожидаясь дропов. QCN при этом, это когда есть WRED (Weighted Random Early Detection) на очередях коммутатора и одновременно по всей инфраструктуре настроен DCB. QCN предупреждает заранее, а если сервер-источник никак не угомонится, то тогда в дело вступит PFC и попробует сохранить пакеты в зарезервированных буферах на некоторое время. А если и в этой ситуации оно у вас захлёбывается, то тогда придет Watchdog и дропнет ваши пакеты.

Так к чему это я... ах да. Биты ECN они где? Правильно, они часть DSCP? А что вам сделает ваш провайдер во внешней сети? Удалит их к чёртовой бабушке, потому что он в своей CLOS-фабрике имеет свой Diffserv, а на вас ему начхать, если вы только не L1 берете или не L2VPN.

Поэтому сферическое в вакууме дуплексное TCP-соединение идущее через несколько независимых друг от друга сегментов сети:
- не имеет никакого CC, только TCP Retransmit, только хардкор.
- использует CUBIC, если только вы лично не пришли и не настроили это одновременно на всех участниках

> а причём тут задержки?!
> а причём тут TCP!?

И действительно, а причем... А при том! В изначальную спецификацию TCP заложена простая логика. Получили ретрансмит - снижаем скорость. И каждый ретрансмит приводит к потере очередности потока и возникновению задержки на соединении. Ретрансмит требует перезапросить часть сегментов, и время на их повторную отправку не равно нулю.

И это фича вообще-то. Это так работает по умолчанию на современных устройствах. Вариант замены Flow Control и Congestion Control для части собственного внутреннего трафика у вас есть, но писать, что это реализуется свитчами аппаратно, будто это работает... само? Нет, просто нет. Flow Control по умолчанию работает только в InfiniBand.

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

> а уж мой любимый RACK

Гы-гы, оно же пришло из QUIC, емнип, или наоборот, не помню. Я просто изначально отвечал человеку, которого повальный переход на UDP удивляет...

А вообще, если вы там реально используете RACK-TLP в проде, то вы наверное используете FreeBSD или Server 2022, потому что это всё не про Linux. MS-то понятно. Она же везде QUIC себе пихает, а это его CC и они одни из первых подготовили рабочую реализацию. Причем учитывая что реализации QUIC у MS под MIT, не понятно, кто у кого код таскает... Хотя сетевой стек последние годы Windows тащит у FreeBSD. Опять же... это не отменяет того факта, что это CC на основе потерь. То есть ретрансмиты там будут, а с ними и задержки на выполнение ретрансмитов. А про использование SACK вообще можно отдельную дискуссию открывать, потому что не всё так однозначно.

И, кстати, нет ничего сложного в RACK-TLP... Вот только он _просто работает_ в QUIC, а в TCP для эффективной работы нужно, чтобы сетевой стек поддерживал его с обеих сторон. То есть FreeBSD 12+ и Windows 11+ совместимы. =)

Ответить | Правка | К родителю #91 | Наверх | Cообщить модератору

118. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  –1 +/
Сообщение от Ivan_83 (ok), 18-Дек-23, 01:46 
> Ethernet Pause (802.3x), но сейчас на всем новом оборудовании по умолчанию блокируется EtherType 0x8808

да, я про него. Даже как то пробовал его для DoS у себя в домашней локалке но что то не заработало :)
Я оставляю дома FC на клиенстких портах с оконечными хостами и отключаю там где роутер, точка доступа или чтото ещё преддоставляющее сервис.


> И какой у вас выбор по Congestion Control, я стесняюсь спросить?

RACK, newreno, cubic, остальное я не собираю.


> Если у вас нет ECN, то первичное снижение Transmission Rate после Slow Start у вас произойдёт по факту получения первого запроса на ретрансмит (первого дропа)

Зависит от СС выбранного в системе.
Я как то развлекался и у меня самописный СС вообще ничего не снижал :)


> Биты ECN они где? Правильно, они часть DSCP? А что вам сделает ваш провайдер во внешней сети? Удалит их к чёртовой бабушке, потому что он в своей CLOS-фабрике имеет свой Diffserv, а на вас ему начхать, если вы только не L1 берете или не L2VPN.

Это ваши домыслы.
Я работал в провайдере и близок к кухням других провайдеров и никто тамим не промышлял.
Если только сотовики и ещё некоторые отбитые на голову.


> не имеет никакого CC, только TCP Retransmit, только хардкор.

Так не бывает, СС всегда есть на передающей стороне.


> использует CUBIC, если только вы лично не пришли и не настроили это одновременно на всех участниках

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


> В изначальную спецификацию TCP заложена простая логика. Получили ретрансмит - снижаем скорость.

А где там нынче железо и софт сделанный по этой изначальной спецификации?))))
Всё уже давно работает по свежим спекам, единственное правило - не ломать совместимость.
Некоторые умудряются по 100 гигабайт/сек по одному TCP конекту гонять, и это из новостей 5+ летней давности.


> оно же пришло из QUIC, емнип, или наоборот, не помню.

Оно от нефликса пришло во фрю.


И не нужно мне рассказывать что вся цепочка или конечный хост должен поддерживать RACK или другой крутой СС чтобы скорость была огого.
Я лично много для себя гонял трафика через тыщи км, и с вифи на последней миле, и видел как сильно менялась скорось скачивания от меня на тот удалённый хост когда я у себя переключал СС.
В линухах hybla довольно толерантна к потерям/ретрансмитам.
В тот год (2017) когда нетфоикс сел писать альтернативный TCP стёк с RACK для фри я развлекался с портированием hybla на фрю.
У меня ничего хорошего не вышло, стёк фри не давал нужных возможностей, видимо поэтому нетфликс сделал не СС а целый стёк отдельный.

Ответить | Правка | Наверх | Cообщить модератору

168. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +/
Сообщение от Аноним (79), 18-Дек-23, 11:37 
> Это ваши домыслы.
> Я работал в провайдере и близок к кухням других провайдеров и никто
> тамим не промышлял.
> Если только сотовики и ещё некоторые отбитые на голову.

А вы там точно сетью занимались? Просто каждый провайдер меняет входящую пометку QoS на свою собственную.
- PCP находится в заголовке dot1q.
- DSCP находится в заголовке IP
Провайдер не принимает VLAN-тегированный трафик, если с ним явно не договорились. И не сохранит никакую пометку PCP внутри VLAN, если у вас только не строится интерконнект между вашими локациями по L1 или L2VPN. Опять же, это отдельные услуги. То же самое с DSCP, провайдер вырежет вашу пометку и вставит на ее место свою. Это вообще базовый принцип работы QoS.

QoS работает и применяется локально в одном сегменте, а на граничных коммутаторах и роутерах переписывается. Вы же не думаете, что если вы проставите DSCP 46 (Expedited Forwarding), провайдер вам поверит и будет трактовать ваш трафик как высокоприоритетный и завернет его поближе к VoIP-очередям. То же самое с Ethernet Flow Control. Все типы Pause-фреймов будут вырезаны.

> Так не бывает, СС всегда есть на передающей стороне.

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

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

Еще раз повторяю - нет! Есть СС, которые применяются на всей цепочке. DCTCP в Lossless-сети - это главный из них и самый популярный.
Вот обычные ECN, почитайте: https://www.juniper.net/documentation/us/en/software/junos/c...
Вот DCQCN: https://www.juniper.net/documentation/us/en/software/junos/t...

Сочетание DCB и QCN позволяет вам одновременно иметь:
- максимально возможную пропускную способность потока
- минимальные задержки
- низкую нагрузку на CPU на источнике и назначении.
Это происходит, потому что у вас потери пакетов возможны только в случае реальной перегрузки, а не потому что очередной алгоритм СС внутри протокола TCP таким образом окна себе меряет, щупая промежуточную сеть и её пропускную способность. Есть также 2 недостатка:
- оно работает только в рамках собственного сегмента сети, потому что QoS, который вы настроили, вы настроили для себя и провайдер вашей пометке не поверит
- оно требует настроить DCB и QCN на сети, и это не так-то сложно... думал я, пока не пообщался тут и не осознал, что, видимо, сложно. Люди не понимают ни что это, ни как это работает.

Такие вещи не в интернет-провайдерах делают, а в облачных провайдерах, где людям сервисы предоставляют. Внутренний TCP работает одним способом, а внешний, который пойдет в публичную сеть другим способом. На границе ставятся балансировщики нагрузки / прокси, которые терминируют TCP-сессии при переходе из внутреннего сегмента в транзитную сеть. Если этих проксей много, и транзитная сеть большая, из этих проксей строят то что в народе называют CDN. Это как бы норма, но это внешний сегмент. Неужели вы правда считаете, что нетфликс использует RACK-TLP для внутреннего обмена данными, для сетей хранения и всего такого? Ну так же не бывает...

Также я бы хотел напомнить, что обработка Selective ACK требует существенно больше ресурсов CPU отправителя нежели, когда их нет. Полагаться на них так сильно, как это делает RACK-TLP я бы постеснялся с точки зрения производительности того сервиса, который порождает поток. RACK-TLP хорош, когда есть CDN, которая терминировала сессии и её прокси сервера полностью взяли на себя удар по вопросам шифрования TLS. Вот тогда туда и SACK можно привесить. Главное чтобы оно не вредило сервисам бекенда.

Мой вам совет, купите себе дешевый Juniper и пару сетевок Mellanox и поиграйте со всем этим. На FreeBSD и на Windows это всё прекрасно работает, настраивается играючи (я про DCTCP). Только вам нужно будет настроить QoS на коммутаторе. Уверен у вас получится. =)

Ответить | Правка | Наверх | Cообщить модератору

172. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +/
Сообщение от Ivan_83 (ok), 18-Дек-23, 12:30 
> А вы там точно сетью занимались? Просто каждый провайдер меняет входящую пометку QoS на свою собственную.

Забавно как вы обобщаете :)
Провайдеры если и заморачиваются QoS то обычно это PCP, а DSCP они игнорят и пропускают. Некоторые вырезают, наверное.


> Есть СС, которые применяются на всей цепочке. DCTCP в Lossless-сети - это главный из них и самый популярный.

Так это не про интернет, а что там каждый у себя внутри городит мне мало интересно.


> Неужели вы правда считаете, что нетфликс использует RACK-TLP для внутреннего обмена данными, для сетей хранения и всего такого?

Да запросто.
Они публиковали презентации как у них работает я там ничего такого не видел.
Они писали про то что у них относительно медленно заливается на раздающие тазики, а с них в инет уже льётся по 100+ гигабит с каждого.
Те может у них и есть всё то замечательное что вы описали но не похоже что для них это мастхэв фича.


> обработка Selective ACK требует существенно больше ресурсов CPU отправителя

Это просто смешно, по современным меркам.
Какую то нагрузку на проц от сети можно заметить только на очень высоких PPS, это скорее для роутеров проблема которые TCP не разбирают чем для конечных хостов, у которых TCP обмазан аппаратными оффлоадами.


> купите себе дешевый Juniper и пару сетевок Mellanox и поиграйте со всем этим.

А зачем мне это?)
Я не одмин датацентров и не хочу в эти технологии вляпыватся.


И вы как то далеко ушли от реального мира где всех описанных вами технологий нет, а есть только СС отправителя и оно неплохо так работает.
Как минимум 100м-1г оно утилизирует, а дальше и не надо.

Ответить | Правка | Наверх | Cообщить модератору

187. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +/
Сообщение от крокодил мимо.. (?), 18-Дек-23, 14:52 
> Я не одмин датацентров и не хочу в эти технологии вляпыватся.

так что в сухом остатке?
есть у нас RFC 3168 (2001), согласно которому "ECN allows end-to-end notification of network congestion without dropping packets. ECN is an optional feature that may be used between two ECN-enabled endpoints when the underlying network infrastructure also supports it."
т.е. в чистом виде надо поддержку сервер-клиент, и всё, что между, должно (уметь) в Queue Management.. по состоянию на сегодня железо (и софт), в основном, умеет в ECN, но дефолт у всех по-обстоятельствам(ц)(тм)..

в 2021-ом (дата стандартизации IETF) Гугль оформил (Quic) RFC 9000, 8999, 9001 и 9002 с выносом CC (congestion control) в юзерспейс (с обеих сторон) для удобства разработки.. http поверх quic стал http/3 и теперь пользует udp.. всё, что меж клиентом и сервером, должно просто (работать) доставлять туда-сюда (детали никого не интересуют)..

топик посвящён запиливанию ssh поверх quic, которое обозвали ssh3 (по каким-то странным и неведомым причинам).. кому не хватает sshd и всяких свистелок (а-ля port knocking, proxy/nat) - могут в очередную игрульку..

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру