Сеть хостинг-провайдера оценивают по худшему дню, а не по среднему. Наша построена вокруг простой идеи: у каждой узловой площадки не менее трёх независимых выходов в интернет, а как можно больший объём трафика вообще не касается транзита, потому что обменивается напрямую на публичных точках пиринга. В этой статье мы рассказываем, из чего состоит наш набор подключений, как выбираем пути и что происходит, когда у одного из операторов плохой день.
Транзит: три аплинка на каждый хаб
Площадки во Франкфурте, Нью-Йорке и Сингапуре подключены каждая к трём транзитным провайдерам по физически раздельным вводам в здание и на отдельных маршрутизаторах. Провайдеры подобраны так, чтобы их собственные магистрали различались: Tier 1 с глобальной сетью, крупный европейский или региональный оператор с плотным покрытием внутри страны и третий — с другим составом клиентов ниже по цепочке. У Амстердама, Хельсинки и Лос-Анджелеса по два аплинка плюс частная магистральная связь с ближайшим хабом, которая принимает на себя трафик, когда оба местных аплинка работают с деградацией.
Три — то число, при котором авария у одного оператора, плановые работы у второго и утечка маршрутов у третьего могут случиться в одну неделю, а никто этого не заметит; такое у нас уже случалось дважды.
Пиринг: держим трафик локальным
Мы присутствуем на DE-CIX Frankfurt, AMS-IX, Equinix IX в Нью-Йорке и Сингапуре, а также на более мелких местных точках обмена в Хельсинки и Лос-Анджелесе и придерживаемся открытой политики пиринга: сессию получает любой, кто о ней попросит. Через публичный пиринг проходит примерно 60% нашего исходящего трафика в Европе и 45% — в Азии. Трафик к крупным контент-сетям, к провайдерам доступа (eyeball ISP) и к облачным провайдерам идёт напрямую через коммутационную фабрику точки обмена, за один хоп, не проходя через магистраль транзитного провайдера.
Для вас это означает меньше хопов и меньший джиттер до сетей, в которых находятся ваши пользователи. Для нас — то, что проблема с транзитом затрагивает меньшинство трафика, благодаря чему переключение на резервный путь получается скучным.
Как мы выбираем путь
По умолчанию BGP выбирает кратчайший AS-путь, а он нередко оказывается не самым быстрым. Мы корректируем выбор на трёх уровнях:
- Предпочитать пиринг транзиту через local preference, потому что прямая сессия почти всегда даёт лучший путь.
- Предпочитать самый чистый транзит, когда один и тот же префикс предлагают несколько провайдеров. Небольшой парк зондов каждую минуту измеряет потери и задержку до нескольких тысяч сетей назначения через каждый аплинк. Если потери через аплинк до какой-либо сети превышают 0.5% в течение пяти минут, для этого направления его приоритет автоматически понижается; когда измерения приходят в норму, приоритет возвращается.
- Настраивать немногочисленные исключения вручную: для нескольких далёких направлений, где кратчайший путь проходит через перегруженную точку обмена, задаётся статическое предпочтение в пользу более длинного, но менее загруженного маршрута.
Входящим трафиком управлять сложнее: как до нас добираться, решает остальной интернет. Мы анонсируем одни и те же префиксы всем аплинкам и используем prepend и community только для того, чтобы увести трафик с пути, на котором зонд фиксирует потери, но никогда — ради экономии на более дешёвом операторе.
Как выглядит плохой день
В прошлом квартале у одного из аплинков во Франкфурте произошёл сбой магистрали, из-за которого около часа на направлениях в Северную Америку терялось 40% пакетов. Зонды заметили проблему в течение двух минут и понизили приоритет оператора для затронутых префиксов; трафик перешёл на два других аплинка, ёмкость которых рассчитана так, чтобы любой из них мог принять на себя всю площадку. Клиенты увидели несколько минут повышенной задержки до США — и ничего больше. На странице статуса за этот период появилась запись «Деградация» для транзита во Франкфурте, потому что так оно и было, хотя влияние оказалось небольшим.
Полная потеря площадки — тот случай, ради которого существует магистраль: если бы Амстердам лишился обоих аплинков, его трафик ушёл бы через Франкфурт по частной связи. По этому пути рабочий трафик за пределами учений не ходил ни разу, а учения мы проводим дважды в год.
Ёмкость и правило её наращивания
Каждый канал наращивается, когда его загрузка по 95-му процентилю превышает 50% две недели подряд. Это значит, что в штатном режиме канал не должен быть заполнен больше чем наполовину, а вторая половина остаётся на момент, когда откажет соседний канал или потребуется поглотить атаку. Дешёвый хостинг обычно дёшев потому, что кто-то пренебрёг этим правилом; это одна из немногих статей расходов, которых не касается наше правило ценообразования.
Проверьте сами
- Looking Glass показывает BGP-пути, ping и traceroute от каждой площадки до любого адреса.
- Наша AS зарегистрирована в PeeringDB с указанием точек обмена и политики пиринга; на запросы сессий, отправленные по указанному там контакту, отвечают в течение нескольких дней.
- На странице статуса транзит и пиринг показаны отдельными компонентами по каждой площадке, с историей, поэтому деградация аплинка видна, даже если вы её не ощутили.
