RFC817 日本語訳

0817 Modularity and efficiency in protocol implementation. D.D. Clark. July 1982. (Format: TXT=45931 bytes) (Status: UNKNOWN)
プログラムでの自動翻訳です。
RFC一覧
英語原文

RFC:  817

RFC: 817

          MODULARITY AND EFFICIENCY IN PROTOCOL IMPLEMENTATION

プロトコル実装におけるモジュール方式AND効率

                             David D. Clark
                  MIT Laboratory for Computer Science
               Computer Systems and Communications Group
                               July, 1982

デヴィッドD.クラークMITコンピュータサイエンス研究所コンピュータシステムズとコミュニケーションは1982年7月に分類されます。

     1.  Introduction

1. 序論

     Many  protocol implementers have made the unpleasant discovery that

多くのプロトコルimplementersが不快な発見をそれにしました。

their packages do not run quite as fast as they had hoped.    The  blame

それらのパッケージは全く望んでいたほど速く動きません。 非難

for  this  widely  observed  problem has been attributed to a variety of

これが、問題が結果と考えられたのを広く観測した、様々

causes, ranging from details in  the  design  of  the  protocol  to  the

引き起こして、プロトコルのデザインにおける詳細から変化します。

underlying  structure  of  the  host  operating  system.   This RFC will

ホスト・オペレーティング・システムの構造の基礎となります。 このRFCはそうするでしょう。

discuss  some  of  the  commonly  encountered   reasons   why   protocol

理由が議定書を作る一般的に遭遇した理由のいくつかについて議論してください。

implementations seem to run slowly.

実装はゆっくり動くように思えます。

     Experience  suggests  that  one  of  the  most important factors in

経験は、最も重要なものの1つが計算に入れるのを示します。

determining the performance of an implementation is the manner in  which

実装の性能を決定するのが、中の方法である、どれ

that   implementation  is  modularized  and  integrated  into  the  host

その実装は、ホストとmodularizedされて、統合されます。

operating system.  For this reason, it is useful to discuss the question

オペレーティングシステム。 この理由に、問題について議論するのは役に立ちます。

of how an implementation is structured at the same time that we consider

実装が私たちが考えるのと同時にどう構造化されるかについて

how it will perform.  In fact, this RFC will argue  that  modularity  is

それはどう働くだろうか。 事実上、このRFCは、モジュール方式がそうであると主張するでしょう。

one  of  the chief villains in attempting to obtain good performance, so

したがって、望ましい市場成果を得るのを試みることにおける張本人のひとり

that the designer is faced  with  a  delicate  and  inevitable  tradeoff

デザイナーはデリケートで必然の見返りに直面しています。

between good structure and good performance.  Further, the single factor

良い構造と望ましい市場成果の間で。 さらに、シングルは因数分解します。

which most strongly determines how well this conflict can be resolved is

どれが、この闘争をどれくらいよく解決できるかを最も強く決定するかあります。

not the protocol but the operating system.

                                   2

プロトコルではなく、オペレーティングシステム。 2

     2.  Efficiency Considerations

2. 効率問題

     There  are  many aspects to efficiency.  One aspect is sending data

効率への多くの局面があります。 1つの局面がデータを送ります。

at minimum transmission cost, which  is  a  critical  aspect  of  common

最小のトランスミッション費用では、一般的のきわどい局面はどれですか?

carrier  communications,  if  not  in local area network communications.

搬送通信どんなローカル・エリア・ネットワークコミュニケーションでもそうしないなら。

Another aspect is sending data at a high rate, which may not be possible

どれがもう一つの側面が高価でデータを送るのが可能でないかもしれませんか?

at all if the net is very slow, but which may be the one central  design

ネットがまさしくそのである、全く、遅くなりなさい、ただし、1つの主要なデザインがどれであるかもしれませんか?

constraint when taking advantage of a local net with high raw bandwidth.

高い生の帯域幅に伴うローカルのネットを利用するときの規制。

The  final  consideration is doing the above with minimum expenditure of

考慮が最小の支出がある上記をしている決勝

computer resources.  This last may be necessary to achieve  high  speed,

コンピュータリソース。 これが、最後に高速を達成するのに必要であるかもしれません。

but  in  the  case  of  the  slow  net may be important only in that the

遅いネットの場合では、それだけで重要であるかもしれません。

resources used up, for example  cpu  cycles,  are  costly  or  otherwise

使いきられたリソース(例えば、cpuサイクル)は、高価であるか、またはそうではありません。

needed.    It  is  worth  pointing  out that these different goals often

必要。 それからこれらの異なった目標をしばしば指す価値があります。

conflict; for example it is often possible to trade off efficient use of

闘争してください。 例えば、それは効率的な使用で取り引きするのにおいてしばしば可能です。

the computer against efficient use of the network.  Thus, there  may  be

ネットワークの効率的な使用に対するコンピュータ。 したがって、あるかもしれません。

no such thing as a successful general purpose protocol implementation.

うまくいっている汎用のプロトコル実装のようなものでない。

     The simplest measure of performance is throughput, measured in bits

最も簡単な成績測定基準はビットで測定されたスループットです。

per second.  It is worth doing a few simple computations in order to get

1秒単位で。 得るためにいくつかの簡単な計算をする価値があります。

a  feeling for the magnitude of the problems involved.  Assume that data

かかわった問題の大きさに関する感じ。 そのデータを仮定してください。

is being sent from one machine to another in packets of 576  bytes,  the

576のパケットで1台のマシンから別のものに送るのは、バイトです。

maximum  generally acceptable internet packet size.  Allowing for header

最大の一般に許容できるインターネットパケットサイズ。 ヘッダーを考慮します。

overhead, this packet size permits 4288 bits  in  each  packet.    If  a

頭上では、このパケットサイズは4288ビット各パケットの入るのを許します。 aです。

useful  throughput  of  10,000  bits  per second is desired, then a data

1万のbpsの役に立つスループットは望まれていて、その時はデータです。

bearing packet must leave the sending host about every 430 milliseconds,

ベアリングパケットは430ミリセカンド毎に関して送付ホストを置き去りにしなければなりません。

a little over two per second.  This is clearly not difficult to achieve.

1秒あたり2余り。 これは達成するのが明確に難しくはありません。

However, if one wishes to achieve 100 kilobits  per  second  throughput,

                                   3

しかしながら、3人が2番目のスループットあたり100のキロビットを達成したいなら

the packet must leave the host every 43 milliseconds, and to achieve one

パケットが43人のミリセカンド毎をホストに残さなければならない、1つを達成します。

megabit  per  second,  which  is not at all unreasonable on a high-speed

1秒あたりのメガビット。(そのメガビットはaで高速な状態で全く無理ではありません)。

local net, the packets must be spaced no more than 4.3 milliseconds.

ローカルのネット、パケットを4.3ミリセカンド未満と同じくらい区切らなければなりません。

     These latter numbers are a slightly more alarming goal for which to

これらの後者の数がわずかに驚くべきな目標である、どれ

set one's sights.  Many operating systems take a substantial fraction of

人の目標を設定してください。 オペレーティングシステムがかなりの断片で取る多く

a millisecond just to service an interrupt.  If the  protocol  has  been

まさしく中断を修理するミリセカンド。 プロトコルがあったなら

structured  as  a  process,  it  is  necessary  to  go through a process

プロセスとして構造化されていて、プロセスを通るのが必要です。

scheduling before the protocol code can even begin to run.  If any piece

プロトコルコードの前のスケジューリングは稼働し始めることさえできます。 どんな断片です。

of a protocol package or its data must be fetched from disk,  real  time

プロトコルでは、ディスク、リアルタイムでからパッケージかそのデータをとって来なければなりません。

delays  of  between  30  to  100  milliseconds  can be expected.  If the

間の遅れは30〜100ミリセカンドと同じくらい予想できます。予想されます。 the

protocol must compete for cpu resources  with  other  processes  of  the

プロトコルはcpuリソースのために他のプロセスと競争しなければなりません。

system,  it  may  be  necessary  to wait a scheduling quantum before the

システム、以前スケジューリング量子を待つのが必要であるかもしれません。

protocol can run.   Many  systems  have  a  scheduling  quantum  of  100

プロトコルは稼働できます。 多くのシステムには、100のスケジューリング量子があります。

milliseconds  or  more.   Considering these sorts of numbers, it becomes

ミリセカンドか以上。 これらの種類の数を考える場合、それはなります。

immediately clear that the protocol must be fitted  into  the  operating

すぐに、作動にプロトコルに合わなければならないのが明確です。

system  in  a  thorough  and  effective  manner  if  any like reasonable

もしあればa徹底的で効果的な方法によるシステムが好きである、妥当

throughput is to be achieved.

スループットは達成されることです。

     There is one obvious conclusion immediately suggested by even  this

すぐにこれによってさえ示された1つの明白な結論があります。

simple  analysis.    Except  in  very  special  circumstances, when many

簡単な分析。 非常に特別な事情、いつを除いて、多くであるか。

packets are being processed at once, the cost of processing a packet  is

パケットはすぐに処理される予定であり、パケットを処理する費用はそうです。

dominated  by  factors, such as cpu scheduling, which are independent of

cpuスケジューリングなどの要素によって支配されていて、独立者はどれのものですか?

the  packet  size.    This  suggests  two  general   rules   which   any

パケットサイズ。 これが、2一般がどれを統治するかを示す、いくらか。

implementation  ought  to  obey.    First,  send  data in large packets.

実装は従うべきです。 まず最初に、大きいパケットでデータを送ってください。

Obviously, if processing time per packet is a constant, then  throughput

そして、明らかにスループット1パケットあたりの処理時間が定数であるなら

will be directly proportional to the packet size.  Second, never send an

                                   4

パケットサイズに正比例するでしょう。 2番目に、4を決して送らないでください。

unneeded  packet.    Unneeded packets use up just as many resources as a

不要なパケット。 不要なパケットはaとちょうど同じくらい多くのリソースを使いきります。

packet full of data, but perform no useful function.  RFC  813,  "Window

どんな役に立つ機能も実行しないのを除いたデータでいっぱいのパケット。 RFC813、「窓」

and  Acknowledgement  Strategy in TCP", discusses one aspect of reducing

「TCPのAcknowledgement Strategy」、減少の1つの局面について議論します。

the number of packets sent per useful data byte.    This  document  will

パケットの数は1役に立つデータ・バイト単位で発信しました。 このドキュメントはそうするでしょう。

mention other attacks on the same problem.

同じ問題に対する他の攻撃について言及してください。

     The  above  analysis  suggests that there are two main parts to the

上の分析は、2つの主部があるのを示します。

problem of achieving good protocol performance.  The  first  has  to  do

良いプロトコル性能を達成するという問題。 1番目はしなければなりません。

with  how  the  protocol  implementation  is  integrated  into  the host

プロトコル実装がどうホストと統合されるかで

operating system.  The second has to do with how  the  protocol  package

オペレーティングシステム。 2番目はどのようにと関係があるか、プロトコルパッケージ

itself  is  organized  internally.   This document will consider each of

それ自体、内部的に組織化されます。 意志がそれぞれを考えるこのドキュメント

these topics in turn.

これらの話題、順番に。

     3.  The Protocol vs. the Operating System

3. プロトコル対オペレーティングシステム

     There are normally three reasonable ways in which to add a protocol

通常、プロトコルを加える3つの合理的な方法があります。

to an operating system.  The protocol  can  be  in  a  process  that  is

オペレーティングシステムに。 プロトコルがプロセスにあることができます。

provided by the operating system, or it can be part of the kernel of the

そうすることができるなら、カーネルの一部になってください。

operating  system  itself, or it can be put in a separate communications

それ自体、またはそれがオペレーティングシステムであることができることは別々のコミュニケーションを入れます。

processor or front end machine.  This decision is strongly influenced by

プロセッサかフロントエンドマシン。 この決定は強く影響を及ぼされます。

details of hardware architecture and operating system  design;  each  of

ハードウェアアーキテクチャとオペレーティングシステムデザインの詳細。 それぞれ

these three approaches has its own advantages and disadvantages.

これらの3つのアプローチには、それ自身の利点と損失があります。

     The  "process"  is the abstraction which most operating systems use

「プロセス」はほとんどのオペレーティングシステムが使用する抽象化です。

to provide the execution environment for user programs.  A  very  simple

ユーザ・プログラムAに実行環境を非常に簡単な状態で提供するために

path  for  implementing  a  protocol  is  to  obtain  a process from the

プロトコルを実装するための経路はプロセスを得ることになっています。

operating  system  and  implement   the   protocol   to   run   in   it.

そして、オペレーティングシステム、プロトコルを実装して、それに立候補してください。

Superficially,  this  approach  has  a  number  of  advantages.    Since

                                   5

表面的に、このアプローチには、多くの利点があります。 5以来

modifications  to  the  kernel  are not required, the job can be done by

カーネルへの変更を必要としないで、仕事ですることができます。

someone who is not an expert in the kernel structure.  Since it is often

カーネル構造の専門家でないだれか。 しばしばそれがそうであるので

impossible to find somebody who is experienced both in the structure  of

構造で両方の、経験されるだれかを見つけるのは不可能です。

the  operating system and the structure of the protocol, this path, from

オペレーティングシステムプロトコルの構造、この経路

a management point of view, is often extremely appealing. Unfortunately,

管理観点はしばしば非常に魅力的です。 残念ながら

putting a protocol in a process has a number of  disadvantages,  related

プロセスにプロトコルを入れるのにおいて、関係づけられて、多くの損失があります。

to  both  structure  and  performance.    First, as was discussed above,

構造と性能の両方に。 上で最初に、議論したように

process scheduling can be  a  significant  source  of  real-time  delay.

プロセススケジューリングはリアルタイムの遅れの重要な源であるかもしれません。

There  is  not  only the actual cost of going through the scheduler, but

しかし、スケジューラを通る実費しかありません。

the problem that the operating system may not have  the  right  sort  of

オペレーティングシステムはちょっと権利がないかもしれないという問題

priority  tools  to  bring  the  process into execution quickly whenever

急速にプロセスを実行に運び込む優先権ツール、いつ

there is work to be done.

やるべき仕事があります。

     Structurally, the difficulty with putting a protocol in  a  process

構造的に、aを置く困難はプロセスで議定書を作ります。

is  that  the protocol may be providing services, for example support of

プロトコルはサービス、例えばサポートを提供しているかもしれません。

data streams, which are normally obtained by  going  to  special  kernel

データ・ストリーム。(通常、そのデータ・ストリームは、特別なカーネルに行くことによって、得られます)。

entry  points.   Depending on the generality of the operating system, it

エントリーは指します。 オペレーティングシステムの一般性による、それ

may be impossible to take a  program  which  is  accustomed  to  reading

読書に慣れているプログラムを取るのは不可能であるかもしれません。

through  a kernel entry point, and redirect it so it is reading the data

カーネルエントリーで、指してください、そして、データを読んでいるためにそれを向け直してください。

from a process.  The most extreme example of this  problem  occurs  when

プロセスから。 この問題の最も極端な例が現れる、いつ

implementing  server  telnet.  In almost all systems, the device handler

サーバtelnetを実装します。 システム、ほとんどすべてのデバイス操作者で

for the locally attached teletypes is located  inside  the  kernel,  and

そして局所的に添付のテレタイプがカーネルの中に位置しているので。

programs  read and write from their teletype by making kernel calls.  If

プログラムは、それらのテレタイプからカーネル電話をかけることによって、読んで、書きます。 if

server telnet is implemented in a process, it is then necessary to  take

サーバtelnetはプロセスで実装されて、次に、取るのが必要です。

the  data  streams  provided  by server telnet and somehow get them back

データ・ストリームは、サーバtelnetで提供して、どうにかそれらを取り戻します。

down inside the kernel so that they  mimic  the  interface  provided  by

彼らが提供されたインタフェースをまねるように、カーネルの中にダウンしてください。

local   teletypes.     It  is  usually  the  case  that  special  kernel

                                   6

地方のテレタイプ。 それ、通常ケースはその特別なカーネル6です。

modification  is  necessary  to  achieve  this structure, which somewhat

変更がこの構造を達成するのに必要である、どれ、いくらか。

defeats the benefit of having removed the protocol from  the  kernel  in

有の利益がカーネルからのプロトコルを取り除いた敗北

the first place.

1位。

     Clearly, then, there are advantages to putting the protocol package

そして、明確に、プロトコルパッケージを置く利点があります。

in  the kernel.  Structurally, it is reasonable to view the network as a

カーネルで。 構造的に、ネットワークをaであるとみなすのは妥当です。

device, and device drivers are traditionally contained  in  the  kernel.

デバイス、およびデバイスドライバは伝統的にそうです。カーネルでは、含まれています。

Presumably,  the  problems  associated  with  process  scheduling can be

おそらく、プロセススケジューリングに関連している問題はそうであることができます。

sidesteped, at least to a certain extent, by placing the code inside the

コードを中に置くことによって、少なくともある程度までsidestepedしました。

kernel.  And it is obviously easier to make the server  telnet  channels

カーネル。 そして、サーバtelnetチャンネルを作るのは明らかにより簡単です。

mimic  the local teletype channels if they are both realized in the same

彼らが同じくらいでともに実感されるなら、ローカルのテレタイプチャンネルをまねてください。

level in the kernel.

カーネルにおけるレベル。

     However, implementation of protocols in the kernel has its own  set

しかしながら、カーネルにおけるプロトコルの実装で、それ自身のものを設定します。

of  pitfalls.    First, network protocols have a characteristic which is

落とし穴について。 まず最初に、ネットワーク・プロトコルには、そうする特性があります。

shared by almost no other device:  they require rather  complex  actions

ほとんどどんな対向機器でも、共有されません: 彼らはかなり複雑な動きを必要とします。

to  be  performed  as  a  result  of  a  timeout.  The problem with this

タイムアウトの結果、実行されるために。 これに関する問題

requirement is that the kernel often has no facility by which a  program

要件はカーネルには施設が全くどのaプログラムでしばしばあるというわけではないかということです。

can  be  brought into execution as a result of the timer event.  What is

タイマイベントの結果、実行に持って来ることができます。 何がありますか?

really needed, of course, is  a  special  sort  of  process  inside  the

本当にもちろん必要であるのは、特殊活字のプロセス内部です。

kernel.    Most  systems  lack  this  mechanism.  Failing that, the only

カーネル。 ほとんどのシステムがこのメカニズムを欠いています。 それに失敗する唯一

execution mechanism available is to run at interrupt time.

利用可能な実行メカニズムは中断時に稼働することです。

     There are substantial drawbacks to implementing a protocol  to  run

実行するプロトコルを実装することへのかなりの欠点があります。

at interrupt time.  First, the actions performed may be somewhat complex

中断時に。 まず最初に、実行された動きはいくらか複雑であるかもしれません。

and  time  consuming,  compared  to  the maximum amount of time that the

時間がかかる、最大の時間とそれを比較します。

operating system is prepared to spend servicing an interrupt.   Problems

オペレーティングシステムは中断を修理しながら費やすように準備されます。 問題

can  arise  if interrupts are masked for too long.  This is particularly

                                   7

中断があまりに長い間マスクをかけられるなら、起こることができます。 これは特に7です。

bad  when running as a result of a clock interrupt, which can imply that

時計割込みの結果、稼働していると、悪いです。割込みはそれを含意できます。

the clock interrupt is masked.  Second, the environment provided  by  an

時計割込みは仮面です。 2番目に、環境は提供しました。

interrupt  handler  is  usually  extremely  primitive  compared  to  the

比べて、通常、割り込みハンドラは非常に原始的です。

environment of a process.    There  are  usually  a  variety  of  system

プロセスの環境。 通常、さまざまなシステムがあります。

facilities  which are unavailable while running in an interrupt handler.

割り込みハンドラへ駆け込んでいる間入手できない施設。

The most important of these is the ability to suspend execution  pending

これらで最も重要であるのは、未定の状態で執行を中止する能力です。

the  arrival  of some event or message.  It is a cardinal rule of almost

何らかのイベントかメッセージの到着。 それがそう、枢機卿はほとんど判決を下します。

every known operating system that one  must  not  invoke  the  scheduler

1がそうしなければならないあらゆる知られているオペレーティングシステムがスケジューラを呼び出すというわけではありません。

while  running  in  an  interrupt  handler.  Thus, the programmer who is

割り込みハンドラへ駆け込んでいる間。 その結果、そうするプログラマ

forced to implement all or part of his protocol package as an  interrupt

彼のプロトコルパッケージのすべてか一部が中断として実装させられます。

handler  must  be  the  best  sort  of  expert  in  the operating system

操作者はオペレーティングシステムでちょっと専門であることで最も良いに違いありません。

involved, and must be prepared  for  development  sessions  filled  with

セッションが満ちた開発のためにかかわって、用意しなければならなくなってください。

obscure  bugs  which  crash not just the protocol package but the entire

プロトコルパッケージだけではなく、全体も墜落させる不鮮明なバグ

operating system.

オペレーティングシステム。

     A final problem with processing  at  interrupt  time  is  that  the

中断時の処理に関する最終的な問題はそれです。

system  scheduler has no control over the percentage of system time used

システムスケジューラで、システム時間の割合のコントロールを全く使用しません。

by the protocol handler.  If a large number of packets  arrive,  from  a

プロトコル操作者で。 多くのパケットがaから到着するなら

foreign  host that is either malfunctioning or fast, all of the time may

誤動作しているか、または速い異種宿主、現代のすべてはそうするかもしれません。

be spent in the interrupt handler, effectively killing the system.

事実上、システムをだめにして、割り込みハンドラに費やされてください。

     There are other problems associated with putting protocols into  an

そこ、交際した他の問題はプロトコルを入れています。

operating system kernel.  The simplest problem often encountered is that

オペレーティングシステムカーネル。 しばしば行きあたられる中で最も簡単な問題はそれです。

the  kernel  address space is simply too small to hold the piece of code

カーネルアドレス空間は単にコードの断片を保持できないくらい小さいです。

in question.  This is a rather artificial sort of problem, but it  is  a

問題。 これはかなり人工の種類の問題ですが、それはaです。

severe  problem  none  the  less in many machines.  It is an appallingly

厳しい問題、やはり、多くのマシンで。 それがそうである、恐ろしさ

unpleasant experience to do an implementation with  the  knowledge  that

                                   8

知識がある実装にその8をする不愉快な出来事

for  every  byte  of new feature put in one must find some other byte of

入れられたある他のバイトを見つけなければならないあらゆるバイトの新機能のために

old feature to throw out.  It is hopeless to  expect  an  effective  and

放り出す古い特徴。 そしてそれが予想するために絶望的である、有効である。

general  implementation  under this kind of constraint.  Another problem

この種類の規制での一般的な実装。 別の問題

is that the protocol package, once it  is  thoroughly  entwined  in  the

それでいったん徹底的にからませられると、それはプロトコルパッケージです。

operating  system, may need to be redone every time the operating system

オペレーティングシステム、毎回やり直されるのが必要であるかもしれない、オペレーティングシステム

changes.  If the protocol and the operating system are not maintained by

変化。 プロトコルとオペレーティングシステムが維持されないなら

the same group,  this  makes  maintenance  of  the  protocol  package  a

同じように、分類してください、そして、これはプロトコルパッケージのメインテナンスをaにします。

perpetual headache.

永久の頭痛。

     The  third  option  for  protocol  implementation  is  to  take the

プロトコル実装のための3番目のオプションは取ることです。

protocol package and move it outside  the  machine  entirely,  on  to  a

aにパッケージについて議定書の中で述べてください、そして、それをマシンの外に完全に動かしてください。

separate  processor  dedicated  to this kind of task.  Such a machine is

この種類に関するタスクに捧げられたプロセッサを切り離してください。 そのようなマシンはそうです。

often described as a communications processor or a front-end  processor.

しばしばコミュニケーションプロセッサかフロントエンドプロセッサとして記述されています。

There  are  several  advantages  to this approach.  First, the operating

このアプローチのいくつかの利点があります。 最初に、作動

system on the communications processor can  be  tailored  for  precisely

正確にプロセッサを仕立てることができるコミュニケーションのシステム

this  kind  of  task.  This makes the job of implementation much easier.

この種類に関するタスク。 これで、実装の仕事ははるかに簡単になります。

Second, one does not need to redo the task for every  machine  to  which

2番目、ものがあらゆるマシンのためのタスクを手直しする必要はない、どれ

the  protocol  is  to  be  added.   It may be possible to reuse the same

プロトコルは加えられることです。 それは同じように再利用するのにおいて可能であるかもしれません。

front-end machine on different host computers.  Since the task need  not

異なったホストコンピュータの上のフロントエンドマシン。 以来、タスクはそうする必要はありません。

be  done as many times, one might hope that more attention could be paid

人が、何回も、より多くの注意を向けることができたことを望むかもしれないので、してください。

to doing it right.  Given a careful  implementation  in  an  environment

まさしくそれをするのに。 環境における慎重な実装を与えました。

which  is  optimized for this kind of task, the resulting package should

この種類に関するタスク、結果として起こるパッケージのために最適化されるものはそうするべきです。

turn out to be very efficient.  Unfortunately, there are  also  problems

非常に効率的であると判明してください。 残念ながら、問題もあります。

with this approach.  There is, of course, a financial problem associated

これと共にアプローチしてください。 もちろん、関連づけられた経済問題があります。

with  buying  an  additional  computer.    In  many cases, this is not a

追加コンピュータを買うのに。 多くの場合、これはaではありません。

problem at all since  the  cost  is  negligible  compared  to  what  the

費用が取るにたらないので、全く問題はことと比較されました。

programmer  would  cost  to  do  the  job in the mainframe itself.  More

                                   9

プログラマは、メインフレーム自体で仕事するのをかかるでしょう。 より多くの9

fundamentally, the communications processor approach does not completely

基本的に、コミュニケーションプロセッサアプローチは完全にそうするというわけではありません。

sidestep  any  of  the  problems  raised  above.  The reason is that the

上に提起された問題のいずれもかわしてください。 理由はそれです。

communications processor, since  it  is  a  separate  machine,  must  be

それが別々のマシンであり、あるに違いないコミュニケーションプロセッサ

attached  to  the mainframe by some mechanism.  Whatever that mechanism,

何らかのメカニズムでメインフレームに付きました。 そのメカニズムが何であっても

code is required in the mainframe to deal with it.   It  can  be  argued

コードが、それに対処するのにメインフレームで必要です。 それについて論争できます。

that  the  program  to deal with the communications processor is simpler

コミュニケーションプロセッサに対処するプログラムは、より簡単です。

than the program to implement the entire protocol package.  Even if that

全体のプロトコルパッケージを実装するプログラムより。 それ

is so,  the  communications  processor  interface  package  is  still  a

したがって、それでも、コミュニケーションプロセッサインタフェースパッケージがaであることです。

protocol in nature, with all of the same structural problems.  Thus, all

同じ構造上の問題その結果、すべてのすべてで現実に議定書を作ってください。

of  the  issues  raised above must still be faced.  In addition to those

必須の上でまだ提起されていた問題では、面してください。 それらに加えて

problems, there are some other, more subtle problems associated with  an

問題であり、ある、ある他の交際したより微妙な問題

outboard implementation of a protocol.  We will return to these problems

プロトコルの船外の実装。 私たちはこれらの問題に戻るつもりです。

later.

後で。

     There  is  a  way  of  attaching  a  communications  processor to a

コミュニケーションプロセッサをaに取り付ける方法があります。

mainframe host which  sidesteps  all  of  the  mainframe  implementation

メインフレーム実装のすべてをかわすメインフレーム・ホスト

problems, which is to use some preexisting interface on the host machine

ホスト・マシンの上のいくつかの先在のインタフェースを使用することである問題

as  the  port  by  which  a  communications processor is attached.  This

コミュニケーションプロセッサが付属しているポートとして。 これ

strategy is often used as a last stage of desperation when the  software

ソフトウェアであるときに、戦略は最後のステージの自暴自棄としてしばしば使用されます。

on  the host computer is so intractable that it cannot be changed in any

オンである、ホストコンピュータが非常に手に負えないので、いずれでもそれを変えることができません。

way.  Unfortunately, it is almost inevitably the case that  all  of  the

ずっと。 残念ながら、それがほぼ必然的にそうである、ケース、そんなにすべて。

available  interfaces  are  totally  unsuitable for this purpose, so the

したがって、利用可能なインタフェースはこのために完全に不適当です。

result is unsatisfactory at best.  The most common  way  in  which  this

結果はせいぜい不十分です。 最も一般的な入口、どれ、これ

form  of attachment occurs is when a network connection is being used to

付属のフォームが起こる、ネットワーク接続がいつまで使用されているかということです。

mimic local teletypes.  In this case, the  front-end  processor  can  be

地方のテレタイプをまねてください。 この場合、フロントエンドプロセッサはそうであることができます。

attached  to  the mainframe by simply providing a number of wires out of

単に多くのワイヤを提供するメインフレームに付きます。

the front-end processor, each corresponding to a connection,  which  are

                                   10

フロントエンドプロセッサ、接続との各文通。(その文通は10です)。

plugged  into teletype ports on the mainframe computer.  (Because of the

メインフレーム・コンピュータでテレタイプポートのプラグを差し込みました。 (

appearance  of  the  physical  configuration  which  results  from  this

これから生じる物理的な構成の外観

arrangement,  Michael  Padlipsky  has  described  this  as  the "milking

アレンジメント、マイケルPadlipskyは「乳をしぼる」としてこれを記述しました。

machine" approach to computer networking.)   This  strategy  solves  the

コンピュータのネットワーク化への「マシン」アプローチ。) この戦略は解決します。

immediate  problem  of  providing  remote  access  to  a host, but it is

しかし、ホスト、それに遠隔アクセスを提供する手近な問題はそうです。

extremely inflexible.  The channels  being  provided  to  the  host  are

非常に融通がききません。 ホストに提供されるチャンネルはそうです。

restricted  by  the host software to one purpose only, remote login.  It

ホストソフトウェアによって1つの目的の唯一の、そして、リモートなログインに制限されます。 それ

is impossible to use them for any other purpose, such as  file  transfer

ファイル転送などのいかなる他の目的にもそれらを使用するのは不可能です。

or  sending mail, so the host is integrated into the network environment

または、メールを送って、したがって、ホストはネットワーク環境と統合されます。

in an extremely limited and inflexible manner.  If this is the best that

非常に制限されて堅い方法で。 これが最も良い、それ

can be done, then it  should  be  tolerated.    Otherwise,  implementors

することができて、次に、それを許容するべきです。 そうでなければ、作成者

should be strongly encouraged to take a more flexible approach.

よりフレキシブルなアプローチを取るよう強く奨励されるべきです。

     4.  Protocol Layering

4. プロトコルレイヤリング

     The  previous  discussion suggested that there was a decision to be

前の議論は、それが決定がいたと示唆しました。

made as to where a protocol ought to  be  implemented.    In  fact,  the

プロトコルが実装されるべきであるところに関して作られています。 事実上

decision  is  much  more  complicated  than that, for the goal is not to

決定は目標へのそれよりはるかに複雑にされます。

implement a single protocol, but to implement a whole family of protocol

しかし、ただ一つのプロトコルを実装して、プロトコルの家族全員を実装してください。

layers, starting with a device driver or local  network  driver  at  the

デバイスドライバか企業内情報通信網のドライバーをきっかけに、層にします。

bottom,  then  IP  and  TCP,  and  eventually  reaching  the application

下部と、次に、IPと、TCPと、結局、アプリケーションに達すること。

specific protocol, such as Telnet, FTP and SMTP on the  top.    Clearly,

先端のTelnetや、FTPやSMTPなどの特定のプロトコル。 明確に

the bottommost of these layers is somewhere within the kernel, since the

これらの層の最低部が以来、カーネルの中のどこかにあります。

physical  device  driver for the net is almost inevitably located there.

ネットのためのフィジカル・デバイスドライバーはそこにほぼ必然的に位置しています。

Equally clearly, the top layers of this package, which provide the  user

等しく、明確に、先端はこのパッケージを層にします(ユーザを提供します)。

his  ability  to  perform the remote login function or to send mail, are

リモート・ログイン機能を実行するか、またはメールを送る彼の能力

not entirely contained within the kernel.  Thus,  the  question  is  not

                                   11

カーネルの中に完全に含まれていません。 したがって、質問は11ではありません。

whether  the  protocol family shall be inside or outside the kernel, but

しかし、カーネルの中、または、カーネルの外にプロトコルファミリーがあるものとして

how it shall be sliced in two between that part  inside  and  that  part

それはその部分内部とその部分の間の2でどう切られるものとするか。

outside.

外。

     Since  protocols  come  nicely layered, an obvious proposal is that

プロトコルがうまく層にされた状態で来るので、明白な提案はそれです。

one of the layer interfaces should be the point at which the inside  and

そして層のインタフェースの1つがポイントであるべきである、どれ、内部。

outside components are sliced apart.  Most systems have been implemented

外のコンポーネントは離れて切られます。 ほとんどのシステムが導入されました。

in  this  way,  and  many have been made to work quite effectively.  One

これでは、道、および多くがそうです。かなり力を発揮させられます。 1つ

obvious place to slice is at the upper interface  of  TCP.    Since  TCP

切る明白な場所がTCPの上側のインタフェースにあります。 TCP以来

provides  a  bidirectional byte stream, which is somewhat similar to the

a双方向のバイト・ストリームを供給します。(それは、いくらか同様です)。

I/O facility provided by most operating systems, it is possible to  make

ほとんどのオペレーティングシステムで入出力装置を提供して、それは作るのにおいて可能です。

the  interface  to  TCP  almost  mimic  the  interface to other existing

TCPへのインタフェースは他の存在にインタフェースをほとんどまねます。

devices.  Except in the matter of opening a connection, and dealing with

デバイス。 接続を開く問題に関して除いて、対処します。

peculiar failures, the software using TCP need not know  that  it  is  a

独特の失敗であり、TCPを使用するソフトウェアは、それがaであることを知る必要はありません。

network connection, rather than a local I/O stream that is providing the

提供されている地方の入出力ストリームよりむしろ接続をネットワークでつないでください。

communications  function.  This approach does put TCP inside the kernel,

コミュニケーションは機能します。 このアプローチはカーネルの中にTCPを置きます。

which raises all the problems addressed  above.    It  also  raises  the

上で扱われたすべての問題を提起します。 また、それは上げます。

problem that the interface to the IP layer can, if the programmer is not

プログラマがそうでなく、IP層へのインタフェースがそうすることができるという問題

careful,  become  excessively  buried  inside  the  kernel.   It must be

慎重であることで、カーネルの中に過度に埋まるようになってください。 それはそうであるに違いありません。

remembered that things other than TCP are expected to run on top of  IP.

TCP以外のものがIPの上で稼働すると予想されたのを覚えていました。

The  IP interface must be made accessible, even if TCP sits on top of it

TCPがそれの上に座ってもIPインタフェースをアクセスしやすくしなければなりません。

inside the kernel.

カーネルの中で。

     Another obvious place to slice is above Telnet.  The  advantage  of

Telnetの上に切る別の明白な場所はあります。 利点

slicing  above  Telnet  is  that  it solves the problem of having remote

Telnetの上の切るのはリモートな状態で有の問題を解決するということです。

login channels emulate local teletype channels.    The  disadvantage  of

ログインチャンネルはローカルのテレタイプチャンネルをエミュレートします。 不都合

putting  Telnet into the kernel is that the amount of code which has now

                                   12

カーネルにTelnetを入れて、それは現在12を持っているコードの量ですか?

been  included  there  is  getting  remarkably  large.    In  some early

含まれていて、著しく大きくなるのがあります。 いくつか、早期

implementations, the size of the  network  package,  when  one  includes

実装、ネットワークパッケージ、いつに関するサイズはあるインクルードであるか。

protocols  at  the  level  of Telnet, rivals the size of the rest of the

Telnetのレベルにおけるプロトコル、残りのサイズのライバル

supervisor.  This leads to vague feelings that all is not right.

監督。 これは権利ではなく、あいまいな気持ちに通じます。

     Any attempt to slice through a lower layer  boundary,  for  example

例えば、下層境界を切るように進むどんな試み

between  internet  and  TCP,  reveals  one fundamental problem.  The TCP

インターネットとTCP、啓示の間で、ある基本的な問題。 TCP

layer, as well as the IP layer, performs a  demultiplexing  function  on

IP層と同様に、層は逆多重化機能を実行します。

incoming  datagrams.   Until the TCP header has been examined, it is not

受信データグラムTCPヘッダーが調べられたとき、それは初めて、調べられていました。

possible to know for which  user  the  packet  is  ultimately  destined.

パケットが結局どのユーザに関して運命づけられているかを知るのにおいて、可能です。

Therefore,  if  TCP,  as  a  whole,  is  moved outside the kernel, it is

したがって、TCPがカーネルの外で全体で動かされるなら、それは動かされます。

necessary to create one separate process called the TCP  process,  which

TCPプロセスと呼ばれる1つの別々のプロセスを作成するのに必要である、どれ

performs  the TCP multiplexing function, and probably all of the rest of

TCPマルチプレクシング機能、およびたぶん残りのすべてを実行します。

TCP processing as well.  This means that incoming data  destined  for  a

また、TCP処理。 これは、受信データがaのために運命づけられたことを意味します。

user  process  involves  not  just a scheduling of the user process, but

しかし、ユーザ・プロセスはまさしくユーザ・プロセスのどんなスケジューリングも伴いません。

scheduling the TCP process first.

最初に、TCPプロセスの計画をします。

     This suggests an  alternative  structuring  strategy  which  slices

これは切られる戦略を構造化する代替手段を示します。

through  the  protocols,  not  along  an established layer boundary, but

しかし確立した層の境界ではなく、プロトコルを通して。

along a functional boundary having to do with demultiplexing.   In  this

逆多重化と関係がある機能的境界に沿って。 これで

approach, certain parts of IP and certain parts of TCP are placed in the

アプローチ、IPのある部分、およびTCPのある部分は置かれます。

kernel.    The amount of code placed there is sufficient so that when an

カーネル。 そこに置かれたコードの量が十分なそう、それ、いつ

incoming datagram arrives, it is possible to know for which process that

受信データグラムは届いて、どのプロセスでそれを知るかは可能です。

datagram is ultimately destined.  The datagram is then  routed  directly

データグラムは結局、運命づけられています。 そして、データグラムは直接発送されます。

to  the  final  process,  where  additional  IP  and  TCP  processing is

決勝に、追加IPとTCP処理が処理するところで処理してください。

performed on it.  This removes from the kernel any requirement for timer

それに実行されます。 これはカーネルからタイマのためのどんな要件も取り除きます。

based actions, since they can be done by the  process  provided  by  the

                                   13

13時までに提供されたプロセスでそれらができて以来のベースの動き

user.    This  structure  has  the  additional advantage of reducing the

ユーザ。 この構造には、減少する追加利点があります。

amount of code required in the  kernel,  so  that  it  is  suitable  for

カーネルで必要であるコードの量、それが適当であるそう

systems where kernel space is at a premium.  The RFC 814, titled "Names,

プレミアムにはカーネルスペースがあるシステム。 「名前」と題をつけられたRFC814

Addresses,  Ports, and Routes," discusses this rather orthogonal slicing

「アドレス、Ports、およびRoutes」はこのかなり直交した切ることについて議論します。

strategy in more detail.

その他の詳細の戦略。

     A related discussion of protocol layering and multiplexing  can  be

プロトコルレイヤリングとマルチプレクシングの関連する議論はそうであることができます。

found in Cohen and Postel [1].

コーエンとポステル[1]では、設立します。

     5.  Breaking Down the Barriers

5. バリアを破壊します。

     In  fact, the implementor should be sensitive to the possibility of

事実上、作成者は可能性に敏感であるべきです。

even more  peculiar  slicing  strategies  in  dividing  up  the  various

様々に分割することにおけるさらに独特の切る戦略

protocol  layers  between the kernel and the one or more user processes.

カーネルと1つ以上のユーザ・プロセスの間の層について議定書の中で述べてください。

The result of the strategy proposed above was that part  of  TCP  should

上で提案された戦略の結果はTCPの一部がそうするべきであるということでした。

execute  in  the process of the user.  In other words, instead of having

ユーザの途中に、実行します。 有の代わりに言い換えれば。

one TCP process for the system, there is one TCP process per connection.

1TCPがシステムのために処理して、1接続あたり1つのTCPプロセスがあります。

Given this architecture, it is not longer necessary to imagine that  all

このアーキテクチャを考えて、それがすべてであると想像するのは必要な状態で、より長くはありません。

of  the  TCPs  are  identical.    One  TCP  could  be optimized for high

TCPsは同じです。 高値のために1TCPを最適化できました。

throughput applications, such as file transfer.  Another  TCP  could  be

ファイル転送などのスループット応用。 別のTCPはそうであるかもしれません。

optimized  for small low delay applications such as Telnet.  In fact, it

Telnetなどの小さい低い遅れアプリケーションのために、最適化されています。 事実上、それ

would be possible to produce a TCP which was  somewhat  integrated  with

いくらか統合されたTCPを生産するのにおいて、可能でしょう。

the  Telnet  or  FTP  on  top  of  it.  Such an integration is extremely

それの上のTelnetかFTP。 そのような統合がそうである、非常に。

important,  for  it  can  lead  to  a  kind  of  efficiency  which  more

重要である、それは一種の効率でどれにさらに通じることができるか。

traditional  structures are incapable of producing.  Earlier, this paper

伝統的な構造は生産できません。 より早いこの紙

pointed out that one of the important rules to achieving efficiency  was

指摘されて、重要1つが効率を増すのに統治されるのがありました。

to  send  the minimum number of packets for a given amount of data.  The

与えられたデータ量のためにパケットの最小の数を送るために。 The

idea of protocol layering interacts very strongly (and poorly) with this

                                   14

プロトコルレイヤリングの考えは非常に強いこと(不十分である)にこの14と対話します。

goal,  because  independent  layers  have  independent  ideas about when

いつ頃に関して独立している層には独自の考えがあるか目標

packets should be sent, and unless these layers can somehow  be  brought

パケットを送るべきです、そして、これらの層がどうにかそうすることができないなら、持って来てください。

into  cooperation,  additional  packets  will flow.  The best example of

協力に、追加パケットは流れるでしょう。 例を負かします。

this is the operation of server telnet in a character at a  time  remote

これは時にリモートなキャラクタで、サーバtelnetの操作です。

echo  mode  on top of TCP.  When a packet containing a character arrives

TCPの上でモードを反映してください。 キャラクタを含むパケットが到着する場合

at a server host, each layer has a different response  to  that  packet.

サーバー・ホストでは、各層はそのパケットに異なった応答を持っています。

TCP  has  an obligation to acknowledge the packet.  Either server telnet

TCPには、パケットを承認する義務があります。 どちらかのサーバtelnet

or the application layer above has an obligation to echo  the  character

または、上の応用層には、キャラクタの言葉を繰り返す義務があります。

received  in the packet.  If the character is a Telnet control sequence,

パケットでは、受け取られています。 キャラクタがTelnetであるなら、系列を制御してください。

then Telnet has additional actions which it must perform in response  to

に対応して次に、Telnetにはそれが実行しなければならない追加動作がある。

the  packet.    The  result  of  this,  in most implementations, is that

パケット。 ほとんどの実装におけるこの結果はそれです。

several packets are sent back in response to the  one  arriving  packet.

いくつかのパケットが1つの到着パケットに対応して返送されます。

Combining  all of these return messages into one packet is important for

1つのパケットへのこれらのリターンメッセージのすべてが重要である結合

several reasons.  First, of course, it reduces  the  number  of  packets

数個が推論します。 もちろん、まず最初に、それはパケットの数を減少させます。

being sent over the net, which directly reduces the charges incurred for

ネットの上に送って、どれが直接被られた充電を下げるか。

many common carrier tariff structures.  Second, it reduces the number of

多くの運輸業者関税構造。 2番目に、それは数を減少させます。

scheduling  actions  which  will  occur inside both hosts, which, as was

両方のホストの中に起こる動作の計画をする、どれ、あったか。

discussed above, is extremely important in improving throughput.

議論された上はスループットを改良するのにおいて非常に重要です。

     The way to achieve this goal of packet sharing is to break down the

パケットが共有されるというこの目標を達成する方法に失敗することになっています。

barrier between the layers of the protocols, in a  very  restrained  and

そしてプロトコルであって、aでの非常に抑制にされるのの層の間のバリア。

careful  manner, so that a limited amount of information can leak across

限られた情報量が横切って漏れることができる慎重な態度

the barrier to enable one layer to optimize its behavior with respect to

1つの層が振舞いを最適化するのを可能にするバリア

the desires of the layers above and below it.   For  example,  it  would

それとそれの下の層の願望。 例えば、それはそうするでしょう。

represent  an  improvement  if TCP, when it received a packet, could ask

それがパケットを受けたときにはTCPであるなら改良を表してください、そして、尋ねることができました。

the layer above whether or not it would  be  worth  pausing  for  a  few

いくつかのために止まる価値があるだろうかどうかの上の層

milliseconds  before  sending  an acknowledgement in order to see if the

                                   15

15であるなら見るために承認を送る前のミリセカンド

upper  layer  would  have  any  outgoing  data to send.  Dallying before

上側の層には、送るどんな発信データもあるでしょう。 以前、ふざけます。

sending  the  acknowledgement  produces  precisely  the  right  sort  of

承認を送ると、正確に権利はちょっと生産されます。

optimization  if  the client of TCP is server Telnet.  However, dallying

TCPのクライアントであるなら、最適化はサーバTelnetです。 しかしながら、ふざけること。

before sending an acknowledgement is absolutely unacceptable if  TCP  is

TCPが容認できないなら承認を送るのが絶対に容認できなくなる前に

being used for file transfer, for in file transfer there is almost never

ファイル転送には、ほとんどないので、ファイル転送に使用されます。

data  flowing  in  the  reverse  direction, and the delay in sending the

反対の方向、および発信の遅れで流れるデータ

acknowledgement probably translates directly into a delay  in  obtaining

承認はたぶん直接入手の遅れに翻訳されます。

the  next  packets.  Thus, TCP must know a little about the layers above

次のパケット。 したがって、TCPは上の層に関して少し知らなければなりません。

it to adjust its performance as needed.

必要に応じて性能を調整するそれ。

     It would be possible to imagine a general  purpose  TCP  which  was

一般的な目的がそうするTCPであると想像するのは可能でしょう。

equipped  with  all  sorts of special mechanisms by which it would query

それが質問されるいろいろな特別なメカニズムを備えています。

the layer above and modify its behavior accordingly.  In the  structures

それに従って、振舞いを上で層にして、変更してください。 構造で

suggested above, in which there is not one but several TCPs, the TCP can

上に示されて、1つがあるのではなく、どれが数個のTCPsがあるかで、TCPはそうすることができます。

simply  be modified so that it produces the correct behavior as a matter

件として正しい振舞いを起こすように、単に変更されてください。

of course.  This structure has  the  disadvantage  that  there  will  be

もちろん。 この構造には、ある難点があります。

several  implementations  of TCP existing on a single machine, which can

単一マシンの上に存在するTCPのいくつかの実装。(その実装はそうすることができます)。

mean more maintenance headaches if a problem is found where TCP needs to

TCPが、必要があるところで問題が見つけられるなら、より多くのメインテナンス頭痛を意味します。

be changed.  However, it is probably the case that each of the TCPs will

変えてください。 しかしながら、それぞれのTCPsがそうするのは、たぶん事実です。

be substantially simpler  than  the  general  purpose  TCP  which  would

汎用のそうするTCPより実質的に簡単であってください。

otherwise  have  been  built.    There  are  some  experimental projects

さもなければ、建てられてください、そうした。 いくつかの実験的な計画があります。

currently under way which suggest that this approach may make  designing

現在、道の下では、どれが、これにアプローチするのを示すかは設計をするかもしれません。

of  a  TCP, or almost any other layer, substantially easier, so that the

実質的により簡単なTCP、またはほとんどいかなる他の層

total effort involved in bringing up a complete package is actually less

完全なパッケージを持って来るのにかかわる総取り組みは実際により少ないです。

if this approach is followed.  This approach is by  no  means  generally

このアプローチが続かれているなら。 このアプローチが決してそうである、一般に。

accepted, but deserves some consideration.

                                   16

受け入れますが、何らかの考慮に値します。 16

     The  general conclusion to be drawn from this sort of consideration

この種類の考慮から得られるべき一般的な結論

is that a layer boundary has both a benefit and a penalty.    A  visible

境界が持っているそのa層は利益と刑罰の両方ですか? 目に見えるA

layer  boundary,  with  a  well  specified interface, provides a form of

境界がよく指定されたインタフェースにフォームを提供する層

isolation between two layers which allows one to  be  changed  with  the

2つの層の間の1つが交換されるのを許容する分離

confidence  that  the  other  one  will  not  stop  working as a result.

もう片方がその結果仕事を中止しないという信用。

However, a firm layer boundary almost inevitably  leads  to  inefficient

しかしながら、堅い層の境界はほぼ必然的に効率の悪く導きます。

operation.    This  can  easily be seen by analogy with other aspects of

操作。 他の局面への類推で容易にこれを見ることができます。

operating systems.  Consider, for example,  file  systems.    A  typical

オペレーティングシステム考えてください、そして、例えば、典型的にシステムAをファイルしてください。

operating  system  provides  a file system, which is a highly abstracted

オペレーティングシステムはファイルシステムを提供します。(それは、非常に抜き取られたaです)。

representation of a disk.   The  interface  is  highly  formalized,  and

ディスクの表現。 そしてインタフェースが非常に正式にされる。

presumed  to  be highly stable.  This makes it very easy for naive users

あえて非常に安定していました。 これで、それはナイーブなユーザにとって非常に簡単になります。

to have access to  disks  without  having  to  write  a  great  deal  of

書く必要はなくてディスクに近づく手段を持っている、多く

software.  The existence of a file system is clearly beneficial.  On the

ソフトウェア。 ファイルシステムの存在は明確に有益です。 オン

other  hand,  it is clear that the restricted interface to a file system

手で他であり、制限がファイルシステムに接続するのは、明確です。

almost inevitably leads to inefficiency.  If the interface is  organized

ほぼ必然的に、非能率に通じます。 インタフェースが組織化されているなら

as  a  sequential read and write of bytes, then there will be people who

a連続する、バイトを読んで、主題にして書いてください、そして、だれを住ませるかそしてそこでは、ことでしょう。

wish to do high throughput transfers who cannot achieve their goal.   If

目的を果たすことができない高生産性転送をすることを願ってください。 if

the  interface  is  a  virtual  memory  interface, then other users will

インタフェースが仮想記憶インタフェースである、次に、他のユーザはそうするでしょう。

regret the necessity of building a byte stream interface on top  of  the

上バイト・ストリームインタフェースを造るという必要性を後悔してください。

memory  mapped file.  The most objectionable inefficiency results when a

メモリはファイルを写像しました。 aであるときに、最も好ましくない非能率は結果として生じます。

highly sophisticated package, such as a data  base  management  package,

データベースの管理パッケージなどの非常に高性能のパッケージ

must  be  built  on  top  of  an  existing  operating  system.    Almost

既存のオペレーティングシステムの上に建てなければなりません。 ほとんど

inevitably, the implementors of the database system  attempt  to  reject

必然的に、拒絶しますデータベース・システムの作成者が、試みる。

the  file  system  and  obtain  direct  access  to the disks.  They have

システムをファイルしてください、そして、直接アクセスをディスクに得てください。 それらはそうしました。

sacrificed modularity for efficiency.

効率のためにモジュール方式を犠牲にしました。

     The same conflict appears in networking, in a rather extreme  form.

                                   17

同じ闘争はネットワーク、かなり極端なフォームに載っています。 17

The concept of a protocol is still unknown and frightening to most naive

プロトコルの概念は、それでも、未知と大部分にナイーブな状態で怯えさせることです。

programmers.   The idea that they might have to implement a protocol, or

プログラマ。 または彼らがプロトコルを実装しなければならないかもしれないという考え。

even part of a protocol, as part  of  some  application  package,  is  a

何らかのアプリケーションパッケージの一部として、プロトコルの一部さえaです。

dreadful thought.  And thus there is great pressure to hide the function

恐ろしい考え。 そして、その結果、機能を隠すかなりの圧力があります。

of  the  net behind a very hard barrier.  On the other hand, the kind of

非常に固いバリアの後ろのネットについて。 他方では、種類

inefficiency which results from this is a particularly undesirable  sort

これから生じる非能率は特に望ましくない種類です。

of  inefficiency, for it shows up, among other things, in increasing the

非能率は、現れるので、特に、そして、中で増加すること。

cost of the communications resource used up to achieve  the  application

アプリケーションを達成するのに使いきられたコミュニケーションリソースの費用

goal.   In cases where one must pay for one's communications costs, they

目標。 人のコミュニケーションコストの代価を払わなければならない場合でそれら

usually turn out to be the dominant cost within the system.  Thus, doing

システムの中の優位な費用であろうとしている通常回転。 その結果、

an excessively good job of packaging up the protocols in  an  inflexible

中のプロトコルへのパッケージの過度に良い仕事、堅さ

manner  has  a  direct  impact  on  increasing  the cost of the critical

方法には、批判的費用を上げるとき、直接的な衝撃があります。

resource within the system.  This is a dilemma which will probably  only

システムの中のリソース。 これはたぶんそうするジレンマ専用です。

be solved when programmers become somewhat less alarmed about protocols,

プログラマがプロトコルがいくらか心配でなくなったら、解決されてください。

so that they are willing to weave a certain amount of protocol structure

彼らが、ある量のプロトコル構造を織っても構わないと思っているように

into their application program, much as application programs today weave

それらのアプリケーション・プログラムに、アプリケーション・プログラムとしての多くが今日、機を織ります。

parts  of  database  management  systems  into  the  structure  of their

構造へのデータベース管理システムが離れている、それら

application program.

アプリケーション・プログラム。

     An extreme example of putting the protocol package  behind  a  firm

プロトコルパッケージを会社の過去のこととする極端な例

layer boundary occurs when the protocol package is relegated to a front-

プロトコルパッケージが前部に左遷されるとき、層の境界は起こります。

end processor.  In this case the interface to the protocol is some other

プロセッサを終わらせてください。 この場合プロトコルへのインタフェースがそうである、ある他の

protocol.    It  is  difficult to imagine how to build close cooperation

議定書を作ってください。 厳密な協力を組み込む方法を想像するのは難しいです。

between layers when they are that far separated.  Realistically, one  of

層の間に、それらがいつそんなに遠いかは分離しました。 現実的である、1

the prices which must be associated with an implementation so physically

それほど物理的に実現に関連しなければならない価格

modularized is that the performance will suffer as a result.  Of course,

modularizedされて、それは意志がその結果受ける性能ですか? もちろん

a separate processor for protocols could be very closely integrated into

                                   18

非常に密接にプロトコルのための別々のプロセッサを18と統合できました。

the  mainframe  architecture, with interprocessor co-ordination signals,

interprocessorコーディネーション信号があるメインフレーム構造

shared memory, and similar features.  Such a physical  modularity  might

共有メモリ、および同様の特徴。 そのような物理的なモジュール方式はそうするかもしれません。

work  very  well,  but  there  is little documented experience with this

非常によく働きなさい、ただし、この経験は少ししか記録されません。

closely coupled architecture for protocol support.

プロトコルサポートのための密接に結合した構造。

     6.  Efficiency of Protocol Processing

6. プロトコル処理の効率

     To this point, this document has considered how a protocol  package

この位まで、このドキュメントは、どのようにがプロトコルパッケージであるかと考えました。

should  be  broken  into  modules,  and  how  those  modules  should  be

モジュールと、それらのモジュールがどうそうあるべきであるかに壊されるべきです。

distributed between free standing machines, the operating system kernel,

無料の地位のマシン、オペレーティングシステムカーネルの間に分配されています。

and one or more user processes.  It is now time to  consider  the  other

そして、1人以上のユーザが処理します。 現在もうもう片方を考えるべき時間です。

half  of the efficiency question, which is what can be done to speed the

半分の効率(疾走するためにできることである)は質問されます。

execution of those programs that actually implement the protocols.    We

実際にプロトコルを実行するそれらのプログラムの実行。 私たち

will make some specific observations about TCP and IP, and then conclude

TCPとIPに関していくつかの特定の観測をして、次に、結論を下すでしょう。

with a few generalities.

いくつかの一般性で。

     IP  is a simple protocol, especially with respect to the processing

IPは特に処理に関する簡単なプロトコルです。

of  normal  packets,  so  it  should  be  easy  to  get  it  to  perform

したがって、正常なパケットでは、実行させるのは簡単であるはずです。

efficiently.    The only area of any complexity related to actual packet

効率的に。 実際のパケットに関連するどんな複雑さの唯一の領域

processing has to do with fragmentation and reassembly.  The  reader  is

処理は断片化と再アセンブリと関係があります。 読者はそうです。

referred  to  RFC  815,  titled "IP Datagram Reassembly Algorithms", for

「IPデータグラムReassemblyアルゴリズム」と題をつけられたRFC815は参照されます。

specific consideration of this point.

このポイントの特定の考慮。

     Most costs in the IP layer come from table look  up  functions,  as

IP層のほとんどのコストが機能でテーブル外観から来ます。

opposed to packet processing functions.  An outgoing packet requires two

パケット処理機能に反対されます。 出発しているパケットは2を必要とします。

translation  functions  to  be  performed.  The internet address must be

翻訳は、実行されるために機能します。 インターネットアドレスはそうであるに違いありません。

translated to a target gateway, and a gateway address must be translated

翻訳されて、目標ゲートウェイ、およびアドレスがそうしなければならないゲートウェイに移されてください。

to a local network number (if the host is  attached  to  more  than  one

                                   19

企業内情報通信網番号、(ホストは1つ19以上に付けられています。

network).    It  is easy to build a simple implementation of these table

ネットワーク) これらのテーブルの簡単な実現を組み込むのは簡単です。

look up functions that in fact performs very  poorly.    The  programmer

事実上、それが非常に不十分に実行する機能を見上げてください。 プログラマ

should  keep  in  mind  that  there may be as many as a thousand network

最大1,000ネットワークがあるかもしれないのを覚えておくべきです。

numbers in a typical configuration.   Linear  searching  of  a  thousand

典型的な構成の数。 1,000を直線的な探すこと

entry table on every packet is extremely unsuitable.  In fact, it may be

あらゆるパケットに関するエントリテーブルは非常に不適当です。 事実上、それはそうです。

worth  asking  TCP  to  cache  a  hint for each connection, which can be

各接続のためにヒントをキャッシュするようにTCPに頼む価値があるので、どれがあることができますか?

handed down to IP each time a packet  is  sent,  to  try  to  avoid  the

避けるトライにパケットを送るたびにIPまで手渡されます。

overhead of a table look up.

テーブルのオーバーヘッドは見上げます。

     TCP   is   a   more   complex  protocol,  and  presents  many  more

TCPは、より複雑なプロトコルであり、ずっと多くを提示します。

opportunities for getting things wrong.  There  is  one  area  which  is

ものを間違う機会。 そうする1つの領域があります。

generally  accepted  as  causing  noticeable and substantial overhead as

一般に、引き起こすとしてめぼしくて、頭上で実質的であると受け入れます。

part of TCP processing.  This is computation of the checksum.  It  would

TCP処理の一部。 これはチェックサムの計算です。 それはそうするでしょう。

be  nice  if this cost could be avoided somehow, but the idea of an end-

この費用を避けることができるなら良くいてください、どうにか終わりの考えだけ

to-end checksum is absolutely central to the functioning  of  TCP.    No

終わりまでのチェックサムはTCPの機能に絶対に主要です。 いいえ

host  implementor  should think of omitting the validation of a checksum

ホスト作成者は、チェックサムの合法化を省略することを考えるべきです。

on incoming data.

受信データに関して。

     Various clever tricks have been used to try to minimize the cost of

様々な賢明なトリックは費用を最小にするトライに使用されました。

computing the checksum.  If it is possible to add additional  microcoded

チェックサムを計算します。 加えるのが可能である、追加、microcoded

instructions  to the machine, a checksum instruction is the most obvious

マシンへの指示であり、チェックサム指示は最も明白です。

candidate.  Since computing the checksum involves picking up every  byte

候補。 チェックサムを計算するのが、あらゆるバイトを拾うことを伴うので

of the segment and examining it, it is possible to combine the operation

セグメントとそれを調べるのにおいて、操作を結合するのは可能です。

of computing the checksum with the operation of copying the segment from

セグメントをコピーする操作があるチェックサムを計算します。

one  location  to  another.   Since a number of data copies are probably

別のものへの1つの位置。 多くのデータコピーがたぶんそうであるので

already required as part of  the  processing  structure,  this  kind  of

処理構造の一部として既に必要であって、これほど親切です。

sharing might conceivably pay off if it didn't cause too much trouble to

                                   20

20に問題を起こし過ぎるというわけではないなら、共有は多分うまく行くでしょうに。

the  modularity  of  the  program.  Finally, computation of the checksum

プログラムのモジュール方式。 最終的にチェックサムの計算

seems to be one place where careful attention  to  the  details  of  the

慎重であるところの1つの場所であるように思える、詳細に関する注意

algorithm  used  can  make a drastic difference in the throughput of the

アルゴリズムはスループットの缶の造のa抜本的な差を使用しました。

program.  The Multics system provides one of the best  case  studies  of

プログラムを作ってください。 システムが最も良いケーススタディの1つを提供するMultics

this,  since  Multics  is  about  as  poorly  organized  to perform this

これMulticsがこれを実行するのが同じくらいおよそ不十分に組織化されて、

function as any machine implementing TCP.   Multics  is  a  36-bit  word

TCPを実行するどんなマシンとしての機能。 Multicsは36ビットの単語です。

machine,  with  four 9-bit bytes per word.  The eight-bit bytes of a TCP

4で、1単語あたりの9ビットのバイトを機械加工してください。 TCPの8ビットのバイト

segment are laid down packed in memory, ignoring word boundaries.   This

語境界を無視して、セグメントはメモリに詰まっていた状態で定められます。 これ

means  that  when it is necessary to pick up the data as a set of 16-bit

16ビットのセットとしてデータを受信するのが必要であるときに、それを意味します。

units for the purpose of adding  them  to  compute  checksums,  horrible

ものすごい状態でチェックサムを計算するためにそれらを加える目的のためのユニット

masking  and  shifting  is  required  for  each  16-bit value.  An early

マスキングと移行がそれぞれの16ビットの値に必要です。 早期

version of a program using this  strategy  required  6  milliseconds  to

戦略が6人のミリセカンドを必要としたプログラムがこれを使用するバージョン

checksum  a  576-byte  segment.    Obviously,  at  this  point, checksum

チェックサムのa576バイトのセグメント。 明らかと、ここ、チェックサム

computation was becoming the central bottleneck to throughput.   A  more

計算はスループットへの中央のボトルネックになっていました。 より多くのmore

careful  recoding of this algorithm reduced the checksum processing time

このアルゴリズムの慎重な再コード化はチェックサム処理時間を短縮しました。

to less than one millisecond.  The strategy used  was  extremely  dirty.

1ミリセカンド未満に。 使用される戦略は非常に汚かったです。

It  involved adding up carefully selected words of the area in which the

それは、中の領域の慎重に選択された単語にどれを追加するかを伴いました。

data lay, knowing that for those particular  words,  the  16-bit  values

それらの特定の単語、16ビットの値でそれを知っていて、データがありました。

were  properly  aligned  inside  the words.  Only after the addition had

単語で適切に並べられました。 後だけに、添加はそうしました。

been done were the various sums shifted, and finally  added  to  produce

しているのが、生産する移行して、最終的に加えられた様々な合計であったということです。

the  eventual  checksum.  This kind of highly specialized programming is

最後のチェックサム。 この種類の非常に専門化しているプログラミングはそうです。

probably not acceptable if used everywhere within an  operating  system.

たぶん許容できませんが、いたる所では、オペレーティングシステムの中で使用されています。

It is clearly appropriate for one highly localized function which can be

それは明確に適切な個人的には非常に局所化されたそうすることができる機能です。

clearly identified as an extreme performance bottleneck.

極端な性能のネックとして明確に特定されています。

     Another area of TCP processing which may cause performance problems

性能問題を引き起こすかもしれないTCP処理の別の領域

is the overhead of examining all of the possible flags and options which

                                   21

可能な旗とオプションのすべてを調べるオーバーヘッドはどの21ですか?

occur in each incoming packet.  One paper, by Bunch and Day [2], asserts

それぞれの入って来るパケットに起こってください。 紙がBunchとデー[2]で断言する1

that  the  overhead of packet header processing is actually an important

パケットのヘッダー処理のオーバーヘッドが実際にそうである、重要

limiting  factor  in  throughput  computation.    Not  all   measurement

スループット計算の要素を制限します。 すべての測定でない

experiments  have  tended to support this result.  To whatever extent it

実験は、この結果を支持する傾向がありました。 いかなる範囲、もそれ

is true, however, there is an obvious  strategy  which  the  implementor

しかしながら、本当に、明白な戦略があるということである、どれ、作成者

ought  to  use in designing his program.  He should build his program to

彼のプログラムを設計する際に使用するべきです。 彼はプログラムを組立てるべきです。

optimize the expected case.  It is easy, especially when first designing

予想されたケースを最適化してください。 特に最初に設計するとき、それは簡単です。

a program, to pay equal attention to all of  the  possible  outcomes  of

aは可能な結果のすべてに関する有料の等しい注意にプログラムを作ります。

every test.  In practice, however, few of these will ever happen.  A TCP

あらゆるテスト。 しかしながら、実際には、これらのわずかしか起こらないでしょう。 TCP

should  be  built  on the assumption that the next packet to arrive will

到着する次のパケットがそうするという前提で建てられるべきです。

have absolutely nothing special about it,  and  will  be  the  next  one

それに関して特別なものは何も絶対に持たないでください、そして、次のものでしょう。

expected  in  the  sequence  space.   One or two tests are sufficient to

系列スペースでは、予想されます。 テストが十分である1か2

determine that the expected set of control flags are on.  (The ACK  flag

予想されたセットの指揮旗がオンであることを決定してください。 (ACKは弛みます。

should be on; the Push flag may or may not be on.  No other flags should

オンであるべきです。 Push旗はオンであるかもしれません。 他のどんな旗もそうするべきではありません。

be on.)  One test is sufficient to determine that the sequence number of

オンであってください。) 1つのテストがそれを決定できるくらいの一連番号

the  incoming  packet  is  one  greater  than  the  last sequence number

入って来るパケットは最後の一連番号よりすばらしい1つです。

received.  In almost every case, that will be the actual result.  Again,

受け取られている。 ほとんどすべての場合、それは実際の結果になるでしょう。 再び

using the Multics system as an example, failure to optimize the case  of

例、ケースを最適化する失敗としてMulticsシステムを使用します。

receiving  the  expected  sequence number had a detectable effect on the

予想された一連番号を受けると、検出可能な影響はオンに与えられました。

performance of the system.  The particular problem arose when  a  number

システムの性能。 数であるときに、特定の問題は起こりました。

of  packets  arrived  at  once.    TCP attempted to process all of these

パケットはすぐに、到着しました。 TCPは、これらをすべて、処理するのを試みました。

packets before awaking the user.  As a result,  by  the  time  the  last

ユーザを起こす前のパケット。 最終までに結果として

packet  arrived,  there was a threaded list of packets which had several

パケットは到着して、数個を持っていたパケットの糸を通されたリストがありました。

items on it.  When a new packet arrived, the list was searched  to  find

それの項目。 新しいパケットが到着したとき、リストは掘り出し物として捜されました。

the  location  into which the packet should be inserted.  Obviously, the

パケットが挿入されるべきである位置。 明らかに

list should be searched from highest sequence number to lowest  sequence

                                   22

リストは最も高い一連番号から最も低い系列22まで捜されるべきです。

number,  because  one is expecting to receive a packet which comes after

来るパケットを受けた後のために1つがおめでたの予定であることでの数

those already received.  By mistake, the list was searched from front to

ものは既に受信されました。 リストから前で間違って、探されました。

back, starting with the packets with the lowest sequence  number.    The

最も低い一連番号があるパケットをきっかけに、戻ります。 The

amount of time spent searching this list backwards was easily detectable

後方にこのリストを捜しながら費やされた時間は容易に検出可能でした。

in the metering measurements.

計量測定値で。

     Other data structures can be organized to optimize the action which

他のデータ構造が動作を最適化するのを組織化できる、どれ

is  normally  taken  on  them.  For example, the retransmission queue is

通常、それらの上で取ります。 例えば、再送キューはそうです。

very seldom actually used  for  retransmission,  so  it  should  not  be

したがって、実際に「再-トランスミッション」において非常にめったに使用されていなくて、それはそうであるべきではありません。

organized  to  optimize that action.  In fact, it should be organized to

その動作を最適化するのが組織化されます。 事実上、それは組織化されるべきです。

optimized the discarding of things  from  it  when  the  acknowledgement

承認であるときに、それからものを捨てることを最適化します。

arrives.    In many cases, the easiest way to do this is not to save the

到着します。 多くの場合、これをする最も簡単な方法は節約しないことです。

packet  at  all,  but  to  reconstruct  it  only  if  it  needs  to   be

全くパケット、しかし、必要がある場合にだけそれを再建するには、いてください。

retransmitted,  starting  from the data as it was originally buffered by

それが元々バッファリングされたときデータから始めて、再送されます。

the user.

ユーザ。

     There is another generality, at least as  important  as  optimizing

最適化するのと少なくとも同じくらい重要な別の一般性があります。

the  common  case,  which  is  to avoid copying data any more times than

それ以上の回データをコピーするのを避けることであるよくある例

necessary.  One more result from the Multics TCP may prove  enlightening

必要。 Multics TCPからのもうひとつの結果が啓蒙的であると判明するかもしれません。

here.    Multics takes between two and three milliseconds within the TCP

ここ。 MulticsはTCPの中で2〜3ミリセカンドと同じくらい取ります。

layer to process an incoming packet, depending on its size.  For a  576-

サイズによって、層にして、入って来るパケットを処理してください。 576のために

byte packet, the three milliseconds is used up approximately as follows.

バイトパケット、3人のミリセカンドは以下の通りほとんど使いきられます。

One   millisecond   is   used  computing  the  checksum.    Six  hundred

1人のミリセカンドはチェックサムを計算するのにおいて使用されています。 600

microseconds is spent copying the data.  (The data is copied  twice,  at

マイクロセカンドはデータをコピーするのに費やされます。 (データは二度コピーされます。

.3  milliseconds  a copy.)  One of those copy operations could correctly

1コピーあたり.3ミリセカンド。) それらのコピー操作の1つは正しくそうすることができました。

be included as part of the checksum cost, since it is done  to  get  the

チェックサム費用の一部として、得るためにそれをするので、含められてください。

data  on  a  known  word  boundary  to  optimize the checksum algorithm.

                                   23

チェックサムアルゴリズムを最適化する知られている語境界に関するデータ。 23

However,  the  copy also performs another necessary transfer at the same

しかしながら、また、コピーは同じくらいで別の必要な転送を実行します。

time.  Header processing and packet resequencing takes .7  milliseconds.

時間。 ヘッダー処理とパケット再配列は.7ミリセカンドと同じくらい取ります。

The  rest  of  the  time  is  used  in miscellaneous processing, such as

現代の残りは種々雑多な処理に使用されます。

removing packets from the retransmission queue which are acknowledged by

「再-トランスミッション」からのパケットが承認されるものを列に並ばせる取り外し

this packet.  Data copying is the second most expensive single operation

このパケット。 データコピーは2番目に高価なただ一つの操作です。

after data checksuming.   Some  implementations,  often  because  of  an

データの後にchecksumingしています。 しばしばいくつかの実現

excessively  layered  modularity, end up copying the data around a great

過度に層にされたモジュール方式、大物の周りにデータをコピーすることへの終わり

deal.  Other implementations end up copying the data because there is no

取扱います。 いいえがあるのでデータをコピーすることへの他の実現終わり

shared memory between processes, and the data must be moved from process

間の共有メモリは処理されます、そして、過程からデータを動かさなければなりません。

to process via a kernel operation.  Unless the amount of  this  activity

カーネル操作で処理するために。 この活動の量

is  kept  strictly  under  control,  it  will  quickly  become the major

厳密にコントロールの下で保たれて、急速に少佐になるということです。

performance bottleneck.

性能のネック。

     7.  Conclusions

7. 結論

     This document has addressed two aspects  of  obtaining  performance

このドキュメントは性能を得る2つの局面を記述しました。

from a protocol implementation, the way in which the protocol is layered

プロトコル実現、プロトコルが層にされる方法から

and  integrated  into  the  operating  system,  and the way in which the

オペレーティングシステム、および入口とどれを統合するか。

detailed handling of the packet is optimized.  It would be nice  if  one

パケットの詳細な取り扱いは最適化されています。 1であるなら良いでしょう。

or  the  other  of these costs would completely dominate, so that all of

または、これらのコストのもう片方が完全に支配されて、そうがそれである、すべて

one's attention could be concentrated there.  Regrettably, this  is  not

人の注意をそこに集結できました。 残念なことに、これはそうではありません。

so.    Depending  on  the particular sort of traffic one is getting, for

そのように。 交通1の特定の種類に依存するのは、得ることです。

example, whether Telnet one-byte packets or file transfer  maximum  size

Telnetの1バイトのパケットかファイル転送最大サイズであることの例

packets  at  maximum  speed, one can expect to see one or the other cost

最大におけるパケットは疾走して、人は、1かもう片方の費用を見ると予想できます。

being the major bottleneck to throughput.  Most  implementors  who  have

スループットへの主要なボトルネックです。 そうしたほとんどの作成者

studied  their  programs  in  an  attempt to find out where the time was

研究されて、どこから時間を見つけるか試みにおける彼らのプログラムがありました。

going have reached  the  unsatisfactory  conclusion  that  it  is  going

                                   24

行くのはそれが現在の24であるという不満足な結果に達しました。

equally  to  all parts of their program.  With the possible exception of

等しく、彼らのプログラムをすべてに離れさせます。 可能な例外

checksum  processing,  very  few  people  have  ever  found  that  their

チェックサムの処理していて、ほんのわずかな人々が今までにそれを見つけたことがある、彼ら

performance  problems  were  due  to a single, horrible bottleneck which

性能問題はaに単一の、そして、ものすごい支払われるべきものがどれを妨害するかということでした。

they could fix by a single stroke of inventive programming.  Rather, the

彼らは発明的なプログラミングの1つのストロークで修理するかもしれません。 むしろ

performance was something which was improved by  painstaking  tuning  of

性能は勤勉な調律で改良された何かでした。

the entire program.

全体のプログラム。

     Most  discussions  of protocols begin by introducing the concept of

プロトコルの議論が概念を紹介することによって始まる大部分

layering, which tends  to  suggest  that  layering  is  a  fundamentally

レイヤリング。(そのレイヤリングはレイヤリングが基本的にaであると示唆する傾向があります)。

wonderful  idea  which  should  be  a  part  of  every  consideration of

あらゆる考慮の一部であるべきである素晴らしい考え

protocols.  In fact, layering is a mixed blessing.    Clearly,  a  layer

プロトコル。 事実上、レイヤリングはありがたいようなありがたくないようなことです。 明確に層

interface  is  necessary  whenever  more than one client of a particular

事項のあるクライアントより多くであるときはいつも、インタフェースが必要です。

layer is to be allowed to use  that  same  layer.    But  an  interface,

層はその同じ層を使用するのが許容されることです。 インタフェース

precisely  because  it  is fixed, inevitably leads to a lack of complete

まさにそれが固定されているので、必然的に、先導がaに欠けている、完全

understanding as to what one layer wishes to obtain from another.   This

1つの層が別のものから得たがっているものに関して、分かります。 これ

has to lead to inefficiency.  Furthermore, layering is a potential snare

非能率に通じるように、持っています。 その上、レイヤリングは潜在的罠です。

in  that  one  is  tempted  to think that a layer boundary, which was an

1つがそのa層の境界を考えるように誘惑されるので、どれがあったか。

artifact of the specification procedure, is in fact the proper  boundary

事実上、仕様手順の人工物は適切な境界です。

to  use in modularizing the implementation.  Again, in certain cases, an

モジュール化に実現を使用するために。 再びコネあるケース

architected layer must correspond to an implemented layer, precisely  so

したがって、architected層は正確に実行された層に対応しなければなりません。

that  several  clients  can  have  access  to that layer in a reasonably

数人のクライアントがaで合理的にその層に近づく手段を持つことができます。

straightforward manner.  In other cases, cunning  rearrangement  of  the

正直な態度。 他のケース、ずるい配列換え

implemented  module  boundaries to match with various functions, such as

様々な機能に合うようにモジュール限界を実行しました。

the demultiplexing of incoming packets, or the sending  of  asynchronous

入って来るパケットの逆多重化、または非同期の発信

outgoing  packets,  can  lead  to  unexpected  performance  improvements

出発しているパケット、予期していなかった性能改良への缶のリード

compared to more traditional implementation strategies.   Finally,  good

より伝統的な実現戦略と比較されます。 ,

performance is something which is difficult to retrofit onto an existing

                                   25

性能は既存の25に改装するのが何か難しいものです。

program.   Since performance is influenced, not just by the fine detail,

プログラムを作ってください。 以来、性能は詳しくない詳細だけによって影響を及ぼされます。

but by the gross structure, it is sometimes the case that  in  order  to

しかし、時々それが総計の構造のそばでは、ケースである、それ

obtain  a  substantial  performance  improvement,  it  is  necessary  to

かなりの性能改良を得てください、そして、それが必要です。

completely redo the program from  the  bottom  up.    This  is  a  great

下からプログラムを完全に手直ししてください。 これは大物です。

disappointment   to  programmers,  especially  those  doing  a  protocol

プログラマ、特にプロトコルをするものにおける失望

implementation for  the  first  time.    Programmers  who  are  somewhat

初めての実現。 いくらかそうであるプログラマ

inexperienced  and  unfamiliar with protocols are sufficiently concerned

関係があるので、プロトコルに未経験であって、なじみがないのは、十分、そうです。

with getting their program logically correct that they do not  have  the

彼らのそうしないのが論理的に正しいプログラムにはある得ること

capacity  to  think  at  the  same  time  about  the  performance of the

性能が同時に考える容量

structure they are building.  Only after they have achieved a  logically

彼らが建設している構造。 後だけに、彼らはaを論理的に達成しました。

correct  program  do they discover that they have done so in a way which

正しいプログラム、彼らは、彼らがそう方法でどれをしたかと発見します。

has precluded real performance.  Clearly, it is more difficult to design

本当の性能を排除しました。 明確に、それは設計するのが難しいです。

a program thinking from the start about  both  logical  correctness  and

そしてともに論理的な正当性に関する始めからのaプログラムの思い。

performance.  With time, as implementors as a group learn more about the

性能。 グループが以上を学ぶような作成者としての時間

appropriate  structures  to  use  for  building  protocols,  it  will be

ビルプロトコルに使用する構造を当ててください、そして、それはあるでしょう。

possible  to  proceed  with  an  implementation  project   having   more

以上を持っている実現プロジェクトを続けるのにおいて、可能です。

confidence  that  the structure is rational, that the program will work,

構造が合理的であり、プログラムが動作するという信用

and that the program will work well.    Those  of  us  now  implementing

そして、プログラムはうまくいくでしょう。 私たちが現在実行するもの

protocols  have the privilege of being on the forefront of this learning

プロトコルには、この学習の最先端にある特権があります。

process.  It should be no surprise that our  programs  sometimes  suffer

処理してください。 私たちのプログラムに時々苦しむのは、驚きであるべきではありません。

from the uncertainty we bring to bear on them.

                                   26

私たちがそれらの上へ生かす不確実性から。 26

Citations

引用

     [1]  Cohen  and  Postel,  "On  Protocol  Multiplexing",  Sixth Data

[1] 6番目の「プロトコルマルチプレクシング」のコーエンとポステル、データ

Communications Symposium, ACM/IEEE, November 1979.

コミュニケーションシンポジウム、ACM/IEEE、1979年11月。

     [2] Bunch and Day, "Control Structure Overhead in TCP", Trends  and

そして[2] 「TCPの制御構造オーバーヘッド」という房と日が傾く。

Applications:  Computer Networking, NBS Symposium, May 1980.

アプリケーション: コンピュータのネットワーク化(NBSシンポジウム)は1980がそうするかもしれません。

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

$secure_dirクラス変数 セキュアであるとみなすファイルを格納するディレクトリ

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る