RFC 2106
Data Link Switching Remote Access Protocol
Data Link Switching Remote Access Protocol π
Okay bestie, here's the title block tea β¨
- Series: Network Working Group
- Number: RFC 2106
- Category: Informational πΈ
- Authors: S. Chiang and J. Lee (Cisco Systems, Inc.), and H. Yasuda (Mitsubishi Electric Corp.) π
- Date: February 1997
- Obsoletes / Updates: the header doesn't list anything it obsoletes or updates, so this one stands on its own π
Status of this Memo
This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. π¦
Abstract
This memo describes the Data Link Switching Remote Access Protocol, which is used between workstations and routers to transport SNA/NetBIOS traffic over TCP sessions. Any questions or comments SHOULD be sent to drap@cisco.com. π
1. Introduction
Ever since the Data Link Switching Protocol (RFC 1795) got published, some software vendors have started running DLSw on workstations π». Putting DLSw on a whole bunch of workstations brings up several important issues that MUST be addressed, and scalability is the biggest drama π. For example, the number of TCP sessions to the DLSw router goes up in direct proportion to how many workstations get added. Efficiency is the other concern: DLSw is a switch-to-switch protocol, so it isn't efficient when it runs on workstations.
DRAP handles those issues π¦. It brings in a hierarchical structure to fix the scalability problems. All workstations become clients of the router (server) instead of peers to the router, which creates a client/server model. It also gives you a more efficient protocol between the workstation (client) and the router (server) β¨.
2. Overview
2.1. DRAP Client/Server Model
Here's the big picture of the setup π
+-----------+ +-----------+ +---------+
| Mainframe | | IP Router +- ppp -+ DLSw |
+--+--------+ +-----+-----+ | Work |
| | | Station |
| | +---------+
+--+--+ +-------------+ |
| FEP +- TR -+ DLSw Router +-- IP Backbone
+-----+ +-------------+ |
|
|
+-----------+ +---------+
| IP Router +- ppp -+ DLSw |
+-----+-----+ | Work |
| Station |
+---------+
| DLSw Session |
+-------------------------------+
Figure 2-1. Running DLSw on a large number of workstations creates a
scalability problem.
Figure 2-1 shows a typical DLSw implementation on a workstation. The workstations connect to the central site DLSw router over the IP network. As the network grows, scalability becomes an issue, since the number of TCP sessions goes up with the number of workstations π.
+-----------+ +-------+
+-----------+ | DLSw/DRAP | | DRAP |
| Mainframe | | Router +- ppp -+ Client|
+--+--------+ +-----+-----+ +-------+
| |
| |
+--+--+ +-------------+ |
| FEP +- TR -+ DLSw Router +-- IP Backbone
+-----+ +-------------+ |
|
|
+-----------+ +-------+
| DLSw/DRAP | | DRAP |
| Router +- ppp -+ Client|
+-----+-----+ +-------+
| DLSw Session | | DRAP Session |
+--------------+ +--------------+
Figure 2-2. DLSw Remote Access Protocol solves the scalability problem.
In a large network, DRAP fixes the scalability problem by significantly cutting down the number of peers that connect to the central site router π. The workstations (DRAP client) and the router (DRAP server) have a Client/Server relationship. Workstations are attached to a DRAP server, and each DRAP server has a single peer connection to the central site router.
2.2. Dynamic Address Resolution
In a DLSw network, each workstation needs a MAC address to talk to a FEP attached to a LAN. When DLSw runs on a workstation, that workstation doesn't always have a MAC address defined. For example, when a workstation connects to a router through a modem via PPP, it only has an IP address. In that case, the user MUST define a virtual MAC address. This is super admin-heavy, because each workstation MUST have a unique MAC address π©.
DRAP uses the Dynamic Address Resolution protocol to solve this problem πͺ. It lets the server dynamically assign a MAC address to a client without complex configuration.
For a client to start a session with a server, the workstation sends a direct request to the server. The request contains the destination MAC address and the destination SAP. The workstation can either specify its own MAC address or request that the server assign one to it. The server's IP address MUST be pre-configured on the workstation. If IP addresses are configured for multiple servers at a workstation, the request can be sent to those servers, and the first one to respond will be used β‘.
For a server to start a session with a client, the server sends a directed request to the workstation. The workstation MUST pre-register its MAC address at the server. This can be done either by configuration on the server or by registration at the server (both MAC addresses and IP addresses will be registered) ποΈ.
2.3. TCP Connection
The transport used between the client and the server is TCP. Before a TCP session is established between the client and the server, no message can be sent π«. The default parameters associated with the TCP connections between the client and the server are as follows:
Socket Family AF_INET (Internet protocols)
Socket Type SOCK_STREAM (stream socket)
Port Number 1973
There is only one TCP connection between the client and the server, and it's used for both read and write operations π.
3. DRAP Format
3.1. General Frame Format
The General format of the DRAP frame looks like this π§©:
+-------------+-----------+-----------+
| DRAP Header | DRAP Data | User Data |
+-------------+-----------+-----------+
Figure 3-1. DRAP Frame Format
The DRAP protocol lives in the DRAP header, which is common to all frames passed between the DRAP client and the server. This header is 4 bytes long, and the next section explains the details π¦.
The next part is the DRAP Data. Its structure and size depend on the type of messages carried in the DRAP frame. The DRAP data is used to process the frame, but it is OPTIONAL π€·ββοΈ.
The third part of the frame is the user data, which is sent by the local system to the remote system. Its size is variable, and it's only included in the frame when there's data to be sent to the remote system π.
3.2. Header Format
The DRAP header is used to identify the message type and the length of the frame. It's a general-purpose header used for each frame passed between the DRAP server and the client. More information is needed for frames like CAN_U_REACH and I_CAN_REACH, so that info gets passed to the peer as DRAP data. The structure of the DRAP data depends on the type of frame, and it'll be discussed in detail in later sections π«Ά.
The DRAP Header is given below:
+-------------------------------------------+
| DRAP Packet Header (Each row is one byte) |
+===========================================+
0 | Protocol ID / Version Number |
+-------------------------------------------+
1 | Message Type |
+-------------------------------------------+
2 | Packet Length |
+ - - - - - - - - - - - - - - - - - - - - - +
3 | |
+-------------------------------------------+
Figure 3-2. DRAP Header Format
- The Protocol ID uses the first 4 bits of this field and is set to
"1000"π’. - The Version Number uses the next 4 bits in this field and is set to
"0001"π’. - The message type is the DRAP message type π¬.
- The Total Packet length is the length of the packet, including the DRAP header, DRAP data and User Data. The minimum size of the packet is 4, which is the length of the header π.
3.3. DRAP Messages
Most of the Drap frames are based on the existing DLSw frames and have the same names π―. The information in the corresponding DRAP and DLSw frames MAY differ, but the functionalities are the same, so the DLSw State Machine handles these DRAP frames. Some new DRAP frames were created to handle special DRAP functions. For example, the new DRAP frames I_CANNOT_REACH and START_DL_FAILED provide negative acknowledgment π ββοΈ. The DLSw frames that aren't needed for DRAP get dropped ποΈ.
The following table lists and describes all available DRAP messages π:
DRAP Frame Name Code Function
--------------- ---- --------
CAN_U_REACH 0x01 Find if the station given is reachable
I_CAN_REACH 0x02 Positive response to CAN_U_REACH
I_CANNOT_REACH 0x03 Negative response to CAN_U_REACH
START_DL 0x04 Setup session for given addresses
DL_STARTED 0x05 Session Started
START_DL_FAILED 0x06 Session Start failed
XID_FRAME 0x07 XID Frame
CONTACT_STN 0x08 Contact destination to establish SABME
STN_CONTACTED 0x09 Station contacted - SABME mode set
DATA_FRAME 0x0A Connectionless Data Frame for a link
INFO_FRAME 0x0B Connection oriented I-Frame
HALT_DL 0x0C Halt Data Link session
HALT_DL_NOACK 0x0D Halt Data Link session without ack
DL_HALTED 0x0E Session Halted
FCM_FRAME 0x0F Data Link Session Flow Control Message
DGRM_FRAME 0x11 Connectionless Datagram Frame for a circuit
CAP_XCHANGE 0x12 Capabilities Exchange Message
CLOSE_PEER_REQUEST 0x13 Disconnect Peer Connection Request
CLOSE_PEER_RESPONSE 0x14 Disconnect Peer Connection Response
PEER_TEST_REQ 0x1D Peer keepalive test request
PEER_TEST_RSP 0x1E Peer keepalive response
Table 3-1. DRAP Frames
3.4. DRAP Data formats
The DRAP data carries the information needed for each DRAP frame π. This information is used by the Server or the Client, and it does not contain any user data. The DRAP data frame types are listed in the following sections. Please note that the sender SHOULD set the reserved fields to zero, and the receiver SHOULD ignore these fields π.
to be continued in part 2 π¦
3.4.1. CAN_U_REACH, I_CAN_REACH, and I_CANNOT_REACH Frames β¨
Okay so these frame types are how we find resources on the network π A CAN_U_REACH frame gets sent to the server to check if a resource is reachable π«Ά The server answers with an I_CAN_REACH frame if it can reach the workstation named in the CAN_U_REACH frame, or with an I_CANNOT_REACH frame if that station is not reachable. The server should not send the CAN_U_REACH frame to the clients π And when a server gets an explorer whose destination is a known client, it should respond to it directly π
+---------------+-----------------------+
| Field Name | Information |
+---------------+-----------------------+
| Message Type | 0x01, 0x02, or 0x03 |
+---------------+-----------------------+
| Packet Length | 0x0C |
+---------------+-----------------------+
Figure 3-3. CAN_U_REACH, I_CAN_REACH, and I_CANNOT_REACH Header
+-----------------------------------+
| Field Name (Each row is one byte) |
+===================================+
0 | Target MAC Address |
+ - - - - - - - - - - - - - - - - - +
1 | |
+ - - - - - - - - - - - - - - - - - +
2 | |
+ - - - - - - - - - - - - - - - - - +
3 | |
+ - - - - - - - - - - - - - - - - - +
4 | |
+ - - - - - - - - - - - - - - - - - +
5 | |
+-----------------------------------+
6 | Source SAP |
+-----------------------------------+
7 | Reserved |
+-----------------------------------+
Figure 3-4. CAN_U_REACH, I_CAN_REACH, and I_CANNOT_REACH Data
The MAC Address field carries the MAC address of the target workstation that's being searched for π It's a six-byte MAC Address field, and the same MAC Address comes back in both the I_CAN_REACH and the I_CANNOT_REACH frames π¦
Byte 6 is the source SAP πΈ The destination SAP is set to zero when an explorer frame is sent to the network.
If the sender didn't receive a positive acknowledgment within a recommended threshold value of 60 seconds, the destination is considered not reachable π
3.4.2. START_DL, DL_STARTED, and START_DL_FAILED Frames
These frame types are how DRAP sets up a link station (circuit) π The START_DL frame gets sent directly to the server that responded to the CAN_U_REACH frame. When the server gets this frame, it establishes a link station using the source and destination addresses and saps provided in the START_DL frame. If the circuit is set up successfully, a DL_STARTED frame gets sent back as the response π If it fails, you get a START_DL_FAILED response instead. The server can also send START_DL frames to clients to set up circuits π
+---------------+-----------------------+
| Field Name | Information |
+---------------+-----------------------+
| Message Type | 0x04, 0x05, or 0x06 |
+---------------+-----------------------+
| Packet Length | 0x18 |
+---------------+-----------------------+
Figure 3-5. START_DL, DL_STARTED, and START_DL_FAILED Header
+-----------------------------------+
| Field Name (Each row is one byte) |
+===================================+
0 | Host MAC Address |
+ - - - - - - - - - - - - - - - - - +
1 | |
+ - - - - - - - - - - - - - - - - - +
2 | |
+ - - - - - - - - - - - - - - - - - +
3 | |
+ - - - - - - - - - - - - - - - - - +
4 | |
+ - - - - - - - - - - - - - - - - - +
5 | |
+-----------------------------------+
6 | Host SAP |
+-----------------------------------+
7 | Client SAP |
+-----------------------------------+
8 | Origin Session ID |
+-----------------------------------+
9 | |
+ - - - - - - - - - - - - - - - - - +
10| |
+ - - - - - - - - - - - - - - - - - +
11| |
+-----------------------------------+
12| Target Session ID |
+ - - - - - - - - - - - - - - - - - +
13| |
+ - - - - - - - - - - - - - - - - - +
14| |
+ - - - - - - - - - - - - - - - - - +
15| |
+-----------------------------------+
16| Largest Frame Size |
+-----------------------------------+
17| Initial Window size |
+-----------------------------------+
18| Reserved |
+ - - - - - - - - - - - - - - - - - +
19| |
+-----------------------------------+
Figure 3-6. START_DL, DL_STARTED, and START_DL_FAILED Data
The Host MAC address is the address of the target station if the session is started from the client π§ Or it's the address of the originating station if the session is started from the server.
The next two fields are the Host and Client SAPs π Each one is one byte long. The Host SAP is the SAP used by the station with the Host MAC address, and the Client SAP is the SAP used by the client.
The Origin Session ID is the ID of the originating station that starts the circuit β¨ The originating station uses this ID to identify the newly created circuit. Before the START_DL frame is sent to the target station, the originating station sets up a control block for the circuit. This link station information gets set up because DRAP does not use a three-way handshake for link station establishment π In the DL_STARTED and the START_DL_FAILED messages, the Origin Session ID is returned exactly as it was received in the START_DL frame. The Target Session ID is set by the target station and returned in the DL_STARTED message.
The Target Session ID is not valid for the START_DL and the START_DL_FAILED frame, so treat it as a Reserved field π« In the DL_STARTED frame, it's the session ID that the target station uses to set up this circuit.
The Largest Frame Size field shows the maximum frame size the client can use π It's only valid when the server sets it. The Largest Frame Size field must be set to zero when a frame is sent by the client. Both START_DL and DL_STARTED use the Largest Frame Size field, and only its rightmost 6 bits are used. The format is defined in the IEEE 802.1D Standard, Annex C, Largest Frame Bits (LF). Bit 3 to bit 5 are base bits, and bit 0 to bit 2 are extended bits. The Largest Frame Size field isn't used in the START_DL_FAILED frame, and it must be set to zero there.
bit 7 6 5 4 3 2 1 0
r r b b b e e e
Figure 3-7. Largest Frame Size
Please note that if the client is a PU 2.1 node, the client should use the maximum I-frame size negotiated in the XID3 exchange π£
The Initial window size in the START_DL frame gives the receive window size on the originating side πͺ The target DRAP station returns its receive window size in the DL_STARTED frame. The field is reserved in the START_DL_FAILED frame. The window size works the same way it does in DLSw. Please refer to RFC 1795 for details π
The last two bits are reserved for future use π They must be set to zero by the sender and ignored by the receiver.
If the sender of the START_DL frame didn't receive a START_DL_FAILED frame within a recommended threshold value of 60 seconds, the connection is considered unsuccessful β°
3.4.3. HALT_DL, HALT_DL_NOACK, and DL_HALTED Frames
These frame types are how DRAP disconnects a link station π A HALT_DL frame gets sent directly to the remote workstation to say the sender wants to disconnect. When the receiver gets this frame, it tears down the session associated with the Original Session ID and the Target Session ID provided in the HALT_DL frame. The receiver should respond with the DL_HALTED frame. The DL_HALTED frame should use the same Session ID values as the received HALT_DL message, without swapping them π The HALT_DL_NOACK frame is used when a response isn't required.
+---------------+-----------------------+
| Field Name | Information |
+---------------+-----------------------+
| Message Type | 0x0C, 0x0D, or 0x0E |
+---------------+-----------------------+
| Packet Length | 0x10 |
+---------------+-----------------------+
Figure 3-8. HALT_DL, HALT_DL_NOACK, and DL_HALTED Header
+-----------------------------------+
| Field Name (Each row is one byte) |
+===================================+
0 | Sender Session ID |
+ - - - - - - - - - - - - - - - - - +
1 | |
+ - - - - - - - - - - - - - - - - - +
2 | |
+ - - - - - - - - - - - - - - - - - +
3 | |
+-----------------------------------+
4 | Receiver Session ID |
+ - - - - - - - - - - - - - - - - - +
5 | |
+ - - - - - - - - - - - - - - - - - +
6 | |
+ - - - - - - - - - - - - - - - - - +
7 | |
+-----------------------------------+
8 | Reserved |
+ - - - - - - - - - - - - - - - - - +
9 | |
+ - - - - - - - - - - - - - - - - - +
10| |
+ - - - - - - - - - - - - - - - - - +
11| |
+-----------------------------------+
Figure 3-9. START_DL, DL_STARTED, and START_DL_FAILED Data
3.4.4. XID_FRAME, CONTACT_STN, STN_CONTACTED, INFO_FRAME, FCM_FRAME, and DGRM_FRAME β¨
okay so these frames are the ones doing the real work π They carry the end-to-end data or set up a circuit. The Destination Session ID is the Session ID that the receiver made in the START_DL frame or the DL_STARTED frame, so it's giving continuity π§ The flow control flag works exactly the way it does in DLSw. For the full tea, check out RFC 1795 π«Ά
+---------------+----------------------------+
| Field Name | Information |
+---------------+----------------------------+
| Message Type | Based on Message type |
+---------------+----------------------------+
| Packet Length | 0x0C + length of user data |
+---------------+----------------------------+
Figure 3-10. Generic DRAP Header
+-----------------------------------+
| Field Name (Each row is one byte) |
+===================================+
0 | Destination Session ID |
+ - - - - - - - - - - - - - - - - - +
1 | |
+ - - - - - - - - - - - - - - - - - +
2 | |
+ - - - - - - - - - - - - - - - - - +
3 | |
+-----------------------------------+
4 | Flow Control Flags |
+-----------------------------------+
5 | Reserved |
+ - - - - - - - - - - - - - - - - - +
6 | |
+ - - - - - - - - - - - - - - - - - +
7 | |
+-----------------------------------+
Figure 3-11. Generic DRAP Data Format
3.4.5. DATA_FRAME π
this frame type is for sending connectionless SNA and NetBIOS Datagram (UI) frames π¦ The key difference is with the DGRM_FRAME. DGRM_FRAME sends UI frames for stations that already have a link station open. DATA_FRAME is for frames where no link station has been set up between that source and destination MAC/SAP pair. Same vibe, different situation π
+---------------+-----------------------------+
| Field Name | Information |
+---------------+-----------------------------+
| Message Type | 0x0A |
+---------------+-----------------------------+
| Packet Length | 0x10 + Length of user data |
+---------------+-----------------------------+
Figure 3-12. DATA_FRAME Header
+-----------------------------------+
| Field Name (Each row is one byte) |
+===================================+
0 | Host MAC Address |
+ - - - - - - - - - - - - - - - - - +
1 | |
+ - - - - - - - - - - - - - - - - - +
2 | |
+ - - - - - - - - - - - - - - - - - +
3 | |
+ - - - - - - - - - - - - - - - - - +
4 | |
+ - - - - - - - - - - - - - - - - - +
5 | |
+-----------------------------------+
6 | Host SAP |
+-----------------------------------+
7 | Client SAP |
+-----------------------------------+
8 | Broadcast Type |
+-----------------------------------+
9 | Reserved |
+ - - - - - - - - - - - - - - - - - +
10| |
+ - - - - - - - - - - - - - - - - - +
11| |
+-----------------------------------+
Figure 3-13. DATA_FRAME Data Format
the first 8 bytes are defined the same way as in the START_DL frame β¨ The Broadcast Type field says what kind of broadcast frames are in use: Single Route Broadcast, All Route Broadcast, or Directed. The target side uses the same broadcast type too, so everyone's on the same page π If it's a Directed frame and the RIF information is known, the target peer can send a directed frame. If the RIF isn't known, a Single Route Broadcast frame gets sent instead πΈ
3.4.6. CAP_XCHANGE Frame π
in DRAP, the capability exchange frame is how the client and server swap info like its MAC address π§ If a DRAP client has its own MAC address defined, it SHOULD put that in the MAC address field. If it doesn't, that field MUST be set to zero π«Ά
when the DRAP server gets a CAP_XCHANGE frame, it SHOULD cache the MAC address as long as it's non zero π The server also checks that the MAC address is unique, which is so important π The server SHOULD send back a CAP_XCHANGE response frame with the MAC address the client gave it, if that address is accepted. If the client doesn't have its own MAC address, the server SHOULD assign one and put it in the CAP_XCHANGE command frame π¦
the client SHOULD record the new MAC address the server assigned and send back a response with that assigned address. If the client can't accept the assigned MAC address, another CAP_XCHANGE command with the MAC address field set to zero SHOULD be sent to the server. Then the server SHOULD allocate a new MAC address for this client π₯
during the capability exchange, both the client and the server can send command frames. It stops once either side sends a CAP_XCHANGE response frame. When that response goes out, the MAC address in the CAP_XCHANGE frame SHOULD match the one from the previous command it received. By sending that response, the sender agrees to use the MAC address from the previous command, which is a whole commitment π
the client and server each figure out independently how many CAP_XCHANGE frames need to be exchanged. If the count goes over the pre-defined number set by either the server or the client, the session SHOULD be brought down π
the flag shows what the sender is capable of. These are the valid flags:
0x01NetBIOS support. If a client sets this bit on, the server passes all NetBIOS explorers to that client. If the bit isn't set, only SNA traffic gets sent to that client π0x02TCP Listen Mode support. If a client supports TCP listen mode, the server keeps the client's MAC and IP addresses even after the TCP session goes down. The server uses that cached info to connect out. If a client doesn't support TCP listen mode, the cache gets deleted as soon as the TCP session is down π0x04Command/Response. If this bit is set, it's a command. Otherwise, it's a response β¨
the values 0x01 and 0x02 are only used by the client. When a server sends a command or response to a client, it doesn't return these values π
starting with the Reserved field, implementors can optionally implement the Capability Exchange Control Vector π§ Each one has three fields: Length (1 byte), Type (1 byte), and Data (Length - 2 bytes). There are two types defined: SAP_LIST and VENDOR_CODE. For compatibility, implementors SHOULD ignore unknown Control Vectors instead of treating them as errors π
0x01SAP_LIST. Length: 2+n bytes, where n ranges from 1 to 16. This control vector lists the SAPs the client can support. A client can define up to 16 SAPs, so this control vector's length ranges from 3 to 18. If SAP_LIST isn't specified in the capability exchange, the server assumes the client can support all SAP values. For example, if a client can only support SAP 4 and 8, the following Control Vectors SHOULD be sent: "0x04, 0x01, 0x04, 0x08". The first byte is the length of 4. The second byte is the control vector type, SAP_LIST. The last two bytes are the supported SAP values, 0x04 and 0x08 π Only the client uses this control vector. If the server accepts it, the server MUST return the same Control Vector to the client π0x02VENDOR_CODE. Length: 6 bytes. Each vendor gets a vendor code that identifies it. This control vector doesn't need a response πΈ
once the receiver responds to a Control Vector and the capability exchange isn't finished yet, the sender doesn't have to send that same Control Vector again π«Ά
+---------------+-----------------------+
| Field Name | Information |
+---------------+-----------------------+
| Message Type | 0x12 |
+---------------+-----------------------+
| Packet Length | 0x1C |
+---------------+-----------------------+
Figure 3-14. CAP_XCHANGE Header
+-----------------------------------+
| Field Name (Each row is one byte) |
+===================================+
0 | MAC Address |
+ - - - - - - - - - - - - - - - - - +
1 | |
+ - - - - - - - - - - - - - - - - - +
2 | |
+ - - - - - - - - - - - - - - - - - +
3 | |
+ - - - - - - - - - - - - - - - - - +
4 | |
+ - - - - - - - - - - - - - - - - - +
5 | |
+-----------------------------------+
6 | Flag |
+-----------------------------------+
7 | Reserved |
+-----------------------------------+
Figure 3-15. CAP_XCHANGE Data Format
3.4.7. CLOSE_PEER_REQ Frames β¨
Okay bestie, this frame is the "bye, I'm out" message for peer connection management π It carries a reason code field, and these are the valid reason codes:
0x01System shutdown π: this means a shutdown is in progress.0x02Suspend π΄: this one is for when there's no traffic between the server and the client and one of them wants to pause the TCP session. While it's suspended, all circuits should remain intact. The TCP session should be re-established when new user data needs to be sent, and once it's back there's no need to send the CAP_XCHANGE frame again. so chill π«Ά0x03No MAC address available π : the server sends this when there is no MAC address available from the MAC address pool.
+---------------+-----------------------+
| Field Name | Information |
+---------------+-----------------------+
| Message Type | 0x13 |
+---------------+-----------------------+
| Packet Length | 0x08 |
+---------------+-----------------------+
Figure 3-16. CLOSE_PEER_REQ Header
+-----------------------------------+
| Field Name (Each row is one byte) |
+===================================+
0 | Reason Code |
+-----------------------------------+
1 | Reserved |
+ - - - - - - - - - - - - - - - - - +
2 | |
+ - - - - - - - - - - - - - - - - - +
3 | |
+-----------------------------------+
Figure 3-17. CLOSE_PEER_REQ Data Format
3.4.8. CLOSE_PEER_RSP, PEER_TEST_REQ, and PEER_TEST_RSP Frames π
Three frames, one job: keeping peer connections healthy π©· None of them carry any data.
CLOSE_PEER_RSP: this is the response toCLOSE_PEER_REQ.PEER_TEST_REQandPEER_TEST_RSP: these are for peer-level keepalive. ImplementingPEER_TEST_REQis optional, butPEER_TEST_RSPmust be implemented so it can answerPEER_TEST_REQ. When aPEER_TEST_REQframe goes out to the remote station, the sender expects aPEER_TEST_RSPback within a predefined time interval (the recommended value is 60 seconds). If thatPEER_TEST_RSPdoesn't show up in time, the sender can sendPEER_TEST_REQagain. If a predefined number ofPEER_TEST_REQframes has been sent with noPEER_TEST_RSPreceived (the recommended number is 3), the sender should close the TCP session with that remote station and terminate all associated circuits. π¨
+---------------+-----------------------+
| Field Name | Information |
+---------------+-----------------------+
| Message Type | 0x14, 0x1D, or 0x1E |
+---------------+-----------------------+
| Packet Length | 0x04 |
+---------------+-----------------------+
Figure 3-18. CLOSE_PEER_RSP, PEER_TEST_REQ, and PEER_TEST_RSP DRAP
4. References π
[1] Wells, L., Chair, and A. Bartky, Editor, "DLSw: Switch-to-Switch Protocol", RFC 1795, October 1993.
[2] IEEE 802.1D Standard.
Authors' Addresses π
Steve T. Chiang πΈ
InterWorks Business Unit
Cisco Systems, Inc.
170 Tasman Drive
San Jose, CA 95134
Phone: (408) 526-5189
EMail: schiang@cisco.com
Joseph S. Lee πΈ
InterWorks Business Unit
Cisco Systems, Inc.
170 Tasman Drive
San Jose, CA 95134
Phone: (408) 526-5232
EMail: jolee@cisco.com
Hideaki Yasuda πΈ
System Product Center
Network Products Department
Network Software Products Section B
Mitsubishi Electric Corp.
Information Systems Engineering Center
325, Kamimachiya Kamakura Kanagawa 247, Japan
Phone: +81-467-47-2120
EMail: yasuda@eme068.cow.melco.co.jp
And that's the whole DRAP spec, bestie ππ
π¦ where this page comes from
- ietf: rfc2106 1997-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms