Pull to refresh

Comments 33

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

TCP был создан для другой цели

В те времена максимальный полёт фантазии о компьютерных сетях будущего укладывался в сюжет художественного фильма «Терминатор». Предугадать появление ЦОДов и особенно карманных мейнфреймов с мобильной планетарной связью (смартфонов) и тик-токеров, забивающих своим «творчеством» каналы связи, не мог никто.

TCP разрабатывался на средства министерства обороны США, и предназначен для сохранения связности сети в случае масштабной ядерной войны. «Отцы интернета» проектировали транспортный протокол с предварительной установкой соединения, повторным запросом данных в случае их потери, решением проблемы дублирования при получении 2 копий одного пакета, и гарантией целостности передаваемых данных с уведомлением отправителя о результатах передачи.

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

  • наземной проводной телефонной сети: ARPANet USA

  • подводных межконтинентальных кабелях связи: ARPANet overseas

  • мобильных радио-станциях PRNet (packet radio network) — дальнобойных Wi-Fi роутерах на колёсах, которые могли замещать собою (временно или постоянно) уничтоженную взрывом кабельную линию.

  • космических спутниках SATNet (Atlantic packet satellite network), поддерживающих связь между сегментами сети на разных континентах, физически изолированных войной друг от друга.

Протокол обеспечил связность на суше, под водой, в воздухе и космосе. Делал это надёжно, прозрачно, стабильно. Продолжает это делать 50 лет спустя на скоростях в миллионы раз быстрее. Отцы интернета, безусловно, справились на 5+.

Осталось только научить железо понимать пакеты с MTU больше 1500 байт, и тогда заживём. Не с помощью костылей вроде Jumbo frame, а нативно.

Джамбограммы(до 4 гигабайт ЕМНИП) в IPv6 - часть стандарта из коробки. Вопрос распространенности IPv6 - ну тут звиняйте...

Да, вот непонятно, нафига в статье сравнение с TCP, если описываются свойства UDP? Почему с ним не сравнить?

Но UDP же не даёт гарантированной доставки и управления потоком, а обсуждаемый протокол — даёт.

Что-то гуглятся только Russian Drift Series, Remote Desktop Services и Amazon Remote Database Services. Кажется, ничего из этого не является протоколом транспортного уровня...

Reliable Datagram Sockets (RDS) — протокол передачи данных, разработанный совместно корпорацией Oracle и компанией SilverStorm в 2006 году, основан на аппаратных возможностях шины передачи данных InfiniBand. Протокол предусматривает возможность доставки датаграмм без установки соединения, обеспечивает высокоскоростную передачу данных и низкий уровень задержек в поддержку аппаратных возможностей Infiniband.

Есть протокол QUIC на базе UDP, пока используется только в браузере Chrome

И почти все что описано в статье, есть в этом протоколе

  • Оптимизирована для максимальной пропускной способности при минимизации задержки.

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

  • Поддержка масштабирования на стороне приёма (RSS). - это тоже самое, что и получатель передает обратно гарантии для управления скоростью отправки сообщений.

он не расчитан на передачи терабайт на скоростях 100-400Gbps
там много интересных спецэффектов появляется

Тем не менее гугл,как непосредственный амбассадор этого протокола вполне себе использует его в своих ДЦ

Расскажите, каких? Хотелось бы учесть при проектировании своего...

Нет. Вот даже близко нет.

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

Нет. В QUIC нет сообщений, там есть только неструктурированные байтовые потоки - аналог TCP.

Поддержка масштабирования на стороне приёма (RSS). - это тоже самое, что и получатель передает обратно гарантии для управления скоростью отправки сообщений.

Абсолютно нет. Receive Side Scaling - это аппаратная поддержка в сетевухах раскидывания входящих пакетов на разные ядра/CPU, например путем взятия хэша от адреса:порта. А описанные в статье гранты (а не гарантии) - это механизм flow control, схожий с размером окна. Совсем из другой оперы.

Оптимизирована для максимальной пропускной способности при минимизации задержки.

А это вообще маркетологическое блабла, за которым ничего конкретного не стоит.

Ну вот и сравнили, только плюсов внезапно стало в 2-3 раза меньше. Чет подозрительно это, когда такие перекошенные сравнения проводят...

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

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

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

Однако так часто бывает и современные протоколы — и RDP основаный на udp, и протоколы в играх, и даже сам TCP!!! имеют поле «номер пакета» и перестраивают их в буфере по мере необходимости.
В частности так случается постоянно когда у вас инфраструктура повышенной надежности из свичей, на уровене L2 в виде полносвязного графа. Классика — 4 свича которые соединены 2х2. Позволяет заменить свич без даунтайма.

О том и речь, это это делается на уровне протокола, а не прикладным разработчиком в каждом сервисе.

А что с протоколом DOOM? )

Есть же Reliable Datagram Sockets давно. Почему с ним не сравнивается? Какие преимущества перед ним?

Так потихоньку от eBPF эволюционируем до network shaders и можно будет майнить на сетевых картах.

Этот протокол не поддерживает логическое "соединение". Из сего следует что это конкурент UDP, а потому его безграмотно сравнивать с TCP.

Ну да, если все ,что есть в ТСР не нужно.. а там есть гарантия доставки, то и первичное требование о гарантии доставки не важно, ну и да, автор текста не автор перевода, дискутировать тут не с кем. А то все очень интересно, а категоричность высказываний, противоречащая своим же требованиям даёт вопросы, а не ответы.

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

Оно всё уже давно придумано (хоть DSCP), но наличие на соответствующих участках сети поддерживающего оборудования и умеющих его настраивать админов - совсем другая песня.

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

А это рецепт, как не устранить лаги, а наоборот создать их (и эхо), поскольку на разных маршрутах - разная задержка.

не понял вашей логики.
да, на разных каналах задержка разная, но так мы отправляем пакеты по всем каналам сразу.
скажем, три независимых канала, на каждом средняя задержка 50мс, но с вероятностью 10% есть проседание до неприемлемых 2000мс. если мы отправляем пакеты на всех трёх канала сразу и берём первый пришедший пакет, то вероятность получить 2000мс уже получается 0.1%, с чем вполне можно жить.

три независимых канала, на каждом средняя задержка 50мс,

Так не бывает. Для этого нужна хорошая лаба :) в реальности у каждого канала будет свой RTT и Jitter, что перевесит плюсы от гипотетической описанной ситуации, поэтому никто и не геморроится.

ну и что с того, что у них разный jitter? как раз эту проблему такое объдинение каналов решает. и относительно немного (не в разы) различающийся rtt не мешает, проверено.

Sign up to leave a comment.