Будни сетевика
1.07K subscribers
89 photos
7 videos
35 files
114 links
Блог про сети, CDN, менеджмент, интересные наблюдения, рабочие задачи и немного о том, как живут сетевики. Для связи - @ipatov_ds.
Download Telegram
Cisco Secure Firewall Management Center Software Authentication Bypass Vulnerability

Понятно, что не стоит выставлять в Интернет то, чего там быть не должно, но иметь CVSS Score: 10.0 все равно неприятно. Кому актуально, наверно стоит обновиться 🙂

🎤 Будни сетевика 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯31
Как мы отправили сисадмина поставить сервер в Антарктиде

Прочитал статью про запуск сервера в Антарктиде, в Беллинсгаузене. На первой работе у меня было много командировок и в удаленных регионах вот прям всегда нужно было выдумывать нестандартные решения как при монтаже, так и при организации связности и пока читал статью завидовал белой завистью, последние 10 лет командировки у меня либо в Москву, либо на Linkmeetup(если он не в Москве), но это мой выбор, не жалуюсь (семья и все такое), просто ностальгия. Немного об этом писал тут.

На серваке можно было взять VPS, но в комментах пишут, что временно отключили, видимо кто-то с кем-то не договорился. На сайте в списке Дата Центров Беллинсгаузен еще висит (неактивен):
Следующий статус‑апдейт опубликуем до 13.03.2026, 14:00 МСК
🔥83
Сети в Kubernetes: руководство для сетевого инженера

Статья не даст полного понимания как работают сети в Kubernetes, скорее это справочник по основным подходам.

Интересно, как местами автор пытается провести параллели между сущностями из мира Kubernetes и сетями, например:
Service Mesh — это как развертывание IPS/IDS на каждом сегменте сети. Да, это дает полную видимость и контроль. Но это стоит ресурсов, и если у вас небольшая сеть — overhead не оправдан.


P.S. Скорее всего, статья была отформатирована с помощью нейронки, но тем не менее, мне понравилась.

🎤 Будни сетевика 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14🤝1
Kubernetes-Networking-Cilium.pdf
10.2 MB
Закрываем тему сетей в Kubernetes докой от Isovalent - Kubernetes Networking and Cilium An Instruction Manual for the Network Engineer. Она уже публиковалась в различных каналах, креплю на случай, если кто пропустил.

🎤 Будни сетевика 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍3🤝1
Network Performance in the Linux Kernel, Getting the most out of the Hardware

Доклад и презентация от Bootlin.

Доклад про то, как организована высокопроизводительная работа с сетью в ядре Linux. Автор объясняет, как пакет проходит через систему (от патчкорда до приложения) и какие есть механизмы, чтобы эффективно использовать многоядерные процессоры.

▎Что отметил (без какой-то структуры)

Верхнеуровнего про путь пакета

Пакет попадает в NIC, далее MAC-контроллер с помощью DMA записывает его в оперативную память, не нагружая CPU. После записи данных NIC посылает сигнал (IRQ), чтобы сообщить CPU о новом пакете. Есть NAPI - современный механизм, который отключает прерывания на время обработки пачки пакетов. Вместо одного прерывания на пакет, ядро обрабатывает их пачками, что снижает нагрузку на CPU.

Описываются механизмы

🟢 RSS (Receive Side Scaling): Аппаратный механизм. Сетевая карта сама хэширует заголовки пакета (5-tuple) и на основе хэша раскладывает их по разным очередям. Каждая очередь привязана к своему ядру CPU.

🟢RPS (Receive Packet Steering): То же, что и RSS, но программно в ядре. Полезно, если у сетевой карты мало очередей.

🟢RFS (Receive Flow Steering): Улучшение RPS. Следит за тем, на каком ядре работает приложение и направляет пакеты именно на это ядро для попадания в кэш.

🟢XPS (Transmit Packet Steering): То же самое, но для отправки пакетов, чтобы очередь на отправку была привязана к нужному ядру.

🟢Механизмы Offloading: Чтобы ядро делало меньше работы, часть задач перекладывается на сетевую карту:

- Checksum: Проверка целостности заголовков сетевой картой на лету, ядро оставляет поля пустыми

- Filtering: Аппаратная фильтрация до того, как они попадут в ядро. Приводятся примеры MAC и VLAN filtering.

🟢Data insertion and segmentation: Сетевая карта может добавлять VLAN-теги на лету

🟢TSO (TCP Segmentation Offload): Сетевая карта сама нарезает большие куски данных на мелкие TCP-сегменты. Хорошее описание как это работает тут.

🟢XDP (eXpress Data Path): Самый быстрый путь обработки. BPF выполняется прямо в драйвере сетевой карты, как только пакет появился в памяти. Это позволяет дропать или перенаправлять пакеты с большой скоростью, до того как ядро начнет их полноценно обрабатывать.

🎤 Будни сетевика 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍215🔥22
Вчера с коллегами были на 4-м митапе Like a Bar, организатором которого является Сергей Бочарников.

Благодарности организатору и участникам

Во-первых, спасибо что в СПб - редко что-то у нас проводят. Во-вторых, классная атмосфера - 50-60 инженеров на одной волне, которые что-то обсуждают, делятся рабочими историями и проблемами. Были напитки, пицца и даже мерч с Питерской тематикой - чувствуется большая работа по подготовке. Встретил своих подписчиков, оказывается это реальные люди, которым даже бывает полезно в работе то, чем я тут делюсь. Значит будем продолжать.

Доклады

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

Разработка системы сетевой автоматизации Autonet в MWS.
Полезно, взял несколько идей на заметку. Каждый доклад про автоматизацию наводит на мысли, что наш подход самый простой, надежный, отказоустойчивый и «дешевый», но тут главное не забывать, что автоматизация должна решать конкретные задачи, а не быть самоцелью.

Отказоустойчивый Netbox.
В принципе, готовая архитектура для прода, можно брать и делать также, кому актуально.

Все презентации должны опубликовать на канале у Сереги - @like_a_bus_channel


🎤 Будни сетевика 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍62
Сегодня в один из наших ЦОД в СПб (Linxdatacenter, ул. Репищева, 20), для сотрудников и их детей была организована небольшая экскурсия по основным зонам ЦОД, доступным для посещения.

Кратко рассказали/показали:
- Комнату пожаротушения
- Аккумуляторы
- Часть датчиков дежурных по ЦОД, их инструменты
- Кроссовую
- Комнату подготовки оборудования
- Наши стойки, которые мы арендуем в ЦОД

Я добавил пару слов про свои любимые коммутаторы/маршрутизаторы.

Я туда поехал конечно только ради сына, потому что до Okko работал в Linx’e почти два года, да и потом еще ездил несколько раз в неделю, когда уже работал в Okko, поэтому до сих пор помню почти все номера наших стоек и где они находятся. А вот младшему специалисту понравилось, на обратном пути задавал много вопросов из серии чем сервер отличается от маршрутизатора, можно ли поставить дома сервер без охлаждения и сколько он проработает и тд.

P.S. Хорошо, что не спросил чем маршрутизатор отличается от L3-коммутатора

🎤 Будни сетевика 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍93
Peering.pdf
1.7 MB
Попался набор файликов на сетевую тематику от некоего Hugo Pena – IP Consulting Engineer.

🔍BGP Segment Routing Using the Prefix SID Attribute
🔍DHCP Server Failover in 7750 SR
🔍BGP Link State
🔍Network Telemetry
🔍Quality of Service
🔍Border Gateway Protocol
🔍BGP FlowSpec
🔍Peering – The Game of Relationships

Часть из них составлена по документации от Nokia, но есть и на общие темы. Может будет полезно.

🎤 Будни сетевика 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥2
Задача: настроить шилдинг в CDN без выделенных железных серверов.

Представим, что у вас есть CDN, но нет необходимости/желания/денег ставить выделенные железные серверы под шилдинг(shielding). Шилдинг - это дополнительный уровень кэширования для защиты origin(источник контента), чтобы запросы от edge к origin шли через промежуточные серверы. Он необходим для снижения нагрузки на origin, так как edge-нод может быть очень много и если каждая будет обращаться к origin напрямую, то он начнет погибать под нагрузкой. С шилдингом на origin всегда будет обращаться только выделенная группа серверов.

Архитектура
Есть 3 раздающие edge-ноды и 2 origin-сервера:

🔍edge-ноды: edge1, edge2, edge3
🔍софт: Nginx
🔍origin: origin1, origin2

Будет использоваться директива split_clients на каждой edge-ноде. Она делит запросы на три равные части (по 33%):

🔍33% - остаются на текущей edge-ноде и уходят напрямую в origin
🔍33% - уходят на первую соседнюю edge-ноду
🔍33% - уходят на вторую соседнюю edge-ноду

При этом split_clients гарантирует идемпотентность(красиво звучит): один и тот же $request_uri всегда попадает в одну и ту же группу. Благодаря этому 99% запросов к кластеру стабильно распределяются по всем трём edge-нодам и далее на origin без «скачков».

Пример конфигурации для архитектуры из 3-х edge-нод.

Ввиду ограничения на количество символов в одном посте, конфигурация упрощена до минимально необходимой, чтобы показать логику работы.

Базовый апстрим для origin на каждой edge-ноду:
upstream origin{
server origin1;
server origin2;
}


Апстримы для шилдирования на соседние edge-ноды:
upstream edge1-shield {
server edge1;
server origin1 backup;
server origin2 backup;
}

upstream edge2-shield {
server edge2;
server origin1 backup;
server origin2 backup;
}

upstream edge3-shield {
server edge3;
server origin1 backup;
server origin2 backup;
}


Итого, каждый апстрим смотрит на соседа по кластеру и бекапом на origin.

Далее настраиваем распределение трафика через split_clients на каждой edge-ноде.

edge1
split_clients $request_uri $upstream_backend {
33% origin;
33% edge2-shield;
33% edge3-shield;
* origin;
}


edge2
split_clients $request_uri $upstream_backend {
33% edge1-shield;
33% origin;
33% edge3-shield;
* origin;
}

edge3
split_clients $request_uri $upstream_backend {
33% edge1-shield;
33% edge2-shield;
33% origin;
* origin;
}


Как это работает.
$request_uri - ключ, на основе которого происходит распределение/хэширование.
$upstream_backend - переменная, в которую будет сохранён выбранный upstream.

То есть для примера 33% origin - это если хэш попадает в первые 33% диапазона, то переменной $upstream_backend присваивается значение origin.
* - значение по умолчанию для оставшихся случаев (1%).

Далее в location эта переменная используется для указания апстрима, например:
location / {
proxy_pass http://$upstream_backend;
}


То есть в зависимости от того, в какой диапазон попал хэш $request_uri$, upstream_backend может принимать значения:
🔍origin
🔍edge1-shield
🔍edge2-shield
🔍edge3-shield

Это актуально, когда 50-100 edge-нод начнут идти за одним и тем же контентом на origin и ему станет тяжело, как минимум можно быстро упереться в емкость сетевых карт.

С использованием split_clients (один uri):
Клиент1 -> edge1 -> edge2 -> origin (edge2 кэширует)
Клиент2 -> edge1 -> edge2 -> из кэша edge2 (без origin!)
Клиент3 -> edge2 -> из кэша edge2 (без origin!)
Клиент4 -> edge2 -> из кэша edge2 (без origin!)
Клиент5 -> edge3 -> edge2 -> из кэша edge2 (без origin!)
Клиент6 -> edge3 -> edge2 -> из кэша edge2 (без origin!)


Работает только на уровне одного кластера edge и если их много (в разных городах), то каждый все равно будет обращаться на origin, но уже не каждая edge-нода!

Мы это использовали для определенного типа трафика, при котором origin-серверов было минимальное количество, была опасность их «положить».

🎤 Будни сетевика 😊 #Задача
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111🔥1