История человека, который на неделю вывел из строя крупнейший в мире сервис электронной почты
В 1990-е America Online был крупнейшим онлайн-сервисом и поставщиком интернет-услуг в мире и насчитывал целых 5 млн пользователей. А в 1996 году случился крупнейший перебой в его работе — сбой, который показал, насколько важное место занял интернет в жизни людей. Человек, который предпочёл представиться как «Берт», знает историю изнутри и поделился ей с изданием The Register.
Именно Берт в то время отвечал за поддержку сервиса AOL Mail. Для него это открывало большие перспективы: в его первый рабочий день в 1995 году Берту поручили поддержку четвёртого шлюза входящей почты компании. Менее чем через год у AOL были «десятки серверов входящей почты», а сам он «из кожи вон лез, чтобы обеспечить их работу и при этом держать доступными, не вызывая проблем».
Главной сложностью были MX-записи, потому что у AOL их было столько, что DNS-пакеты стали слишком объёмными и не позволяли вместить ответный UDP-пакет в 512 байт, поэтому данные были усечены. Из-за усечения пакетов появлялось много проблем, в том числе несбалансированная нагрузка.
«Малая часть сайтов не могла доставить сообщения до нас вообще, потому что их система давала сбой, если DNS-ответы были усечены. Их процент был небольшим, но общее количество было значительным. Очевидно, нужно было что-то делать».
Так Берт и сделал.
«Мне в голову пришла отличная идея зарегистрировать список различных IP-адресов для небольшого количества обычных имён, чтобы по максимуму использовать компрессию доменных имён. Так я создал a.mx.aol.com, потом b.mx.aol.com, c.mx.aol.com и так далее. На время перебоя у нас было 9 доменов в DNS в качестве MX-записей, каждый на 5 IP-адресов. Все наши 45 почтовых серверов можно было зарегистрировать в DNS как MX-записи для AOL, а пакеты вмещались бы в нужные 512 байт ответного пакета, хоть и с трудом. Почта снова начала проходить без усечения, и почти все были счастливы».
А те, кто не был, указывали Берту, что ему нужен коммутатор для балансировки нагрузки перед МХ-записями.
Но, по словам Берта, «тот единственный, который у нас был, имел интерфейс 10BASE-T, и мы уже перешли на FDDI на серверной части, потому что трафик зашкаливал. Нам бы никак не удалось втиснуть весь трафик в малюсенький Ethernet-порт в 10 Мбит/с».
Берт поступил по-другому. Он поручил команде, отвечавшей за DNS-серверы AOL, сделать резервную копию в обход DNS-серверов провайдера «на случай длительного перебоя, чтобы люди могли получить нашу информацию. То же самое делала Advanced Network and Services».
7 августа 1996 года блестящий план Берта провалился.
«Из-за просчётов и несогласованности между сотрудниками AOL Network и принадлежащим AOL провайдером опорной сети ANS, произошёл 19-часовой сбой сети».
По словам Берта, причиной обрушения стало то, что «когда мы пытались доставить первое сообщение в очереди, нужно было проверить МХ-запись, взять эти 45 IP-адресов и начать как обычно устанавливать соединения. Мы подключались к первому IP-адресу и…ждали. Ждали две минуты, пока время не истекало, как с RFC. После этого мы пробовали второй IP, ждали две минуты, снова пробовали следующий IP. Всего получается 90 минут на попытку доставить одно-единственное сообщение. Остальная почта не обрабатывалась».
Об этом не знали пользователи интернета: они отправляли всё новые сообщения. А так как они не доходили до AOL, почтовые серверы «автоматически сбрасывали обработчик очереди каждые 60 или 30 минут, который заново начинал обрабатывать сообщения, одно за другим».
«Но если он на 90 минут застревал, пытаясь обработать одно сообщение к AOL, то через 30 или 60 минут запускался другой обработчик, брал всю очередь, не мог обработать сообщение, которое уже было в процессе обработки, и также застревал на 90 минут, пытаясь доставить AOL ещё одно сообщение. Вскоре у серверов заканчивалась оперативная память, подключались файлы подкачки, далее область подкачки тоже заканчивалась, а так как серверы в 1996 году были не такие мощные, то начинали перезагружаться, восстанавливали файловую систему и заново пытались отправить сообщения».
Из-за своей ошибки Берт стал получать письма с оскорблениями от известных распространителей спама, которые «любезно» поделились со всем миром его номером телефона: и некоторые из дозвонившихся грозились даже убить его. Нелестные письма, вероятно, тоже были, но о том, насколько много людей его ненавидело, Берт так и не узнал: почта попросту не доходила.
«Не помню, сколько компаний в тот день понесли убытки потому, что их сообщения не доходили, или же потому, что сами не могли ответить на важные письма», — отметил Берт. Компания смогла восстановить работу через 19 часов, а почтовый трафик вернулся к прежнему почти через неделю — всё это время мир ждал, пока будут разосланы электронные сообщения со всего интернета. По мнению самого Берта, из этого происшествия вышло и что-то хорошее, например, появились гораздо более гибкие и мощные почтовые серверы qmail и postfix.