Пусть надо мной посмеются сетевые инженеры в больших интеграторах, у которых есть доступ к топовому оборудованию за кучу килобаксов. Я хочу рассказать о том, как можно получить свою домашнюю сетку, которая будет быстрой, и не разориться.
tl;dr Если кому интересно, то сейчас такая ситуация, что пару десктопов можно связать 56Gb сеткой за <$100+доставка из штатов. Если хочется больше компьютеров, то это <$100 за 12 портовый свитч 40Gb и ~$60 за десктоп, плюс доставка. Но это всё б/у и ноль гарантий.
Заранее извиняюсь, но аббревиатур будет много. И это не реклама - всему этому оборудованию уже лет как много, оно уже не поддерживается производителем и легко ищется б/у на eBay за очень недорого, по сравнению с ценами на новое от производителя. Но должен сказать, что новое (анонсировано в конце 2020) - уже почти на порядок быстрее. Так что это всё про домашние эксперименты и самообучение.
Медный век
Когда появился в домашней лаборатории второй компьютер, а это год 2013, то в какой-то момент стало понятно, что скорости Ethernet в 1Gb - маловато будет, а хочется экспериментов. Стал выяснять, что же есть в природе на тот момент. 10GbE было ужасно дорого, и нашлись карточки производства Mellanox. Кроме Ethernet, они умеют и InfiniBand (это важно в дальнейшем). Можно почитать на Wiki, чем они отличается, но кроме всего прочего - IB умеет и IP over IB, а это ровно то, что нужно для нормальной жизни. Большим плюсом было то, что б/у адаптеры на eBay продавали чуть-ли не за копейки ($20-30). Поэтому было куплено сразу три (одна про запас) Mellanox-овские карточки MHEH28-XTC, которые умеют и InfiniBand SDR и Ethernet 10GbE, но имели странный разъем CX4. Также за пиво были найдены 3 кабеля (длиной всего 0.5м, но для лабы - самое то).
Дальше пошли всякие эксперименты, скорость передачи файлов по сети 600-700MB/s была получена. На RAM диске конечно, мои SSD в то время больше 250-300MB/s не умели.
Главное, что в этот момент у меня произошло в голове - когда сеть быстрее дисков, это совсем другие возможности. Становится неважно, где находится сетевой диск, например. Он не медленнее локального. И например с живой миграцией виртуалок гораздо веселее, но это отход от темы.
Как известно, аппетит растет во время еды, поэтому апгрейд. Нашлись MHGH28-XTC, которые уже умеют InfiniBand DDR, а это уже 16Gbps. Выяснилось, что не все кабели одинаково полезны, скорость не выросла, пришлось искать новые. Нашлись медные, но аж 8 метров длины, и ощутимо тяжелые, это вам не Cat 5/6. С ними измерения показали до 1600MB/s, и до более тонкого тюнинга руки не дошли. Диски и рейды, что были - всё равно медленнее.
Следующий апгрейд, самый бестолковый, MHJH29-XTC, умеют аж QDR - 32Gbps. Только выяснилось, что Firmware для этих новинок - есть только очень старая. Такая, что под Win ничего работать даже не собирается. Хорошо хоть, что Linux выручил. Но ничего не работает на скорости QDR на старых кабелях, а кабели для скорости QDR найти - нереально.
И вылезла другая очень важная проблема - если хочется соединить больше двух компьютеров, то нужен свитч. И это была большая проблема. Обычно это такие Enterprise звери, которые при включении издают звуки, как будто собираются улететь на реактивной тяге. Что для дома - не вариант. А маленького, тихого и компактного - не нашлось в природе. Пришлось изучать вопрос дальше.
Оптический век
С первых опытов уже прошло пять лет, и год стал 2018. Насколько я понимаю ситуацию, и почему так произошло - штатовские дата центры начали (и закончили) апгрейды своих сетей, и на eBay появилась куча новых интересных б/у железок за гуманную цены. А именно карточки ConnectX-3, свитчи, и оптические кабели. Это уже не предания старины глубокой, а относительно новое железо.
SIDENOTE: как я понимаю, это из-за перехода с 10/40GbE на 25/50/100+GbE. И у них есть вопросы совместимости, поэтому старое просто утилизировали.
Что тут можно рассказать, сначала были куплены карточки и кабели. Причем они уже были настолько распространены, что искать не обязательно Mellanox'ы, есть тоже самое под именами HP/Dell/IBM, и они дешевле. Драйвера встроенные есть и в Win, и в Linux, работает всё почти само. Это всё железо умеет QDR/FDR10/FDR14, то есть по сути 40/56Gbps. Реальную скорость при правильной настройке можно 4700+MB/sec увидеть. Хоть диски и стали NVMe (PCI 3 все-таки), но сеть всё равно оказалась быстрее.
А самое хорошее - есть свитчи за разумные деньги (<$100 за 8/12 портов 32/40Gb). Например старенький IS5022, из недостатков - умеет только QDR, и кому-то может быть важно, что только 8 портов, из плюсов - можно держать дома и даже спать рядом, если доработать.
Вообще не шумит, если вентилятор Noctua, дует холодным воздухом, но совершенно не продакшен решение, конечно. Зато по ГОСТ 26074-84 и ГОСТ 8486-86.
WARNING: если кто-то захочет повторить - надо перепаивать провода у вентилятора, там другая распиновка. При попытке просто воткнуть обычный вентилятор - он не вертится, а начинает дымиться!
Или SX6005 - эти уже умеют FDR10 на 12 портов, но главный чип у них снизу, и просто бросить кулер сверху я пока не решился. Но собираюсь этот свитч раскурочить и попробовать. DIY, всё-же.
Есть ещё много разных вариантов, но все их расписывать - я не настолько разбираюсь в ситуации (Brocade ICX серию можно посмотреть).
У всего этого благолепия есть один важный недостаток - те два примера железок, что я выше привёл - это InfiniBand свитчи. Они не умеют Ethernet, и получается только IPoIB. Что из этого следует - Win/Linux машины прекрасно видят друг друга, общаются и всё работает отлично. Главная проблема для меня была - если вам нужны виртуальные машины и чтобы они видели друг друга по быстрой сети - просто так не получится, IB не маршрутизируется на level 3 (поправьте, кто умнее, если я тут чушь написал). Точнее сделать это с виртуальными машинами можно, но не на домашнем железе (SR-IOV нужен и проброс VF внутрь виртуалки), с муторным процессом настройки, плюс с миграцией отдельные заморочки.
К сожалению, пока на eBay нет дешевых 40/56GbE Ethernet свитчей (можете поискать SX1012, если интересно), с которыми можно было-бы поэкспериментировать. Придётся ещё несколько лет подождать. А там, глядишь, и до 25/100GbE можно будет в домашней лабе подобраться.
PS: С IB есть ещё всякие нюансы типа необходимости OpenSM где-то, если switch non-managed, но это всё-же не про настройку IB статья.
panvartan
SX6036 это Ethernet свитч?
atemik Автор
Он Infiniband/VPI, то есть что-то про Ethernet должен уметь.
В фичах есть InfiniBand to Ethernet Bridging, но как это работает — я толком не знаю.
И есть нехорошее подозрение, что будет нужна отдельная лицензия на это.
thatsme
Вот эти модели могут, но требуют лицензии шлюза. Если купили на ebay то не факт, что лицензия будет установлена:
Отсюда
atemik Автор
Родные не подходят под определение бюджетных.
Мне сейчас едет 6012, но с EMC-шной прошивкой.
В инете есть инструкции, как его сделать нормальным.
Если всё получится, можно будет вторую часть статьи писать
thatsme
А нужен ли коммутатор в домашних условиях? 2 компа можно и порт в порт подключить… И 3 тоже… И 4-е… Всё упирается в количество HCA и количесво партиций. Количество SM ничем, кроме здравого смысла, не ограничено, и SM не обязан находиться на коммутаторе.
2-х портовая карта — 2 фабрики. На одном компе один SM для фабрики А, на другом второй, для фабрики Б. С двумя HCA. Две двухпортовых HCA — 4-е фабрики. С помощью партиций, — хоть в кольцо соединяйте:
Each port GUIDs is treated individually even if two ports are part of the same physical HCA card
Только маршрутизацию на каждом узле делать придётся (IPoIB).
P.S.: Прочитал коммент ниже, и понял что цель это Ethernet а не Infiniband, а Infiniband HCA, — всего-лишь финансовая оптимизация.
С Ethernet, вышеописанный номер не пройдёт.
Шареный сторейдж можно на DRBD между 2-мя машинами сделать (IPoIB). Я такое на XenServer 5.7 (если память не подводит), делал.
Т.е. Ethernet там вообще не использовался.
atemik Автор
Если коммутатор дешёвый и бесшумный — то почему-бы и не завести его дома? Я и статью-то написал, чтобы рассказать, что такое возможно.
Делать непонятно какую топологию — упражнение интересное, но несколько бесполезное. И проще тогда в Ethernet режиме, чем возиться с кучей фабрик. Но маршрутизировать 40G на процессоре? Началось-то всё с того, что хочется скорости.
PS: Например у ConnectX-5 есть фича Host Chaining — они умеют сами без маршрутизатора аппаратно делать кольцо. Но это пока совсем не бюджетно.