- Для начала стоит нарисовать сеть
У меня получилось примерно так (фиолетовый роутер, красные свитчи, синие и бирюзовые (хо какой цвет) конечное оборудование, зеленые точки доступа)
- Далее смотрим на потоки данных
2.1. Как уже написал @kalobyte - связь в одном сегменте сети идет через свитчи, а между сегментами как правило, через роутер. Это значит, что даже в рамках отдельного vlanа у меня внизу кластер PVE, то трафик между узлами ходит только через свитч, а если между разными сегментами или интернет, то уже идет через роутер.
2.2. Далее мы смотрим на весь путь трафика - отправитель, кабельная линия, свитчи, потребитель - Берем условную задачу заливки видео с компа на сервер (допустим, вы говорите по 10G сеть)
3.1 На компе должен быть сетевой интерфейс на скорости 10G
3.2. Он подключается в свитч в 10G порт
3.3. Свитч соединяется с другим свитчем на 10G скорости
3.4. В конечном свитче подключение идет в 10G порт
3.5. Этот кабель подключается в 10G порт на сервере - А теперь мы отрисовываем еще задачи, например
4.1. Запись видеопотока с камер
4.2. Просмотр фотографий с видеохостинга локального
4.3. Бекапирование виртуалок
4.4. Просмотр видео в на телефоне через wifi - Берем для каждого подпункта из 4 пункта поток и отрисовваем его как показано в 3 пункте, и все это накладываем друг на друга с неким коэффециентом (оператор на самом деле точно так подключает 100 квартир в доме на скорости ДО 1Г оптическим кабелем на скорости 10-40Г , но никак не 100Г)
- Смотрим тонкие места, на основе этих потоков, например, на моей схеме центральный свитч полностью 10G с SFP портами и подключается к другим свитчам тоже на скорости 10G, конечные устройства на скорости 1/2.5G, планирую повышать до 10G скорость для пары узлов, в основном NAS и комп, ну т.е. на текущей скорости, если
6.1. Плойка качает с интернета
6.2. ТВ смотрит рип с NAS
6.3. Я с телефона смотрю видео c Rutube
6.4. И одновременно заливаю фотки в фотогалерею
6.5. И т.д У меня условные 8 потребителей на скорости 1G подключаются к корневому свитчу DAC кабелем на 10G, 10G DAC кабель идет на роутер и на свитч проксмокса, то эти 8 потребителей на крайнем правом свитче все равно не могут упереться в скорость интерконнекта между остальными свитчками и роутером
6.5. На роутере интернет 1G, а линк роутера с локалкой 10G это значит, что я могу заливать видео на Youtube и при этом у меня на руитинг еще остается 9G - Далее оптимизируем, схему, если это надо
7.1. Можем добавить отдельный свитч, например, для связи узлов кластера между собой, чтобы трафик ходил максимально быстро
7.2. Можем добавить агрегацию линий,например, соединить сервер не 1 кабелем, а 2мя, ну или 2 свитча между собой тоже несколькими линиями (но тут есть нюансы)
7.3. Если надо, то повышаем скорость какого-то линка, например, NAS одновременно может обслуживать несколько потребителей, если у вас условно на нем 10G, а на всех клиентах по 1/2.5G, то понятно, что каждый клиент будет иметь максимальную скорость для себя, а NAS будет отдавать несколько потоков по 1/2.5/5G в общий линк 10G
7.4. Если схема проще и есть 10G NAS и 1G комп + пару телефонов на 2.4ГГц, то понятно, что профита в 10G интерфейсе не будет и все будет упираться в конечных потребителей - Далее прорабатываем программную составляющую сети
8.1. 10G мало какой роутер может прокачать, мой микротик почти за 33 тысячи в ДНС заявляет, что может, нооооо, надо очень постараться с тюнингом правил, поэтому стараемся не нагружать его, соответственно стараемся максимальный трафик гонять в одном L3 сегменте, не перекачивая между разными
8.2. Можно выделить отдельный L3 сегмент или физический или vlan с jumbo frame, у меня MTU 9000 дал прирост по передаче больших файлов процентов 5 даже без тюнинга NFS, а он еще процентов 5 должен дать минимум - Дальше смотрите на программно-аппаратную составляющую вашу систему, понятно, что 1 HDD диск на 1 TB никак не сможет утилизировать возможности сети, которые вы заложили в предыдущих 8 пунктах
9.1. Я начал тюнить traefik под такие скорости и грешным делом даже думал уйти с него
9.2. Тюнил NFS и MTU как раз для снижения количества служебнного тарфика, который надо обрабатывать и пересылать
9.3. Докидываем оперативки для arc кеша, ставим SAS диски вместо SATA, добавляем SSD кеш в ZFS пул
9.4. Учитываем характер нагрузки, например, худшее, что может быть для дисков и NAS это торренты - куча произвольных чтений по всему диску, которые невозможно закешировать, а IOPS убивает всю производительность, а вот если вы залили ISO образ и устанаваливаете с него операционку или по iscsi крутите виртуалку на 50-100ГБ, то вполне вероятно, что SSD и RAM кеш позволит выдавать 10G скорости при слабых HDD дисках т.к. все и так будет лежать в оперативке или SSD кеше
9.4. У меня диски не большие, но есть отдельный HDD для торрентов, отдельные рейды для бекапов и основных данных, это позволяет как раз таки одновременно качать фильм на один диск и загружать ISO образ на другой + незаметно в фоне еще выполнять регламентные задания по бекапированию (на данный момент PBS сообщает о 443 бекапах) и тут 1G сети уже мало
9.4. Если каких-то данных не очень много, но нужна высокая скорость доступа, то рассмотрите локальное SSD хранение, например, у меня NVME накопители в PVE кластере, а HDD рейд монтируется точечно для хранения больного количества данных. Нампример, тот же immich для поиска и каталогизации фоток спокойно живет на 20-30ГБ nvme накопителя.
9.5. в ряде случаев можно убрать дополнительные слои абстракции, например в докереnetwork_mode: hostпрописать, может отказаться от докера, например, торрентокачалка у меня в lxc контейнере с alpine linux и без докера (qbittorrent-nox в alpine edge всегда в актуальной версии)
9.6. Тюнить сетевой стек, буферы и т.д. секас с модулями ядра иsysctlв помощь
9.7. Может потребуется покупка серверных сетевых карточек вместо встройки или дешевых PCI-E, я до этого еще не дошел, но есть видел тесты, где многопоток на интеле хорошо работает как с точки зрения сетевой карточки, так и загрузки центрального процессора
9.8. Если используется кластер, то минимизируем обмен данными по сети, например, у меня миник с Truenas крутит в себе еще и qbittorrent и jellyfin и PBS и borg как раз таки, чтобы лишний трафик не качать по сети а держать в рамках виртуальной сети внутри гипервизора - Проводите нагрузочное тестирование, находите тонкие места и правите их, можете в процессе откатиться на 1 шаг и все переделать или ковыряетесь в 9
Итого
- Задача комплексная и однозначного ответа дать нельзя, ну т.е. если вы раздаете торренты с одного HDD диска на скорости 10G, то тут сложно что-то предложить и скорее всего будет упираться в скорость самого диска, но в других задачах можно оптимизировать и постараться выжать больше, чем есть на старте (напрмиер, под медию я понял, что 16ГБ оперативки мне не хватает и недавно поставил 32ГБ и стало прям лучше)
- Ну после этого понятно, почему я городил такую схему и даже в новой версии, которую не успел залить на форум у меня еще и authentication proxy кластеризируется и крутится в одном docker compose с traefik на каждом сервере
- Управляемые свитчи однозначно полезны, как минимум для мониторинга того, что происходит, ну и даже MTU поднять легко можно с выделением vlan
- Сегментирование сети вообще это первое, что будут делать сетевые инженеры, т.е. L2 сегмент на 1000 компов и на 3-4 офиса в один прекрасный день просто упадет, DMZ в целом тоже рулит, но надо понимать, что это будет снижать нагрузки по мультикасту, что хорошо, но повышать нагрузку на роутер, а в домашней сети сегментирование больше для безопасности, например, выделить гостевой wifi, камеры, IOT сеть умного дома, DMZ в целом ок, но, 10G будет очень дорого стоить
- Ну и в продолжение предыдущего пункта если я выбираю между быстрым китайским свитчем на 2.5G меди и фирменным, как тут выше описывался но на 1G. то я выберу первое
- Сейчас в принципе отказался от фирменных свитчей, да, роутер должен быть хороший, но L3 свитчи с dot1x, voice vlan и прочими фишками дома не особо нужны
- Ну и тесты и тюнинг, потом еще раз тесты, потом тюнинг. Высокие скорости требуют оптимизации и глубоких знаний сетей и операционок, нельзя просто воткнуть крутую сетевушку и получить профит во всем
