📄 rfc1795.txt
字号:
DISC command), due to receiving a
HALT_DL message.
HALT_PENDING_NOACK The remote DLSw is awaiting the
DLC_DL_HALTED indication following
the DLC_HALT_DL request (i.e., DLC
is waiting for a UA response to a
DISC command), due to receiving a
HALT_DL_NOACK message.
RESTART_PENDING The remote DLSw is awaiting the
DLC_DL_HALTED indication following
the DLC_HALT_DL request (i.e., DLC
is waiting for a UA response to a
DISC command), and the restart of
the data link.
RESOLVE_PENDING The target DLSw is awaiting
the DLC_DL_STARTED indication
following the DLC_START_DL request
(i.e., DLC is waiting for a Test
response as a result of sending a
Test command).
The DISCONNECTED state is the initial state for a new circuit. One
end station starts the connection via an XID or SABME command (i.e.,
DLC_XID or DLC_CONTACTED). Upon receipt, the Data Link Switches
exchange a set of CANUREACH_cs, ICANREACH_cs and REACH_ACK messages.
Upon completion of this three-legged exchange both Data Link Switches
will be in the CIRCUIT_ESTABLISHED state. Three pending states also
exist during this exchange. The CIRCUIT_START state is entered by
the origin Data Link Switch after it has sent the CANUREACH_cs
message. The RESOLVE_PENDING state is entered by the target Data
Link Switch awaiting a Test response to a Test Command. And lastly,
the CIRCUIT_PENDING state is entered by the target DLSw awaiting the
REACH_ACK reply to an ICANREACH_cs message.
The CIRCUIT_ESTABLISHED state allows for the exchange of LLC Type 1
frames such as the XID exchanges between SNA stations that occurs
prior to the establishment of a connection. Also, datagram traffic
(i.e., UI frames) may be sent and received between the end stations.
These exchanges use the XIDFRAME and DGRMFRAME messages sent between
Wells & Bartky [Page 22]
RFC 1795 Data Link Switching April 1995
the Data Link Switches.
In the CIRCUIT_ESTABLISHED state, the receipt of a SABME command
(i.e., DLC_CONTACTED) causes the origin DLSw to issue a CONTACT
message, to send an RNR supervisory frame (i.e., DLC_ENTER_BUSY) to
the origin station, and to enter the CONNECT_PENDING state awaiting a
CONTACTED message. The target DLSw, upon the receipt of a CONTACT
message, will issue a SABME command (i.e., DLC_CONTACT) and enter the
Contact Pending state. Once the UA response is received (i.e.,
DLC_CONTACTED), the target DLSw sends a CONTACTED message and enters
the CONNECTED state. When received, the origin DLSw enters the
CONNECTED state and sends an RR supervisory frame (i.e.,
DLC_EXIT_BUSY).
The CONNECTED state is the steady state for normal data flow once a
connection has been established. Information frames (i.e., INFOFRAME
messages) are simply sent back and forth between the end points of
the connection. This is the path that should be optimized for
performance.
The connection is terminated upon the receipt of a DISC frame or
under some other error condition detected by DLC (i.e., DLC_ERROR).
Upon receipt of this indication, the DLSw will halt the local data
link, send a HALT_DL message to the remote DLSw, and enter the
DISCONNECT_PENDING State. When the HALT_DL frame is received by the
other DLSw, the local DLC is halted for this data link, a DL_HALTED
message is returned, and the DISCONNECTED state is entered. Receipt
of this DL_HALTED message causes the other DLSw to also enter the
DISCONNECTED state.
The CIRCUIT_RESTART state is entered if one of the Data Link Switches
receives a SABME command (i.e., DLC_RESET) after data transfer while
in the CONNECTED state. This causes a DM command to be returned to
the origin station and a RESTART_DL message to be sent to the remote
Data Link Switch. This causes the remote data link to be halted and
then restarted. The remote DLSw will then send a DL_RESTARTED
message back to the first DLSw. The receipt of the DL_RESTARTED
message causes the first DLSw to issue a new CONTACT message,
assuming that the local DLC has been contacted (i.e., the origin
station has resent the SABME command). This is eventually responded
to by a CONTACTED message. Following this exchange, both Data Link
Switches will return to the CONNECTED state. If the local DLC has
not been contacted, the receipt of a DL_RESTARTED command causes the
Data Link Switch to enter the CIRCUIT_ESTABLISHED state awaiting the
receipt of a SABME command (i.e., DLC_CONTACTED signal).
The HALT_PENDING, HALT_PENDING_NOACK and RESTART_PENDING states
correspond to the cases when the Data Link Switch is awaiting
Wells & Bartky [Page 23]
RFC 1795 Data Link Switching April 1995
responses from the local station on the adjacent LAN (e.g., a UA
response to a DISC command). Also in the RESTART_PENDING state, the
Data Link Switch will attempt to restart the data link prior to
sending a DL_RESTARTED message. For some implementations, the start
of a data link involves the exchange of a Test command/response on
the adjacent LAN (i.e., DLC_START_DL). For other implementations,
this additional exchange may not be required.
5.2 State Transition Tables
This section provides a detailed representation of the Data Link
Switch, as documented by a single state machine. Many of the
transitions are dependent upon local signals between the Data Link
Switch entity and one of the DLC entities. These signals and their
definitions are given in the following tables.
DLC Events:
Event Name Description
---------- -----------
DLC_CONTACTED Contact Indication: DLC has received an SABME
command or DLC has received a UA response as a
result of sending an SABME command.
DLC_DGRM Datagram Indication: DLC has received a UI frame.
DLC_ERROR Error condition indicated by DLC: Such a
condition occurs when a DISC command is received
or when DLC experiences an unrecoverable error.
DLC_INFO Information Indication: DLC has received an
Information (I) frame.
DLC_DL_HALTED Data Link Halted Indication: DLC has
received a UA response to a DISC command.
DLC_DL_STARTED Data Link Started Indication: DLC has
received a Test response from the null SAP.
DLC_RESET Reset Indication: DLC has received an SABME
command during the time a connection is
currently active and has responded with DM.
DLC_RESOLVE_C Resolve Command Indication: DLC has received
a Test command addressed to the null SAP, or an
XID command addressed to the null SAP.
Wells & Bartky [Page 24]
RFC 1795 Data Link Switching April 1995
DLC_RESOLVED Resolve request: DLC has received a TEST response
frame (or equivalent for non-LAN DLCs) but has not
reserved the resources required for a circuit yet.
DLC_XID XID Indication: DLC has received an XID command
or response to a non-null SAP.
Other Events:
Event Name Description
---------- -----------
XPORT_FAILURE Failure of the transport connection used by the
circuit.
CS_TIMER_EXP The CIRCUIT_START timer (started when the circuit
went into CIRCUIT_START state) has expired.
DLC Actions:
Action Name Description
----------- -----------
DLC_CONTACT Contact Station Request: DLC will send a SABME
command or a UA response to an outstanding SABME
command.
DLC_DGRM Datagram Request: DLC will send a UI frame.
DLC_ENTER_BUSY Enter Link Station Busy: DLC will send an
RNR supervisory frame.
DLC_EXIT_BUSY Exit Link Station Busy: DLC will send an RR
supervisory frame.
DLC_HALT_DL Halt Data Link Request: DLC will send a DISC
command.
DLC_INFO Information Request: DLC will send an I frame.
DLC_RESOLVE Resolve request: DLC should issue a TEST (or
appropriate equivalent for non-LAN DLCs) but need
not reserve the resources required for a circuit yet.
DLC_RESOLVE_R Resolve Response Request: DLC will send a
Test response or XID response from the null SAP.
DLC_START_DL Start Data Link Request: DLC will send a Test
command to the null SAP.
Wells & Bartky [Page 25]
RFC 1795 Data Link Switching April 1995
DLC_XID XID Request: DLC will send an XID command or an
XID response.
Other Actions:
Action Name Description
---------- -----------
START_CS_TIMER Start the CIRCUIT_START timer.
DLC_RESOLVE_R and DLC_START_DL actions require the DLC to reserve the
resources necessary for a link station as they are used only when a
circuit is about to be started. The DLC_RESOLVE action is used for
topology explorer traffic and does not require such resources to be
reserved, though a DLC implementation may choose not to distinguish
this from the DLC_START_DL action. See section 5.4 for details of
the actions and events for explorer frames.
The Data Link Switch is described by a state transition table as
documented in the following sections. Each of the states is
described below in terms of the events, actions, and next state for
each transition. If a particular event is not listed for a given
state, no action and no state transition should occur for that event.
Any significant comments concerning the transitions within a given
state are given immediately following the table representing the
state.
A separate state machine instance is maintained by the Data Link
Switch for each end-to-end circuit. The number of circuits that may
be supported by each Data Link Switch is a local implementation
option.
The CANUREACH_ex, ICANREACH_ex, NETBIOS_NQ_ex, and NETBIOS_NR_ex are
SSP messages that are not associated with a particular circuit. The
processing of these messages is covered in section 5.4.
Wells & Bartky [Page 26]
RFC 1795 Data Link Switching April 1995
5.2.1 DISCONNECTED State
+----------------------+---------------------+----------------------+
| Event | Action(s) | Next State |
+----------------------+---------------------+----------------------+
| Receive CANUREACH_cs | DLC_START_DL | RESOLVE_PENDING |
+----------------------+---------------------+----------------------+
| Receive DATAFRAME | DLC_DGRM | |
+----------------------+---------------------+----------------------+
| DLC_XID | If source route | If CANUREACH_cs was |
| | bridged frame with | sent: |
| | broadcast indicated:| CIRCUIT_START |
| | Send CANUREACH_ex | |
| | else: | |
| | Send CANUREACH_cs | |
| | START_CS_TIMER | |
+----------------------+---------------------+----------------------+
| DLC_DGRM | If NETBIOS | |
| | NAME_QUERY: | |
| | Send NETBIOS_NQ_ex | |
| | else:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -