Новости флота

Распил по-американски - Zumwalt

Статья написана в октябре 2013 года

Хомячкабр – это не сайт. Это сексуальная ориентация.

Новый эсминец ВМС США работает под управлением Linux

Статья по ссылке – один из образцов т.н. “линуксправды”, постулатом которой является то, что любая информация, способствующая самовосхвалению членов СПО-секты, является необсуждаемой и истинной. Почитаем, посмотрим, что по факту.

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

Статья начинается с вводной, ставящей цель показать возбуждённым красноглазым фанатикам, к чему они Сопричастны. Вводная сразу блещет Правдой – действительно, вот так уникальный эсминец! Ракеты, пушки – этого у эсминцев ведь обычно нет. Зенитные установки, чтобы атаковать цели на море и на берегу – эксклюзив, конечно, в военном деле, ну да ладно, автор же явно горел желанием написать про линукс, так что ОК. Двигатели ещё, корпус забыл – надо добавить, список покрупнее будет, всё людям приятнее.

Но самое необычное, что корабль работает полностью под Linux

Данная мантра повторяется в тексте несколько раз, для того, чтобы скрыть фактическое положение дел – стандартный приём для линуксправды, чтобы целевая аудитория услышала ключевые слова. “Предприятие Х абсолютно полностью перешло на linux (по факту – поставило один сервер для некритичной задачи)” – типовая подобная ситуация. В ситуации полного отсутствия каких-либо успехов у СПО сие хорошо подогревает целевую аудиторию – ведь если встать в круг и скандировать “у нас всё хорошо”, то через некоторое время станет лучше.

Для этого эсминца написано 6 млн строк кода программного обеспечения. Стоимость постройки корабля составила $3,5 млрд, небольшая часть этих денег пошла на оплату труда программистов.
Многое из написанного ПО используют в компьютерных системах других кораблей класса Zumwalt. Второй эсминец этого класса USS Michael Monsoor уже начали собирать.

Вот тут начинается интересное.

Во-первых как-то странно получается – статья про первый эсминец в новой серии, который только будет спущен на воду. Второй эсминец этой серии только закладывается, третий вообще в планах. Больше в этой серии эсминцев нет, она новая совсем. И тут “Многое из написанного ПО используют в компьютерных системах других кораблей класса Zumwalt”. Как, пардон? В этой серии нет не то что стоящих на боевом дежурстве, а просто спущенных на воду. Т.е. софт на практике не работал ещё ни разу. Ну да для СПО, это норм – “вроде сконпелировал, вроде работает, а дальше кому надо тот сам баги найдёт и допишет”.

Стоимость – тоже весьма показательна.

Программа Zumwalt’ов идёт с 1991 года. Первоначально, военно-морские силы надеялись построить 32 таких эсминца. Позднее это число было уменьшено до 24, а потом и до 7, по причине высокой стоимости новых экспериментальных технологий, которые должны быть включены в эсминец. Потом оставили два. Почему так? Ключевая причина проста – затраты на “новые технологии управления” были такими дикими (системных интегратора там в проекте два – Raytheon и Lockheed Martin, и оба очень любят кушать), что Палата Представителей США вынесла это на обсуждение и признала их чрезмерными. В частности, затраты составляют около половины стоимости проекта.

Т.е. за 6 миллионов строк некоего софта запрошено чуть меньше 2 миллиардов баксов. Но ещё речь не идёт о поддержке – а по доступной информации, затраты на постройку оценивались в 3.2 миллиарда долларов, а поддержка одного корабля (полный lifecycle) – в 4 миллиарда долларов. Доля затрат на ПО в этой поддержке не известна, однако малой она быть при таких стартовых аппетитах и экспериментальной серии не может никак. Т.е. стоимость ещё выше.

Софт для серийного эсминца, далеко не флагмана флота, оказался сопоставим по цене с новым космодромом на Хайнане (самый технологичный в мире, на его фоне то, что в США на мысе Канаверал – музейный экспонат). И это – не считая стоимости поддержки, мы её не знаем. Вот такой вот бесплатный линукс, в котором “всё уже готово по сути только чуток дописать, да за три минуты, да на скриптах”. Получается, что заявления про линукс и СПО – удобный способ накрутить стоимость штучному закрытому самописному софту? Ох как удивительно, ну кто бы мог подумать.

Что же такого делает этот софт?

Если покопать оригинал, то там явно описывается, что по сути используется закрытая ОС реального времени, не базирующаяся на ядре Linux (т.к. ядро линукса не реалтаймовое ни разу, в отличии, допустим, от старенькой Windows CE), которая используется для “adaptors based on single-board computers”. По сути – самописный firmware. К СПО это никак не относится, под лицензию GPL не подпадает, исходники не доступны, ядро реалтаймовое а не линуксовое, и софт данный далеко не бесплатен. То есть соврали во всём.

Также есть пассаж, проливающий свет на использование ПО на рабочих местах:

Called the Common Display System, or CDS (pronounced as “keds” by those who work with it), the three-screen workstations in the operations center are powered by a collection of quad-processor Intel motherboards in an armored case, which gives new meaning to the nautical phrase “toe buster.” Even the commanding officer’s and executive officer’s chairs on the bridge have CDS workstations built-in.
Each CDS system can run multiple Linux virtual machines atop LynuxWorx’s LynxSecure, a separation kernel that has been implemented in CDS as a hypervisor.

Т.е. тут тоже – проприетарный дорогой гипервизор.

Где же тогда линукс и СПО на корабле-полностью-на-линуксе? Где это чудесное Штурмовое СуднО Щвабодки?

Давайте поищем Тот Самый Опенсорс, который Бесплатно И Щвабодно И Свято И Неуязвимо.

Наверное, он в контрольных системах наводящихся ракет? Да нет, там проприетарное ПО реального времени, адресно заточенное под нужную задачу и крайне жестко вжатое в ограниченные ресурсы, на которых линукс даже не запустится.

Ой, наверное упомянутые в статье “235 стоек IBM’овских серверов” весь трафик гоняют через самосборный софтверный свич на линуксе? Да нет, там сетевое оборудование с высокими требованиями по временным и скоростным характеристикам коммутации, поэтому работающее на проприетарном ПО, никакого линукса и СПО.

В комментариях автору, сильно-сильно грамотному линуксжурналисту (ну, не пишут другие журналисты восторженно про линукс, что поделаешь), объясняют, что Lynx – это не linux, это закрытая самописная unix-based ОС реального времени.

Автор игнорит – похоже по названию на линукс, значит линукс. Точка. Отличный ход.

Что ж получается в итоге? Проект по строительству первого корабля идёт 22 года, многократно пересматривался из-за огромной стоимости, напрямую связанной с использованием самописного ПО. Настолько огромной, что деньги выбивались 5 раз (5 пересмотров бюджета с Палатой Представителей – это именно выбивались, просто можете себе представить, допустим, строительство чего-то в России, для которого надо было бы 5 раз заседать Госдуме с целью пересмотра бюджета). Во всех критичных подсистемах корабля используется проприетарное и очень дорогое ПО – от конечных узлов до системы виртуализации. Тупо распил бабла.

Это, оказывается, корабль-полностью-на-линуксе. Эпично, что.

Я считаю, это огроменный линуксуспех. Старшеклассник Вася, гоняющий дома генту на купленом папой по акции “4 ядра – 4 гига” компе, должен завтра сказать в школе, что он теперь не только эксперт по физике (ну ведь коллайдер-то на линуксе, а у Васи тоже линукс, следовательно Вася Сопричастен Успеху), а ещё и угрожает всему миру (неспущеным на воду эсминцем с бесплатным псевдолинуксом за 2 миллиарда баксов). Конечно, старшеклассник Вася переписал бы весь код лехко за 100 бачей, да за три минуты, да в линухе всё само и так есть, а чего нет, то и нинужно, но Васю не берут на работу – его знания суперкомпьютерной ОС почему-то никому не нужны, наверное, интриги завистников и противников Щвабодки.

Почитаем комментарии восторженных хомячков – они, как всегда, держат марку.

Про деньги:

На самом деле это копейки для военного бюджета США.
К тому же эти деньги в основном потрачены на разработки новых технологий, которые когда-нибудь будут полезны и гражданке

Было бы крайне интересно почитать про то, как затраты на разработку закрытого софта для, допустим, ракеты Sidewinder, помогла гражданке. Небось уже можно скачать. Вводная же про “на самом деле” тонко намекает, что цифра затрат-то охеренная даже с точки зрения линуксфанатиков.

Отдельные дискуссии просто фееричны:

$3,5 млрд,
Ясен пень, что им приходится потом мочить людей тысячами по всему миру, такие вклады надо окупать.

Вы не правы. Во первых — это достаточно небольшие деньги в масштабах США. Во вторых — это наоборот хорошо, что они показывают своему народу что они разрабатывают, сколько это стоит и проводят подобные фотосессии. Как будущий налогоплательщик США я рад видеть достаточную степень прозрачности. У нас же мало того что не показывают и не рассказывают, так еще и закрытая часть бюджета в 2 раза больше чем в США (вдумайтесь, в США ВВП в разы больше, и при этом закрытый бюджет меньше).

Вот она – целевая аудитория СПО. Малограмотные IT-лузеры с “рашка-парашка-потому-что-я-тут-не-востребован-пора-валить”. И снится ему Святое Гражданство Святой Страны, в которой Всё Правильно, нет долга в 17 триллионов и нулевого роста экономики, и можно напечатать сколько хочешь денег, и просыпается он широко улыбаясь и обсдамши. Пьяный нищий линуксоид-лакей как символ креативного класса, поравалильщиков и хрипетелей про “неправильную страну”. Дикий распил бабла в США – это вовсе не распил, нет. “Там всё свято, такого там быть не может в принципе” – ритмично работая рукой, шепчет линуксадмин, попутно качая с десяток патчей на ядро.

Дальше, кстати, замечательное линуксобсуждение линукссетевиков.

Отправка команд запуска ракет по UDP? OMG.

А в чем именно Вы видите проблему?

Ну во-1, в исходной статье написано TCP и UDP.
Во-2, у нас в подобных системах как раз именно UDP и используется осмысленно. Гарантия доставки осуществляется встречным UDP-пакетом от получателя (с контрольной суммой и т.п.). Если отправитель (управляющая система) не получает контрольный обратный пакет — выдает ошибку. Это позволяет на уровне прикладного протокола взаимодействия контролировать доставку, не полагаясь, например, на таймауты TCP.

Иными словами, главная проблема TCP состоит в том, что его придумали не тут. TCP решает ровно эту задачу — гарантированной доставки. Выбирая между самопальным протоколом и TCP, имхо выбор очевидно ложится на TCP. А вопрос «таймауты большие», вообще говоря, лечится тюнингом таймаутов под свойства сети и систем.

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

Шоу “убей себя фейспальмом”. Потом спрашивают – почему “топовый” линукс-статус RHCE по уровню сетевых знаний ниже базового CCNA.

Оказывается, протокол UDP делится на осмысленный и неосмысленный – это важное нововведение в сетевых технологиях. А сессионный уровень, который поверх UDP – это то же самое, что прикладной протокол.

Гарантия доставки – это встречный пакет АЖ с контрольной суммой – видимо обычно-то в UDP-датаграмме контрольной суммы нет, и наличие оной как-то связано с гарантией доставки.

Но самое жуткое – это упоминание про то, что кто-то с подобным уровнем знаний (т.е. линукссетевик, не знающий азов сетевых технологий и модели OSI) занимается проектированием протоколов. Это реально трэш и линуксподход вида “ну я в TCP не разобрался сходу, там опций много, я три минуты потыкал настройки, чё то непонятно нифига, давайте лучше с нуля писать, это ведь дольше и дороже, и сразу заявим что у нас будет лучше чем в TCP, просто потому что с TCP для нас разобраться сложновато было, не потянули”.

Дальнейшие откровения ещё более фееричны.

Засилье TCP в современном интернете возникло не потому, что он удобен для решения разных задач, а потому что он хорошо NAT’ится. Если у вас в сети NAT не используется, то диапазон применимости TCP резко снижается.

Прикиньте, в контексте обсуждения “TCP или UDP” выбор TCP, оказывается, обусловлен тем, что он хорошо NAT’ится. А UDP-то, видимо, иначе совсем. И применяемость TCP и базирующихся на нём протоколов – она к NAT привязана.

Т.е. вот почта у вас бегает по SMTP / POP3 / IMAP4, а они поверх TCP – вы подумайте серьёзно, если NAT’а нет, может, надо другое использовать, ведь применимость TCP сразу резко снижается.

В случае TCP задержка — пакет туда, пакет обратно, снова пакет туда. Рост в три раза.

Рост в три раза! Бригада линукссетевиков прикинула на счётах, и решила – что раз в TCP в handshake используется три пакета, то это равнозначно тому, что TCP в общем случае использует в три раза больше пакетов, чем UDP. Действительно, ведь вся работа TCP – это круглосуточный handshake, исключительно для развлекательных целей.

Так что, коллеги, после разбора очередного линуксуспеха, всё оказалось как обычно – примерно как с Мюнхенским провалом линукса. Ну и целевая аудитория прекрасно выступила, показав свои икспертные познания в сетях.

Быть фанатиком просто – ведь тогда можно не изучать IT-технологии, достаточно возверовать в Святую Идею СПО и Служить ей. Результат налицо – покукарекивающая кучка ламеров-рабов.

По мне, так IT как наука – гораздо интереснее, чем IT как религия.

Но тут каждому своё, конечно.