Pull to refresh
776
-4
Марат @eucariot

Сетевик в Яндексе, ведущий linkmeup

Send message

--Без--ответственность

Level of difficulty Easy
Reading time 10 min
Views 5K

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

Когда я был инженером, и когда у меня не было троих детей, я с горем пополам ещё удерживал в своей голове все дела и обещания.

При этом - у меня никогда не было устоявшейся системы - ни записных книжек, ни календарей, ни стикеров, ни напоминалок. Точнее это всё было кое-как и иногда, но всегда не хватало усердия и мотивации всё это вести.

Но потом: отец детей, мать проекта, руководитель людей, хобби какие-то начали появляться.

Читать далее
Total votes 20: ↑13 and ↓7 +6
Comments 17

Что ты такое, dhclient?

Reading time 19 min
Views 36K

Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.

Чтобы лишний раз не дёргать ядро прерываниями, придумали DMA — Direct Memory Access. И это дало жизнь классу софта с режимом работы kernel bypass: например при DPDK (Intel Data Plane Development Kit). Потом был BPF. А за ним — eBPF. 

Но даже помимо хаков работы с ядром есть такие штуки, как sk_buff, в которой хранятся метаданные всех миллионов протоколов. Есть NAPI (New API), которая призвана уменьшить число прерываний. Есть 100500 вариантов разных tables.

И копать можно безгранично далеко. Но сегодня мы всё же поговорим о вещах более приземлённых и повседневных, которые лишь приоткрывают вход в эту разветвлённую сеть кроличьих нор. Мы разберём одну любопытную задачку, на примере которой ужаснёмся тому, как сложно может быть реализован такой простой протокол, как DHCP.

Начать погружение
Total votes 223: ↑222 and ↓1 +221
Comments 61

Сказ о том, как два сервера изменили судьбу сетевой команды

Level of difficulty Medium
Reading time 12 min
Views 21K

Привет. Я Марат Сибгатулин — сетевик в Яндексе, работаю в команде Yandex Infrastructure. И сегодня я расскажу вам одну поучительную историю.

Жили были два сервера. Да и не сервера вовсе, а виртуальные машины. Жили не тужили, добро наживали, скриптами разными обрастали. Три года они трудились на славу облака да во имя автоматизации. Пока не наступили чёрные дни для RAID-массива на гипервизоре.

Это присказка, не сказка. Сказка впереди
Total votes 58: ↑57 and ↓1 +56
Comments 23

Сеть виновата

Level of difficulty Easy
Reading time 16 min
Views 34K

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

В жизни любого инженера бывают периоды как долгой кропотливой проработки архитектуры, так и долгих кропотливых расследований инцидентов или проблем. Нет, бывают, конечно, и озарения, стремительные лёгкие открытия, но обычно слова «кропотливый» и «методичный» — неизменные спутники нашей работы. И увы — не всегда этот процесс завершается яркой кульминацией и впрыском дофамина.

Читать далее
Total votes 94: ↑92 and ↓2 +90
Comments 54

АДСМ6. Интерфейсы взаимодействия с сетевыми устройствами

Reading time 81 min
Views 13K

Это вторая статья - техническо-практический разбор протоколов и интерфейсов автоматизации сети.

Если хочется исторической справки, я отсылаю читателя к статье-спутнику, в которой мы двигаемся от начала времён в будущее человечества. Какую роль сыграли в нашем настоящем IETF, ISO, олдовые и современные вендоры и даже просто люди.
В этой же мы раскрываем дерево XML, пробуем на вкус капабилити NETCONF, шлём первые RPC и наконец уже расставим в правильном порядке буквы YANG, OpenConfig, gNMI.

Практическую пользу вам принесут только обе прочитанные статьи. Вторая без первой будет непонятна. Первая без второй - беллетристика.

Читать далее
Total votes 18: ↑18 and ↓0 +18
Comments 9

АДСМ5. История сетевой автоматизации

Reading time 37 min
Views 8.6K

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

Читать далее
Total votes 19: ↑19 and ↓0 +19
Comments 8

АДСМ4. Жизненный цикл сетевого оборудования и архитектура системы автоматизации

Reading time 25 min
Views 5.9K
Продолжаем наш забег по сетевой автоматизации.
Итак, сеть спроектирована, IPAM запущен. И вот-вот начнут съезжаться миллионы наших стоек. Будем готовиться к этому.

Мы всё дальше от фантазий и абстрактных разговоров и ближе к практике.

И всё же снова сделаем отступление. Большое дело начинается с большого перекура.

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

Однако рано или поздно всё равно любая задача декомпозируется до уровня отдельных сетевых коробок.

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



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

Естественно, всё это интересует нас с точки зрения автоматизируемости. Поэтому ещё мы нарисуем архитектуру системы автоматизации.

Кстати, не так давно вышла просто восхихитительная обзорная статья Дмитрия Тесля о процессе и инструментах сетевой автоматизации. Он смог лаконично изложить то, вокруг чего я пляшу уже несколько выпусков АДСМ. Настоятельно рекомендую прочитать её перед тем, как приступать к этой.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 0

Как превратить две серверные стойки в сеть для десятков тысяч машин и не остаться в неоплатном техническом долгу

Reading time 14 min
Views 32K
Как и любое другое облако, Yandex.Cloud — это многослойная иерархия абстракций: SaaS, лежащий поверх PaaS, запущенный на IaaS. Связность виртуальной инфраструктуры обеспечивает виртуальная же сеть, которая является, по сути, оверлеем. И только в самой глубине этой системы обнаруживается физическая сеть из проводов и коммутаторов. Мало кто вспоминает о ней, пока всё работает. А меж тем она — кровеносная система всей платформы.

Привет, я Марат Сибгатулин, сетевой инженер Yandex.Cloud. Яндекс про свою сеть рассказывал уже не раз. И про её физическую инфраструктуру, и про особенности устройства Yandex.Cloud, и про то, как вообще работает виртуальная сеть. Не буду повторяться. Расскажу о том, как мы запустили публичное облако на том, что было — на двух стойках, и масштабировали его до сети для десятков тысяч серверов, не наращивая неоплатный технический долг.



Мы практикуем следующий подход к созданию и развитию чего бы то ни было: прототип → минимально необходимая функциональность и масштаб → рост → эволюционное развитие. На первый взгляд он естественен и очевиден, в отличие от подхода «сделать сразу идеально и на века». На деле — требует вдумчивого предварительного планирования, чтобы потом не подставлять в горячке новые костыли под старые, пытаясь поспеть за внезапным ростом.
Читать дальше →
Total votes 60: ↑60 and ↓0 +60
Comments 23

Как ленивый работящему помог. Ещё один скрипт для релиза подкаста

Reading time 12 min
Views 5.1K
Было время, когда у меня уже были дети, стабильная работа, камри, уроки английского и три раза в неделю бассейн. В общем такой себе состоявшийся мужчина. И я размышлял "Ну зачем мне питон? На работе совсем нет задач для автоматизации". Ни единого раза с того момента я не оказывался на столь высоком пике Даннинга-Крюгера (брата Баадера-Майнхофа, если что).

Но на курсы я тогда всё же сходил.

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

Ниже старая как кости мамонта история о появлении yet another убер-скрипта для механизации рутины. Началась она с попытки распарсить RSS, а закончилась системой полного релизного цикла подкаста.


Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Comments 5

АДСМ3. IPAM/DCIM-системы

Reading time 17 min
Views 33K
В предыдущих сериях АДСМ мы выработали фреймворк автоматизации, разобрались с тем, зачем появилась виртуализация и как она работает. В последней части мы выбрали и обосновали дизайн сети, роли устройств, производителей, определились с LLD (адресацией, маршрутизацией, номерами Автономных Систем).

Теперь мы готовы подумать о том, как всю эту гору информации хранить и в дальнейшем удобно извлекать.

Нет, есть, конечно, и сегодня компании, которые ведут учёт выделенных IP-адресов в таблице Excel. Но это не наш путь.

Даже для самой маленькой конторки размеров в пару филиалов наличие централизованной системы управления IP-пространством не повредит.

Необходимость системы инвентаризации очевидна без лишних слов.



Все выпуски АДСМ:

0. АДСМ. Часть Нулевая. Планирование
1. АДСМ. Часть Первая (которая после нулевой). Виртуализация сети
2. АДСМ. Часть Вторая. Дизайн сети
3. АДСМ. Часть Третья. IPAM/DCIM-система

Этот выпуск я посвящу неотъемлемым системам в сетевой автоматизации — системе управления адресным пространством и инвентарной системе.

Мы выберем и установим её, разберёмся с архитектурой, схемой БД, интерфейсами взаимодействия и наполним её. А в следующих частях начнём писать несложные скрипты, автоматизирующие повторяющиеся операции, такие как добавление новых стоек.

Кроме того, я уже опубликовал отдельную статью о RESTful API, в которой сделал короткий обзор его принципов и работы, это нам понадобится.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 15

Автоматизация Для Самых Маленьких. Заметки. RESTful API

Reading time 14 min
Views 75K
Эта статья — одна из обещанных коротких заметок по ходу цикла статей Автоматизация Для Самых Маленьких.
Поскольку основным способом взаимодействия с IPAM-системой будет RESTful API, я решил рассказать о нём отдельно.



Воздаю хвалы архитекторам современного мира — у нас есть стандартизированные интерфейсы. Да их много — это минус, но они есть — это плюс.

Эти интерфейсы взаимодействия обрели имя API — Application Programming Interface.

Одним из таких интерфейсов является RESTful API, который и используется для работы с NetBox.



Если очень просто, то API даёт клиенту набор инструментов, через которые тот может управлять сервером. А клиентом может выступать по сути что угодно: веб-браузер, командная консоль, разработанное производителем приложение, или вообще любое другое приложение, у которого есть доступ к API.

Например, в случае NetBox, добавить новое устройство в него можно следующими способами: через веб-браузер, отправив curl'ом запрос в консоли, использовать Postman, обратиться к библиотеке requests в питоне, воспользоваться SDK pynetbox или перейти в Swagger.

Таким образом, один раз написав единый интерфейс, производитель навсегда освобождает себя от необходимости с каждым новым клиентом договариваться как его подключать (хотя, это самую малость лукавство).
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Comments 8

Автоматизация Для Самых Маленьких. Часть Вторая. Дизайн сети

Reading time 9 min
Views 18K
В первых двух статьях я поднял вопрос автоматизации и набросал её фреймворк, во второй сделал отступление в виртуализацию сети, как первый подход к автоматизации настройки сервисов.
А теперь пришло время нарисовать схему физической сети.

Если вы не на короткой ноге с устройством сетей датацентров, то я настоятельно рекомендую начать со статьи о них.

Все выпуски:


Описанные в этой серии практики должны быть применимы к сети любого типа, любого масштаба с любым многообразием вендоров (нет). Однако нельзя описать универсальный пример применения этих подходов. Поэтому я остановлюсь на современной архитектуре сети ДЦ: Фабрике Клоза.
DCI сделаем на MPLS L3VPN.

Поверх физической сети работает Overlay-сеть с хоста (это может быть VXLAN OpenStack'а или Tungsten Fabric или что угодно другое, что требует от сети только базовой IP-связности).



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

Мы выберем сферический ДЦ в вакууме:

  • Одна версия дизайна везде.
  • Два вендора, образующих две плоскости сети.
  • Один ДЦ похож на другой как две капли воды.



Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Comments 2

Автоматизация Для Самых Маленьких. Часть 1.1. Основы виртуализации

Reading time 15 min
Views 42K
Предыдущая статья рассматривала архитектуру виртуализированной сети, underlay-overlay, путь пакета между VM и прочее.
Роман Горге вдохновился ею и решил написать обзорный выпуск о виртуализации вообще.

В данной статье мы затронем (или попытаемся затронуть) вопросы: а как собственно происходит виртуализация сетевых функций, как реализован backend основных продуктов, обеспечивающих запуск и управление VM, а также как работает виртуальный свитчинг (OVS и Linux bridge).

Тема виртуализации широка и глубока, объяснить все детали работы гипервизора невозможно (да и не нужно). Мы ограничимся минимальным набором знаний необходимым для понимания работы любого виртуализированного решения, не обязательно Telco.



Содержание


  • Введение и краткая история виртуализации
  • Типы виртуальных ресурсов — compute, storage, network
  • Виртуальная коммутация
  • Инструменты виртуализации — libvirt, virsh и прочее
  • Заключение




Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 8

Автоматизация Для Самых Маленьких. Часть первая (которая после нулевой). Виртуализация сети

Reading time 16 min
Views 42K
В предыдущем выпуске я описал фреймворк сетевой автоматизации. По отзывам у некоторых людей даже этот первый подход к проблеме уже разложил некоторые вопросы по полочкам. И это очень меня радует, потому что наша цель в цикле — не обмазать питоновскими скриптами анзибль, а выстроить систему.

Этот же фреймворк задаёт порядок, в котором мы будем разбираться с вопросом.
И виртуализация сети, которой посвящён этот выпуск, не особо укладывается в тематику АДСМ, где мы разбираем автоматику.

Но давайте взглянем на неё под другим углом.

Уже давно одной сетью пользуются многие сервисы. В случае оператора связи это 2G, 3G, LTE, ШПД и B2B, например. В случае ДЦ: связность для разных клиентов, Интернет, блочное хранилище, объектное хранилище.

И все сервисы требуют изоляции друг от друга. Так появились оверлейные сети.

И все сервисы не хотят ждать, когда человек настроит их вручную. Так появились оркестраторы и SDN.

Первый подход к систематической автоматизации сети, точнее её части, давно предпринят и много где внедрён в жизнь: VMWare, OpenStack, Google Compute Cloud, AWS, Facebook.

Вот с ним сегодня и поразбираемся.


Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Comments 6

Прогулки по ЦОДам и телекомам Питера

Reading time 9 min
Views 13K
Первые дни лета отлично подходят для развивающей поездки в Питер.
Мы посетим Миран, linxdatacenter, RETN и Метротек.

5 утра, Московский вокзал, KFC, набережная Мойки, Тарелка, голуби с крыш, Исакий, Марсово поле, Каптюр яндексодрайвовый, и вот он — Миран.

Миран


В Миране уже несколько лет проживает наша лаба с Евой, сервер трансляции, виртуальный микротиковский Роутэрос, хостинг linkmeup с IPv6-доступностью и теперь хостинг подкастов.


Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Comments 17

Автоматизация для самых маленьких. Часть нулевая. Планирование

Reading time 14 min
Views 52K
СДСМ закончился, а бесконтрольное желание писать — осталось.



Долгие годы наш брат страдал от выполнения рутинной работы, скрещивал пальцы перед коммитом и недосыпал из-за ночных ролбэков.
Но тёмным временам приходит конец.

Этой статьёй я начну серию о том, как мне видится автоматизация.
По ходу дела разберёмся с этапами автоматизации, хранением переменных, формализацией дизайна, с RestAPI, NETCONF, YANG, YDK и будем очень много программировать.
Мне означает, что а) это не объективная истина, б) не безоговорочно лучший подход в) мой взгляд даже в ходе движения от первой к последней статье может поменяться — честно говоря, от стадии черновика до публикации я переписывал всё полностью дважды.

Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Comments 32

Сети для самых маленьких. Часть ой, всё

Reading time 4 min
Views 151K
Дорогие мои друзья, отважные критики, тихие читатели и тайные почитатели, СДСМ заканчивается.



Я не могу похвастаться тем, что за 7 лет я затронул все темы сетевой сферы или тем, что хотя бы одну из них раскрыл полностью. Но это и не было целью. А целью этой серии статей было ввести юного студента за руку в этот мир и проводить его шаг за шагом по основной галерее, давая общее представление, и уберечь от болезненных скитаний по тёмным уголкам сознания Олифера и Олифера в мучительных попытках найти ответ на вопрос, как всё это применить в жизни.
СДСМ планировался коротким практическим курсом «как научиться в сети за месяц», а вылился в 16 (на самом деле 19) длинных выпусков, которые мы уже даже переименовали в «Сети Для Самых Суровых». Общее количество символов перевалило за 1 000 000.
Читать дальше →
Total votes 55: ↑55 and ↓0 +55
Comments 38

Как сделать коммутатор?

Reading time 19 min
Views 41K
14-й и 15-й выпуски СДСМ, а параллельно с этим работа в мегаскейле стимулировала мой интерес к аппаратной начинке сетевых устройств.

Теперь стало любопытно, как выглядит процесс производства оборудования, и насколько российское импортозамещение соответствует представлениям СДСМ14.

По счастливой неслучайности мы всё ещё поддерживаем тесную связь с Артёмом Спицыным — ныне руководителем Московского офиса Элтекс Коммуникации. И он мне предложил новые вопросы привезти на Окружную 29В в Новосибирске.

Данная статья — продукт поездки на фабрику Элтекс и дальнейших размышлений.


Читать дальше →
Total votes 56: ↑54 and ↓2 +52
Comments 54

Сети для самых матёрых. Часть пятнадцатая. QoS

Reading time 66 min
Views 170K
СДСМ-15. Про QoS. Теперь с возможностью Pull Request'ов.

И вот мы дошли до темы QoS.

Знаете почему только сейчас и почему это будет закрывающая статья всего курса СДСМ? Потому что QoS необычайно сложен. Сложнее всего, что было прежде в цикле.

Это не какой-то магический архиватор, который ловко сожмёт трафик на лету и пропихнёт ваш гигабит в стомегабитный аплинк. QoS это про то как пожертвовать чем-то ненужным, впихивая невпихуемое в рамки дозволенного.

QoS настолько опутан аурой шаманизма и недоступности, что все молодые (и не только) инженеры стараются тщательно игнорировать его существование, считая, что достаточно закидать проблемы деньгами, и бесконечно расширяя линки. Правда пока они не осознают, что при таком подходе их неизбежно ждёт провал. Или бизнес начнёт задавать неудобные вопросы, или возникнет масса проблем, почти не связанных с шириной канала, зато прямо зависящих от эффективности его использования. Ага, VoIP активно машет ручкой из-за кулис, а мультикастовый трафик ехидно поглаживает вас по спинке.

Поэтому давайте просто осознаем, что QoS это обязательно, познать его придётся так или иначе, и почему-бы не начать сейчас, в спокойной обстановке.

Читать дальше →
Total votes 72: ↑72 and ↓0 +72
Comments 24

Можно ли подготовиться к CCIE за год. Результаты проекта

Reading time 7 min
Views 21K

Второго октября 2015-го года мне в личку хабра пришло сообщение от старого дружани — Эмиля Гарипова — с предложением освещать подготовку его и ещё трёх коллег к сдаче CCIE на нашем сайте linkmeup.

linkmeup открытый. Я очень быстро понял, что идея может выгореть только если сделать из подготовки шоу. Знаете, вроде «CCIE за стеклом» или «Пусть лабят с Эмилем Гариповым». Выкладывать прогресс, материалы, лабы, личные переживания. Приглашать к совместным размышлениям.

Иначе никто не будет этого даже читать, и писать будет Эмиль в стол.

Именно с такими вводными 12 ноября состоялась первая ключевая встреча экспертов: Эмиль Гарипов и Наташа Самойленко.
Читать дальше →
Total votes 39: ↑35 and ↓4 +31
Comments 13

Information

Rating
Does not participate
Location
Кемерово, Кемеровская обл., Россия
Works in
Registered
Activity