Extended Signaling for SCPS-TP

advertisement
CCSDS CONCEPT PAPER
CCSDS Concept Paper: Extended Signaling for SCPS-TP
Keith Scott
The MITRE Corporation
June 23, 2005
Introduction
This document is a concept paper for the Consultative Committee for Space Data Systems (CCSDS). CCSDS
concept papers are working documents of the Consultative Committee for Space Data Systems (CCSDS), its areas,
and its working groups. CCSDS concept papers are valid for a maximum of nine months and may be updated,
replaced, or obsoleted by other documents at any time.
Abstract
This concept paper proposes modifications to the Space Communications Protocol Specification – Transport
Protocol (SCPS-TP, [1]) to allow extended signaling between source and destination during the TCP SYN exchange.
The proposed modification re-uses the SCPS Capabilities Option (TCP Option 20) as the container option that
allows for additional standardized signaling, as well as vendor- and community-specific signaling between SCPS-TP
endpoints.
Background
TCP, TCP Options
The Transport Control Protocol, TCP [2] is a reliable protocol at layer 4 (transport) of the ISO network model [3].
TCP provides reliable, in-order data delivery with duplicate suppression at the receiver. The base TCP protocol is
extensible through the use of TCP options. Options are type-length-value encoded in the TCP header, allowing for
signaling between source and destination that either was not envisioned at the time the base TCP protocol was
developed, or was deemed sufficiently optional as to not be required on every TCP connection. Examples of
common TCP options include window scaling (TCP option 2), Selective ACKnowledgments (SACK) permitted
(TCP option 4), and SCPS Capabilities (TCP option 20).
A TCP header consists of a 'base' header that includes source and destination ports, sequence and acknowledgment
numbers, and other information. TCP options, if present, appear immediately following the base TCP header. The
base header is 20 bytes long, and contains within it a 4-bit length field that gives the overall length of the TCP
header, including any TCP options. A 4-bit header length field allows for a maximum TCP header of 60 bytes; the
20 bytes of base TCP header leaves 40 bytes available for TCP options.
CCSDS CONCEPT PAPER
Page 1
CCSDS CONCEPT PAPER
0
15 16
16-bit source port number
31
16-bit destination port number
32-bit sequence number
32-bit acknowledgment number
4-bit header
length
reserved (6 bits)
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
16-bit TCP checksum
16-bit window size
16-bit urgent pointer
options (if any)
data (if any)
Figure 1: TCP Header
SCPS-TP
In the early 1990s, NASA was interested in network- and transport-layer protocols for communicating with
spacecraft. The characteristics of space communications are such that the performance of TCP, even with the
options available at the time, could suffer. The long delays, error rates, and constrained and asymmetric bandwidths
typical of space communications at the time prompted NASA and the US Department of Defense to sponsor the
development of extensions to TCP that would allow it to be tuned for better performance in these types of stressed
environments.
NASA brought these efforts to CCSDS, and they resulted in a set of protocol specifications that provide efficient,
high-performance communication in stressed environments, including space. The Space Communications Protocol
Specification (SCPS) suite includes a network protocol [4], a security protocol [5], a transport protocol, the SCPSTP, and a file transfer protocol [6]. While the network and security protocols are not interoperable with their
terrestrial counterparts, IP and IPSec respectively, the transport and file transfer protocols can interoperate with
'standard' TCP and FTP.
The SCPS-TP is implemented as a set of TCP options (TCP options 20-23). Option 20 (SCPS Capabilities) is used
by endpoints during the TCP SYN exchange to determine whether or not both of them support certain capabilities,
much the same way two endpoints would exchange window scaling options. Option 20 actually allows endpoints to
negotiate a number of capabilities, including a not entirely-reliable 'best effort' transport service, two different forms
of Selective Negative ACKnowledgments (SNACK), a error-tolerant header compression scheme, and whether the
endpoints will use network-layer timestamps.
Because SCPS-TP is simply a set of TCP options, it is interoperable with other TCPs that do not implement the
SCPS extensions. If a non-SCPS capable endpoint attempts to establish a TCP connection with a SCPS-capable
endpoint, then it will NOT provide a SCPS Capabilities option, and the SCPS-capable endpoint will know that it can
use only those options advertised by the sender. Conversely, if a SCPS-TP-capable endpoint attempts to establish a
connection with a TCP implementation that does not support SCPS-TP capabilities, the non-SCPS-capable endpoint
will ignore the SCPS Capabilities option in the TCP SYN segment, and specifically will not return it in the SYNACK. This will tell the sender that the receiver does not support the SCPS capabilities, and that it should fall back
to using only those services the receiver does support.
There are a number of other features specified in [1] that allow operators to improve the performance of the protocol
over space links. Many of these involve 'sender-side' modifications that do not impact interoperability with other
TCP implementations, and are not discussed further here.
CCSDS CONCEPT PAPER
Page 2
CCSDS CONCEPT PAPER
TCP Performance Enhancing Proxies
As mentioned earlier, SCPS-TP was originally developed for communicating with spacecraft. The goal was to
support a model of operations where scientists and investigators on Earth could communicate directly with
instruments on-board spacecraft, over the stressed space communication links.
Towards the end of the development of SCPS-TP, Internet Service Providers (ISPs) were gaining experience with
using satellite communications (satcom) links to extend the reach of their services. These satellite communications
links were generally point-to-point transponded links, so there was no demodulation on-board the satellite. TCP
connections over these links, however, showed remarkably poor performance. The reason was that these satcom
links exhibited exactly the performance characteristics SCPS-TP was designed to overcome: long delays, high bit
error rates, and in some cases asymmetrical bandwidth. Tuning parameters of the end systems' TCP stacks can
sometimes improve performance in these situations, but those improvements are usually limited, and can also result
in adverse performance for connections that do not use the stressed link.
One means to improve end-to-end TCP performance over these links is to employ a Performance Enhancing Proxy,
or PEP [7]. A particular class of PEP is what is commonly referred to as a 'split-connection' PEP. These devices
split end-to-end TCP connections into three pieces: source to PEP1, PEP1 to PEP2, and PEP2 to destination. The
advantage of this approach is that the inter-PEP protocol used between PEP1 and PEP2 need not be TCP. In
particular, the inter-PEP protocol may choose to NOT employ congestion control (which is required in TCP), and
may employ other mechanisms to improve performance over the stressed communication link.
TCP
TCP
Other
Other
TCP
IP
IP
IP / NP
IP / NP
IP
TCP
IP
Link
Link
Link
Link
Link
Link
Figure 2: TCP Performance Enhancing Proxies
A number of commercial vendors have developed products that implement the SCPS-TP protocol, usually as PEPs
that are designed to be used over satellite channels. There are two major advantages to these vendors in using the
SCPS-TP protocol as the inter-PEP protocol:
1. The SCPS-TP protocol is sufficiently tunable that it can provide good or excellent performance across a
wide range of link characteristics.
2. SCPS-TP is a standard, allowing multiple vendors' PEP implementations to interoperate, provided that they
all adhere to the standard.
Extended Capabilities Signaling in SCPS-TP
One might want to signal additional capabilities that are not supported by the current SCPS Capabilities option, such
as the ability to do data compression, the compression algorithm, the ability to support advanced option negotiation
on non-SYN segments, etc. Signaling each of these capabilities separately in the style of traditional TCP options
such as MSS would quickly consume the remaining space in the 40 bytes allocated to TCP options.
Proposed Modifications to the SCPS-TP Specification
This paper proposes to modify the SCPS-TP specification to allow two SCPS-TP-compliant endpoints to negotiate
additional capabilities during the SYN exchange. The endpoints could be two end systems implementing the SCPSTP protocol, or a pair of PEPs. The proposed method is, as far as we know, backward compatible with existing
CCSDS CONCEPT PAPER
Page 3
CCSDS CONCEPT PAPER
implementations. We briefly describe the proposed modifications here; the next sub-section contains text that would
be inserted directly into the SCPS-TP specification.
The main concept behind this proposal is a slight variant one originally put forward by Jerry Toporek on the sisscps-interest mailing list – to re-use the SCPS Capabilities TCP option (option 20) more than once in the TCP
header. All instances of option 20 after the first would be interpreted in the context of 'extended' capability signaling
described here.
Under this proposal, extended capability binding space identifiers will be assigned to individual vendors, as well as
to communities of interest.
If a vendor or community wants to support multiple options, then those must be multiplexed in a vendor- or
community-specific way underneath the extended option data.
SCPS-TP Modifications
This section contains text to be applied against the current issue of the SCPS-TP specification [1]. Note that the text
here would be inserted into the specification and defines a set of extensions. The 'core' SCPS-TP specification (as
defined in section 3.2.3 of [1] remains in effect.
[Insert new section 3.2.5 immediately preceding section 3.3 (DATA TRANSFER)]
3.2.5 SCPS-TP EXTENDED CAPABILITIES OPTION
The following format is used to signal 'extended' SCPS capabilities.
Extended capabilities allow endpoints to perform signaling in addition to
that supported by the 'standard' SCPS Capabilities option described above.
Extended capabilities are identified by reuse of the SCPS Capabilities Option
(option 20) two or more times on a particular SYN packet (TCP packet with the
SYN bit set). These extended option 20s are prohibited from having length 4
to help differentiate them from 'standard' SCPS Capabilities Options. The
FIRST SCPS Capabilities Option present on a SYN segment must have length 4
and is interpreted as above.
The intent of allowing extended capabilities is to allow vendors and
communities of interest to implement features unique to particular
environments. Each vendor or community of interest will be assigned a unique
identifier. Extended SCPS
3.2.5.1 Extended Capability Format
The first part of an extended capability signal is the presence of a second
(third, etc.) SCPS Capabilities Option (TCP option 20). This option has the
standard TCP option format, as shown in Figure 3-2. The type of this option
is SCPS Capabilities (20), and the length is variable, but prohibited from
being 4 (the mandated length of the base SCPS Capabilities option above).
NOTE - The first SCPS Capabilities option on a SYN segment MUST be the
'standard' SCPS Capabilities Option defined in section 3.2.3 with
length = 4. It is not possible to have an extended SCPS capabilities
option (length !=4) without preceding it with a 'standard' SCPS
capabilities option of length 4, formatted as in section 3.2.3.
CCSDS CONCEPT PAPER
Page 4
CCSDS CONCEPT PAPER
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+-----------------------------------------------+
|
SCPS Capabilities (20)
|
+-----------------------------------------------+
|
Length (!=4)
|
+-----------------------------------------------+
|
Extended Capabilities
|
+-----------------------------------------------+
Figure 3-2: Beginning of extended
capabilities signaling
octet 1
octet 2
variable, determined by
Length field
Length: The value of this field equals the total number of octets in all of
the extended capability options signaled by this (extended) SCPS capabilities
option, including octets 1 and 2. That is, the length field of extended SCPS
capabilities options behaves as a normal TCP option length field. The value
of the length field may NOT be equal to 4 to ensure that implementations that
do not understand extended capabilities do not confuse an extended capability
SCPS option with a 'standard' SCPS capabilities option (section XXXXX).
Figure 3-3 shows the format for each individual extended capability.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+-----------------------------------------------+
|
Extended Capability Binding Space ID
|
+-----------------------------------------------+
| Extended cap. length |
Extended
|
+-----------------------+
capability
+
|
data
|
+-----------------------------------------------+
Figure 3-3: Format for extended
capabilities
octet 1
octet 2
variable, determined by
Extended cap. length field
3.2.5.1.1 Extended Capability Fields
3.2.5.1.1.1 Extended Capability Binding Space ID
This identifies the particular extended capability binding space. The
extended capability data is interpreted in the context of this identifier.
The extended capability binding space identifier is an arbitrary integer that
identifies the format of the extended capability data, which could contain
information about one or more extended capabilities. For example, a
particular vendor might use a single binding space identifier and signal a
number of individual capabilities with flags in the extended capability data
field. The format of identifying the particular capabilities would be
completely vendor-specific. In general there would be at most one extended
capability binding space ID per vendor or community of interest. If vendors
or communities want to implement multiple extended capabilities, they will
need to define their own signaling/multiplexing method for those capabilities
within a particular extended capability DATA area. Vendors are strongly
encouraged to make the format of their extended capabilities public knowledge
NOTE - Assignment of extended capability binding space IDs is discussed in
section 3.2.5.3 below.
3.2.5.1.1.2 Extended Capability Length
CCSDS CONCEPT PAPER
Page 5
CCSDS CONCEPT PAPER
The extended capability length field specifies the length of the extended
capability, exclusive of the octets containing the extended capability type
and length, in 16-bit words. Thus in Figure 3-3 an extended capability
length of 0x0 would indicate that only octets 1 and 2 in the figure were
present, a value of 0x1 would indicate a total length of four octets (octets
1 and 2 in Figure 3-3 plus two additional octets of extended capability
data). A value of 0x2 would indicate a total length of six octets, etc.
NOTE – The minimum length of an extended capability is 2 octets (the octet
containing the binding space identifier and the octet whose first 4
bits contain the length). The last four bits of the second octet are
the first four bits of the extended capability data, and are always
present, even if unused by the particular capability.
3.2.5.1.2 Support for Multiple Extended Capability Binding Spaces
More than one extended capability binding space identifier can be indicated
under a single extended SCPS Capabilities option, as shown in Figure 3-4.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+-----------------------------------------------+
|
SCPS Capabilities (20)
| octet 1
+-----------------------------------------------+
|
Length (!=4)
| octet 2
+-----------------------------------------------+
|
Extended Capability Binding Space ID1
| octet 3
+-----------------------------------------------+
| Extended cap. len1
|
Extended
| octet 4
+-----------------------+
capability
+
|
data1
| variable
+-----------------------------------------------+
|
Extended Capability Binding Space ID2
| octet n
+-----------------------------------------------+
| Extended cap. len2
|
Extended
| octet n+1
+-----------------------+
capability
+
|
data2
| variable
+-----------------------------------------------+
Figure 3-4: A single extended SCPS
capabilities option with multiple extended
capability binding spaces.
3.2.5.1.3 Alternate Support for Multiple Extended Capability Binding Spaces
Although it is less bit-efficient than the method described in 3.2.5.1.2,
multiple extended capabilities can also be signaled with additional SCPS
Capabilities options as shown in Figure 3-5.
CCSDS CONCEPT PAPER
Page 6
CCSDS CONCEPT PAPER
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+-----------------------------------------------+
|
SCPS Capabilities (20)
| octet 1
+-----------------------------------------------+
|
Length (!=4)
| octet 2
+-----------------------------------------------+
|
Extended Capability Binding Space ID1
| octet 3
+-----------------------------------------------+
| Extended cap. len1
|
Extended
| octet 4
+-----------------------+
capability
+
|
data1
| variable
+-----------------------------------------------+
|
SCPS Capabilities (20)
| octet n
+-----------------------------------------------+
|
Extended Capability Binding Space ID2
| octet n+1
+-----------------------------------------------+
| Extended cap. len2
|
Extended
| octet n+2
+-----------------------+
capability
+
|
data2
| variable
+-----------------------------------------------+
Figure 3-5: Using multiple SCPS Capabilities
options to express multiple extended capabilities.
3.2.5.1.4 Extending the Extended Capability Binding Identifier Space
An extended capability binding space identifier value of 0xFF (255d) is used
to extend the extended capability binding space from 255 to 511 values. A
value of 255d in the extended capabilities binding space identifier field
indicates that the actual extended capability binding space identifier is
calculated by adding 256d to the value of the octet following the octet
containing the extended capability length (octet 5 in Figure 3-6 below). If
octet 5 in Figure 3-6 were itself 0xFF (255d), the extended capability
binding space identifier would be 512 plus the value of the octet following
octet 5.
NOTE – Using this extension method, the position of the extended capability
length field is fixed relative to the start of the extended capability
binding space identifier, regardless of the number of bytes needed to
express the extended capability binding space identifier.
CCSDS CONCEPT PAPER
Page 7
CCSDS CONCEPT PAPER
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+-----------------------------------------------+
|
SCPS Capabilities (20)
|
+-----------------------------------------------+
|
Length (!=4)
|
+-----------------------------------------------+
| Extended Capability Binding Space Esc (0xFF) |
+-----------------------------------------------+
| Extended cap. len
|
Reserved
|
+-----------------------+-----------------------+
| Extended Capability Binding Space ID'
|
+-----------------------------------------------+
| Extended Capability Data
|
+-----------------------------------------------+
octet 1
octet 2
octet 3
octet 4
octet 5
variable (defined by
extended cap. Length
field).
Figure 3-6: An extended SCPS-TP capability
specified by a binding space identifier in
the 256-511 range.
If extended capability binding space extensions are in use (i.e. octet 3 of
figure 3-6 is 0xFF) then the 4 bits following the extended capability length
are set to zero on transmission and must be ignored on receipt.
3.2.5.2 Meanings of Specific Extended Capability Binding Space Identifiers
3.2.5.2.1 Processing Unrecognized Extended Capability Binding Spaces
As with TCP options, implementations must ignore extended capability binding
spaces that they do not understand. In these cases the implementations can
read the extended capability length field and skip over the unknown data to
continue processing the rest of the extended capabilities (if any).
NOTE – Extended capabilities that require negotiation (presumably most)
should be handled similarly to other TCP options. That is, if the
sender of the SYN signals that it wants to use extended capability X,
presumably the sender of the SYN-ACK will accept/reject the use of
that capability via an appropriate option in the SYN-ACK. As with
other TCP options, failure to explicitly accept an extended option
should be treated as a reject, so that the correct action is taken in
the case that the receiver simply didn't parse the extended
capability.
3.2.5.2.2 Standard Extended Capabilities Binding Space Identifiers
Values 0x00 through 0x0F for the extended capability binding space identifier
are reserved for standards use.
3.2.5.2.3 Experimental Extended Capabilities Binding Space ID
Extended capability binding space identifier 0xFE (254d) is reserved for
experimentation. Implementations using this experimental extended capability
binding space MUST take precautions to ensure that they are interpreting the
extended capability data correctly.
3.2.5.3 Assignment of Extended Capability Binding Space Identifiers
CCSDS CONCEPT PAPER
Page 8
CCSDS CONCEPT PAPER
CCSDS will assign extended capability binding space identifiers to interested
parties. These parties may be individual vendors of SCPS-TP products, or
communities of interest that want to jointly define a set of extended
capabilities for a particular environment.
[Insert new line in table C2.5.1 (Frame Structure – Uncompressed SCPS-TP TCP
Headers) immediately after the 'scps' item.]
+-------------------------------------------------------------+
| scpsext | Extended SCPS Capabilities | SCPS TP 3.2.5 |
M |
+-------------------------------------------------------------+
Additional Implications
The PICS table C2.2 in the SCPS-TP specification states that compliant implementations must implement the
Connection Establishment protocol feature, as described in RFC 793: 3.4 and SCPS-TP: 3.2 The proposed
modification becomes part of section 3.2 of the SCPS-TP spec, and therefore support for processing extended SCPS
capabilities becomes mandatory. Note that the proposed section 3.2.5.2.1 states that while a conformant
implementation must be able to ignore extended capabilities options that it does not understand, it is not required to
understand any. Thus an implementation that simply ignored all but the first SCPS Capabilities Option (and thus
ignored all extended capabilities) would be compliant.
Acknowledgements
This document draws heavily from discussions on the CCSDS SIS_SCPS-INTEREST mailing list, including but not
limited to postings by Patrick Feighery, Jerry Toporek, Eric Travis, and Charlie Younghusband.
References
[1] CCSDS 714.0-B-1. Space Communications Protocol Specification (SCPS)—Transport Protocol (SCPS-TP).
Blue Book. Issue 1. May 1999.
[2] J. Postel. Transmission Control Protocol. STD 7, September 1981. [RFC 793]
[3] "Data Processing - Open Systems Interconnection - Basic Reference Model", ISO/TC97/SC16/DIS7498
[4] Space Communications Protocol Specification (SCPS)—Network Protocol (SCPS-NP). Recommendation for
Space Data System Standards, CCSDS 713.0-B-1. Blue Book. Issue 1. Washington, D.C.: CCSDS, May 1999.
[5] Space Communications Protocol Specification (SCPS)—Security Protocol (SCPS-SP). Recommendation for
Space Data System Standards, CCSDS 713.5-B-1. Blue Book. Issue 1. Washington, D.C.: CCSDS, May 1999.
[6] Space Communications Protocol Specification (SCPS)—File Protocol (SCPS-FP). Recommendation for Space
Data System Standards, CCSDS 717.0-B-1. Blue Book. Issue 1. Washington, D.C.: CCSDS, May 1999.
[7] J. Border et. al. Performance Enhancing Proxies Intended to Mitigate Link-Related Degradations. RFC 3135,
June 2001
CCSDS CONCEPT PAPER
Page 9
Download