[О блоге] [наверх] [пред] [2022-02-25 11:59:04+03:00] [0e761dc769284faf8337b7527301dd845d4d6a51]
Темы: [tip]

Попробовал bondcat

https://blog.benjojo.co.uk/post/multipath-without-mptcp
https://github.com/benjojo/bondcat
Multipath TCP для бедных в userspace, написано на Go. Если есть два
Ethernet между двумя компьютерами, то обеспечить увеличение скорости в
два раза -- не тривиальная задача. Все эти lagg и bond не работают если
поток данных идёт между двумя IP адресами (и тем более одним и тем же
TCP/UDP портом например). Можно включить round-robin раскидывание
пакетов, но, из-за переупорядочивания пакетов, TCP будет сильно страдать.
MPTCP как-раз про всё это: сделать так, чтобы один TCP мог разные IP
адреса использовать при этом. Но в FreeBSD, насколько понимаю, этого в
ядре пока нет. В SCTP протоколе закладывалось с самого начала, но, опять
же, не знаю как это всё завести просто так и можно ли.

На одном хосте делаю bondcat -l -p XXX, а на другом указываю его два IP
адреса, которые в разных сетях и на разных сетевухах. Прокачиваю
несколько десятков гигабайт, считаю BLAKE3 (ну чтобы уж наверняка не
упереться в CPU). 234 MiB/sec. То есть оно полностью утилизирует 2xGbE.
Задача отлично выполнена!

Автор пишет про то, что он данные с лент не мог достаточно быстро
просасывать через сеть. Вот у меня есть почти свободный терабайт на NUC
NVMe, и я не прочь бы его использовать для чтения данных со стримера, но
лента это ~130-140 MiB/sec. Возможно используя mbuffer можно сгладить и
уменьшить эту скорость во время того, когда она доходит до конца и
меняет направление чтения, но у меня сомнения. bondcat бы тут отлично
справился.

    [оставить комментарий]