?

Log in

No account? Create an account

Entries by category: лытдыбр

Тут какие-то перцы хвалятся хаскелевым веб-сервером Yesod. Мол, у него на Amazon xlarge аж 64kRPS получается:



Собрал я простейший код через yesod init, и чуть-чуть пробенчмаркал. Так сказать, smoke test сделал. И сравнил со смок-тестом косера. Один и тот же ноутбук (Core 2 Duo 1.4 GHz), один и тот же httperf --num-conns=10 --num-calls=1000 --rate 100:

Yesod: 861.1 req/s
Snap: 3788.4 req/s
Coser: 15680.2 req/s

Мутно всё как-то. Наверное, можно что-то там нахимичить и оно сразу заработает как надо, на всю силу. Кто возьмётся?
Поставить шлюз между Рунетом и остальной Сетью предлагает президент отечественной ассоциации разработчиков ПО Валентин Макаров. По его мнению, шлюз, через который будет открываться доступ к зарубежным ресурсам, обойдется в несколько сотен миллионов долларов, а его возведение займет около 10 лет. Необходимость защитить Рунет от внешних угроз ранее также высказывал и министр связи Игорь Щеголев.

[...]

Один из самых знаменитых технических ограничителей доступа к глобальным информационным ресурсам реализован в Китае. По сообщению газеты The Epoch Times, «Золотой щит», известный также как «Великий китайский фаерволл» (Great Firewall of China), обошелся стране в $800 млн (6,4 миллиардов юаней). Близкое к Министерству общественной безопасности Китая издание China News Service полагает, что «Великий китайский фаерволл» включает в себя 640 тыс. серверов.


Не буду вдаваться в политические детали этой туфты (про желание присосаться к распилу бабла даже упоминать не буду), но вот про великий китайский фаерволл расскажу отдельно. Дабы сейчас это уже можно.

Всё началось с того, что в Netli (Akamai) решили поставить кластер в Шанхае, ибо многих крупных клиентов (Toyota, etc) заботила скорость передачи данных между сайтами в штатах и их потребителями в континентальном Китае. С превеликим трудом (кластер, посланный через FedEx, оказался сначала в Бразилии, потом его вообще потеряли; деталей и тайминга не помню, помню только суть) кластер был установлен и запущен.

Суть технической реализации Netli-протокола состояла в том, что между кластерами в разных странах протянут специальный протокол (NP/IP, аналог TCP/IP), который имел специальные свойства и реинтерпретированные флаги, делающие его существенно более эффективным чем обычный TCP/IP, но по структуре пакетов L4 он почти полностью совпадал TCP для лёгкого прохода сквозь шлюзы. Запрос, пришедший на кластер в китае, терминировался TCP endpoint'ом прямо там, а дальше шёл через эффективный NP/IP до штатов, где превращался опять в TCP/IP и шёл до конечного сайта.

Как было прекрасно известно, в Китае работает великий китайский файерволл, и нас заботил такой момент: будет ли наш трафик между кластерами подвергаться цензуре, и если да, то как?

Мы запустили кластер и как-то никаких проблем прохода через фаерволл не обнаружили, и быстро забыли о проблеме — было гораздо больше вещей, над которыми нужно было понервничать. Через эту связку NP/IP мы изнутри китая могли открывать запрещенные сайты, но мы ничего странного в этом факте не видели.

Примерно через месяц-другой Олег Поляков (operations engineer) подошёл и аккуратно, в своём стиле, спросил:
— Лев, я хотел спросить, у нас NP протокол как использует RST флаги? И почему нужно слать по два пакета сразу?

Честно сказать, я охренел.

Поизучав проблему, наше понимание происходящего вдруг расширилось до осознания той диверсии, которую наша компания совершила и продолжала совершать, как говорится, as we spoke. Нас заметил Great Chinese Firewall!

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



Но вот беда, у нас же был не TCP протокол, а NP, очень похожий по структуре пакетов! Плюс, из-за специальных алгоритмов управления потоком, протокол был настолько быстр, что файервол не успевал послать пакеты вовремя! У них были съехавшие sequence numbers, не попадающие в допустимое окно! Очевидно, фаерволл был реализован в виде железки, сидящей рядом с трафиком, а не пропускающим его сквозь себя.

Короче, мы были приятно удивлены тем что происходит — наши железки брут-форсом проломились через великий китайский фаерволл, даже не используя шифрование. И главное — мы не сразу заметили его, а только с течением времени. А если бы у Олега не было привычки сниффер запускать направо и налево? :)

Мы даже успели подумать "а что если у NP вообще отключить реагирование на RST", но решили, что в любой честной охоте нужно дать зверю шанс. Так и работали: раз в несколько дней наш долгоиграющий NP канал всё-таки прерывался, видимо китайский RST успевал вовремя. Но всё быстро восстанавливалось через долю секунды и пёрло дальше без каких-либо препятствий.

Такая вот диверсия.

Tags:

Profile

lionet
Lev Walkin
Website

Latest Month

December 2016
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031

Syndicate

RSS Atom
Powered by LiveJournal.com
Designed by yoksel