TCP все...
От: Shmj Ниоткуда  
Дата: 14.11.18 07:48
Оценка: -3 :)))
Пишут:

Соответственно, в будущей версии HTTP транспорт TCP заменят на QUIC.


https://habr.com/company/globalsign/blog/429820/

Re: Shmj всё
От: neFormal Россия  
Дата: 14.11.18 08:47
Оценка: +3 :)
Rest in peace...
...coding for chaos...
Re: TCP все...
От: vsb Казахстан  
Дата: 14.11.18 08:50
Оценка:
Почему всё? Предлагаешь все протоколы писать поверх HTTP?
Re: TCP все...
От: ononim  
Дата: 14.11.18 10:30
Оценка:
S>Соответственно, в будущей версии HTTP транспорт TCP заменят на QUIC.
Помницца когда битторрент навелосипедил uTP то был ор от провайдеров потому что их оборудование не тянуло такую нагрузку, т.к. в UDP нету сессий, соотвественно вся stateful обработка трафика основывается на таймаутах.
Интересно тут что-то подобное планируется или они допилят UDP добавив в него end-of-session пакет?
Как много веселых ребят, и все делают велосипед...
Re[2]: TCP все...
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.11.18 10:40
Оценка: +1
Здравствуйте, ononim, Вы писали:

S>>Соответственно, в будущей версии HTTP транспорт TCP заменят на QUIC.

O>Помницца когда битторрент навелосипедил uTP то был ор от провайдеров потому что их оборудование не тянуло такую нагрузку, т.к. в UDP нету сессий, соотвественно вся stateful обработка трафика основывается на таймаутах.

В TCP тоже никуда не денешься от таймаутов. Последний пакет может и не прийти, на него нельзя рассчитывать. Более того, он может прийти несколько раз, и невозможно понять, какой из них самый последний.

O>Интересно тут что-то подобное планируется или они допилят UDP добавив в него end-of-session пакет?


Скорее, провайдеры допилят свое оборудование.

В QUIC, разумеется, есть пакет, обозначающий окончание сессии. Но он зашифрованный, как и все прочие пакеты QUIC, его от любого другого не отличишь, если не знать сессионных ключей.
Re: TCP все...
От: reversecode google
Дата: 14.11.18 10:54
Оценка:
не примут пока еще
не придумали что делать с нат
Re[2]: TCP все...
От: reversecode google
Дата: 14.11.18 10:56
Оценка: +1
помнится там было другая проблема
утп не контролировал полосу и отьедал ее всю
Re[3]: TCP все...
От: ononim  
Дата: 14.11.18 11:15
Оценка:
Pzz>В TCP тоже никуда не денешься от таймаутов. Последний пакет может и не прийти, на него нельзя рассчитывать. Более того, он может прийти несколько раз, и невозможно понять, какой из них самый последний.
Это понятно. Но все же в большинстве случаев FIN/RST таки доходят, а значит бОльшая часть конекшенов освобождает ресурсы вовремя, в таймаут уходит не так много.

O>>Интересно тут что-то подобное планируется или они допилят UDP добавив в него end-of-session пакет?

Pzz>В QUIC, разумеется, есть пакет, обозначающий окончание сессии. Но он зашифрованный, как и все прочие пакеты QUIC, его от любого другого не отличишь, если не знать сессионных ключей.
Логично было бы оставить расшифрованный пакет, или добавить специальное ICMP сообщение, например. Да даже добавлять не нужно, ведь есть же ICMP port unreachable который посылается в ответ на UDP датаграмму на закрытый порт, вот его можно просто самостоятельно слать при "закрытии" QUIC потока. Оборудование подозреваю уже отработает такой пакет как положено.
Как много веселых ребят, и все делают велосипед...
Re[4]: TCP все...
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.11.18 11:58
Оценка:
Здравствуйте, ononim, Вы писали:

Pzz>>В TCP тоже никуда не денешься от таймаутов. Последний пакет может и не прийти, на него нельзя рассчитывать. Более того, он может прийти несколько раз, и невозможно понять, какой из них самый последний.

O>Это понятно. Но все же в большинстве случаев FIN/RST таки доходят, а значит бОльшая часть конекшенов освобождает ресурсы вовремя, в таймаут уходит не так много.

Вот смотри, вот нормальное завершение TCP сессии:
1) A->B: FIN
2) B->A: FIN+ACK
3) A->B: FIN+ACK

По идее, получив третий пакет в этой последовательности, роутер может забыть про сессию. Однако что будет, если третий пакет не дойдет до стороны B? В этом случае B перепошлет 2-й пакет, A перепошлет 3-й, и сессия завершится. Но это не сработает, 3 пакет дойдет до роутера где-то по-середине, удалив сессию из его таблиц, но не дойдет до стороны B. Поэтому, даже в случае TCP, роутерам приходится помнить про сессию некоторое время после ее завершения, и удалять эти записи по таймеру. Кстати, в таймерах ничего такого ужасного нет, миллион таймеров можно поддерживать с очень небольшими затратами.

O>Логично было бы оставить расшифрованный пакет, или добавить специальное ICMP сообщение, например. Да даже добавлять не нужно, ведь есть же ICMP port unreachable который посылается в ответ на UDP датаграмму на закрытый порт, вот его можно просто самостоятельно слать при "закрытии" QUIC потока. Оборудование подозреваю уже отработает такой пакет как положено.


Тогда можно будет принудительно завершать чужие сессии, не зная сессионных ключей.
Re[3]: TCP все...
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.11.18 12:03
Оценка: 1 (1)
Здравствуйте, reversecode, Вы писали:

R>помнится там было другая проблема

R>утп не контролировал полосу и отьедал ее всю

Вообще-то, µTP изначально имел congestion control, причем он был сконструирован таким образом, чтобы всегда проигрывать TCP в соревновании за полосу, чтобы не мешаться веб-траффику.
Re[5]: TCP все...
От: ononim  
Дата: 14.11.18 12:09
Оценка:
Pzz>Вот смотри, вот нормальное завершение TCP сессии:
Pzz>1) A->B: FIN
Pzz>2) B->A: FIN+ACK
Pzz>3) A->B: FIN+ACK

Pzz>По идее, получив третий пакет в этой последовательности, роутер может забыть про сессию. Однако что будет, если третий пакет не дойдет до стороны B? В этом случае B перепошлет 2-й пакет, A перепошлет 3-й, и сессия завершится. Но это не сработает, 3 пакет дойдет до роутера где-то по-середине, удалив сессию из его таблиц, но не дойдет до стороны B. Поэтому, даже в случае TCP, роутерам приходится помнить про сессию некоторое время после ее завершения, и удалять эти записи по таймеру.

В данной ситуации с потерей FIN+ACK в NAT'е вообще не вижу смысла чегото ждать. Ведь можно просто отвечать FIN+ACK-ом или даже RST на все FIN+ACKи, отсутствующие в данный момент в таблице трансляции.
Не говоря уж о том что stateful inspection FW может свободно забывать про конекшен уже на шаге 2.

Pzz> Кстати, в таймерах ничего такого ужасного нет, миллион таймеров можно поддерживать с очень небольшими затратами.

Дело не в самом таймере, а в ресурсах связанных с конекшеном и которые заморожены на время ожидания сработки этого таймера.



O>>Логично было бы оставить расшифрованный пакет, или добавить специальное ICMP сообщение, например. Да даже добавлять не нужно, ведь есть же ICMP port unreachable который посылается в ответ на UDP датаграмму на закрытый порт, вот его можно просто самостоятельно слать при "закрытии" QUIC потока. Оборудование подозреваю уже отработает такой пакет как положено.

Pzz>Тогда можно будет принудительно завершать чужие сессии, не зная сессионных ключей.
Как будто сейчас этого сделать нельзя. ICMP port unreachable это _уже_ работающий механизм. Если его послать с правильными портами — висящий recv с UDP сокета обломится с ошибкой. Или последующий sendto на этот порт обломится — деталей не помню уже, т.к. сканер UDP портов, работающий по данному принципу, писал >15 лет назад
Как много веселых ребят, и все делают велосипед...
Отредактировано 14.11.2018 14:59 ononim . Предыдущая версия . Еще …
Отредактировано 14.11.2018 14:59 ononim . Предыдущая версия .
Отредактировано 14.11.2018 12:48 ononim . Предыдущая версия .
Re[2]: TCP все...
От: Cyberax Марс  
Дата: 14.11.18 22:40
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Почему всё? Предлагаешь все протоколы писать поверх HTTP?

QUIC можно использовать вместо TCP напрямую.
Sapienti sat!
Re[4]: TCP все...
От: Masterspline  
Дата: 15.11.18 02:57
Оценка: 1 (1)
O>>>Интересно тут что-то подобное планируется или они допилят UDP добавив в него end-of-session пакет?
Pzz>>В QUIC, разумеется, есть пакет, обозначающий окончание сессии. Но он зашифрованный, как и все прочие пакеты QUIC, его от любого другого не отличишь, если не знать сессионных ключей.
O>Логично было бы оставить расшифрованный пакет, или добавить специальное ICMP сообщение, например. Да даже добавлять не нужно, ведь есть же ICMP port unreachable который посылается в ответ на UDP датаграмму на закрытый порт, вот его можно просто самостоятельно слать при "закрытии" QUIC потока. Оборудование подозреваю уже отработает такой пакет как положено.

QUIC основан на UDP, но реализован полностью в пространстве пользователя (ядро менять не надо), поэтому, ICMP port unreachable слать не получится (если ты не root). Кроме того, в UDP нет tcp sequence и, скорее всего, такой ICMP port unreachable можно отправить сквозь маршрутизатор с перебором всех 65536-ти портов и на шлюзе все эти сессии из таблицы NAT будут удалены...
Re[2]: TCP все...
От: flаt  
Дата: 15.11.18 13:16
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Почему всё? Предлагаешь все протоколы писать поверх HTTP?


DNS уже написали поверх HTTP
Re[5]: TCP все...
От: ononim  
Дата: 15.11.18 16:52
Оценка:
M>QUIC основан на UDP, но реализован полностью в пространстве пользователя (ядро менять не надо), поэтому
Ну и зачем вот оно такое? Сделали бы поверх UDP туннель с касторкой и гарантированной доставкой пакетов, и гоняли бы через него TCP. И UDP, а в нем еще один туннель — еще быстрее и отзывчивей. Такую систему ведь можно масштабировать фактически бесконечно.
Как много веселых ребят, и все делают велосипед...
Re[3]: TCP все...
От: Ops Россия  
Дата: 15.11.18 20:19
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>QUIC можно использовать вместо TCP напрямую.


Для TCP не нужны никакие сертификаты в каждом утюге, в отличие от.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[4]: TCP все...
От: Cyberax Марс  
Дата: 15.11.18 20:44
Оценка:
Здравствуйте, Ops, Вы писали:

C>>QUIC можно использовать вместо TCP напрямую.

Ops>Для TCP не нужны никакие сертификаты в каждом утюге, в отличие от.
Для QUIC тоже, можно просто сгенерировать эфемерные сертификаты при старте сервера.
Sapienti sat!
Re[5]: TCP все...
От: Ops Россия  
Дата: 15.11.18 21:03
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>Для QUIC тоже, можно просто сгенерировать эфемерные сертификаты при старте сервера.


Объясни механизм. Как я могу доверять каким-то сгенеренным сертификатам без УЦ?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[6]: TCP все...
От: Cyberax Марс  
Дата: 15.11.18 23:18
Оценка:
Здравствуйте, Ops, Вы писали:

C>>Для QUIC тоже, можно просто сгенерировать эфемерные сертификаты при старте сервера.

Ops>Объясни механизм. Как я могу доверять каким-то сгенеренным сертификатам без УЦ?
Никак. В этом случае не будет никаких гарантий, как и при соединении по обычному TCP. Единственное, что подслушивать можно будет только активно через MITM.
Sapienti sat!
Re[7]: TCP все...
От: Ops Россия  
Дата: 15.11.18 23:57
Оценка: +2
Здравствуйте, Cyberax, Вы писали:

C>Никак. В этом случае не будет никаких гарантий, как и при соединении по обычному TCP.


Тогда это профанация навязанного протоколом обязательного "шифрования" и бессмысленная нагрузка на устройства.

C>Единственное, что подслушивать можно будет только активно через MITM.


Что усложняет отладку, но не является непреодолимым препятствием для злоумышленника.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.