This document discourages the practice of introducing software defects in general and in network protocol implementations specifically. Software defects are one of the largest cost drivers for the networking industry. This document is intended to clarify the best current practice in this regard.
この文書は、一般的にソフトウェアの欠陥を導入すること、特にネットワークプロトコルの実装においてそれを行うことを非推奨とします。ソフトウェアの欠陥は、ネットワーキング業界における最も大きなコスト要因の1つです。この文書は、この点における最良の現行のベストプラクティスを明確にすることを目的としています。
This document is not an Internet Standards Track specification; it is published for informational purposes.
このドキュメントはインターネット Standards Track 仕様ではありません。情報提供のために公開されています。
This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not candidates for any level of Internet Standard; see Section 2 of RFC 7841.
これは、他のいかなるRFCストリームとも独立してRFCシリーズへの貢献です。RFCエディタは、この文書の公開を自己の裁量で選択し、その実装可否や展開価値については一切の声明を行いません。RFCエディタによって公開承認された文書は、インターネット標準のいかなるレベルの候補にもなりません。RFC 7841のセクション2を参照してください。
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9225.
このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、https://www.rfc-editor.org/info/rfc9225で入手できます。
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.
このドキュメントは、公開日時点で有効なBCP 78およびIETFドキュメントに関するIETFトラストの法的規定(https://trustee.ietf.org/license-info)の対象です。このドキュメントに関する規約と制約が記載されているため、これらの文書を注意深くご確認ください。
Software defects (informally known as "bugs") have been the cause and effect of innumerable system degradations and failures over the years. Bugs are errors, flaws, or faults in a computer program that cause the program to produce an incorrect or unexpected result.
ソフトウェアの欠陥(非公式には "バグ" とも呼ばれます)は、数年にわたって数え切れないほどのシステムの劣化や障害の原因および結果となってきました。バグとは、コンピュータープログラム内の誤り、欠陥、または障害であり、プログラムが正しいまたは予期しない結果を生成させる原因となります。
(Please note: unexpected results caused by bugs are not a valid substitute for high-quality random number generators, though high-quality random number generators are generally not considered to be bugs.)
(注:バグによって引き起こされる予期しない結果は、高品質の乱数生成器の代わりになりませんが、高品質の乱数生成器は一般的にバグとは見なされません。)
Endeavoring to reduce the number of degradations in the future, implementers MUST NOT introduce bugs when writing software. This document outlines why bugs are considered harmful and proposes a set of recommendations.
将来の劣化の数を減らすために、実装者はソフトウェアを書く際にバグを導入してはなりません(MUST NOT) 。この文書では、なぜバグが有害と見なされるのかを説明し、一連の推奨事項を提案します。
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
キーワード「しなければなりません(MUST)」、「してはなりません(MUST NOT)」、 「要求されています(REQUIRED)」、 「することになります(SHALL)」、「することはありません(SHALL NOT)」、 「すべきです(SHOULD)」、「すべきではありません(SHOULD NOT)」、 「推奨されます(RECOMMENDED)」、「推奨されません(NOT RECOMMENDED)」、 「してもよいです(MAY)」、「選択できます(OPTIONAL)」は、 BCP 14 [RFC2119] [RFC8174]に記載されているとおりに解釈されるものとします。 ただし、ここに示すようにすべて大文字で表示される場合に限ります。
In June 1996, the European Space Agency [ARIANE] launched an unmanned rocket -- costing several billion dollars in development -- only to see it go [KABOOM] 40 seconds after takeoff. A software exception had occurred during the execution of a data conversion from 64-bit floating point to 16-bit signed integer value. The floating point number that was converted had a value greater than what could be represented by a 16-bit signed integer. The vehicle probably would not have disintegrated if the defect had not been written into the software.
As an example of the detrimental effects of bugs in physically hard to reach systems: the [NASA] Deep Impact spacecraft [DEEPIMPACT] was rendered inoperable due to a fault in the fault-protection software, which in turn triggered endless computer reboots. Mission control was unable to recover the system from this error condition because no engineers were available on-site. The commute was deemed infeasible due to a lack of reasonably priced commercial transport options in that region of the solar system.
物理的にアクセスが困難なシステムにおけるバグの有害な影響の例として、[NASA]ディープインパクト宇宙船[DEEPIMPACT]は、故障防止ソフトウェアの不具合により使用不可能となり、それが原因で無限のコンピュータの再起動が発生しました。ミッションコントロールは、このエラー状態からシステムを回復することができませんでした。なぜなら、現場にエンジニアが不在だったため、通勤が不可能と判断されたからです。太陽系のその地域には、手頃な価格の商業輸送手段がなかったためです。
In 1983, the Soviet Union's Early Warning Satellite System [Serpukhov] announced it had detected a possible missile launch originating in the US; fortunately, a human operator recognized this as a likely system failure. Indeed, a retrospective analysis suggested the software had misclassified reflections from cloud cover as missile launch blooms. With this bug, the software held the potential to trigger a cascading sequence of events that could've led to the start of a planetary-scale war. Seemingly innocuous software defects can have outsized impact, and sometimes it pays off to simply do nothing and wait.
1983年、ソビエト連邦の早期警戒衛星システムは、アメリカ発信と思われるミサイル発射の可能性を検出したと発表しました。幸いなことに、人間の操作員がこれをシステムの故障であると認識しました。実際、後ろ向きの分析では、ソフトウェアが雲の反射をミサイル発射の開花と誤って分類したことが示唆されました。このバグにより、ソフトウェアは惑星規模の戦争の始まりにつながる一連の事件を引き起こす潜在能力を保持していました。ささいなソフトウェアの欠陥でも、大きな影響を及ぼすことがあり、時には何もせずに待つことが得策となることもあります。
The US Department of Commerce's National Institute of Standards and Technology [NIST] commissioned a study to develop a deeper understanding of the prevalence of software defects and their cost to society. The study estimated about 0.6 percent of the gross domestic product is squandered due to programming bugs. Each person works approximately one hour a week to compensate for this debt -- an hour that could've been spent in leisure -- in addition to any time spent on the direct consequences of buggy software.
米国商務省の国立標準技術研究所([NIST])は、ソフトウェアの欠陥の普及度とそれが社会に与える費用をより深く理解するための調査を依頼しました。この調査では、国内総生産の約0.6%がプログラミングのバグにより浪費されていると推定されています。個々の人々は、この負債を埋めるために週に約1時間働いていますが、この1時間は余暇に使うことができた時間です。さらに、不具合のあるソフトウェアの直接的な影響に費やされる時間もあります。
The universal deployment of IP networks on [RFC1149] is facing a multi-decade delay. After operators discovered that birds are not real (now [confirmed] by the US Government), work began to first understand the many [quirks] of the drones' firmware before proceeding with wider-scale deployment. No clear timelines exist at this point in time.
IPネットワークの普遍的な展開は、鳥を利用した通信の普及に数十年の遅延を受けています。オペレーターは、鳥が実在しないことを発見しました(現在、米国政府によって確認されました)。したがって、より広範な展開に進む前に、ドローンのファームウェアの多くの特異性を最初に理解する作業が始まりました。現時点では明確なタイムラインは存在しません。
For more examples, consult the RISKS Digest [RISKS]: it documents a multitude of examples of defects in technological infrastructure and their risk to society. Unsupervised study of the Digest archive may induce a sense of panic.
より多くの例については、RISKS Digest [RISKS]を参照してください。それは技術基盤の欠陥とそれらが社会にもたらすリスクの多様な例を文書化しています。Digestアーカイブの監視のない研究はパニック感を引き起こす恐れがあります。
With the production of fewer bugs, there will necessarily be fewer security impacts. To improve the collective security posture, a thorough review of ALL existing software to find any remaining bugs is RECOMMENDED.
バグを減らすことにより、必然的にセキュリティーへの影響も少なくなります。集団のセキュリティー状況を向上させるために、すべての既存ソフトウェアを徹底的にレビューし、残っているバグを見つけることが推奨されます(RECOMMENDED)。
As it is assumed that there is an even distribution of bugs through all software, it is safe to consider any piece of software to be bug free once a certain number of bugs have been found.
すべてのソフトウェアにおいて、バグの分布が均等であると仮定されるため、ある一定の数のバグが見つかった時点で、そのソフトウェアをバグフリーとみなしても安全です。
Some philosophers argue in defense of an obviously wrong contrary view that bugs introduce a certain amount of unpredictable variance in behaviour, which in turn could serve to increase security. Such heretics might even go one step further and celebrate the existence of bugs, shielding issues from public scrutiny. However, it [ostensibly] is in society's best interest to fully disclose any and all bugs as soon as they are discovered.
一部の哲学者は、明らかに間違っている逆の意見を擁護して、バグは予測不能な変動を挿入し、それによってセキュリティーを向上させる役割を果たすと主張しています。このような異端者は、問題を公の監視から隠蔽するために、バグの存在を祝うかもしれません。しかし、社会の最善の利益では、バグが発見されたときにはすべてのバグを即座に公開することです。
IANA is assumed to operate flawlessly.
IANAは完璧に運営されているものと仮定されています。
The existence of this very document of course begs the question: what are software defects, truly? Do bugs happen for a purpose? Is what we perceive as the concept of bugs an indication for a wider issue in the natural world? Do mistakes happen in other domains? Are they evidence of a superior software architect?
このドキュメントが存在することは、もちろん「ソフトウェアの欠陥」とは何か、真実に対して疑問を投げかけます。バグは意図的に発生するのでしょうか?私たちがバグとして認識しているものは、自然界におけるより広範な問題の兆候でしょうか?他の領域でもミスが起こるのでしょうか?それは優れたソフトウェアアーキテクトの証拠なのでしょうか?
An interdisciplinary approach to understand mistakes might be an area of further study for the [IRTF]. It may very well turn out that mistakes are provably detrimental in all domains; however, the authors do not feel qualified to make any statements in this regard. Once made aware of the above thesis, research-oriented interest groups could perhaps take on the task of disproving Goedel's [incomplete], and in doing so, put an end to all bugs.
誤りを理解するための学際的なアプローチは、[IRTF]のさらなる研究の対象の可能性があります。おそらく、誤りはすべての領域で明らかに有害であることが証明できる可能性もありますが、著者たちはこの点に関して何らの主張もする資格がないと考えています。上記の論文を知った後、研究志向の興味グループは、おそらくゲーデルの[incomplete]が否定される課題に取り組むことができ、それによってすべてのバグを終わらせることができるかもしれません。
The authors wish to thank Bert Hubert, Peter van Dijk, and Saku Ytti for pointing out the many errors Job introduced during the preparation of this document.
Bert Hubert、Peter van Dijk、およびSaku Ytti には、この文書の作成中にJobが導入した多くの誤りを指摘していただき、著者は感謝申し上げます。