Что: abd2e63aaa15e316206336230e6cf2e09b525389
Когда: 2020-12-13 13:28:10+03:00
Темы: go
Попробовал UDT протокол https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_UDP https://udt.sourceforge.io/ https://tools.ietf.org/html/draft-gg-udt-03 Нашёл Go wrapper над этой библиотекой. Впервые собирал Go с C и даже кое какого C кода в этой обёртке написал (настраивал MSS, размеры буферов). Понравилось что пользоваться этим легко: самый обычный io.ReadWriter сокет, который вполне себе работает. UDT4 полностью на UDP основан, никакого TCP управляющего соединения (хотя я и не против него). Но... одни документы/презентации говорят что UDT творит чудеса, там где FTP при небольших потерях пакетов проседает до неюзабельного состояния. А https://scialert.net/fulltext/?doi=itj.2009.600.604 говорит что UDT очень далёк до насыщения даже гигабитного канала связи. И да, даже с большим MSS и буферами, на lookpack UDT передача у меня более чем на порядок медленнее простого TCP соединения. Лень проверять что будет на канале с большой задержкой или потерями, но наверное будет конечно же лучше. Но это значит что применим он только к очень особым каналам связи, как они и заявляют. А вот http://tsunami-udp.sourceforge.net/ даже в теории должен творить чудеса, как тесты в статье и показывают. Но я с ходу не смог собрать ни саму библиотеку, ни ничего на Go не нашёл для неё. Тема очень интересная в целом. Может эти UDT/Tsunami и прочее не так популярно потому что современные TCP CC алгоритмы и возможности их настроек в ядрах ОС достаточно хороши? Ещё нашёл KCP библиотеку/протокол: https://github.com/xtaci/kcp-go Который тоже предоставляет UDP надёжный ordered протокол. Но он заточен на низкие задержки и поэтому в нём добавляется избыточность и коды Рида-Соломона. Тоже интересная тема (хотя это же всё уже обмуслёкано в QUIC и HTTP/3) и приятно что на pure Go всё есть.
Сгенерирован: SGBlog 0.34.0