From: Sergey Matveev Date: Fri, 25 Feb 2022 08:59:04 +0000 (+0300) Subject: Попробовал bondcat X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=0e761dc769284faf8337b7527301dd845d4d6a51;p=stargrave-blog.git Попробовал 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 бы тут отлично справился. ---