📄 rfc684.txt
字号:
Network Working GroupRFC #684NIC #32252April 15,1975 A Commentary on Procedure Calling as a Network Protocol Richard Schantz BBN-TENEXPreface_______This RFC is being issued as a first step in an attempt to stimulatea dialog on some issues in designing a distributed computing system.In particular, it considers the approach taken in a design set forthin RFC #674, commonly known as the "Procedure Call Protocol" (PCP).In the present document, the concentration is on what we believe tobe the shortcomings of such a design approach.Note at the outset that this is not the first time we are providinga critical commentary on PCP. During the earlier PCP design stages,we met with the PCP designers for a brief period, and suggestedseveral changes, many of which became part of PCP Version 2. Wehasten to add, however, that the nature of those suggestions stemfrom an entirely different point of view than those presented here.Our original suggestions, and also some subsequent ones, were mainlyaddressing details of implementation. In this note the concern ismore with the concepts underlying the PCP design than with the PCPimplementation.This note is being distributed because we feel that it raisescertain issues which have not been adequately addressed yet. ThePCP designers are to be congratulated for providing a detailedwritten description of their ideas, thereby creating a naturalstarting point for a discussion of distributed system designconcepts. It is the intent of this note to stimulate an interactionamong individuals involved with distributed computing, which couldperhaps result in systems whose designs don't preclude their use inprojects other than the one for which they were originallyconceived.The ideas expressed in this RFC have benefited from numerousdiscussions with Bob Thomas, BBN-TENEX, who shares the point of viewtaken. A COMMENTARY on PROCEDURE CALLING Page 2Introduction____________ While the Procedure Call Protocol (PCP) and its use within theNational Software Works (NSW) context attacks many of the problemsassociated with integrating independent computing systems to handlea distributed computation, it is our feeling that its designcontains flaws which should prevent its widespread use, and in ourview, limit its overall utility. We are not voicing our objectionto the use of PCP, in its current definition, as the base levelimplementation vehicle for the NSW project. It is already too latefor any such objection, and PCP may, in fact, be very effective forthe NSW implementation, since they are proceeding in parallel andhave probably influenced each other. Rather, we are voicing anobjection to the "PCP philosophy", in the hope of preventing thistype of protocol from becoming the de-facto network standard fordistributed computation, and in the hope of influencing the futuredirection of this and similar efforts. Some of the objectionable aspects of PCP, it can be argued, aredifferences of individual preference, and philosophers have oftenindicated that you cannot argue about tastes. We have tried toavoid such arguments in this document. Rather, we consider PCP inlight of our experience in developing distributed systems.Considered in this way, we feel that PCP and its underlyingphilosophy have flaws which make it inappropriate as a generalpurpose protocol and virtual programming system for the constructionof distributed software systems. It is our opinion that PCP isprobably complete in the sense that one can probably do anythingthat is required using its primitives. A key issue then, is notwhether this function or that function can be supported. Rather, tous an important question is how easy it is to do the things whichexperience has indicated are important to distributed computing. Inaddition, a programming discipline dedicated to network applicationsshould pay particular attention to coercing its users away fromactions which systems programming in general and network programmingin particular have shown to be pitfalls in system implementation.A Point of View_ _____ __ ____ At the outset, we fully support the aspects of the PCP designeffort that have gone into systematizing the interaction andagreements between distributed elements to support inter-machinecomputing. This includes the definition of the various types ofreplies, the standardization of the data structure format forinter-machine exchange, and the process creation primitives whichextend the machine boundaries. Such notions are basic and must bepart of any distributed system definition. Our main concern is notwith these efforts. A COMMENTARY on PROCEDURE CALLING Page 3 Rather, we take exception to PCP's underlying premise: that theprocedure calling discipline is the starting point for buildingmulti-computer systems. This premise leads to a model which has acentral point for the entire algorithm control, rather than a morenatural (in network situations) distributed control accomplished bycooperating independent entities interacting through commoncommunication paths. While the procedure call may be an appropriatebasis for certain applications, we believe that it can neitherdirectly nor accurately model the interactions and controlstructures that occur in many distributed multi-computer systems. Much of what follows may seem to be a pedagogic argument, andPCP supporters may take the position of "who cares what you call it,its doing the same thing". Our reply is that it is very importantto achieve a clear and concise model of distributed computation, andwhile the PCP model does not require "poor implementation" ofdistributed systems, neither does it make "good implementation" anyeasier, nor does it prohibit ill-advised programming practices. Amodel stressing the dynamic interconnection of somewhat independentcomputing entities, we feel, adheres more to the notions ofdefensive programming, which we have found to be fundamental tobuilding usable multi-machine implementations. The rest of this RFC discusses what we feel to be some of theshortcomings of a procedure call protocol.Limitations of Procedure Calling Across Machines___________ __ _________ _______ ______ ________ First and foremost, it is our contention that procedure callingshould not be the basis for multi-machine interactions. We feelthat a request and reply protocol along with suitably manipulatedcommunication paths between processes forms a model better suited tothe situation in which the network places us. In a networkenvironment one has autonomous computing entities which have agreedon their cooperation, rather than a master process forcing executionof a certain body of code to fulfill its computing needs. In such aconfiguration, actions required of a process are best accommodatedindirectly (by request) rather than directly (by procedure call), inorder to maintain the integrity of the constituent processes. Procedure calling is most often a very primitive operationwhose implementation often requires only a single machineinstruction. In addition, it is usually true that procedure callingis usually not within the domain of the operating system. [TheMultics intersegment procedure calling mechanism may present anexception to this, until linkage is complete. In the remote PCPcase, however, linkage can never be complete in the sense ofsupporting a fast transfer of control between modules]. Processesand communication paths between processes, however, are undeniablyoperating system constructs. In an environment where localprocedure calling was "cheap", it would be ill-advised to blur the A COMMENTARY on PROCEDURE CALLING Page 4distinction between a local (inexpensive in time and effort) and aremote procedure call, which obviously requires a great deal ofeffort by the "PCP system", if not by the PCP user. It also seemsto be the case that the cost of blurring the local/remotedistinction at the procedure call level will be found in the morefrequent use of a less efficient local procedure calling mechanism.Interprocess communication, on the other hand, (at least with regardto stream or message oriented channels and not just interruptsignals) is generally regarded as having a significant costassociated with it. Message sending is always an interprocessaction, and requires system intervention always. There is not assubstantial a difference between the IPC of local processes and theIPC of remote processes, as between local and remote procedurecalling. PCP is suggestive of a model in which processes exist thatspan machine boundaries to provide inter-machine subroutine calling.Yet the PCP documentation has not advocated the notion of a processthat spans machine boundaries, and rightfully so since such acreation would cause innumerable problems. Since procedure callingis more suitable as an intra-process notion, it seems to be a betteridea to take the interprocess communication framework and extend itto have a uniform interpretation locally and remotely, rather thanto extend the procedure calling model. It is also our contentionthat a model which relies on procedure calling for its basis doesnot take into account the special nature of the network environment,and that such an environment can be more suitably handled in amessage passing model. Furthermore, we feel that programming as awhole, even purely local computing, will benefit from paying moreattention to such areas as reliability and robustness, which havebeen brought to the forefront through experience with an oftentimesunreliable network and collection of hosts. An IPC model, byemphasizing the connections between disjoint processes, seems to
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -