Быстрая сеть в домашней лаборатории или как я связался с InfiniBand

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

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 статья.

Комментарии 47

    +1
    SX6036 это Ethernet свитч?
      0
      Он Infiniband/VPI, то есть что-то про Ethernet должен уметь.
      В фичах есть InfiniBand to Ethernet Bridging, но как это работает — я толком не знаю.
      И есть нехорошее подозрение, что будет нужна отдельная лицензия на это.
        +1
        Вот эти модели могут, но требуют лицензии шлюза. Если купили на ebay то не факт, что лицензия будет установлена:

        To obtain the 56GbE/FDR VPI capability, select the following systems in your network:
        • SX6012F, SX6012F, SX6036F, SX6036G
        • SX1012, SX1036


        For example,
        SX1036 and SX6036T/F can be selected as the switches in your network. The switch
        profile can be changed from Ethernet to InfiniBand, from InfiniBand to Ethernet, or to
        VPI through simple commands after a license upgrade.


        Отсюда

          +1
          Родные не подходят под определение бюджетных.
          Мне сейчас едет 6012, но с EMC-шной прошивкой.
          В инете есть инструкции, как его сделать нормальным.

          Если всё получится, можно будет вторую часть статьи писать
            0
            А нужен ли коммутатор в домашних условиях? 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 там вообще не использовался.
              0
              Если коммутатор дешёвый и бесшумный — то почему-бы и не завести его дома? Я и статью-то написал, чтобы рассказать, что такое возможно.
              Делать непонятно какую топологию — упражнение интересное, но несколько бесполезное. И проще тогда в Ethernet режиме, чем возиться с кучей фабрик. Но маршрутизировать 40G на процессоре? Началось-то всё с того, что хочется скорости.

              PS: Например у ConnectX-5 есть фича Host Chaining — они умеют сами без маршрутизатора аппаратно делать кольцо. Но это пока совсем не бюджетно.
      0
      эксперименты ради экспериментов — всегда хорошо :)
      на практике бы еще это использовать, когда сеть быстрее дисков.
      Мне дома, на ум, приходит в голову только сбор бекапов с разных компов на разные массивы.
        0
        Да и в реальности оказывается, что в домашних задачах тормозит далеко не сеть, а софт:)
        Зато 40гбит дома звучит круто! Можно хвастаться.
          0
          Домашние задачи бывают разными :)
          Мне нужна была лаба для опытов с Live VM Migration. И на 1GbE это было совсем не весело.
            0
            Эм, ливмигрейшен всей виртуалки с диском что ли? А то для переброс на другой узел кластера запущенной с общего девайса виртуалки как-то на паре гигабитах вполне себе весело происходит)
              0
              Конечно с диском, чтобы шареный сторадж ещё не заводить.
              И если у виртуалки скажем 8+GB RAM и там что-то делается, а не LA 0.01, то она на гигабите вообще никуда не уедет :( Память будет обновляться быстрее, чем 100MB/sec.
                0
                а, не, у нас реальная задача и полка с двумя контроллерами, поэтому на 2 г/б мигрируют виртуалки с десятком гигов оперативки шустренько)
                  0
                  А я видел, что пока апач не остановишь — веб сервер никуда ехать не хочет. В итоге пара минут даунтайма.
                    0
                    У нас внутренний портал и кластер на hv, видимо разные нагрузки или ещё какие оптимизации мс применила.
                      0
                      Нагрузки точно разные
                      У нас KVM, можно было libvirt подкрутить, чтобы и при большем рассчитанном таймауте виртуалку всё равно отправляла, но это не решение на перспективу
          +2
          на практике бы еще это использовать, когда сеть быстрее дисков.

          Первое, что приходит в голову — это собрать на этой сетке Ceph кластер. При достаточном количестве дисков получившийся storage будет быстрее индивидуальных дисков.

            0
            блин, с надежностью проблема у таких решений. а дома как то такой кластер нафиг не уперся
          +3

          Сейчас кстати не обязательно IB, есть море почти бесплатных карточек на 10/40GbE. Свичи бу тоже есть в наличии. А не из бу за разумные деньги я даже думал домой что-то типа такого купить MikroTik CRS354-48G-4S+2Q+. Все равно много портов сильно быстрых не надо.

            0
            IB — не был самоцелью, если что.
            ConnectX-3 тоже 40/50GbE умеют. А что ещё есть за $25 на 40+GbE и желательно два порта?
            И можете назвать Б/У 40GbE свитч за сравнимые с IB деньги? Уточню, 2 порта — не годится, мало, хотя-бы 4 для опытов надо, а лучше 8. Пытался искать, но не нашёл :(
            PS: $500 — разумным считается с очень большой натяжкой
              +1
              Я когда-то давно брал 2 вот такие «HP 544QSFP MCX354A-FCBT» по 40$. Не 25$, но 2 порта:)
              Микротик за 500 — новый с гарантией, так что это слегка другая история, но 500 за такую железку на момент выхода вроде было лучшим предложением.
              На тему свичей я особо не интересовался, мне больше 2-3 нод совсем не надо было, а 3 ноды можно и просто карточками связать. Ebay говорит, что вот такое «Dell Force10 Z9000 32 Port 40GbE» продается за 200, что дороже IB, но зато 32 порта…
              Кстати тот Микротик еще имеет 4 SFP+, которые теоретически превращаются как раз в 40GbE, так что 3 ноды уже можно заиметь.
                0
                HP 544QSFP MCX354A-FCBT — это и есть перебрендированный ConnectX-3. Они под разными именами бывают (HP 649281-B21 тоже самое). И как раз за $25 на ебее попадаются.
                Я сначала тоже на 2-3 компа игрался, но захотелось общую сеть, а не попарно.

                Dell забавен, но огромен и доставка цену удвоит. Надо бы повнимательнее посмотреть, что у них из half-rack есть, то, что я находил типа Dell S4112F-ON / Dell S5212F-ON — это уже новее поколение.

                4 SFP+ — не превращаются в 40GbE, увы. Вот наоборот — это бывает.
                  +1
                  4 SFP+ — не превращаются в 40GbE, увы. Вот наоборот — это бывает.

                  Я думаю имелся в виду EtherChannel
                  Это конечно не 40G интерфейс, но это 40G throughput
                  Хотя я с достаточной долей скепсиса отношусь к возможностям микрота в плане производительности. Он все-таки больше про гибкость и функциональность софта.
                    0
                    Это конечно не 40G интерфейс, но это 40G throughput

                    Но не для одной TCP сессии...

                      0
                      Могу ошибаться, поскольку вживую потыкать сейчас не на чем.
                      Но в своей вики они утверждают про некий Balance-rr мод для агрегированных интерфейсов, который is the only mode that will send packets across multiple interfaces that belong to the same TCP/IP connection.
                      Вполне возможно что в лабораторных условиях между двумя тиками оно и взлетит, как это будет работать вживую с разным железом на концах линков — тут только практика покажет
                        0

                        Это работает, но так как интерфейсы не идеально одинаковые, то RR вызывает прибытие пакетов вне очереди. Что для TCP нештатная ситуация и происходит reordering.


                        Без тюнинга TCP стэка это обычно приводит к падению производительности даже ниже 1 интерфейса из бонда т.к. окно реордеринга маленькое и пакеты просто дропаются.


                        Если увеличить это окно то у меня получалось из 4 гигабитных линков выдавить 2-3 гигабита.


                        В общем, так себе.

                          0
                          Это прискорбно.
                          Хотя при отсутствии альтернатив выдавить хотя бы 2-3гигабита на гиговых линках уже выглядит как не самый плохой выход.
                          А в LACP/PAGP все так же печально выглядит? Меня пока сия чаша минует возможностью перепрыгивания как раз через смену интерфейсов 1->10->40_сейчас->100_в_планах, но в какой-то момент стоимость порта все-таки станет неподъемной и придется агрегировать
                            0
                            Хотя при отсутствии альтернатив выдавить хотя бы 2-3гигабита на гиговых линках уже выглядит как не самый плохой выход.

                            Да, у меня так работало какое-то время для синхронизации двух серверов без особых проблем. Но, например, подореваю что в некоторых случаях латентность страдать будет т.к. TCP будет ждать пока все пакеты вне очереди соберёт...


                            А в LACP/PAGP все так же печально выглядит?

                            Там, да и в любом другом алгоритме балансировки кроме RR и active-passive, заголовки пакетов (IP получателя-отправителя/порты либо маки) хешируются и один поток данных всегда пойдёт через 1 интерфейс.


                            Т.е. увеличения скорости не будет, но и реордеринга не будет.

                  +1
                  Про большие свичи на 24+ порта особенно с L3 на 40GbE надо помнить, что они могут жрать как не в себя, например Cisco Nexus особенно старые могут легко сожрать 500+ Ватт, ну и уровень шума у них соответственный. Например упомянутый Dell Z9000 имеет Max. power consumption: 789W
                    0
                    Шуметь они обучены, это точно. Я первый раз, как включил, аж вздрогнул от неожиданности.
                    Не каждую Enterprise штуковину можно использовать дома на постоянной основе.
                    0
                    Можно же, неверное, воткнуть несколько карточек в один ПК/сервер и сделать софтовый свич?
                    Банально даже настроить бридж между картами, без всяких VLAN-ов.
                      +1
                      Можно, конечно
                      Только работать будет медленно
                      +1
                      32 портовый коммутатор в домашних условиях? Самолёт в спальне?
                  0
                  А можно по подробнее про то к чему это подключено и про задачи? Использовали ли такую фишку Infiniband как RDMA? Для себя пока остановился на 10Gb на микротике (3 хотса с VSAN и один для с ZFS под iSCSI), но да vMotion в сеть упирается.
                    0
                    Изначальная задача — лаба для экспериментов с виртуалками (ESX/Xen/KVM). Интересно было всё пощупать.
                    Подключено к рандомным десктопам, от целерона до i7, тут ничего хитрого.
                    RDMA — пробовал, виртуалки мигрируют, трафик стандартные средства Linux естественно не видят, но по ощущениям быстро. NVMEoF — тоже заводилось. Но дома смысла это держать постоянно — нет. И по базовой самбе всё неплохо бегает (см. КДПВ)
                    0
                    Мне бы вот просто и без излишков на 2500 Мбит/с, но я не нашёл ни одного простого бытового роутера с такими скоростями.
                      +1
                      Для бытовых — пока рановато.
                      А так например интересная штука Netgear MS510TX
                        0
                        Ну вот о чём я и говорю. Нет фигни, которую я мог бы в одну сторону воткнуть провайдера с PPTP (будь он проклят), а в другую ПК и NAS на 2,5Гб/с, парочку других устройств и WiFi.
                          +1

                          Я думаю 2.5 для PPTP смысла не имеет, проц не вытянет да и BRAS вряд ли. Или вам 2.5 только с LAN стороны надо?

                            0
                            Или вам 2.5 только с LAN стороны надо?

                            Именно, у текущего провайдера только 100 мегабит, а вот быструю сетку с NAS иметь хотелось бы.
                              +1

                              У нас провайдер с недавних пор раздаёт такие коробочки с одним LAN 2.5Gbit портом, но там и аплинк оптика на 10Gbit.


                              Также есть Asus RT-AX86U, но там тоже один порт только. А так всегда можно разделить роутер и свитч, если аплинк быстрый не нужен.

                                +2
                                Посмотрите «QNAP QSW-1105-5T 5-Port Unmanaged 2.5GbE» если надо только внутри. 100 баксов сие удовольствие стоит. Альтернатив вроде пока нет :(
                                  –1
                                  Ну в итоге выходит роутер — свитч — все ПК. Такое себе, не уверен, что всё будет правильно работать.
                                  0
                                  странно… что-то глюки с комментами
                                    –1
                                    Да и не только с комментариями.
                          0

                          Я ищу свитч для дома который может 10Гбит.
                          Кабеля проложены Кат7 материнкы выпускаются уже с 10Гбитным интерфейсом, но вот со свитчем как-то непонятно все или дорого.

                            0
                            Имеется D-Link DGS-3120-24PC, у него сзади имеются два разъёма CX4 для стекирования, но они вроде как должны работать и как IB на 40Гбит/с, в веб-интерфейсе их видно…
                            Лично не пробовал, т.к. есть два минуса:
                            — порта всего два;
                            — в NAS такое не вкорячишь (даже если у некоторых и имеется слот расширения).

                            Сам коммутатор покупал на иБее и с доставкой в Россию он вышел около 7 тыщ. рублей, но есть минус: расширенную российскую прошивку в него не зальёшь! Вариант без PoE выйдет ещё дешевле.

                            Перед покупкой посматривал на hp ProCurve E5406 ZL (J8697A) — можно напихать 6 разных модулей в шасси, в том числе есть CX4 и разные десятигигабитные — но вес и цена доставки этого гробика…
                              0
                              Отличные домашние решения, лучше не придумать.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое