RSS vs RPS vs RFS: кто распределяет сетевой трафик между CPU
На сервере 32 ядра, но при высокой сетевой нагрузке несколько ядер забиты под 100%, а остальные почти простаивают.
Проблема может быть в том, как входящие пакеты распределяются между CPU. В Linux для этого есть три механизма: RSS, RPS и RFS.
⏺ RSS - распределение на уровне сетевой карты
NIC вычисляет хеш по заголовкам пакета и выбирает RX-очередь. Каждая очередь обычно обслуживается своим CPU через IRQ/NAPI.
Проверяем количество очередей:
Если у карты одна RX-очередь, аппаратное распределение трафика ограничено.
⏺ RPS - распределение средствами ядра
Receive Packet Steering позволяет перенаправлять обработку пакетов на другие CPU уже после приёма через RX-очередь.
Смотрим маску разрешённых CPU:
RPS полезен, когда аппаратных RX-очередей мало, но добавляет межъядерную обработку.
⏺ RFS - распределение с учётом приложения
Receive Flow Steering идёт дальше. Он старается обрабатывать пакеты потока на том CPU, где выполняется приложение, которое их читает.
Это помогает уменьшить потери производительности из-за миграции данных между CPU-кешами.
Проверяем настройку:
⚡️ RSS выбирает аппаратную RX-очередь, RPS распределяет обработку по CPU, а RFS учитывает расположение приложения.
Но больше распределения не всегда означает выше производительность. На многоканальных NIC дополнительный RPS может только увеличить overhead.
N.A
На сервере 32 ядра, но при высокой сетевой нагрузке несколько ядер забиты под 100%, а остальные почти простаивают.
Проблема может быть в том, как входящие пакеты распределяются между CPU. В Linux для этого есть три механизма: RSS, RPS и RFS.
NIC вычисляет хеш по заголовкам пакета и выбирает RX-очередь. Каждая очередь обычно обслуживается своим CPU через IRQ/NAPI.
Проверяем количество очередей:
ethtool -l eth0
Если у карты одна RX-очередь, аппаратное распределение трафика ограничено.
Receive Packet Steering позволяет перенаправлять обработку пакетов на другие CPU уже после приёма через RX-очередь.
Смотрим маску разрешённых CPU:
cat /sys/class/net/eth0/queues/rx-0/rps_cpus
RPS полезен, когда аппаратных RX-очередей мало, но добавляет межъядерную обработку.
Receive Flow Steering идёт дальше. Он старается обрабатывать пакеты потока на том CPU, где выполняется приложение, которое их читает.
Это помогает уменьшить потери производительности из-за миграции данных между CPU-кешами.
Проверяем настройку:
cat /sys/class/net/eth0/queues/rx-0/rps_flow_cnt
Но больше распределения не всегда означает выше производительность. На многоканальных NIC дополнительный RPS может только увеличить overhead.
N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
PBR vs VRF: два способа управлять маршрутизацией
Обе технологии позволяют отправлять трафик не по обычной таблице маршрутизации. Но решают разные задачи.
⏺ PBR (Policy-Based Routing) выбирает маршрут по заданным условиям. Например, весь трафик из подсети
На Linux это можно сделать через
Теперь пакеты из этой подсети используют таблицу 100. Остальной трафик продолжает маршрутизироваться по обычным правилам.
⏺ VRF (Virtual Routing and Forwarding) создаёт отдельный routing domain со своей таблицей маршрутизации.
Например, на одном сервере работают две изолированные сети. У каждой свой default gateway, а адресные пространства могут даже пересекаться.
Создаём VRF:
Теперь
Посмотреть маршруты:
Главная разница в том, что PBR выбирает таблицу или маршрут по условиям, а VRF привязывает интерфейсы и трафик к отдельному домену маршрутизации.
N.A
Обе технологии позволяют отправлять трафик не по обычной таблице маршрутизации. Но решают разные задачи.
192.168.10.0/24 должен идти через второго провайдера, даже если default route указывает на первого.На Linux это можно сделать через
ip rule:ip rule add from 192.168.10.0/24 table 100
ip route add default via 10.0.0.1 dev eth1 table 100
Теперь пакеты из этой подсети используют таблицу 100. Остальной трафик продолжает маршрутизироваться по обычным правилам.
Например, на одном сервере работают две изолированные сети. У каждой свой default gateway, а адресные пространства могут даже пересекаться.
Создаём VRF:
ip link add vrf-blue type vrf table 100
ip link set vrf-blue up
ip link set eth1 master vrf-blue
Теперь
eth1 принадлежит VRF, а маршруты подключённых к нему сетей находятся в таблице 100. Для отдельного default route его нужно настроить дополнительно.Посмотреть маршруты:
ip route show vrf vrf-blue
Главная разница в том, что PBR выбирает таблицу или маршрут по условиям, а VRF привязывает интерфейсы и трафик к отдельному домену маршрутизации.
N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Один IP, два MAC: как ARP-конфликт ломает сеть
Два устройства случайно получили одинаковый IP-адрес. Оба доступны на L2, оба отвечают на ARP-запросы, но MAC-адреса у них разные.
Для соседних хостов начинается путаница. Один ARP-ответ связывает
В результате соединения периодически обрываются, SSH зависает, а ping то проходит, то нет.
⏺ Смотрим neighbor table
Запись может меняться между двумя MAC-адресами. Но это не обязательно происходит после каждого ARP-ответа: Linux учитывает состояние записи и правила её обновления.
⏺ Ловим конфликт
Если два устройства отвечают за один IP, в захвате можно увидеть ARP Reply с одинаковым sender IP, но разными sender MAC.
Дополнительно проверяем адрес через
Несколько ответов с разными MAC - сильный признак конфликта.
⏺ Что происходит с соединениями
Когда сосед начинает отправлять кадры на другой MAC, пакеты попадают не на тот сервер. Старое TCP-соединение при этом не переносится на новое устройство.
N.A
Два устройства случайно получили одинаковый IP-адрес. Оба доступны на L2, оба отвечают на ARP-запросы, но MAC-адреса у них разные.
Для соседних хостов начинается путаница. Один ARP-ответ связывает
192.168.1.50 с первым MAC, следующий может заменить запись на MAC второго устройства.В результате соединения периодически обрываются, SSH зависает, а ping то проходит, то нет.
ip neigh show 192.168.1.50
Запись может меняться между двумя MAC-адресами. Но это не обязательно происходит после каждого ARP-ответа: Linux учитывает состояние записи и правила её обновления.
tcpdump -eni eth0 arp
Если два устройства отвечают за один IP, в захвате можно увидеть ARP Reply с одинаковым sender IP, но разными sender MAC.
Дополнительно проверяем адрес через
arping:arping -I eth0 -c 5 192.168.1.50
Несколько ответов с разными MAC - сильный признак конфликта.
Когда сосед начинает отправлять кадры на другой MAC, пакеты попадают не на тот сервер. Старое TCP-соединение при этом не переносится на новое устройство.
N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Миф: Port Security защищает от всех атак на L2
Port Security ограничивает количество MAC-адресов на порту коммутатора. Например, разрешаем один MAC, и если появляется второй, порт блокируется или начинает отбрасывать нарушающий трафик в зависимости от режима.
Кажется, что этого достаточно для защиты от посторонних устройств. Но Port Security контролирует MAC-адреса, а не поведение самого устройства.
⏺ Rogue DHCP Server
Атакующий подключает устройство с разрешённым MAC и начинает раздавать клиентам неправильный шлюз или DNS. Port Security не анализирует DHCP-ответы.
Для этого нужен DHCP Snooping, который запрещает ответы DHCP-сервера с недоверенных портов.
⏺ ARP Spoofing
Устройство с разрешённым MAC отправляет поддельные ARP-ответы, связывая IP шлюза со своим MAC.
Port Security не проверяет соответствие IP и MAC внутри ARP. Этим занимается Dynamic ARP Inspection, используя доверенные привязки, например из DHCP Snooping.
⏺ Подмена разрешённого MAC
Если атакующий узнает допустимый MAC и использует его вместо своего, Port Security не сможет определить личность устройства только по этому адресу.
Для аутентификации применяют 802.1X, хотя и он требует правильной настройки.
На Cisco проверяем состояние защиты:
⚡️ Port Security ограничивает MAC-адреса на порту. DHCP Snooping контролирует DHCP-серверы, DAI проверяет ARP, а 802.1X аутентифицирует подключение.
Один механизм не заменяет остальные.
N.A
Port Security ограничивает количество MAC-адресов на порту коммутатора. Например, разрешаем один MAC, и если появляется второй, порт блокируется или начинает отбрасывать нарушающий трафик в зависимости от режима.
Кажется, что этого достаточно для защиты от посторонних устройств. Но Port Security контролирует MAC-адреса, а не поведение самого устройства.
Атакующий подключает устройство с разрешённым MAC и начинает раздавать клиентам неправильный шлюз или DNS. Port Security не анализирует DHCP-ответы.
Для этого нужен DHCP Snooping, который запрещает ответы DHCP-сервера с недоверенных портов.
Устройство с разрешённым MAC отправляет поддельные ARP-ответы, связывая IP шлюза со своим MAC.
Port Security не проверяет соответствие IP и MAC внутри ARP. Этим занимается Dynamic ARP Inspection, используя доверенные привязки, например из DHCP Snooping.
Если атакующий узнает допустимый MAC и использует его вместо своего, Port Security не сможет определить личность устройства только по этому адресу.
Для аутентификации применяют 802.1X, хотя и он требует правильной настройки.
На Cisco проверяем состояние защиты:
show port-security interface Gi0/1
show ip dhcp snooping
show ip arp inspection
Один механизм не заменяет остальные.
N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Как проверить, куда исчезают пакеты в nftables
Порт открыт, маршрут есть, но соединение не устанавливается.
Проверять десятки правил firewall вручную неудобно, особенно когда пакеты проходят через несколько цепочек.
В nftables есть трассировка, которая показывает путь пакета через правила.
⏺ Сначала включаем трассировку для нужного трафика. Например, для TCP-подключений к порту 443:
Теперь запускаем мониторинг:
Пробуем подключиться к серверу с другого устройства.
⏺ В выводе появятся цепочки и правила, через которые проходит пакет. Например:
Так можно увидеть не просто факт блокировки, а конкретное правило, которое приняло решение.
Если пакет вообще не появляется в трассировке, стоит проверить, доходит ли он до выбранного hook и соответствует ли условию трассировки.
⏺ После диагностики удаляем временную таблицу:
⚡️
N.A
Порт открыт, маршрут есть, но соединение не устанавливается.
Проверять десятки правил firewall вручную неудобно, особенно когда пакеты проходят через несколько цепочек.
В nftables есть трассировка, которая показывает путь пакета через правила.
nft add table inet debug
nft 'add chain inet debug trace_in { type filter hook prerouting priority -301; policy accept; }'
nft add rule inet debug trace_in tcp dport 443 meta nftrace set 1
Теперь запускаем мониторинг:
nft monitor traceПробуем подключиться к серверу с другого устройства.
trace ... rule tcp dport 443 drop
trace ... verdict drop
Так можно увидеть не просто факт блокировки, а конкретное правило, которое приняло решение.
Если пакет вообще не появляется в трассировке, стоит проверить, доходит ли он до выбранного hook и соответствует ли условию трассировки.
nft delete table inet debug
tcpdump показывает, что пакет пришёл на интерфейс. nft monitor trace помогает выяснить, что с ним произошло внутри nftables.N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
3 ошибки при настройке BGP prefix-list
Prefix-list кажется простой вещью: указал сеть, разрешил или запретил маршрут. Но одна неточная маска может изменить фильтрацию сразу для сотен префиксов.
⏺ Забыли про le и ge
Например, на Cisco:
Это правило разрешает только точный префикс
Чтобы разрешить более специфичные сети:
Теперь подходят префиксы от
⏺ Случайно разрешили слишком много
Это не разрешение только default route. Такое правило подходит под любой IPv4-префикс.
Если нужен исключительно маршрут по умолчанию:
⏺ Забыли про implicit deny
В конце prefix-list действует неявный запрет. Если маршрут не совпал ни с одним разрешающим правилом, он будет отклонён при применении списка как фильтра.
Проверяем:
Последняя команда помогает увидеть, что реально анонсируется соседу. Синтаксис зависит от платформы.
⚡️ В prefix-list важно не только указать сеть, но и правильно задать допустимую длину префикса. Разница между
N.A
Prefix-list кажется простой вещью: указал сеть, разрешил или запретил маршрут. Но одна неточная маска может изменить фильтрацию сразу для сотен префиксов.
Например, на Cisco:
ip prefix-list FILTER permit 10.0.0.0/8
Это правило разрешает только точный префикс
/8. Маршрут 10.10.0.0/16 под него не попадёт.Чтобы разрешить более специфичные сети:
ip prefix-list FILTER permit 10.0.0.0/8 le 24
Теперь подходят префиксы от
/8 до /24 внутри указанной сети.ip prefix-list FILTER permit 0.0.0.0/0 le 32
Это не разрешение только default route. Такое правило подходит под любой IPv4-префикс.
Если нужен исключительно маршрут по умолчанию:
ip prefix-list FILTER permit 0.0.0.0/0
В конце prefix-list действует неявный запрет. Если маршрут не совпал ни с одним разрешающим правилом, он будет отклонён при применении списка как фильтра.
Проверяем:
show ip prefix-list FILTER
show ip bgp neighbors 192.0.2.1 advertised-routes
Последняя команда помогает увидеть, что реально анонсируется соседу. Синтаксис зависит от платформы.
/8 и /8 le 24 может решить, какие маршруты вообще попадут к соседу.N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
📘 На Mentorix вышел курс — «Terraform: инфраструктура как код»
Хотите не просто писать .tf-файлы, а собирать инфраструктуру кодом, с которой работает вся команда? Этот курс — полный путь от первого apply до пайплайна, который применяет только проверенный план.
• Основы: HCL, init → plan → apply, провайдеры и lock-файл
• Переменные: типы, коллекции, валидация, sensitive
• Ресурсы: граф зависимостей, count и for_each, lifecycle
• State: дрейф, state mv и moved, импорт существующего
• Модули: контракты, композиция, версии
• Окружения: workspaces, tfvars, бэкенды S3/GCS/Yandex
• Проверки: preconditions, check-блоки, terraform test
• CI/CD: GitLab CI и GitHub Actions, дрейф-детект
• Капстоун: платформа из трёх стеков с dev и prod
🎓 Сертификат — добавьте в резюме или LinkedIn
🏷 Скидка 50%, действует 48 часов
12 990 ₽ → 6 495 ₽
➜ Пройти курс на Mentorix
Ещё 25 курсов бесплатно — доступны после регистрации
Хотите не просто писать .tf-файлы, а собирать инфраструктуру кодом, с которой работает вся команда? Этот курс — полный путь от первого apply до пайплайна, который применяет только проверенный план.
• Основы: HCL, init → plan → apply, провайдеры и lock-файл
• Переменные: типы, коллекции, валидация, sensitive
• Ресурсы: граф зависимостей, count и for_each, lifecycle
• State: дрейф, state mv и moved, импорт существующего
• Модули: контракты, композиция, версии
• Окружения: workspaces, tfvars, бэкенды S3/GCS/Yandex
• Проверки: preconditions, check-блоки, terraform test
• CI/CD: GitLab CI и GitHub Actions, дрейф-детект
• Капстоун: платформа из трёх стеков с dev и prod
🎓 Сертификат — добавьте в резюме или LinkedIn
🏷 Скидка 50%, действует 48 часов
➜ Пройти курс на Mentorix
Ещё 25 курсов бесплатно — доступны после регистрации
👍1
Что такое IX и как трафик идёт внутри него
IX (Internet Exchange) это физическая точка где провайдеры, CDN и крупные сети подключаются друг к другу напрямую. Вместо того чтобы гонять трафик через транзитного провайдера и платить за каждый гигабит, участники обмениваются трафиком напрямую и бесплатно между собой.
Как устроено внутри
Физически IX это один большой коммутатор (или несколько связанных), к которому все участники подключают свои роутеры. Эта общая среда называется IXP fabric. Каждый участник получает порт и IP-адрес в общей подсети IX.
Дальше всё через BGP. Каждый участник поднимает BGP-сессии с теми с кем хочет обмениваться трафиком, анонсирует свои префиксы и получает чужие. Никакой автоматики, только явные пиринговые договорённости.
Route Server
Чтобы не поднимать сотни BGP-сессий с каждым участником отдельно, большинство IX предоставляют Route Server.
Подключаешься к одному RS, получаешь маршруты от всех участников кто тоже подключён к RS. Можно фильтровать что принимать и что анонсировать.
Как трафик идёт внутри
Пакет от пользователя провайдера А до сервера в сети провайдера Б: роутер А смотрит BGP-таблицу, видит что префикс Б получен через IX, отправляет пакет напрямую на роутер Б через IXP fabric. Транзитный провайдер не участвует, задержка меньше, стоимость ниже.
N.A.
IX (Internet Exchange) это физическая точка где провайдеры, CDN и крупные сети подключаются друг к другу напрямую. Вместо того чтобы гонять трафик через транзитного провайдера и платить за каждый гигабит, участники обмениваются трафиком напрямую и бесплатно между собой.
Крупнейшие точки обмена: DE-CIX во Франкфурте, AMS-IX в Амстердаме, MSK-IX в Москве. Через DE-CIX проходит больше 10 Тбит/с в пике.
Как устроено внутри
Физически IX это один большой коммутатор (или несколько связанных), к которому все участники подключают свои роутеры. Эта общая среда называется IXP fabric. Каждый участник получает порт и IP-адрес в общей подсети IX.
Дальше всё через BGP. Каждый участник поднимает BGP-сессии с теми с кем хочет обмениваться трафиком, анонсирует свои префиксы и получает чужие. Никакой автоматики, только явные пиринговые договорённости.
Route Server
Чтобы не поднимать сотни BGP-сессий с каждым участником отдельно, большинство IX предоставляют Route Server.
Подключаешься к одному RS, получаешь маршруты от всех участников кто тоже подключён к RS. Можно фильтровать что принимать и что анонсировать.
router bgp 65001
neighbor 193.178.185.1 remote-as 65000
neighbor 193.178.185.1 description MSK-IX Route Server
Как трафик идёт внутри
Пакет от пользователя провайдера А до сервера в сети провайдера Б: роутер А смотрит BGP-таблицу, видит что префикс Б получен через IX, отправляет пакет напрямую на роутер Б через IXP fabric. Транзитный провайдер не участвует, задержка меньше, стоимость ниже.
N.A.
👍4
NAT44 vs NAT64: как IPv6-клиент подключается к IPv4-серверу
Обычный NAT44 меняет IPv4-адреса, но сам протокол остаётся прежним. NAT64 работает иначе: позволяет клиенту из IPv6-only сети обращаться к серверу, у которого есть только IPv4.
⏺ NAT44 чаще всего встречается на домашних маршрутизаторах. Несколько устройств с приватными IPv4-адресами выходят в интернет через один публичный адрес.
Например,
⏺ NAT64 переводит пакеты между IPv6 и IPv4. Но сначала клиенту нужно получить IPv6-адрес назначения.
Для этого часто используется DNS64. Если у сервера есть только A-запись, DNS64 может синтезировать AAAA-запись с IPv4-адресом внутри специального IPv6-префикса.
Например, для IPv4
Клиент отправляет IPv6-пакет на этот адрес. NAT64-шлюз извлекает IPv4-адрес назначения, преобразует пакет и пересылает его серверу уже по IPv4.
Проверить DNS-ответ можно командой:
В сети с DNS64 такой запрос помогает обнаружить используемый NAT64-префикс.
⏺ Главное ограничение: DNS64 не поможет приложению, которое обращается напрямую к IPv4-литералу и не умеет работать с IPv6. Для таких случаев могут потребоваться дополнительные механизмы, например CLAT в составе 464XLAT.
N.A.
Обычный NAT44 меняет IPv4-адреса, но сам протокол остаётся прежним. NAT64 работает иначе: позволяет клиенту из IPv6-only сети обращаться к серверу, у которого есть только IPv4.
Например,
192.168.1.10:50000 превращается в 203.0.113.5:40001. Маршрутизатор запоминает соответствие и возвращает ответы нужному клиенту.Для этого часто используется DNS64. Если у сервера есть только A-запись, DNS64 может синтезировать AAAA-запись с IPv4-адресом внутри специального IPv6-префикса.
Например, для IPv4
192.0.2.10 при использовании префикса 64:ff9b::/96 получится:64:ff9b::192.0.2.10
Клиент отправляет IPv6-пакет на этот адрес. NAT64-шлюз извлекает IPv4-адрес назначения, преобразует пакет и пересылает его серверу уже по IPv4.
Проверить DNS-ответ можно командой:
dig AAAA ipv4only.arpa
В сети с DNS64 такой запрос помогает обнаружить используемый NAT64-префикс.
N.A.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Как проверить PoE-потребление без доступа к устройству
Чтобы это проверить, необязательно идти к камере с тестером. Управляемый PoE-коммутатор часто показывает параметры питания прямо через CLI.
⏺ Смотрим общий бюджет PoE
На Cisco Catalyst:
Команда показывает доступную мощность, сколько уже выделено подключённым устройствам и сколько осталось.
Важно не путать allocated power и фактическое потребление. Коммутатор может зарезервировать для камеры 15,4 Вт, хотя сейчас она использует значительно меньше.
⏺ Проверяем конкретный порт
В зависимости от модели и версии ПО можно увидеть класс PoE, выделенную мощность, состояние питания и измеренное потребление.
Например, камера днём потребляет 6 Вт, а ночью включает ИК-подсветку и нагреватель. Потребление растёт, и если мощности недостаточно, устройство может перезагрузиться.
⏺ Ищем события питания
На поддерживаемых Cisco Catalyst так можно найти сообщения об отказе в питании, превышении лимита или отключении PoE на порту.
Если коммутатор не показывает фактические ватты, ориентируемся на выделенную мощность, класс устройства и события контроллера PoE. Не все модели умеют измерять потребление в реальном времени.
N.A.
IP-камера периодически перезагружается, хотя сетевой линк работает нормально. Причина может быть не в сети, а в питании через PoE.
Чтобы это проверить, необязательно идти к камере с тестером. Управляемый PoE-коммутатор часто показывает параметры питания прямо через CLI.
На Cisco Catalyst:
show power inline
Команда показывает доступную мощность, сколько уже выделено подключённым устройствам и сколько осталось.
Важно не путать allocated power и фактическое потребление. Коммутатор может зарезервировать для камеры 15,4 Вт, хотя сейчас она использует значительно меньше.
show power inline Gi1/0/10 detail
В зависимости от модели и версии ПО можно увидеть класс PoE, выделенную мощность, состояние питания и измеренное потребление.
Например, камера днём потребляет 6 Вт, а ночью включает ИК-подсветку и нагреватель. Потребление растёт, и если мощности недостаточно, устройство может перезагрузиться.
show logging | include ILPOWER
На поддерживаемых Cisco Catalyst так можно найти сообщения об отказе в питании, превышении лимита или отключении PoE на порту.
Если коммутатор не показывает фактические ватты, ориентируемся на выделенную мощность, класс устройства и события контроллера PoE. Не все модели умеют измерять потребление в реальном времени.
N.A.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
4 команды для диагностики оптического линка в Linux
Оптический интерфейс может оставаться UP, даже когда качество сигнала уже ухудшилось. Поэтому при нестабильной связи стоит проверить не только состояние порта, но и сам трансивер.
⏺ Проверить параметры SFP-модуля
Если модуль и драйвер поддерживают диагностику, увидим температуру, напряжение, мощность передатчика (Tx) и принимаемого сигнала (Rx).
Особенно интересен Rx Power. Слишком слабый сигнал может указывать на загрязнённые коннекторы, затухание или проблемы с оптикой. Сравнивать значение нужно с допустимым диапазоном конкретного модуля.
⏺ Посмотреть ошибки интерфейса
Ищем счётчики CRC/FCS, symbol errors и другие ошибки приёма. Названия зависят от драйвера.
Важно смотреть не только абсолютные значения, но и растут ли они со временем.
⏺ Проверить FEC
На поддерживаемых интерфейсах команда покажет настроенный и активный режим Forward Error Correction.
Если доступны счётчики исправленных и неисправимых ошибок FEC, они помогут заметить ухудшение линии ещё до массовых потерь пакетов.
⏺ Проверить согласованную скорость
Смотрим Speed, Duplex и Link detected. Так можно обнаружить, что интерфейс поднялся не в ожидаемом режиме.
N.A.
Оптический интерфейс может оставаться UP, даже когда качество сигнала уже ухудшилось. Поэтому при нестабильной связи стоит проверить не только состояние порта, но и сам трансивер.
ethtool -m eth0
Если модуль и драйвер поддерживают диагностику, увидим температуру, напряжение, мощность передатчика (Tx) и принимаемого сигнала (Rx).
Особенно интересен Rx Power. Слишком слабый сигнал может указывать на загрязнённые коннекторы, затухание или проблемы с оптикой. Сравнивать значение нужно с допустимым диапазоном конкретного модуля.
ethtool -S eth0
Ищем счётчики CRC/FCS, symbol errors и другие ошибки приёма. Названия зависят от драйвера.
Важно смотреть не только абсолютные значения, но и растут ли они со временем.
ethtool —show-fec eth0
На поддерживаемых интерфейсах команда покажет настроенный и активный режим Forward Error Correction.
Если доступны счётчики исправленных и неисправимых ошибок FEC, они помогут заметить ухудшение линии ещё до массовых потерь пакетов.
ethtool eth0
Смотрим Speed, Duplex и Link detected. Так можно обнаружить, что интерфейс поднялся не в ожидаемом режиме.
N.A.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
️️️️️️️️️️️️📶 Сеть может работать стабильно годами, пока однажды не возникает проблема — тогда придется разбираться, что происходит между хостами.
Здесь уже недостаточно знать команды: важно понимать, как устроен стек сетевых протоколов и где искать причину сбоя.
На открытом уроке разберём:
➖ как устроен сетевой стек;
➖ на практике поработаем с сетевыми утилитами на хосте.
👍 Это поможет лучше понимать работу сети и увереннее проводить её отладку.
Урок подойдёт начинающим сетевым инженерам и всем, кто хочет системно разобраться в сетевых технологиях.
📆 5 ноября в 20:00 МСК
🎓 Занятие проходит в преддверии старта курса «Сетевой инженер. Базовый уровень».
👉 Регистрируйтесь на открытый урок и начните разбираться в сетях с фундаментальных принципов: https://otus.pw/QHJR/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618
Здесь уже недостаточно знать команды: важно понимать, как устроен стек сетевых протоколов и где искать причину сбоя.
На открытом уроке разберём:
➖ как устроен сетевой стек;
➖ на практике поработаем с сетевыми утилитами на хосте.
👍 Это поможет лучше понимать работу сети и увереннее проводить её отладку.
Урок подойдёт начинающим сетевым инженерам и всем, кто хочет системно разобраться в сетевых технологиях.
📆 5 ноября в 20:00 МСК
🎓 Занятие проходит в преддверии старта курса «Сетевой инженер. Базовый уровень».
👉 Регистрируйтесь на открытый урок и начните разбираться в сетях с фундаментальных принципов: https://otus.pw/QHJR/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618
👍2👎1
Как Ethernet временно останавливает передачу
Представим, что сервер принимает трафик быстрее, чем успевает его обрабатывать. Буферы сетевой карты заполняются, и скоро начнутся потери пакетов.
Но Ethernet умеет не только отбрасывать кадры. В некоторых сетях он может попросить соседнее устройство временно прекратить передачу.
⏺ Как это работает?
В стандарте IEEE 802.3x предусмотрены специальные PAUSE-кадры. Если включён Flow Control, перегруженный приёмник может отправить такой кадр соседу.
Получив кадр, сосед временно приостанавливает обычную передачу данных по линку.
При этом PAUSE действует на весь линк, а не на отдельное TCP-соединение.
⏺ Как проверить в Linux?
Посмотрим настройки сетевой карты:
В выводе интересуют
Статистику можно поискать через:
Названия счётчиков и их доступность зависят от драйвера.
⏺ В чём подвох?
PAUSE помогает избежать переполнения буферов, но создаёт другую проблему: один перегруженный получатель способен затормозить весь трафик на физическом соединении.
Из-за этого Flow Control не всегда улучшает производительность. Иногда он просто переносит перегрузку на соседнее устройство.
N.A.
Представим, что сервер принимает трафик быстрее, чем успевает его обрабатывать. Буферы сетевой карты заполняются, и скоро начнутся потери пакетов.
Но Ethernet умеет не только отбрасывать кадры. В некоторых сетях он может попросить соседнее устройство временно прекратить передачу.
В стандарте IEEE 802.3x предусмотрены специальные PAUSE-кадры. Если включён Flow Control, перегруженный приёмник может отправить такой кадр соседу.
Внутри указывается время паузы в единицах по 512 битовых интервалов.
Получив кадр, сосед временно приостанавливает обычную передачу данных по линку.
При этом PAUSE действует на весь линк, а не на отдельное TCP-соединение.
Посмотрим настройки сетевой карты:
ethtool -a eth0
В выводе интересуют
RX и TX: разрешён ли приём PAUSE-кадров и может ли интерфейс отправлять их сам.Статистику можно поискать через:
ethtool -S eth0 | grep -i pause
Названия счётчиков и их доступность зависят от драйвера.
PAUSE помогает избежать переполнения буферов, но создаёт другую проблему: один перегруженный получатель способен затормозить весь трафик на физическом соединении.
Из-за этого Flow Control не всегда улучшает производительность. Иногда он просто переносит перегрузку на соседнее устройство.
N.A.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2