Pull to refresh
21
0
Раевский Максим @ramax

User

Send message
С трейсом всё хуже, чем с пингами. Трейс и до провайдера может не дойти. Echo request / reply чаще пропускается, чем TTL exceeded. Да и зачастую на роутерах no ip unreachables стоит, что правильно.
Опять же, трейс строить дольше, т.е. задержка перед отдачей контента ещё увеличится. В общем — мимо денег.
Стройная система костылей и подпорок? ;) И проблему закэшированного ответа это всё равно не решает. Как и проблему выбора узла, куда балансировать.
А если я захочу слить зону, скажем, в RIPN DNS?
Это, конечно, моё субъективное ИМХО, но DNS-балансировка — это зло, пока что подтверждаемое практикой.
Формально — это не реклама, т.к. оплачено не было.
Круто! Т.е. и DNS надо подстраивать под google? А кэширует ответы он тоже с учётом подсети? А другие «альтернативные» DNS тоже поддерживают такой механизм?
Нет уж, там где стандарты кончились, стабильности и предсказуемости нет.
Чтобы направить клиента на несколько узлов, каждый узел должен иметь свои глобально маршрутизируемые адреса (в случае anycast — нет). Чтобы анонсировать в BGP, нужно по /24 на каждый узел. Умножаем на количество узлов. Получаем, что нам столько не дадут.
Альтернативы? Провайдерские адреса. Т.е. каждый провайдер, подключенный к узлу, должен будет дать для всех серверов этого узла адреса. Уже тяжело администрировать (а в случае с IX — это просто нереально). Иначе трафик будет ходить неоптимальным маршрутом для тех провайдеров, которые своих адреса не дали. И по-любому, балансировщик должен будет учитывать не только узлы, но и откуда пользователь ломится, чтобы выбрать соответствующий IP-адрес этого узла.
Жуть с ружжом и бабка со стингером. :(
Код будет очень тяжелый. К тому же возникнет другая проблема: где взять столько IPv4 адресов в наше нелёгкое время?
И не забывайте, Стим — это «толстый клиент», а у нас, даже приложения для ТВ — это «тонкий клиент». Javascript, конечно вырос, но всё равно.
Опять же: если с клиента «пинговать» все узлы, то как скоро начнётся кино? И ведь каждый просмотр надо будет начинать с пропинговки: как оно там сейчас? В общем, очень тяжёлое решение выйдет.
А толку-то, если абонентское оборудование игнорирует TTL? Кстати, говорят, что гуглоднс тоже, но сам я такого в нём не видел.
Зачем проксировать? Чтобы надо было каналы регионы строить? Нет, спасибо! При архитектуре с редиректом каналы не нужны, а задержка будет та же, если не больше. К тому же, если сейчас служебный канал до узла упадёт, то обслуживание абонентов продолжится. А если проксировать — при падении этого канальчика надо будет класть весь узел, чтобы не портить обслуживание.
Да, в точку. По всем пунктам. :) Думаю, всё сойдётся, когда я напишу про устройство самого регионального узла. Там станет понятно, как именно мы всё компенсируем.
Пока что — обратите внимание: если контент на узле не найден — абонент отправляется в Москву.

Но главная проблема ДНС-балансировки — это инертность. Ждать 2 недели (!!!) пока абоненты перестанут приходить на узел — недопустимо. 2 недели — это у нас был опыт изменения адресов в ДНС. Ждали 2 недели, пока нагрузка по старым адресам пропадёт. И это при TTL 15 минут.
Для меня это некая данность из истории. На самом деле, там был такой своеобразный хабраэффект — об ivi.ru вышел репортаж в программе Вести. Может, кто из старожителей ответит точнее.
Таааак… А вот с другого роутера, тоже с прямым подключением к AS31133 уже другое:
gw-linx-1#ping  94.25.232.249 df-bit size 1482
Type escape sequence to abort.
Sending 5, 1482-byte ICMP Echos to 94.25.232.249, timeout is 2 seconds:
Packet sent with the DF bit set
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/14/16 ms
gw-linx-1#ping  94.25.232.249 df-bit size 1483
Type escape sequence to abort.
Sending 5, 1483-byte ICMP Echos to 94.25.232.249, timeout is 2 seconds:
Packet sent with the DF bit set
...
Success rate is 0 percent (0/3)
gw-linx-1#traceroute 94.25.232.249
Type escape sequence to abort.
Tracing the route to client.yota.ru (94.25.232.249)
VRF info: (vrf in name/id, vrf out name/id)
  1 37.29.17.194 [AS 31133] 4 msec 0 msec 0 msec
  2  *  *  *
  3 37.29.4.162 [AS 31133] 12 msec 12 msec 16 msec
  4  *  *  *
  5 yota.ru (94.25.208.193) [AS 47395] 16 msec 16 msec 16 msec
  6  *  *  *
  7  *  *  *
  8  *  *  *
  9  *  *  *
 10  *  *  *
 11  *  *


А вот трейс с первого роутера:
gw-dtln-1#traceroute 94.25.232.249
Type escape sequence to abort.
Tracing the route to client.yota.ru (94.25.232.249)
VRF info: (vrf in name/id, vrf out name/id)
  1 78.25.79.109 [AS 31133] 4 msec 4 msec 4 msec
  2  *  *  *
  3 37.29.4.162 [AS 31133] 16 msec 20 msec 16 msec
  4  *  *  *
  5 yota.ru (94.25.208.193) [AS 47395] 120 msec 16 msec 16 msec
  6  *  *  *
  7  *  *  *
  8  *  *  *
  9  *  *  *
 10  *  *  *
Проверил оба IP из дома. Ведут по части MTU себя одинаково. Но всё-таки, почему до них MTU=1462?
А вот с рабочего роутера (прямое подключения к AS31133) всё правильно:
gw-dtln-1#ping  94.25.232.249 df-bit size 1500
Type escape sequence to abort.
Sending 5, 1500-byte ICMP Echos to 94.25.232.249, timeout is 2 seconds:
Packet sent with the DF bit set
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/14/16 ms

Если нужно — готов подбросить трейсов и прочих таблиц маршрутизации для анализа.
Кстати, даже в прямом стыке с Yota нет этой сети. Где ЦОД? В Самаре? ;)
Чем характерен мобильный интернет? Уменьшенным значением MTU. Как с этим бороться? При помощи PMTUD (ICMP packet too big).
Проделал сейчас из дома (проводной провайдер QWERTY/cnt.ru, MTU=1500) такой простой эксперимент:

ramax-mba:~ ramax$ ping -D -s 1454  94.25.232.254
PING 94.25.232.254 (94.25.232.254): 1454 data bytes
1462 bytes from 94.25.232.254: icmp_seq=0 ttl=241 time=17.074 ms
1462 bytes from 94.25.232.254: icmp_seq=1 ttl=241 time=17.798 ms
^C
--- 94.25.232.254 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 17.074/17.436/17.798/0.362 ms
ramax-mba:~ ramax$ ping -D -s 1455  94.25.232.254
PING 94.25.232.254 (94.25.232.254): 1455 data bytes
Request timeout for icmp_seq 0
^C


О чём нам это говорит? О том, что MTU для сервера под вопросом равен 1454+8=1462 байт (всё ж таки стандартом в интернете сейчас можно считать 1500), а какой-то роутер ICMP packet too big не посылает или фильтрует. Как мой провайдер видит этот адрес?
BGP routing table entry for 94.25.232.0/24, version 192351247
Paths: (4 available, best #4, table default)
Multipath: eBGP
  Advertised to update-groups:
     37         212        229       
  12389 31133 47395, (received & used)
    212.15.122.229 (metric 6) from 213.85.208.90 (213.85.208.90)
      Origin incomplete, metric 0, localpref 100, valid, internal
      Originator: 212.15.122.229, Cluster list: 213.85.208.90
  20764 20764 31133 47395
    81.27.254.93 from 81.27.254.93 (80.64.96.155)
      Origin incomplete, metric 8, localpref 100, valid, external
      Community: 20764:3006 20764:3010 20764:3021
  20764 31133 47395, (received-only)
    81.27.254.93 from 81.27.254.93 (80.64.96.155)
      Origin incomplete, metric 8, localpref 100, valid, external
      Community: 20764:3006 20764:3010 20764:3021
  12389 31133 47395, (received & used)
    95.167.38.37 from 95.167.38.37 (95.167.88.40)
      Origin incomplete, localpref 100, valid, external, best
      Community: 12389:5 12389:6

А как видит МТС?

BGP routing table entry for 94.25.232.0/24, version 692561501
Paths: (2 available, best #2, table default)
Multipath: eBGP
  Advertised to update-groups:
     3          8          9          10         15         21        
  31133 47395, (received & used)
    195.34.52.77 (metric 3) from 195.34.52.182 (195.34.52.182)
      Origin incomplete, metric 0, localpref 120, valid, internal
      Community: 8359:5032
      Originator: 195.34.52.77, Cluster list: 83.59.83.59
  31133 47395, (received & used)
    195.34.52.77 (metric 3) from 195.34.52.181 (195.34.52.181)
      Origin incomplete, metric 0, localpref 120, valid, internal, best
      Community: 8359:5032
      Originator: 195.34.52.77, Cluster list: 83.59.83.59


О! Совпало!!! Оба провайдера проходят через Мегафон. Может быть, не стоит сразу на конкурента помои выливать, а посмотреть, кто ж блокирует ICMP по пути?
Кстати, странно, что этот IP адрес не светится на MSK-IX.
Да какая ж это проблема? Коробки с преднастроенным оборудованием отдаются курьерской компании, и — вперёд! Монтаж, как правило, делаем силами сотрудников ЦОД. Хотя, я вот в Краснодар съездил с огромным удовольствием в июне. :)
Проблемы — это когда какой-то непредусмотренный фактор вылезает. Один раз шефу пришлось решать проблему электроснабжения стойки. Но это всё-таки экзотика.
Серверы готовятся puppet'ом. Циски конфигурятся копи-пастом и последующей доводкой напильником по месту.
Насчёт набора софта — это тема для отдельной хорошей статьи (и не моего авторства).
Сложности — они всегда есть. Даже вот так на вскидку ничего выделить не могу. Но обещаю по теме дальнейших статей по возможности это освещать.
Технические подробности — понятие растяжимое. ;) Как всегда, хочется знать, какие именно? В какую область двигаться?
Зачем? Чтобы увеличить объём текста? Даже с моим знанием географии «на тройку» все города по карте узнаваемы. :)
Ну, ещё могу рекомендовать воспользоваться RIPE DB. У нас там актуальная информация.
Этот вопрос — целиком и полностью в руках акционеров. Такой информации у меня нет.
Можно я сейчас не буду отвечать на первый и третий вопросы? ;) А то до следующей статьи дело не дойдёт. ;)
В Новосибе один узел, один из самых крупных региональных.
Считали, конечно.
По моему рассуждению, такая информация — очень сильно конфиденциальная, а то и коммерческая тайна. Я узнаю наше отношение к этому вопросу, и если мне разрешат, тогда напишу.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity