分享
 
 
 

RFC636 - TIP/Tenex reliability improvements

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

NWG/RFC# 636 JDB BPC RST DCW3 MLK 23-OCT-75 22:27 30490

TIP/TENEX Reliability Improvements

RFC636 J. Burchfiel - BBN-TENEX

B. Cosell - BBN-NET

NIC 30490 R. Tomlinson - BBN-TENEX

D. Walden - BBN-NET

10 June 1974

TIP/TENEX Reliability Improvements

During the past months we have felt strong pressure to improve the

reliability of TIP/TENEX network connection as improvement in the

reliability of users' connections between TENEXs and TIPs would have

major impact on the appearance of overall network reliability due to the

large number and high visibility of TENEXs and TIPs. Despite the

emphasis on TIP/TENEX interaction, all work done applies equally well to

interactions between Hosts of any type.

The remainder of this RFCgives a sketch of our plan for improving the

reliability of connections bettween TIPs and TENEXs. Major portions of

this plan have already been implemented (TIP version 322; TENEX version

1.32) and are now undergoing final test prior to release throughout the

network. Completion of the implementation of the plan is eXPected in

the next quarter.

Our plan for improving the reliability of TIP/TENEX connections is

concerned with oBTaining and maintaining TIP/TENEX connections,

gracefully recovering from lost connections, and providing clear

messages to the user whenever the state of his connection changes.

When a TIP user attempts to open a connection to any Host, the Host may

be down. In this case it would be helpful to provide the user with

information about the extent of the Host's unavailability. To facilitate

this, we modified the IMP program to accept and utilize information from

a Host about when the Host will be back up and for what reason it is

down. TENEX is to be modified to supply sUCh information before it goes

down, or through manual means, after it has gone down. When the TIP

user then attempts to connect to the down TENEX, the IMP local to the

TENEX returns the information about why and for how long TENEX will be

down. The TIP is to be modified to report this sort of information to

the user; e.g., "Host unavailable because of hardware maintenance --

expected available Tuesday at 16:30 GMT".

The TIP's logger is presently not reentrant. Thus, no single TIP user

can be allowed to tie up the logger for too long at a time; and the TIP

NWG/RFC# 636 JDB BPC RST DCW3 MLK 23-OCT-75 22:27 30490

TIP/TENEX Reliability Improvements

therefore enforces a timeout of arbitrary length (about 60 seconds) on

logger use. However, a heavily loaded Host cannot be guaranteed always

to respond within 60 seconds to a TIP login request, and at present TIP

users sometimes cannot get connected to a heavily loaded TENEX. To

correct this problem, the TIP logger will be made reentrant and the

timeout on logger use will be eliminated.

One notorious soft spot in the Host/Host protocol which degrades the

reliability of connections is the Host/Host protocol incremental

allocate mechanism. Low frequency software bugs, intermittant hardware

bugs, etc., can lead to the incremental allocates associated with a

connection getting out of synchronization. When this happens it usually

appears to the user as if the connection just "hung up". A slight

addiition to the Host/Host protocol to allow connection allocates to be

resynchronized has been designed and implemented for both the TIP and

TENEX.

TENEX has a number of internal consistency checks (called "bughalts")

which occasionally cause TENEX to halt. Frequently, after diagnosis by

system personnel, TENEX can be made to proceed without loss from the

viewpoint of local users. A mechanism is being provided which allows

TENEX to proceed in this case from the point of view of TIP users of

TENEX.

The appropriate mechanism entails the following: TENEX will not drop

its ready line during a bughalt (from which TENEX can usually proceed

successfully), nor will it clear its NCP tables and abort all

connections. Instead, after a bughalt TENEX will: discard the message

it is currently receiving, as the IMP has returned an Incomplete

Transmission to the source for this message; reinitialize the interface

to the IMP; and resynchronize, on all connections possible, Host/Host

protocol allocate inconsistencies due to lost messages, RFNMs etc. The

latter is done with the same mechanism described above. This procedure

is not guaranteed to save all data -- a tiny bit may be lost -- but this

is of secondary importance to maintaining the connection over the TENEX

bughalt.

The TIP user must be kept fully informed as TENEX halts and then

continues. Therefore, the TIP has been modified to report "Host not

responding -- connection suspended" when it senses that TENEX has halted

(it does this by properly interpreting messages returned by the

destination IMP). When TENEX resumes service after proceeding from a

bughalt, the above procedure notifies the TIP that service is restored,

and the TIP has been modified to report "Service resumed" to all users

of that Host.

On the other hand, the service interruption may not be proceedable and

1

NWG/RFC# 636 JDB BPC RST DCW3 MLK 23-OCT-75 22:27 30490

TIP/TENEX Reliability Improvements

TENEX may have to do a total system reload and restart. In this case

TENEX will clear its NCP connection tables and send a Host/Host protocol

reset command to all other Hosts. On receiving this reset command, the

TIP will report "Host reset -- connection closed" to all users of that

Host with suspended connections. The TIP user can then re-login to the

TENEX or to some other Host.

Of couse, the user may not have the patience to wait for service to

resume after a TENEX bughalt. Instead, he may unilaterally choose to

connect to some other Host, ignoring the previously suspended

connection. If TENEX is then able to proceed, its NCP will still think

its connection to the TIP is good and suitable for use. Thus, we have a

connection which the TIP thinks is closed and TENEX thinks is open, a

phenomenon known as the "half-closed connection". An automatic

procedure for cleanly completing the closing of such a connection has

been specified and implemented for the TIP and TENEX.

Since TENEX will maintain connections across service interruptions, the

TIP user will be required to take the security procedure telling the TIP

to "forget" his suspended connection before abandoning his terminal.

The command @H 0 (for example) will guarantee that his connection will

not be reestablished on resumpption of service. Otherwise, his job

would be left at the mercy of anyone who acquires that terminal.

An appendix follows which describes the Host/Host protocol changes made.

These changes are backward compatible (with the exception that Hosts

which have not implemented these changes will sometimes receive

unrecognizable Host/Host protocol commands which they presumably discard

without suffering harm). These protocol changes are ad hoc in nature

but in light of their backward compatibility and potential utility, ARPA

okayed their addition to the TIP and TENEX NCPs without (we believe) any

implication that other Hosts have to implement them (although we would

encourage their widespread implementation).

2

NWG/RFC# 636 JDB BPC RST DCW3 MLK 23-OCT-75 22:27 30490

TIP/TENEX Reliability Improvements

Appendix - Ad Hoc Change to Host-Host Protocol

A.1 Introduction

The current Host-Host protocol (NIC #8246) contains no provisions

for resynchronizing the status information kept at the two ends of

each connection. In particular, if either host suffers a service

interruption, or if a control message is lost or corrupted in an

interface or in the subnet, the status information at the two ends

of the connection will be inconsistent.

Since the current protocol provides no way to correct this

condition, the NCPs at the two ends stay "confused" forever. An

occasional frustrating symptom of this effect is the "lost

allocate" phenomenon, where the receiving NCP believes that it has

bit and message allocations outstanding, while the sending NCP

believes that it does not have any allocation. As a result,

information flow over that connection can never be restarted.

Use of the Host-Host RST (reset) command is inappropriate here, as

it destroys all connections between the two hosts. What is needed

is a way to resynchronize only the affected connection without

disturbing any others.

A second troublesome symptom of inconsistency in status

information is the "half-closed" connection: after a service

interruption or network partitioning, one NCP may believe that a

connection is still open, while the other believes that the

connection is closed (does not exist). When such an inconsistency

is discovered, the "open" end of the connection should be closed.

A.2 The RAR, RAS and RAP commands

To achieve resynchronization of allocation, we add the following

three commands to the host-host protocol.

8 bits 8 bits

-------------------

! ! !

16 ! RAR ! link !

! ! !

-------------------

Reset Allocation by Receiver

8 bits 8 bits

-------------------

! ! !

3

NWG/RFC# 636 JDB BPC RST DCW3 MLK 23-OCT-75 22:27 30490

TIP/TENEX Reliability Improvements

17 ! RAS ! link !

! ! !

-------------------

Reset Allocation by Sender

8 bits 8 bits

-------------------

! ! !

20 ! RAP ! link !

! ! !

-------------------

Reset Allocation Please

The RAS command is sent from the Host sending on "link" to the

Host receiving on "link". This command may be sent whenever the

sending Host desires to resynch the status information associated

with the connection (and doesn't have a message in transit through

the network). Some circumstances in which the sending Host may

choose to do this are:

1) After a timeout when there is traffic to move but no

allocation (assumes that an allocation has been lost);

2) When an inconsistent event occurs associated with that

connection (e.g. an outstanding allocation in excess of 2^32

bits or 2^16 messages);

3) After the sending host has suffered an interruption of

network service;

4) In response to a RAP (see below).

The RAR command is sent from the Host receiving on "link" to the

Host sending on "link" in response to an RAS. It marks the

completion of the connection resynchronization. When the RAR is

returned the connection is in the known state of having no

messages in transit in either direction and the allocations are

zero. The receiving Host may then start afresh with a new

allocation and normal message transmission can proceed. Since the

RAR may be sent ONLY in response to an RAS, there are no races in

the resynchronization. All of the initiative lies with the

sending Host.

If the receiving Host detects an anomalous situation, however,

there is no way to inform the sending Host that a

resynchronization is desirable. For this purpose, the RAP command

is provided. It constitutes a "suggestion" on the part of the

4

NWG/RFC# 636 JDB BPC RST DCW3 MLK 23-OCT-75 22:27 30490

TIP/TENEX Reliability Improvements

receiving Host that the sending Host resynchronize; the sending

Host is free to honor it or not as it sees fit. Since there is no

obligatory response to a RAP, the receiving Host may send them as

frequently as it chooses and no harm can occur. For example, if a

message in excess of the allocate arrives, the receiving Host

might send RAPs every few seconds until the sending Host replies

with no fears of races if one or more RAPs pass a RAS in the

network.

A.3 Resynchronization Procedure

The resynchronization sequence below may be initiated only by the

sender either for internally generated reasons or upon the receipt

of a RAP.

a) Sender - decision to resynch

1) Set state to "Wait-for-RAR" (Defer transmission of

message.)

2) Wait until no RFNM outstanding

3) Send RAS

4) Zero allocation

5) Ignore allocates until RAR received

6) Set state to "Open" (Resume normal message transmission

subject to flow control.)

b) Receiver - receipt of RAS

1) Send RAR

2) Zero allocation

3) Send a new allocation

When the sender is in the "Wait-for-RAR" state it is not permitted

to send new regular messages. (Note that steps 4 and 5 will

insure this in the normal course of events.) With the return of

the RAR the pipeline contains no messages and no allocates, the

outstanding allocation variables at both ends are forced into

agreement by setting them both to zero. The receiver will then

reconsider bit and message allocation, and send an ALL command for

any allocation it cares to do.

A.4 The Problem of Half-closed Connections

The above procedures provide a way to resynchronize a connection

after a brief lapse by a communications component, which results

in lost messages or allocates for an open connection.

5

NWG/RFC# 636 JDB BPC RST DCW3 MLK 23-OCT-75 22:27 30490

TIP/TENEX Reliability Improvements

A longer and more severe interruption of communication may result

from a partitioning of the subnet or from a service interruption

on one of the communicating hosts. It is undesirable to tie up

resources indefinitely under such circumstances, so the user is

provided with the option of freeing up these resources (including

himself) by unilaterally dissolving the connection. Here

"unilaterally" means sending the CLS command and closing the

connection without receiving the CLS acknowledgement. Note that

this is legal only if the subnet indicates that the destination is

dead.

When service is restored ater such an interruption, the status

information at the two ends of the connection is out of

synchronization. One end believes that the connection is open,

and may proceed to use the connection. The disconnecting end

believes that the connection is closed (does not exist), and may

proceed to re-initialize communication by opening a new connection

(RTS or STR command) using the same socket pair or same link.

The resynchronization needed here is to properly close the open

end of the connection when the inconsistency is detected. We will

accomplish this by specifying consistency checks and adding a new

pair of commands.

A.5 The NXS and NXR Commands

The "missing CLS" situation described above can manifest itself in

two ways. The first way involves action taken by the NCP at the

"open" end of the connection. It may continue to send regular

messages on the link of the half-closed connection, or control

messages referencing its link. The closed end should respond with

an NXS if the message referred to a non-existent transmit link

(e.g. was an ALL) or NXR if the message referred to a non-existent

receive link (e.g. a data message). On receipt of such an NXS or

NXR message, the NCP at the "open" end should close the connection

by modifying its tables (without sending any CLS command) thereby

bringing both ends into agreement.

8 bits 8 bits

-------------------

! ! !

21 ! NXR ! link !

! ! !

-------------------

Non-existent Receive Link

8 bits 8 bits

6

NWG/RFC# 636 JDB BPC RST DCW3 MLK 23-OCT-75 22:27 30490

TIP/TENEX Reliability Improvements

-------------------

! ! !

22 ! NXS ! link !

! ! !

-------------------

Non-existent Send Link

A.6 Consistency Checks

A second way this inconsistency can show up involves actions

initiated by the NCP at the "closed" end. It may (thinking the

connection is closed) send an STR or RTS to reopen the connection.

The NCP at the "open" end should detect the inconsistency when it

receives such an RTS or STR command, because it specifies the same

socket pair as an existing open connection, or, in the case of an

RTS, the same link. In this case, the NCP at the "open" end

should close the connection (without sending any CLS command) to

bring the two ends into agreement before responding to the

RTS/STR.

A.7 Conclusion

The scheme presented in Section A.2 to resynchronize allocation

has one very important property: the data stream is preserved

through the exchange. Since no data is lost, it is safe to

initiate resynchronization from either end at any time. When in

doubt, resynchronize.

The consistency checks for RTS and STR, and the NXR and NXS

commands provide the synchronization needed to complete the

closing of "half-closed" connections.

The protocol changes above

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有