stringtranslate.com

Византийский разлом

Византийская ошибка — это состояние системы, в частности, распределенной вычислительной системы, при котором происходит ошибка, при которой разные наблюдатели видят разные симптомы, включая несовершенную информацию о том, вышел ли из строя компонент системы. Термин берет свое название от аллегории « задача византийских генералов» [1] , разработанной для описания ситуации, в которой для предотвращения катастрофического отказа системы субъекты системы должны договориться о стратегии, но некоторые из этих субъектов ненадежны настолько, что заставляют других (хороших) субъектов не соглашаться со стратегией, и они могут не знать об этом несогласии.

Византийская ошибка также известна как проблема византийских генералов , проблема византийского соглашения или византийская неудача .

Византийская отказоустойчивость ( BFT ) — это устойчивость отказоустойчивой компьютерной системы или аналогичной системы к таким условиям.

Определение

Византийская ошибка — это любая ошибка, проявляющаяся по-разному у разных наблюдателей. [2] Византийская ошибка — это потеря системной службы из-за византийской ошибки в системах, требующих консенсуса между несколькими компонентами. [3]

Если все генералы атакуют согласованно, битва выиграна (слева). Если два генерала ложно заявляют, что собираются атаковать, но вместо этого отступают, битва проиграна (справа).

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

Проблема усложняется наличием коварных генералов, которые могут не только голосовать за неоптимальную стратегию; они могут делать это выборочно. Например, если голосуют девять генералов, четверо из которых поддерживают атаку, а четверо других выступают за отступление, девятый генерал может послать этим генералам голос за отступление, а остальным — голос за нападение. Те, кто получил голос за отступление от девятого генерала, отступят, а остальные пойдут в атаку (что может не пойти на пользу нападающим). Проблема усложняется еще и тем, что генералы физически разделены и вынуждены отправлять свои голоса через посланников, которые могут не доставить голоса или подделать ложные голоса.

Византийская отказоустойчивость может быть достигнута, если число лояльных (неошибочных) генералов более чем в три раза превышает число нелояльных (ошибочных) генералов. Может быть задано значение голоса по умолчанию для отсутствующих сообщений. Например, отсутствующим сообщениям может быть присвоено значение «null» . Кроме того, если соглашение заключается в том, что нулевые голоса составляют большинство, может быть использована заранее назначенная стратегия по умолчанию (например, отступление). [4]

Типичное отображение этой аллегории на компьютерные системы заключается в том, что компьютеры являются генералами, а их цифровые коммуникационные системы — посланниками. Хотя проблема сформулирована в аллегории как проблема принятия решений и безопасности, в электронике ее нельзя решить только с помощью криптографических цифровых подписей , поскольку такие сбои, как неправильное напряжение, могут распространяться через процесс шифрования. Таким образом, ошибочное сообщение может быть отправлено таким образом, что некоторые получатели обнаружат сообщение как ошибочное (плохая подпись), другие увидят, что у него хорошая подпись, а третья группа также увидит хорошую подпись, но с другим содержанием сообщения, чем у второй группы. [2]

История

Проблема получения византийского консенсуса была задумана и формализована Робертом Шостаком , который назвал ее проблемой интерактивной согласованности . Эта работа была проделана в 1978 году в контексте спонсируемого NASA проекта SIFT [5] в Computer Science Lab в SRI International . SIFT (Software Implemented Fault Tolerance) был детищем Джона Уэнсли и был основан на идее использования нескольких компьютеров общего назначения, которые будут общаться посредством парных сообщений для достижения консенсуса, даже если некоторые из компьютеров были неисправны.

В начале проекта не было ясно, сколько компьютеров в целом необходимо, чтобы гарантировать, что заговор из n неисправных компьютеров не сможет «сорвать» усилия правильно работающих компьютеров по достижению консенсуса. Шостак показал, что необходимо минимум 3 n + 1, и разработал двухраундовый протокол обмена сообщениями 3 n + 1 , который будет работать при n = 1. Его коллега Маршалл Пиз обобщил алгоритм для любого n > 0, доказав, что 3 n + 1 является как необходимым, так и достаточным. Эти результаты, вместе с более поздним доказательством Лесли Лэмпорта достаточности 3 n с использованием цифровых подписей, были опубликованы в основополагающей статье « Достижение соглашения при наличии неисправностей». [6] За эту статью авторы были награждены премией Эдсгера В. Дейкстры 2005 года.

Чтобы сделать проблему интерактивной согласованности более понятной, Лэмпорт придумал красочную аллегорию, в которой группа армейских генералов разрабатывает план атаки на город. В своей первоначальной версии история представляла генералов как командующих албанской армии . Название было изменено, в конечном итоге остановившись на « Византийском », по предложению Джека Голдберга, чтобы в будущем защитить от любого потенциального оскорбления. [7] Эта формулировка проблемы, вместе с некоторыми дополнительными результатами, была представлена ​​теми же авторами в их статье 1982 года «Проблема византийских генералов». [4]

Смягчение

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

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

Если рассматривать распространение отказов только через ошибки, византийские отказы считаются наиболее общим и самым сложным классом отказов среди режимов отказов . Так называемый режим отказа fail-stop занимает простейший конец спектра. В то время как режим отказа fail-stop просто означает, что единственный способ выйти из строя — это сбой узла , обнаруженный другими узлами, византийские отказы не подразумевают никаких ограничений на то, какие ошибки могут быть созданы, что означает, что отказавший узел может генерировать произвольные данные, включая данные, которые заставляют его казаться функционирующим узлом для подмножества других узлов. Таким образом, византийские отказы могут сбивать с толку системы обнаружения отказов, что затрудняет отказоустойчивость. Несмотря на аллегорию, византийский отказ не обязательно является проблемой безопасности , связанной с враждебным вмешательством человека: он может возникнуть исключительно из-за физических или программных сбоев.

Термины «неисправность» и «сбой» используются здесь в соответствии со стандартными определениями [8], первоначально созданными совместным комитетом по «Фундаментальным концепциям и терминологии», сформированным Техническим комитетом по надежным вычислениям и отказоустойчивости Компьютерного общества IEEE и Рабочей группой IFIP 10.4 по надежным вычислениям и отказоустойчивости. [9] См. также Надежность .

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

Решения

Несколько ранних решений были описаны Лэмпортом, Шостаком и Пизом в 1982 году. [4] Они начали с того, что отметили, что проблему генералов можно свести к решению проблемы «командир и лейтенанты», где лояльные лейтенанты должны действовать сообща и что их действия должны соответствовать приказу командующего в случае, если командующий лоялен:

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

Несколько системных архитектур были разработаны около 1980 года, которые реализовали византийскую отказоустойчивость. К ним относятся: FTMP компании Draper, [13] MMFCS компании Honeywell, [14] и SIFT компании SRI. [5]

В 1999 году Мигель Кастро и Барбара Лисков представили алгоритм «Практической византийской отказоустойчивости» (PBFT) [15] , который обеспечивает высокопроизводительную репликацию византийского конечного автомата, обрабатывая тысячи запросов в секунду с увеличением задержки на доли миллисекунды.

После PBFT было введено несколько протоколов BFT для повышения его надежности и производительности. Например, Q/U, [16] HQ, [17] Zyzzyva, [18] и ABsTRACTs, [19] решали проблемы производительности и стоимости; тогда как другие протоколы, такие как Aardvark [20] и RBFT, [21] решали проблемы его надежности. Кроме того, Adapt [22] пытался использовать существующие протоколы BFT, переключаясь между ними адаптивным образом, чтобы улучшить надежность и производительность системы по мере изменения базовых условий. Кроме того, были введены протоколы BFT, которые используют доверенные компоненты для сокращения количества реплик, например, A2M-PBFT-EA [23] и MinBFT. [24]

Приложения

Несколько примеров византийских неудач, которые имели место, приведены в двух эквивалентных журнальных статьях. [2] [3] Эти и другие примеры описаны на веб-страницах NASA DASHlink. [25]

Приложения в вычислительной технике

Механизмы византийской отказоустойчивости используют компоненты, которые повторяют входящее сообщение (или просто его подпись, которая может быть сведена к одному биту информации, если для узлов используются пары самопроверки) другим получателям этого входящего сообщения. Все эти механизмы предполагают, что акт повторения сообщения блокирует распространение византийских симптомов. Для систем с высокой степенью безопасности или критичности безопасности эти предположения должны быть доказаны как верные для приемлемого уровня покрытия сбоев . При предоставлении доказательства посредством тестирования одной из трудностей является создание достаточно широкого диапазона сигналов с византийскими симптомами. [26] Такое тестирование, вероятно, потребует специализированных инжекторов сбоев . [27] [28]

Военные применения

Византийские ошибки наблюдались нечасто и в нерегулярных точках во время испытаний на прочность недавно построенных подводных лодок класса «Вирджиния» , по крайней мере до 2005 года (когда о проблемах было объявлено публично). [29]

Криптовалютные приложения

Сеть Bitcoin работает параллельно, генерируя блокчейн с доказательством работы , что позволяет системе преодолевать византийские сбои и достигать согласованного глобального представления о состоянии системы. [30] [31] Некоторые блокчейны с доказательством доли также используют алгоритмы BFT. [32]

Технология Блокчейн

Устойчивость к византийским ошибкам (BFT) является важнейшей концепцией в технологии блокчейн , гарантирующей, что сеть может продолжать функционировать, даже если некоторые узлы [33] (участники) выходят из строя или действуют злонамеренно. Эта устойчивость необходима, поскольку блокчейны являются децентрализованными системами без центрального управления, что делает необходимым достижение консенсуса между узлами, даже если некоторые пытаются нарушить процесс.

Приложения и примеры византийской отказоустойчивости в блокчейне

Механизмы безопасности: Различные блокчейны используют различные механизмы консенсуса на основе BFT, такие как Practical Byzantine Fault Tolerance (PBFT), Tendermint и Delegated Proof of Stake (DPoS) для обработки византийских сбоев. Эти протоколы гарантируют, что большинство честных узлов могут договориться о следующем блоке в цепочке, защищая сеть от атак и предотвращая двойные траты и другие виды мошенничества. Практические примеры сетей включают Hyperledger Fabric , Cosmos и Klever в этой последовательности.

Противодействие атаке 51%: в то время как традиционные блокчейны, такие как Bitcoin, используют доказательство выполнения работы (PoW), которое подвержено атаке 51%, системы на основе BFT способны выдерживать до трети неисправных или вредоносных узлов без ущерба для целостности сети.

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

Частные и эксклюзивные блокчейны: BFT особенно важен в частных или эксклюзивных блокчейнах, где ограниченному числу известных участников необходимо быстро и безопасно достичь консенсуса. Эти сети часто используют протоколы BFT для повышения производительности и безопасности.

Применение в авиации

Некоторые системы самолетов, такие как система управления информацией самолета Boeing 777 (через сеть ARINC 659 SAFEbus), система управления полетом Boeing 777 и системы управления полетом Boeing 787, используют византийскую отказоустойчивость; поскольку это системы реального времени, их решения по византийской отказоустойчивости должны иметь очень низкую задержку. Например, SAFEbus может достичь византийской отказоустойчивости в пределах порядка микросекунды добавленной задержки. [34] [35] [36] SpaceX Dragon учитывает византийскую отказоустойчивость в своей конструкции. [37]

Смотрите также

Ссылки

  1. ^ Лампорт, Л .; Шостак, Р.; Пиз, М. (1982). «Проблема византийских генералов» (PDF) . ACM Transactions on Programming Languages ​​and Systems . 4 (3): 382–401. CiteSeerX  10.1.1.64.2312 . doi :10.1145/357172.357176. S2CID  55899582. Архивировано (PDF) из оригинала 13 июня 2018 г.
  2. ^ abcd Дрисколл, К.; Холл, Б.; Паулитш, М.; Цумстег, П.; Сивенкрона, Х. (2004). "Настоящие византийские генералы". 23-я конференция по цифровым авиационным системам (IEEE Cat. No.04CH37576) . стр. 6.D.4–61–11. doi :10.1109/DASC.2004.1390734. ISBN 978-0-7803-8539-9. S2CID  15549497.
  3. ^ abc Дрисколл, Кевин; Холл, Брендан; Сивенкрона, Хокан; Цумстег, Фил (2003). «Византийская отказоустойчивость: от теории к реальности». Computer Safety, Reliability, and Security . Lecture Notes in Computer Science. Vol. 2788. pp. 235–248. doi :10.1007/978-3-540-39878-3_19. ISBN 978-3-540-20126-7. ISSN  0302-9743. S2CID  12690337.
  4. ^ abc Lamport, L. ; Shostak, R.; Pease, M. (1982). "The Byzantine Generals Problem" (PDF) . ACM Transactions on Programming Languages ​​and Systems . 4 (3): 387–389. CiteSeerX 10.1.1.64.2312 . doi :10.1145/357172.357176. S2CID  55899582. Архивировано из оригинала (PDF) 7 февраля 2017 г. 
  5. ^ ab "SIFT: проектирование и анализ отказоустойчивого компьютера для управления самолетом". Надежность микроэлектроники . 19 (3): 190. 1979. doi :10.1016/0026-2714(79)90211-7. ISSN  0026-2714.
  6. ^ Пиз, Маршалл; Шостак, Роберт; Лампорт, Лесли (апрель 1980 г.). «Достижение соглашения при наличии неисправностей». Журнал Ассоциации вычислительной техники . 27 (2): 228–234. CiteSeerX 10.1.1.68.4044 . doi :10.1145/322186.322188. S2CID  6429068. 
  7. ^ Лампорт, Лесли (2016-12-19). «Проблема византийских генералов». Труды ACM по языкам и системам программирования . SRI International . Получено 18 марта 2019 г.
  8. ^ Avizienis, A.; Laprie, J.-C.; Randell, Brian ; Landwehr, C. (2004). «Основные концепции и таксономия надежных и безопасных вычислений». IEEE Transactions on Dependable and Secure Computing . 1 (1): 11–33. doi :10.1109/TDSC.2004.2. hdl : 1903/6459 . ISSN  1545-5971. S2CID  215753451.
  9. ^ "Dependable Computing and Fault Tolerance". Архивировано из оригинала 2015-04-02 . Получено 2015-03-02 .
  10. ^ Фельдман, П.; Микали, С. (1997). «Оптимальный вероятностный протокол для синхронного византийского соглашения» (PDF) . SIAM J. Comput . 26 (4): 873–933. doi :10.1137/s0097539790187084. Архивировано (PDF) из оригинала 2016-03-05 . Получено 2012-06-14 .
  11. ^ Купман, Филип; Дрисколл, Кевин; Холл, Брендан (март 2015 г.). «Циклический избыточный код и алгоритмы контрольной суммы для обеспечения целостности критически важных данных» (PDF). Федеральное управление гражданской авиации. DOT/FAA/TC-14/49. Архивировано (PDF) из оригинала 18 мая 2015 г. Получено 9 мая 2015 г.
  12. ^ Паулитш, М.; Моррис, Дж.; Холл, Б.; Дрисколл, К.; Латронико, Э.; Купман, П. (2005). «Покрытие и использование циклических избыточных кодов в сверхнадежных системах». Международная конференция по надежным системам и сетям 2005 г. (DSN'05). стр. 346–355. doi :10.1109/DSN.2005.31. ISBN 978-0-7695-2282-1. S2CID  14096385.
  13. ^ Хопкинс, Альберт Л.; Лала, Джайнараян Х.; Смит, Т. Бэзил (1987). «Эволюция отказоустойчивых вычислений в лаборатории Чарльза Старка Дрейпера, 1955–85». Эволюция отказоустойчивых вычислений . Надежные вычисления и отказоустойчивые системы. Том 1. С. 121–140. doi :10.1007/978-3-7091-8871-2_6. ISBN 978-3-7091-8873-6. ISSN  0932-5581.
  14. ^ Дрисколл, Кевин; Пападопулос, Грегори; Нельсон, Скотт; Хартманн, Гэри; Рамохалли, Гаутам (1984), Многомикропроцессорная система управления полетом (технический отчет), база ВВС Райт-Паттерсон, Огайо: AFWAL/FIGL Командование систем ВВС США, AFWAL-TR-84-3076
  15. ^ Кастро, М.; Лисков, Б. (2002). «Практическая византийская отказоустойчивость и упреждающее восстановление». Труды ACM по компьютерным системам . 20 (4). Ассоциация вычислительной техники : 398–461. CiteSeerX 10.1.1.127.6130 . doi :10.1145/571637.571640. S2CID  18793794. 
  16. ^ Абд-Эль-Малек, М.; Гангер, Г.; Гудсон, Г.; Рейтер, М.; Уайли, Дж. (2005). «Масштабируемые отказоустойчивые византийские службы». Обзор операционных систем ACM SIGOPS . 39 (5). Ассоциация вычислительной техники : 59. doi :10.1145/1095809.1095817.
  17. ^ Коулинг, Джеймс; Майерс, Дэниел; Лисков, Барбара ; Родригес, Родриго; Шрира, Люба (2006). HQ Replication: A Hybrid Quorum Protocol for Byzantine Fault Tolerance. Труды 7-го симпозиума USENIX по проектированию и внедрению операционных систем. стр. 177–190. ISBN 1-931971-47-1.
  18. ^ Котла, Рамакришна; Альвиси, Лоренцо; Далин, Майк; Клемент, Аллен; Вонг, Эдмунд (декабрь 2009 г.). «Zyzzyva: Speculative Byzantine Fault Tolerance». ACM Transactions on Computer Systems . 27 (4). Association for Computing Machinery : 1–39. doi :10.1145/1658357.1658358.
  19. ^ Guerraoui, Rachid; Kneževic, Nikola; Vukolic, Marko; Quéma, Vivien (2010). The Next 700 BFT Protocols. Труды 5-й Европейской конференции по компьютерным системам. EuroSys. Архивировано из оригинала 2011-10-02 . Получено 2011-10-04 .
  20. ^ Клемент, А.; Вонг, Э.; Альвиси, Л.; Далин, М.; Маркетти, М. (22–24 апреля 2009 г.). Making Byzantine Fault Tolerant Systems Tolerate Byzantine Faults (PDF) . Симпозиум по проектированию и внедрению сетевых систем. USENIX . Архивировано (PDF) из оригинала 25.12.2010 . Получено 17.02.2010 .
  21. ^ Aublin, P.-L.; Ben Mokhtar, S.; Quéma, V. (8–11 июля 2013 г.). RBFT: Redundant Byzantine Fault Tolerance. 33-я международная конференция IEEE по распределенным вычислительным системам. Международная конференция по распределенным вычислительным системам . Архивировано из оригинала 5 августа 2013 г.
  22. ^ Бахсун, Дж. П.; Геррауи, Р.; Шокер, А. (2015-05-01). «Сделать протоколы BFT действительно адаптивными». Международный симпозиум IEEE по параллельной и распределенной обработке 2015 г. С. 904–913. doi :10.1109/IPDPS.2015.21. ISBN 978-1-4799-8649-1. S2CID  16310807.
  23. ^ Чун, Бён-Гон; Маниатис, Петрос; Шенкер, Скотт; Кубятович, Джон (2007-01-01). "Attested append-only memory". Труды двадцать первого симпозиума ACM SIGOPS по принципам операционных систем . SOSP '07. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 189–204. doi :10.1145/1294261.1294280. ISBN 9781595935915. S2CID  6685352.
  24. ^ Веронезе, GS; Коррейя, M.; Бессани, AN; Ланг, LC; Вериссимо, P. (2013-01-01). «Эффективная византийская отказоустойчивость». IEEE Transactions on Computers . 62 (1): 16–30. CiteSeerX 10.1.1.408.9972 . doi :10.1109/TC.2011.221. ISSN  0018-9340. S2CID  8157723. 
  25. ^ Дрисколл, Кевин (2012-12-11). "Real System Failures". DASHlink . NASA . Архивировано из оригинала 2015-04-02 . Получено 2015-03-02 .
  26. ^ Nanya, T.; Goosen, HA (1989). «Византийская модель аппаратных неисправностей». Труды IEEE по автоматизированному проектированию интегральных схем и систем . 8 (11): 1226–1231. doi :10.1109/43.41508. ISSN  0278-0070.
  27. ^ Мартинс, Роландо; Ганди, Раджив; Нарасимхан, Прия; Пертет, Сойла; Казимиро, Антонио; Крейц, Диего; Вериссимо, Пауло (2013). «Опыт внедрения ошибок в византийский отказоустойчивый протокол». Промежуточное ПО 2013 . Конспекты лекций по информатике. Том. 8275. стр. 41–61. дои : 10.1007/978-3-642-45065-5_3. ISBN 978-3-642-45064-8. ISSN  0302-9743. S2CID  31337539.
  28. ^ Патент США 7475318, Кевин Р. Дрисколл, «Метод тестирования чувствительного входного диапазона византийских фильтров», выдан 06.01.2009, передан Honeywell International Inc. 
  29. ^ Уолтер, К.; Эллис, П.; ЛаВэлли, Б. (2005). «Надежная платформа обслуживания: отказоустойчивая архитектура обслуживания на основе свойств». Девятый международный симпозиум IEEE по высоконадежной системной инженерии (HASE'05) . стр. 34–43. doi :10.1109/HASE.2005.23. ISBN 978-0-7695-2377-4. S2CID  21468069.
  30. ^ Rubby, Matt (20 января 2024 г.). «Как проблема византийских генералов относится к вам в 2024 году». Swan Bitcoin . Получено 27.01.2024 .
  31. ^ Толониат, Пьер; Грамоли, Винсент (2022), Тран, Дюк А.; Тай, Май Т.; Кришнамачари, Бхаскар (ред.), «Формальная проверка устойчивости к византийским ошибкам блокчейна», Справочник по блокчейну , Springer Optimization и его приложениям, Cham: Springer International Publishing, стр. 389–412, arXiv : 1909.07453 , doi : 10.1007/978-3-031-07535-3_12, ISBN 978-3-031-07535-3, получено 2024-01-27
  32. ^ Деирментцоглу, Папакириакопулос и Пацакис 2019, стр. 28716.
  33. ^ «Операции с узлами».
  34. ^ М., Паулитш; Дрисколл, К. (9 января 2015 г.). "Глава 48:SAFEbus". В Журавски, Ричард (ред.). Справочник по промышленным коммуникационным технологиям, второе издание . CRC Press. стр. 48–1–48–26. ISBN 978-1-4822-0733-0.
  35. ^ Томас А. Хензингер; Кристоф М. Кирш (26 сентября 2001 г.). Встроенное программное обеспечение: Первый международный семинар, EMSOFT 2001, Тахо-Сити, Калифорния, США, 8-10 октября 2001 г. Труды (PDF) . Springer Science & Business Media. стр. 307–. ISBN 978-3-540-42673-8. Архивировано (PDF) из оригинала 2015-09-22 . Получено 2015-03-05 .
  36. ^ Yeh, YC (2001). «Критичная для безопасности авионика для основной системы управления полетом 777». 20-я DASC. 20-я конференция по цифровым авиационным системам (Кат. № 01CH37219) . Том 1. стр. 1C2/1–1C2/11. doi :10.1109/DASC.2001.963311. ISBN 978-0-7803-7034-0. S2CID  61489128.
  37. ^ "ELC: SpaceX lessons learned [LWN.net]". Архивировано из оригинала 2016-08-05 . Получено 2016-07-21 .

Источники

Внешние ссылки