Будни сетевика
867 subscribers
77 photos
7 videos
20 files
84 links
Блог про сети, CDN, менеджмент, интересные наблюдения, рабочие задачи и немного о том, как живут сетевики. Для связи - @ipatov_ds.
Download Telegram
Forwarded from linkmeup
С нескрываемым удовольствием сообщаю, что у нас опять произошла отличная рубка за звание лучшего доклада линкмитапа. То есть программа получилась достаточно ровная и без явных перекосов.
В плотнейшей борьбе у финиша были и истории про лабораторные тесты от Сергея Бочарникова, и выбор между Быстро или Безопасно от Игоря Панарина и Андрея Иванова, активно в затылок всем дышала история про Network as Code от Александра Игнатова. Плотной группой шли доклады про DWDM, дичь в мультимедиа сетях, балансировку терабита на межсетевых экранах и так далее.
Но с отрывом буквально в несколько голосов лучшим докладом признаётся история от Дмитрия Ипатова, и как они в Окко готовились транслировать Евро24 и справились с нагрузкой в млн пользователей.
P.S. Презентации все выложим.
P.P.S. Записи тоже все выложим.
P.P.P.S. По срокам - КТТС. Точнее не будет.
🔥1932
Как неожиданно и приятно, очень приятно.

«Лучший доклад Linkmeetup 2025» — благодарю зрителей за высокую оценку. В этот раз было представлено множество мощных докладов, что добавляет ценности полученной оценке. Жду записей, чтобы посмотреть те доклады, что пропустил.

На фото — команда сетевиков Okko (правда, только 80%), которая и сделала все то, о чем я говорил.

P.S. Хорошо это или плохо я еще не понял, но наш CDN изначально строили и продолжают развивать сетевики, сейчас даже продуктовая часть находится в наших руках. Фокус у части инженеров в процессе полностью сместился в серверную часть, но изначально это «базовые» сетевики, в какой-то момент перешедшие на темную сторону.
🔥2814👏8👍21🎉11
Коллеги из DevOps рассказывают, почему мы начали переходить с Terraform на Pulumi.

Также добавлю ссылку на блог GitGuardian, где попытались доступно и пошагово разобраться в выборе между Terraform и Pulumi.

P.S. Terraform и Pulumi — это два инструмента в области «Infrastructure as Code», используемые для автоматизации управления облачными ресурсами, оба имеют открытый исходный код

https://habr.com/ru/companies/okko/articles/908960/
👍10🔥2
Нужен был инструмент для генерации трафика в одну сторону, без ожидания ответов. Схема не предполагала, что удаленная сторона может отвечать, поэтому iperf не подходил. Также необходимо было управлять скоростью, например, на уровне 100, 200, 500 или 1000 Mbps. Первым попавшимся под руку инструментом оказался hping3.

Трафик генерировался с виртуальной машины (4 ГБ RAM, 8 CPU, Ubuntu 24, NIC на ESXi 25G x2).

У hping3 есть флаг --flood, который позволяет отправлять пакеты с максимальной скоростью без задержки между ними. Запускаем тест и для начала проверим его возможности:

hping3 --udp -p 5000 -d 9000 --flood <ip>


Максимальная скорость составила 2.1 Gbps, что связано с однопоточной архитектурой hping3, которая не позволяет полноценно загружать многоядерные процессоры. Этот инструмент работает через стандартный стек Linux и не использует DPDK или другие "ускорители". Каждый пакет проходит через системные вызовы (sendto()), что создает высокую нагрузку на CPU. Но скорости выше 2 Gb/s не требовалось; градаций от 100 Mb/s до 1 Gb/s было достаточно.

Чтобы управлять скоростью трафика, я решил поэкспериментировать с размером пакета (-d) и интервалом отправки пакетов (-i). Попробовал честно рассчитать необходимые значения:

100 Mbit = 12,500,000 bytes
12,500,000 / 1472 (размер пакета) = 8491 пакетов/сек → интервал 1/8491 = 0.0001178 сек = 118 µs (микросекунды)


Запускаем с интервалом u118:

hping3 --udp -p 5000 -d 1472 -i u118 <ip>


На выходе получаем скорость: 75.17 Mbps. В целом, выглядит правдоподобно. Предполагаю, что сетевые карты и драйверы добавляют задержки, особенно в виртуальных средах, поэтому точности ожидать не приходится.

Далее я опытным путем подобрал значения интервалов для достижения требуемых скоростей:


hping3 --udp -p 5000 -d 1472 -i u95 <ip>
Speed: 99.17 Mbps

hping3 --udp -p 5000 -d 1472 -i u35 <ip>
Speed: 208.31 Mbps

hping3 --udp -p 5000 -d 1472 -i u4 <ip>
Speed: 989.28 Mbps


В принципе, со своей задачей hping3 справился, но изначально он создавался для задач анализа сетевой безопасности (или наоборот 🙂)

Приведу примеры, когда он может пригодиться.


Тесты на защиту от DDoS


icmp-флуд
hping3 --icmp --flood <ip>

tcp-флуд
hping3 -S -p 80 --flood <ip>

udp-флуд
hping3 --udp -p 53 --flood -d 1000 <ip>



Spoofing (подделка src ip/mac)


ip spoofing
hping3 -a <bad_ip> -S -p 22 <ip>

mac spoofing
hping3 --spoof 00:11:22:33:44:55 -p 80 <ip>



Сканирование


tcp syn-сканирование(аналог nmap)
hping3 -S -p 80 <ip>

Сканирование диапазона портов
hping3 -S -p 1-1000 <ip>



Проверка IPS/IDS


Вставим SQL-инъекцию в пакет, сработает ли IDS?
echo "SELECT * FROM users" | hping3 -p 80 -E /dev/stdin <ip>

Тест на переполнение буфера.
Проверим падает ли сервис при отправке огромного пакета:
hping3 -p 80 --data 10000 <ip>


Ну и наконец, раз инструмент называется hping3, должен быть и обычный ping:

hping3 -1 <ip>



Выводы: hping3 отлично подходит для задач тестирования фаерволов, анализа IPS/IDS и проверки устойчивости к DoS-атакам. Однако для задач точного измерения скорости лучше использовать другие инструменты, например, iperf.

P.S. На последнем Linkmeetup 25 узнал о Trex. Да, первый раз услышал 🤷. По описанию — мощный инструмент с многопоточностью и низкой нагрузкой на CPU за счет DPDK оптимизаций; можно генерировать трафик свыше 100G. Вероятно, в следующий раз попробую его. Но в пользу hping3 скажу, что он не требует конфигурационных файлов — установил и используй в CLI.
👍21🔥9
На Linkmeetup25(тут преза) я рассказывал о том, как и зачем мы использовали weighted equal-cost multipath (WECMP).

Вот ссылки на документацию Juniper:

1. Load Balancing for a BGP Session - решение для балансировки между серверами разной производительности

2. BGP Link-Bandwidth Community - решение для балансировки между аплинками разной емкости

Настройки точно работают на Juniper MX204, MX304 и MX10003.

P.S. Возможно, скоро проверим на Juniper PTX.
👍12🔥82
Посещать Linkmeetup всей командой сетевиков (ну, почти всей) стало для нас уже традицией. В нашем отделе есть три беларуса, и в этот раз возникла идея приехать к ним на B.E.E.R — Best Engineering Event in Republic — и заодно что-нибудь рассказать.

Место проведения: Минск, Dipservice Hall, 26 июля.

Доклад принят, начинаю подготовку.

По сути, это будет обновленная версия моего предыдущего доклада. За прошедшие 1,5 года объемы трафика увеличились в 4 раза, и сейчас мы можем раздавать более 100 Gb/s с одной ноды, появились новые алгоритмы работы нашего CDN-балансировщика, так что есть чем поделиться.
1🔥26
Будни сетевика в деревне!

Задача: запустить бортовой УАЗик 3303 после годового простоя.

Инструкция в 22 шага.

1. Заряжаем аккумулятор, тут все просто - берем акум, берем зарядное устройство, соединяем их вместе и оставляем наедине часа на три.

2. Проверяем уровень масла в двигателе.

3. Доливаем тосол.

4. Меняем свечи зажигания, лучше поставить новые, но если их нет, то можно прокалить и почистить имеющиеся. Тут я подготовился и привез новые.

5. Устанавливаем аккумулятор, а на его место сразу ставим на зарядку запасной, будьте уверены - он пригодится.

6. Установлен штатный топливный насос ручной подкачки, поэтому перед первым пуском помогаем ему руками накачать бензин в карбюратор.

Можно запускать двигатель!

7. Пробуем и видим дым под приборкой, прям нормально так дыма! Быстро снимаем клемму аккумулятора и пытаемся вытолкать его из деревянного гаража, чтобы не спалить все вокруг.

9. Снимаем крышку приборной панели, находим обуглившиеся провода, дальше изолента делает свое дело.

10. Разряжаем аккумулятор в безуспешных попытках запустить двигатель, что в принципе, ожидаемо - см. п.5.

11. Берем с зарядки запасной аккумулятор, устанавливаем.

12. Можно пробовать снова, но в этот раз откручиваем крышку воздушного фильтра, чтобы был доступ к карбюратору и немножко подливаем напрямую в него бензина, почти как впрыск закиси азота в форсаже 😅

13. На 3-4 секунды мотор возвращается к жизни, но из-за плохо качающего топливного насоса(но это я так думаю) надо повторить предудущий пункт 3-4 раза.

14. При условии, что еще не залили свечи к этому моменту двигатель должен запуститься.

15. Мотор тарахтит (или работает как часы) пару минут, обнаруживаем протекающий топливный шланг, запасного нет.

16. Но к счастью, протечка у самого места присоединения к топливному фильтру, поэтому можно его обрезать на 2см и вернуть на место, длины все еще хватает!

17. Ну все, поехали! Включаем первую передачу, а она не включается и вторая не включается и вообще никакая не включается. При этом в гараж год назад он заехал сам!

18. Просим шестилетнего сына понажимать на педаль сцепления, а сами лезем под УАЗик посмотреть на цилиндр сцепления и убедиться, что его надо снять и выкинуть на помойку, потому что он вообще не шевелится. 2-3 удара молотком приводят его в чувство, но только на два выжима сцепления.

19. Снимаем цилиндр сцепления, ставим новый (был в запасе).

20. Ищем, а где же у УАЗика находится бачок жидкости цилидра сцепления. Выясняем, что он прям «под носом».

21. Заливаем тормозную жидкость в бачок, ищем кого-то постарше - нужно прокачать систему.

22. Пока кто-то жмет на педаль спепления, лезем под УАЗик и спускаем воздух из системы.

Ну теперь-то можно ехать, да? Да!

Инструкция не универсальна и может отличаться от одного экземпляра к другому.

P.S. Но это не вся история, потому что без проблем он ездил только 7 дней, дальше приключения продолжились. Если тут такое интересно, то будет вторая часть, а также история про мотоцикл Восход 3М.

#Задача
🔥473🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
Будни сетевика. Летний режим.

Есть много интересного, чем хочется поделиться, но пока не могу собраться и написать. Почему?

Потому что купил в деревне ендуро и теперь, к сожалению или к счастью, ничем другим в свободное время не занимаюсь, но все будет 🙂

Сейчас еду в Минск на B.E.E.R — Best Engineering Event in Republic ,где расскажу про наш OkkoCDN. Конференция через неделю, но было решено ее совместить с небольшим отпуском, чтобы посмотреть окрестности.

Кто будет на конфе - рад буду пообщаться!
🔥25👏2💋1
Сегодня побывал на подкасте у Андрея Соколова! 🎙️

Обсудили множество IT-тем, но спойлерить не буду — ждите выпуск на его YouTube-канале! 🔥

Для меня это был первый подобный опыт, и, думаю, для дебюта вышло неплохо. Мне даже понравилось.
🔥25👍6👏53❤‍🔥21
Сегодня на BEER в Минске я рассказывал о нашем OkkoCDN и о том, как мы достигли раздачи в 6 Tb/s. Записи не будет, так что придется поверить на слово.

Что касается организации, мероприятие, конечно, уступает конференциям и митапам в СПб и Москве, но коллеги старались, и я благодарен за возможность выступить.

Несколько нюансов: перед моим выступлением сломался кликер, на презентации у части текста слетела кодировка, и шрифты «поехали». Аудитория не была целевой для тематики CDN, и ровно посередине доклада один из слушателей (он же следующий спикер) решил уточнить, не собираюсь ли я учить его, как правильно оптимизировать серверы под высокие нагрузки. 🤷‍♂️

Эх, знать бы, как всё правильно настраивается, и как взять и сразу всё сделать верно! 😅

Все мои выступления направлены на то, чтобы поделиться нашей историей развития. Я понимаю, что можно было бы сделать всё более оптимально и надежно, но мне нравится обсуждать с коллегами их решения до или после выступления, брать идеи для реализации или просто вступать с кем-то в дискуссию (в хорошем смысле этого слова).

P.S. Если кто-то точно знает, как сделать что-то правильно (неважно что), напишите мне! 😅
🔥15👍7🗿4🤯1
Пишет мне тут HR из одной компании X, название которой не имеет никакого значения. Пишет, конечно, с предложением пройти собеседование на должность Y.

HR оказался настойчивый, стандартные ответы вроде «спасибо, но сейчас для меня не актуально» не сработали. У меня было время, поэтому еще немного пообщались.

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

Но вспомнил про теорию Жоп:

Если Вам предлагают возглавить новый проект, либо занять какую то должность, да что угодно - знайте, там Вас ждет Жопа. Иначе не предложили бы, а сами бы справились. Равно как и если Вы ожидаете избавиться от надоевшей Вам сейчас деятельности, надеясь вырваться из "этого ада" и заняться "чем то новеньким" - будьте готовы встретиться с Большой Жопой.


Чем все закончилось? Ничем особенным. Я немного расспросил о процессах найма, чтобы, возможно, что-то перенять для себя. Но, к сожалению, HR не знает, как на самом деле все работает внутри компании(оно и понятно), а тратить дальше время не хотелось.

А про теорию Жоп рекомендую почитать, периодически возвращаюсь к этому размышлению.

P.S. Я не HR, но пользуясь случаем напишу, что наш CDN растет и мы ищем инженера растить его дальше. Кому интересно - пишете в личку или откликайтесь на сайте.
👍163🦄3😁1