Светлое будущее IPv6: когда уже наконец наступит новый мировой порядок

от автора

Яндекс.Почта теперь умеет обмениваться письмами с другими почтовыми системами по IPv6. Таким образом она становится второй в мире массовой почтовой системой, поддержавшей IPv6.

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

IPv4-адреса, которых было 4 миллиарда, уже закончились. Переход на IPv6 позволит вывести в онлайн 3.4×1038 устройств. А впереди у нас будущее, когда всё больше устройств у каждого человека будут подключены к интернету и когда в онлайн вслед за Европой и Америкой наконец выйдут все жители Азии и Африки. Поэтому всемирная сеть постепенно переходит на новый протокол связи, поддержка которого необходима любому сервису, который собирается работать в будущем в интернете.

От IPv4 к IPv6: история перехода

Как вы знаете, уже в сентябре 1981 года, когда Агентство передовых оборонных исследовательских проектов министерства обороны США опубликовало спецификацию IPv4, было понятно, что количество адресов конечно и равно 232. На первый взгляд число кажется большим. В 1995 году адресное пространство IP использовалось всего на 25%, но учёные и инженеры уже сформулировали и опубликовали первую спецификацию следующей версии базового протокола интернета, которую назвали IPv6. В новом протоколе заложили возможность использовать примерно 3.4 * 1038 (340 ундециллионов) адресов, что почти в 1029 (100 октиллионов) раз больше, чем в старой версии. В 2008 году адресное пространство IPv4 было заполнено уже на 86%.

В первом приближении план перевода интернета на IPv6 был описан почти 20 лет назад в RFC 1933, когда и была опубликована спецификация нового протокола. Он подразумевал полное переключение в 2007 году. Это оказалось очень оптимистичной оценкой. Только в 2000-м году о своей готовности поддерживать IPv6 заявил первый провайдер — японский NTT. Современный вариант описан в RFC 4213, и его тон несколько менее оптимистичен.

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

Однако время шло, адреса IPv4 распределялись, и в феврале 2011 ICANN раздала последние «четвёртые» адреса по региональным реестрам. Их пять — APNIC в странах Азиатско-Тихоокеанского региона, ARIN в Северной Америке, AfrNIC в Африке, LACNIC в Центральной и Южной Америке и RIPE в Европе. Уже в апреле 2011 года APNIC раздала все выделенные региону IPv4 адреса, кроме последней сети /8 (т.е. 224 или 16777216 адресов) и перешла в специальный режим распределения последних адресов. Аналогичные события в европейском сегменте интернета произошли в сентябре 2012 года, и RIPE также перешёл в режим выделения последних адресов. Кстати, Яндексу случайно достался последний блок 5.255.192.0/18 (и, соответственно, адрес 5.255.255.255) перед переходом в этот режим.

Чтобы разорвать порочный круг перекладывания проблем с провайдеров на интернет-ресурсы и назад, в 2011 году прошел World IPv6 Day. В этот день несколько крупнейших мировых сайтов включили на сутки IPv6. Целью этого включения была провека того, как оборудование и программное обеспечение у пользователей, провайдеров и интернет-площадок отреагирует на появление IPv6. А мы подняли копию главной страницы Яндекса на сайте ipv6.yandex.ru. Об этом запуске, о подготовке к нему и о результатах мы подробно рассказывали в одной из презентаций YaC 2012. Итогов было много и задач по этим итогам тоже немало.

Например, мы на себе испытали проблемы потери трафика при подключении IPv6. В частности, в одном из экспериментов мы открыли сервис suggest.yandex.net (обслуживающий подсказку в поисковой строке) по IPv6 на весь интернет. В результате обнаружилось, что мы теряли до 2% запросов, что было неприемлемо. Теоретически механизм работы систем с поддержкой IPv6 и IPv4 предполагает, что программа (например, браузер) сначала пытается подключиться к IPv6-адресу, а если это не удается, переподключается через IPv4. Проблема в том, что в современных операционных системах таймаут на подключение может составлять десятки секунд и, конечно, пользователь не будет ждать так долго.

Нам ничего не осталось, кроме как внедрить DNS AAAA whitelisting — начать показывать IPv6 адреса только тем провайдерам, в качестве IPv6-связанности которых с Яндексом мы были уверены. Мы отдаем себе отчет в административной сложности поддержки белых списков (проблема, в частности описана здесь) и плохого масштабирования в долгосрочной перспективе, однако для Рунета хороших альтернатив не видим.

Через год, 6 июня 2012 года, в мировой World IPv6 Launch Day мы запустились «теперь уже по-настоящему» несколькими нашими сервисами на IPv6. Тогда стали доступны веб-сайты yandex.com, mail.yandex.com и passport.yandex.com. Этот запуск был представлен на русском дне IPv6. Кажется, в России мы стали первым крупным сайтом, запустившим IPv6. Вконтакте присоединился через несколько дней или недель, а спустя еще какое-то время и Mail.ru. Одноклассники до сих пор не имеют IPv6 -адреса.

В 2013 году мы отключили поддержку белых списков для сервисов в зоне yandex.com, поскольку ситуация с поддержкой IPv6 в мире в среднем лучше, чем в Рунете. Сервисы в зоне yandex.ru по большей части все еще работают через белые списки, но мы надеемся, что сможем отказаться от этой практике уже в 2014 году.

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

Как происходил переход на IPv6 в Яндекс.Почте

Яндекс.Почта состоит из сотен компонент, многие из которых работают на открытом софте Open Source типа Postfix или MongoDB. Поддержка отправки/получения писем по IPv6 появилась в Postfix более 10 лет назад и была опробована многими тысячами почтовых администраторов до нас. Postfix работает у нас на серверах отправки, а также в качестве универсальной системы очереди. Очень надёжный и многофункциональный продукт. На приёме почты в Яндексе работает специальный высокопроизводительный сервер NwSMTP, созданный целиком внутри компании. Асинхронный и очень быстрый, NwSMTP при этом долгое время не поддерживал IPv6 и потребовал серьёзных разработок.

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

Целый ряд факторов в принятии решения о том, является ли письмо спамом, используют IP-адреса задействованных компьютеров. Так называемые репутационные методы накапливают и используют историческую информацию о таких объектах, как домены, IP-адреса, отдельные email-адреса. Все это для того чтобы делать обоснованные предположения о будущем их поведении. Очень упрощённо эта схема выглядит как хэш или ассоциативный массив, где ключом является, например, IP-адрес, а значением — информация о том, сколько спама или не-спама мы получили с этого адреса. Когда-то хранение и использование такого хэша даже для 232 разных возможных значений ключа представляло определённые сложности в программировании. Представьте, что происходит, когда нужно хранить репутацию IPv6-адресов, общее количество которых сильно превышает даже количество отдельных бит в оперативной памяти всех серверов Яндекса.

К счастью, адресное пространство IPv6 является очень разрежённым. Огромные последовательности, что называется, by design не используются. Дополнительно важным фактором оптимизации является стандартизация сети /64 как кванта выделения адресов в IPv6. В общем, в итоге всё заработало как надо.

Около года назад мы стали отправлять письма на внешние серверы по IPv6, если они это поддерживали. Эта часть работы потребовала лишь тонкой настройки Postfix и тщательного тестирования. Приём почты оказался более сложной задачей в первую очередь из-за антиспам-алгоритмов. Наконец и эта работа завершена — в феврале 2014 года мы начали приём писем по IPv6. Смотрите:

% host -t any mx.yandex.ru
mx.yandex.ru has IPv6 address 2a02:6b8::89
mx.yandex.ru has address 87.250.250.89
mx.yandex.ru has address 93.158.134.89
mx.yandex.ru has address 213.180.193.89
mx.yandex.ru has address 213.180.204.89
mx.yandex.ru has address 77.88.21.89
%

Теперь весь межсерверный трафик Яндекс Почты может быть принят и передан, используя протокол IPv6. Здесь мы не использовали белые списки DNS, ведь IPv6-связанность между серверами в целом лучше, чем между серверами и пользователями. Кроме того, работа с несколькими MX в SMTP позволяет по сути автоматически деградировать на IPv4 в случае неработоспособности IPv6. Наконец, серверный SMTP не является интерактивным протоколом, поэтому возможные таймауты при подключении не влияют непосредственно на пользовательский опыт.

Это изменение прошло незаметно для пользователей, и эта незаметность составляет особый предмет гордости для всей команды. Сделан большой шаг вперёд, созданы гарантии, что ваша почта будет надёжно доставляться Яндексом и через 2, и через 5, и через 10 лет, когда старые протоколы совершенно перестанут удовлетворять нуждам человечества и будут выведены из употребления.

Интересно, что все современные антиспам-защиты, работающие в рамках больших почтовых систем, таких как Yahoo!, Gmail, Яндекс, AOL, Mail.ru, Outlook.com уже нескольких лет работают в составе своеобразной общей экосистемы. Происходит осторожный обмен информацией об общих волнах спама, сделаны определённые настройки для надёжного взаимного обмена письмами и так далее. Мы все тесно сотрудничаем даже несмотря на то, что являемся конкурентами. Это, кстати, одна из причин, по которой никакие отдельно стоящие антиспам-решения не могут сравниться в качестве фильтрации с большими почтами. У них просто недостаточно информации и неоткуда её получить. Так вот, эта экосистема потребует определённого времени на самонастройку под повсеместное использование IPv6. Чем раньше начать эту работу, тем быстрее будет достигнут общий результат. Откладывать уже нельзя.

Почему провайдерам и большим игрокам важно поддерживать IPv6

Когда проблема нехватки IPv4 адресов из теоретической все больше становилась реальной, провайдеры начали использовать NAT. Но в итоге это не стало решением. Когда за NAT скрывается слишком большое количество устройств, сайты могут решить, что нагрузку на них создают роботы, и принять меры по защите от таких действий.

Такая проблема, в частности, приняла массовый характер в Беларуси. Произошло это сравнительно недавно, уже после перехода RIPE в фазу распределения адресов из последнего блока /8. Белорусские провайдеры не имели достаточного запаса IP-адресов и, оказавшись в условиях их нехватки, пошли путем увеличения количества пользователей за NAT. В результате некоторые интернет-сервисы приняли активность NAT-пользователей за деятельность роботов и некоторые из них полностью блокировали IP-адрес (и всех пользователей NAT) или увеличили интенсивность показа капчи. Таким образом, неготовность провайдеров к исчерпанию IPv4 адресов привела к снижению качества доступа в интернет для пользователей. Аналогичная проблема существует и для почтовых систем: там большие NAT-пулы означают, что письма, отправленные пользователем в NAT, могут быть приняты за спам и не дойти до адресата.


График IPv6-трафика на www.yandex.ru

На текущий момент, по разным оценкам, в интернете всего около 3% трафика используют IPv6, а 97% — старый IPv4. Но когда такие крупные игроки, как Яндекс, Google, ВКонтакте, Facebook, поддерживают IPv6 технически и идеологически, они подталкивают провайдеров к поддержке шестых адресов, они толкают в будущее весь интернет. Конечно, нам и самим важно понимать, что нашим сервисам хватит адресов. Но даже в совокупности их намного меньше по сравнению с тем, сколько сайтов может появиться в интернете в будущем и сколько людей получат доступ к нему.

ссылка на оригинал статьи http://habrahabr.ru/company/yandex/blog/215535/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *