вторник, 12 марта 2013 г.

Мобильные интернеты

Спасибо гуглу и его enterprise-like бенчмаркам за то, что у меня таки дошли руки написать эту статью.

Если вкратце, то ребята по ссылке выше для своих маркетинговых целей по продвижению SPDY решили не париться с мобильной сеткой (она же совсем нестабильная) и тупо пошейпили себе траффик (пожали канал до одного мегабита и сделали задержку в 150 ms). Покет лосс убрали нафиг, видимо вокруг их офиса с мобильными интернетами проблем нет. Счастливчики.

Про то, почему сам этот эксперимент является обычным enterprise-like бенчмарком, и почему радужные статьи ребят из гугла про SPDY на данный момент несколько не соответствуют реальности я писать не буду. По этому за последний год только ленивый не топтался. А вот то, что из себя представляет мобильный интернет вообще (и в моем ареале обитания в частности) я постараюсь расписать достаточно подробно (тот еще секрет полишинеля, но что-то с раздражением делать надо).

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

С моего домашнего компьютера получается 1-22ms, со средним очень устремленным к 1ms. Т.е. есть какой-то "хвост", но очень маленький. Когда до местячковых сайтов начинают появляться "хвосты" до 200ms у меня, обычно, начинают возникать нехорошие слова в адрес моего провайдера. С не местячковыми чуть хуже - ирландский датацентр амазона со своими вечными 120+ уже убил желание пользоваться услугами ряда милых стартапчиков.

Ок, давайте произведем такую же операцию, подключив компьютер через телефон к WiFi и к 3G поочередно. Проверять, понятное дело, не из кафешек, где можно вдоволь налюбоваться гавеным хипстерским интернетом, а из офиса/дома, где с интернетами дела обстоят сильно лучше.
WiFi: 2-249ms, со средним где-то в районе 9ms. Первый подвернувшийся ноут показал ровно те же результаты. Ура мобильной железке отвечающей за WiFi!
3G: 37-1366ms, со средним где-то в районе 130ms.

Т.е. вроде бы почти те же самые 150ms, которые использовались ребятами из гугла для имитации мобильной сети, только временами у нас запросы начинают залипать на секунду с лишним. Но попытка открыть какой-нибудь современный сайт это сильно больше чем один запрос. Та же m.lenta.ru это почти три десятка запросов, где практически любой запрос, залипнув на полторы секунды, может заставить пользователя в два раза дольше пялиться на пустой экран. И это, поверьте мне, далеко не самое страшное, что может случиться с вами при попытке просмотреть "мобильную" версию сайта. Что уж говорить про "не мобильные" сайты или ваше любимое приложение, которые открывает пяток соединений и начинает туда отсылать все подряд с завидной регулярностью.

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

Проблемы из воздуха
Давайте еще раз посмотрим на эксперимент. Да, у нас есть какие-то циферки, но в каких условиях они получены? Я, например, в основном обитаю в несильно плотно заселенных районах на городских окраинах. И качество мобильной связи меня, как правило, устраивает.

Мой коллега, которому я показал эти цифры, провел аналогичные замеры. И цифры у нас значительно разошлись. Мало того, что среднее для 3G оказалось почти в два раза больше (напомню, что мы все еще пингуем ресурс в пределах города), но еще и "хвосты" выросли чуть ли не на порядок.

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

Происходит это безобразие во многом потому, что воздух, по которому мы передаем сигналы 3G и прочего WiFi - это не только слегка сопротивляющаяся среда доставки (как в случае проводов, например), но еще и открытое пространство для всевозможных вмешательств. Радиоволны, стены, микроволновое излучение, электромагнитное излучение и тросионные поля магических единорожков - это все лишь небольшой перечень возможных преград, увеличивающих latency пока сигнал с вашего телефона прорывается к вышке и обратно. Даже обычная открытая микроволновка может здорово подпортить опыт пользования беспроводными интернетами. И в центре города этих препятствий сильно больше, чем посреди леса. Пара тысяч городских жителей с карманами, забитыми гаджетами, мешает вам сильнее, чем полторы голодные белки, бегающие от дерева к дереву.

Если хочется посмотреть это все в динамике - можете постоять где-нибудь в центре Москвы в будний день в час пик возле станции метро и попинговать, скажем, ya.ru. Забавная коррреляция ухудшения связи с прибывающими поездами практически гарантирована.

При этом стоя на месте маловероятно, что вы увидите потери пакетов - мобильные сети их отлично прячут за здоровенными задержками. Но когда вы начнете перемещаться по городу, то на потери пакетов насмотритесь почти гарантированно - при переключении между вышками или попадании в зону с фиговым покрытием потери пакетов еще как случаются. При этом можно сказать спасибо мобильным операторам, которые довольно странно ставят свое оборудование - спальный район почти гарантированно получит свой 3G, а вот бизнес-центр или молл, который недавно забабахали посреди пустыря, может еще долго довольствоваться одним только EDGE да WiFi с кафешек. Куски дороги, пролегающие мимо промзон и пустырей, так же не дадут насладиться быстрым и качественным интернетом. И мобильному оператору плевать, что там вечная пробка уже лет десять как.

Этот таинственный мобильный роутинг
Ок, я стою в чистом поле, сигнал отличный, но пинги все еще конские. ЧЯДНТ?

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

Дело в том, что GGSN стоят не у каждого подъезда, а где-нибудь, где удобно мобильному оператору. Так, например, несколько лет назад траффик TELE2 роутился через швецию. Т.е. сидите вы попивая чай где-нибудь в Екатеринбурге, а ваш прогноз погоды для мобильного телефона несется в швецию, оттуда на сайт, скажем, гисметео, и обратно. И дело не в раздолбайстве отечественных операторов - американцы спокойно заруливают траффик из Вегаса в Сан-Франциско.

Да, подобные проблемы скорее всего не видно из Москвы (угадайте почему так), но в городах-милионниках легко можно ощутить боль крюков длиной в 800 километров. Одно радует - эти сотни километров пролегаю совсем не через воздух и речь будет идти лишь об оверхеде в полста-сто миллисекунд. Правда вашим забавам с CDN может непоздоровиться, ну да оно и к лучшему - нефиг пихать толстый контент мобильным клиентам.

Итого
Дальше можно было бы затянуть шарманку про слабое мобильное железо и толщину канала, но будем честными - мобилки по железу уже потихоньку перестают отставать от персональных компьютеров большинства обывателей, а толщина канала от EDGE к 3G и далее в LTE растет весьма внушающими темпами. Но избавления от мобильного latency, которое на пустом месте норовит стать из плохого просто чудовищным, пока не видно. Скорее наоборот - от WAP отказались, других альтернатив под беспроводные сети не придумали и при этом все кому не лень стараются использовать HTTP и другую привычную TCP-машинерию, весьма чувствительную к высокому latency и потерям пакетов. Да, разработчикам стало жить проще, но  мы с вами платим за это своим собственным временем.

3 комментария:

  1. Я вырос на окраине рабочей городской парнишка в модной кепке зуб потёртый золотой

    ОтветитьУдалить
    Ответы
    1. Александр, прекращайте хулиганить в комментариях. А не то мне придется открыть локальный филиал увеземвлес.рф

      Удалить