| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
Network Working Group H. Kennedy |
| 8 |
Request for Comments: 3252 Mimezine |
| 9 |
Category: Informational 1 April 2002 |
| 10 |
|
| 11 |
|
| 12 |
Binary Lexical Octet Ad-hoc Transport |
| 13 |
|
| 14 |
Status of this Memo |
| 15 |
|
| 16 |
This memo provides information for the Internet community. It does |
| 17 |
not specify an Internet standard of any kind. Distribution of this |
| 18 |
memo is unlimited. |
| 19 |
|
| 20 |
Copyright Notice |
| 21 |
|
| 22 |
Copyright (C) The Internet Society (2002). All Rights Reserved. |
| 23 |
|
| 24 |
Abstract |
| 25 |
|
| 26 |
This document defines a reformulation of IP and two transport layer |
| 27 |
protocols (TCP and UDP) as XML applications. |
| 28 |
|
| 29 |
1. Introduction |
| 30 |
|
| 31 |
1.1. Overview |
| 32 |
|
| 33 |
This document describes the Binary Lexical Octet Ad-hoc Transport |
| 34 |
(BLOAT): a reformulation of a widely-deployed network-layer protocol |
| 35 |
(IP [RFC791]), and two associated transport layer protocols (TCP |
| 36 |
[RFC793] and UDP [RFC768]) as XML [XML] applications. It also |
| 37 |
describes methods for transporting BLOAT over Ethernet and IEEE 802 |
| 38 |
networks as well as encapsulating BLOAT in IP for gatewaying BLOAT |
| 39 |
across the public Internet. |
| 40 |
|
| 41 |
1.2. Motivation |
| 42 |
|
| 43 |
The wild popularity of XML as a basis for application-level protocols |
| 44 |
such as the Blocks Extensible Exchange Protocol [RFC3080], the Simple |
| 45 |
Object Access Protocol [SOAP], and Jabber [JABBER] prompted |
| 46 |
investigation into the possibility of extending the use of XML in the |
| 47 |
protocol stack. Using XML at both the transport and network layer in |
| 48 |
addition to the application layer would provide for an amazing amount |
| 49 |
of power and flexibility while removing dependencies on proprietary |
| 50 |
and hard-to-understand binary protocols. This protocol unification |
| 51 |
would also allow applications to use a single XML parser for all |
| 52 |
aspects of their operation, eliminating developer time spent figuring |
| 53 |
out the intricacies of each new protocol, and moving the hard work of |
| 54 |
|
| 55 |
|
| 56 |
|
| 57 |
|
| 58 |
Kennedy Informational [Page 1] |
| 59 |
|
| 60 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 61 |
|
| 62 |
|
| 63 |
parsing to the XML toolset. The use of XML also mitigates concerns |
| 64 |
over "network vs. host" byte ordering which is at the root of many |
| 65 |
network application bugs. |
| 66 |
|
| 67 |
1.3. Relation to Existing Protocols |
| 68 |
|
| 69 |
The reformulations specified in this RFC follow as closely as |
| 70 |
possible the spirit of the RFCs on which they are based, and so MAY |
| 71 |
contain elements or attributes that would not be needed in a pure |
| 72 |
reworking (e.g. length attributes, which are implicit in XML.) |
| 73 |
|
| 74 |
The layering of network and transport protocols are maintained in |
| 75 |
this RFC despite the optimizations that could be made if the line |
| 76 |
were somewhat blurred (i.e. merging TCP and IP into a single, larger |
| 77 |
element in the DTD) in order to foster future use of this protocol as |
| 78 |
a basis for reformulating other protocols (such as ICMP.) |
| 79 |
|
| 80 |
Other than the encoding, the behavioral aspects of each of the |
| 81 |
existing protocols remain unchanged. Routing, address spaces, TCP |
| 82 |
congestion control, etc. behave as specified in the extant standards. |
| 83 |
Adapting to new standards and experimental algorithm heuristics for |
| 84 |
improving performance will become much easier once the move to BLOAT |
| 85 |
has been completed. |
| 86 |
|
| 87 |
1.4. Requirement Levels |
| 88 |
|
| 89 |
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", |
| 90 |
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this |
| 91 |
document are to be interpreted as described in BCP 14, RFC 2119 |
| 92 |
[RFC2119]. |
| 93 |
|
| 94 |
2. IPoXML |
| 95 |
|
| 96 |
This protocol MUST be implemented to be compliant with this RFC. |
| 97 |
IPoXML is the root protocol REQUIRED for effective use of TCPoXML |
| 98 |
(section 3.) and higher-level application protocols. |
| 99 |
|
| 100 |
The DTD for this document type can be found in section 7.1. |
| 101 |
|
| 102 |
The routing of IPoXML can be easily implemented on hosts with an XML |
| 103 |
parser, as the regular structure lends itself handily to parsing and |
| 104 |
validation of the document/datagram and then processing the |
| 105 |
destination address, TTL, and checksum before sending it on to its |
| 106 |
next-hop. |
| 107 |
|
| 108 |
The reformulation of IPv4 was chosen over IPv6 [RFC2460] due to the |
| 109 |
wider deployment of IPv4 and the fact that implementing IPv6 as XML |
| 110 |
would have exceeded the 1500 byte Ethernet MTU. |
| 111 |
|
| 112 |
|
| 113 |
|
| 114 |
Kennedy Informational [Page 2] |
| 115 |
|
| 116 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 117 |
|
| 118 |
|
| 119 |
All BLOAT implementations MUST use - and specify - the UTF-8 encoding |
| 120 |
of RFC 2279 [RFC2279]. All BLOAT document/datagrams MUST be well- |
| 121 |
formed and include the XMLDecl. |
| 122 |
|
| 123 |
2.1. IP Description |
| 124 |
|
| 125 |
A number of items have changed (for the better) from the original IP |
| 126 |
specification. Bit-masks, where present have been converted into |
| 127 |
human-readable values. IP addresses are listed in their dotted- |
| 128 |
decimal notation [RFC1123]. Length and checksum values are present |
| 129 |
as decimal integers. |
| 130 |
|
| 131 |
To calculate the length and checksum fields of the IP element, a |
| 132 |
canonicalized form of the element MUST be used. The canonical form |
| 133 |
SHALL have no whitespace (including newline characters) between |
| 134 |
elements and only one space character between attributes. There |
| 135 |
SHALL NOT be a space following the last attribute in an element. |
| 136 |
|
| 137 |
An iterative method SHOULD be used to calculate checksums, as the |
| 138 |
length field will vary based on the size of the checksum. |
| 139 |
|
| 140 |
The payload element bears special attention. Due to the character |
| 141 |
set restrictions of XML, the payload of IP datagrams (which MAY |
| 142 |
contain arbitrary data) MUST be encoded for transport. This RFC |
| 143 |
REQUIRES the contents of the payload to be encoded in the base-64 |
| 144 |
encoding of RFC 2045 [RFC2045], but removes the requirement that the |
| 145 |
encoded output MUST be wrapped on 76-character lines. |
| 146 |
|
| 147 |
|
| 148 |
|
| 149 |
|
| 150 |
|
| 151 |
|
| 152 |
|
| 153 |
|
| 154 |
|
| 155 |
|
| 156 |
|
| 157 |
|
| 158 |
|
| 159 |
|
| 160 |
|
| 161 |
|
| 162 |
|
| 163 |
|
| 164 |
|
| 165 |
|
| 166 |
|
| 167 |
|
| 168 |
|
| 169 |
|
| 170 |
Kennedy Informational [Page 3] |
| 171 |
|
| 172 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 173 |
|
| 174 |
|
| 175 |
2.2. Example Datagram |
| 176 |
|
| 177 |
The following is an example IPoXML datagram with an empty payload: |
| 178 |
|
| 179 |
<?xml version="1.0" encoding="UTF-8"?> |
| 180 |
<!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd"> |
| 181 |
<ip> |
| 182 |
<header length="474"> |
| 183 |
<version value="4"/> |
| 184 |
<tos precedence="Routine" delay="Normal" throughput="Normal" |
| 185 |
relibility="Normal" reserved="0"/> |
| 186 |
<total.length value="461"/> |
| 187 |
<id value="1"/> |
| 188 |
<flags reserved="0" df="dont" mf="last"/> |
| 189 |
<offset value="0"/> |
| 190 |
<ttl value="255"/> |
| 191 |
<protocol value="6"/> |
| 192 |
<checksum value="8707"/> |
| 193 |
<source address="10.0.0.22"/> |
| 194 |
<destination address="10.0.0.1"/> |
| 195 |
<options> |
| 196 |
<end copied="0" class="0" number="0"/> |
| 197 |
</options> |
| 198 |
<padding pad="0"/> |
| 199 |
</header> |
| 200 |
<payload> |
| 201 |
</payload> |
| 202 |
</ip> |
| 203 |
|
| 204 |
3. TCPoXML |
| 205 |
|
| 206 |
This protocol MUST be implemented to be compliant with this RFC. The |
| 207 |
DTD for this document type can be found in section 7.2. |
| 208 |
|
| 209 |
3.1. TCP Description |
| 210 |
|
| 211 |
A number of items have changed from the original TCP specification. |
| 212 |
Bit-masks, where present have been converted into human-readable |
| 213 |
values. Length and checksum and port values are present as decimal |
| 214 |
integers. |
| 215 |
|
| 216 |
To calculate the length and checksum fields of the TCP element, a |
| 217 |
canonicalized form of the element MUST be used as in section 2.1. |
| 218 |
|
| 219 |
An iterative method SHOULD be used to calculate checksums as in |
| 220 |
section 2.1. |
| 221 |
|
| 222 |
The payload element MUST be encoded as in section 2.1. |
| 223 |
|
| 224 |
|
| 225 |
|
| 226 |
Kennedy Informational [Page 4] |
| 227 |
|
| 228 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 229 |
|
| 230 |
|
| 231 |
The TCP offset element was expanded to a maximum of 255 from 16 to |
| 232 |
allow for the increased size of the header in XML. |
| 233 |
|
| 234 |
TCPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header |
| 235 |
as well as the <!DOCTYPE> declaration. |
| 236 |
|
| 237 |
3.2. Example Datagram |
| 238 |
|
| 239 |
The following is an example TCPoXML datagram with an empty payload: |
| 240 |
|
| 241 |
<?xml version="1.0" encoding="UTF-8"?> |
| 242 |
<!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd"> |
| 243 |
<tcp> |
| 244 |
<tcp.header> |
| 245 |
<src port="31415"/> |
| 246 |
<dest port="42424"/> |
| 247 |
<sequence number="322622954"/> |
| 248 |
<acknowledgement number="689715995"/> |
| 249 |
<offset number=""/> |
| 250 |
<reserved value="0"/> |
| 251 |
<control syn="1" ack="1"/> |
| 252 |
<window size="1"/> |
| 253 |
<urgent pointer="0"/> |
| 254 |
<checksum value="2988"/> |
| 255 |
<tcp.options> |
| 256 |
<tcp.end kind="0"/> |
| 257 |
</tcp.options> |
| 258 |
<padding pad="0"/> |
| 259 |
</tcp.header> |
| 260 |
<payload> |
| 261 |
</payload> |
| 262 |
</tcp> |
| 263 |
|
| 264 |
4. UDPoXML |
| 265 |
|
| 266 |
This protocol MUST be implemented to be compliant with this RFC. The |
| 267 |
DTD for this document type can be found in section 7.3. |
| 268 |
|
| 269 |
4.1. UDP Description |
| 270 |
|
| 271 |
A number of items have changed from the original UDP specification. |
| 272 |
Bit-masks, where present have been converted into human-readable |
| 273 |
values. Length and checksum and port values are present as decimal |
| 274 |
integers. |
| 275 |
|
| 276 |
|
| 277 |
|
| 278 |
|
| 279 |
|
| 280 |
|
| 281 |
|
| 282 |
Kennedy Informational [Page 5] |
| 283 |
|
| 284 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 285 |
|
| 286 |
|
| 287 |
To calculate the length and checksum fields of the UDP element, a |
| 288 |
canonicalized form of the element MUST be used as in section 2.1. An |
| 289 |
iterative method SHOULD be used to calculate checksums as in section |
| 290 |
2.1. |
| 291 |
|
| 292 |
The payload element MUST be encoded as in section 2.1. |
| 293 |
|
| 294 |
UDPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header |
| 295 |
as well as the <!DOCTYPE> declaration. |
| 296 |
|
| 297 |
4.2. Example Datagram |
| 298 |
|
| 299 |
The following is an example UDPoXML datagram with an empty payload: |
| 300 |
|
| 301 |
<?xml version="1.0" encoding="UTF-8"?> |
| 302 |
<!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd"> |
| 303 |
<udp> |
| 304 |
<udp.header> |
| 305 |
<src port="31415"/> |
| 306 |
<dest port="42424"/> |
| 307 |
<udp.length value="143"/> |
| 308 |
<checksum value="2988"/> |
| 309 |
</udp.header> |
| 310 |
<payload> |
| 311 |
</payload> |
| 312 |
</udp> |
| 313 |
|
| 314 |
5. Network Transport |
| 315 |
|
| 316 |
This document provides for the transmission of BLOAT datagrams over |
| 317 |
two common families of physical layer transport. Future RFCs will |
| 318 |
address additional transports as routing vendors catch up to the |
| 319 |
specification, and we begin to see BLOAT routed across the Internet |
| 320 |
backbone. |
| 321 |
|
| 322 |
5.1. Ethernet |
| 323 |
|
| 324 |
BLOAT is encapsulated in Ethernet datagrams as in [RFC894] with the |
| 325 |
exception that the type field of the Ethernet frame MUST contain the |
| 326 |
value 0xBEEF. The first 5 octets of the Ethernet frame payload will |
| 327 |
be 0x3c 3f 78 6d 6c ("<?xml".) |
| 328 |
|
| 329 |
5.2. IEEE 802 |
| 330 |
|
| 331 |
BLOAT is encapsulated in IEEE 802 Networks as in [RFC1042] except |
| 332 |
that the protocol type code for IPoXML is 0xBEEF. |
| 333 |
|
| 334 |
|
| 335 |
|
| 336 |
|
| 337 |
|
| 338 |
Kennedy Informational [Page 6] |
| 339 |
|
| 340 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 341 |
|
| 342 |
|
| 343 |
6. Gatewaying over IP |
| 344 |
|
| 345 |
In order to facilitate the gradual introduction of BLOAT into the |
| 346 |
public Internet, BLOAT MAY be encapsulated in IP as in [RFC2003] to |
| 347 |
gateway between networks that run BLOAT natively on their LANs. |
| 348 |
|
| 349 |
7. DTDs |
| 350 |
|
| 351 |
The Transport DTDs (7.2. and 7.3.) build on the definitions in the |
| 352 |
Network DTD (7.1.) |
| 353 |
|
| 354 |
The DTDs are referenced by their PubidLiteral and SystemLiteral (from |
| 355 |
[XML]) although it is understood that most IPoXML implementations |
| 356 |
will not need to pull down the DTD, as it will normally be embedded |
| 357 |
in the implementation, and presents something of a catch-22 if you |
| 358 |
need to load part of your network protocol over the network. |
| 359 |
|
| 360 |
7.1. IPoXML DTD |
| 361 |
|
| 362 |
<!-- |
| 363 |
DTD for IP over XML. |
| 364 |
Refer to this DTD as: |
| 365 |
|
| 366 |
<!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd"> |
| 367 |
--> |
| 368 |
<!-- |
| 369 |
DTD data types: |
| 370 |
|
| 371 |
Digits [0..9]+ |
| 372 |
|
| 373 |
Precedence "NetworkControl | InternetworkControl | |
| 374 |
CRITIC | FlashOverride | Flash | Immediate | |
| 375 |
Priority | Routine" |
| 376 |
|
| 377 |
IP4Addr "dotted-decimal" notation of [RFC1123] |
| 378 |
|
| 379 |
Class [0..3] |
| 380 |
|
| 381 |
Sec "Unclassified | Confidential | EFTO | MMMM | PROG | |
| 382 |
Restricted | Secret | Top Secret | Reserved" |
| 383 |
|
| 384 |
Compartments [0..65535] |
| 385 |
|
| 386 |
Handling [0..65535] |
| 387 |
|
| 388 |
TCC [0..16777216] |
| 389 |
|
| 390 |
--> |
| 391 |
|
| 392 |
|
| 393 |
|
| 394 |
Kennedy Informational [Page 7] |
| 395 |
|
| 396 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 397 |
|
| 398 |
|
| 399 |
<!ENTITY % Digits "CDATA"> |
| 400 |
<!ENTITY % Precedence "CDATA"> |
| 401 |
<!ENTITY % IP4Addr "CDATA"> |
| 402 |
<!ENTITY % Class "CDATA"> |
| 403 |
<!ENTITY % Sec "CDATA"> |
| 404 |
<!ENTITY % Compartments "CDATA"> |
| 405 |
<!ENTITY % Handling "CDATA"> |
| 406 |
<!ENTITY % TCC "CDATA"> |
| 407 |
|
| 408 |
<!ELEMENT ip (header, payload)> |
| 409 |
|
| 410 |
<!ELEMENT header (version, tos, total.length, id, flags, offset, ttl, |
| 411 |
protocol, checksum, source, destination, options, |
| 412 |
padding)> |
| 413 |
<!-- length of header in 32-bit words --> |
| 414 |
<!ATTLIST header |
| 415 |
length %Digits; #REQUIRED> |
| 416 |
|
| 417 |
<!ELEMENT version EMPTY> |
| 418 |
<!-- ip version. SHOULD be "4" --> |
| 419 |
<!ATTLIST version |
| 420 |
value %Digits; #REQUIRED> |
| 421 |
|
| 422 |
<!ELEMENT tos EMPTY> |
| 423 |
<!ATTLIST tos |
| 424 |
precedence %Precedence; #REQUIRED |
| 425 |
delay (normal | low) #REQUIRED |
| 426 |
throughput (normal | high) #REQUIRED |
| 427 |
relibility (normal | high) #REQUIRED |
| 428 |
reserved CDATA #FIXED "0"> |
| 429 |
|
| 430 |
<!ELEMENT total.length EMPTY> |
| 431 |
<!-- |
| 432 |
total length of datagram (header and payload) in octets, MUST be |
| 433 |
less than 65,535 (and SHOULD be less than 1024 for IPoXML on local |
| 434 |
ethernets). |
| 435 |
--> |
| 436 |
<!ATTLIST total.length |
| 437 |
value %Digits; #REQUIRED> |
| 438 |
|
| 439 |
<!ELEMENT id EMPTY> |
| 440 |
<!-- 0 <= id <= 65,535 --> |
| 441 |
<!ATTLIST id |
| 442 |
value %Digits; #REQUIRED> |
| 443 |
|
| 444 |
<!ELEMENT flags EMPTY> |
| 445 |
<!-- df = don't fragment, mf = more fragments --> |
| 446 |
<!ATTLIST flags |
| 447 |
|
| 448 |
|
| 449 |
|
| 450 |
Kennedy Informational [Page 8] |
| 451 |
|
| 452 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 453 |
|
| 454 |
|
| 455 |
reserved CDATA #FIXED "0" |
| 456 |
df (may|dont) #REQUIRED |
| 457 |
mf (last|more) #REQUIRED> |
| 458 |
|
| 459 |
<!ELEMENT offset EMPTY> |
| 460 |
<!-- 0 <= offset <= 8192 measured in 8 octet (64-bit) chunks --> |
| 461 |
<!ATTLIST offset |
| 462 |
value %Digits; #REQUIRED> |
| 463 |
|
| 464 |
<!ELEMENT ttl EMPTY> |
| 465 |
<!-- 0 <= ttl <= 255 --> |
| 466 |
<!ATTLIST ttl |
| 467 |
value %Digits; #REQUIRED> |
| 468 |
|
| 469 |
<!ELEMENT protocol EMPTY> |
| 470 |
<!-- 0 <= protocol <= 255 (per IANA) --> |
| 471 |
<!ATTLIST protocol |
| 472 |
value %Digits; #REQUIRED> |
| 473 |
|
| 474 |
<!ELEMENT checksum EMPTY> |
| 475 |
<!-- 0 <= checksum <= 65535 (over header only) --> |
| 476 |
<!ATTLIST checksum |
| 477 |
value %Digits; #REQUIRED> |
| 478 |
|
| 479 |
<!ELEMENT source EMPTY> |
| 480 |
<!ATTLIST source |
| 481 |
address %IP4Addr; #REQUIRED> |
| 482 |
|
| 483 |
<!ELEMENT destination EMPTY> |
| 484 |
<!ATTLIST destination |
| 485 |
address %IP4Addr; #REQUIRED> |
| 486 |
|
| 487 |
<!ELEMENT options ( end | noop | security | loose | strict | record |
| 488 |
| stream | timestamp )*> |
| 489 |
|
| 490 |
<!ELEMENT end EMPTY> |
| 491 |
<!ATTLIST end |
| 492 |
copied (0|1) #REQUIRED |
| 493 |
class CDATA #FIXED "0" |
| 494 |
number CDATA #FIXED "0"> |
| 495 |
|
| 496 |
<!ELEMENT noop EMPTY> |
| 497 |
<!ATTLIST noop |
| 498 |
copied (0|1) #REQUIRED |
| 499 |
class CDATA #FIXED "0" |
| 500 |
number CDATA #FIXED "1"> |
| 501 |
|
| 502 |
<!ELEMENT security EMPTY> |
| 503 |
|
| 504 |
|
| 505 |
|
| 506 |
Kennedy Informational [Page 9] |
| 507 |
|
| 508 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 509 |
|
| 510 |
|
| 511 |
<!ATTLIST security |
| 512 |
copied CDATA #FIXED "1" |
| 513 |
class CDATA #FIXED "0" |
| 514 |
number CDATA #FIXED "2" |
| 515 |
length CDATA #FIXED "11" |
| 516 |
security %Sec; #REQUIRED |
| 517 |
compartments %Compartments; #REQUIRED |
| 518 |
handling %Handling; #REQUIRED |
| 519 |
tcc %TCC; #REQUIRED> |
| 520 |
<!ELEMENT loose (hop)+> |
| 521 |
<!ATTLIST loose |
| 522 |
copied CDATA #FIXED "1" |
| 523 |
class CDATA #FIXED "0" |
| 524 |
number CDATA #FIXED "3" |
| 525 |
length %Digits; #REQUIRED |
| 526 |
pointer %Digits; #REQUIRED> |
| 527 |
|
| 528 |
<!ELEMENT hop EMPTY> |
| 529 |
<!ATTLIST hop |
| 530 |
address %IP4Addr; #REQUIRED> |
| 531 |
|
| 532 |
<!ELEMENT strict (hop)+> |
| 533 |
<!ATTLIST strict |
| 534 |
copied CDATA #FIXED "1" |
| 535 |
class CDATA #FIXED "0" |
| 536 |
number CDATA #FIXED "9" |
| 537 |
length %Digits; #REQUIRED |
| 538 |
pointer %Digits; #REQUIRED> |
| 539 |
|
| 540 |
<!ELEMENT record (hop)+> |
| 541 |
<!ATTLIST record |
| 542 |
copied CDATA #FIXED "0" |
| 543 |
class CDATA #FIXED "0" |
| 544 |
number CDATA #FIXED "7" |
| 545 |
length %Digits; #REQUIRED |
| 546 |
pointer %Digits; #REQUIRED> |
| 547 |
|
| 548 |
<!ELEMENT stream EMPTY> |
| 549 |
<!-- 0 <= id <= 65,535 --> |
| 550 |
<!ATTLIST stream |
| 551 |
copied CDATA #FIXED "1" |
| 552 |
class CDATA #FIXED "0" |
| 553 |
number CDATA #FIXED "8" |
| 554 |
length CDATA #FIXED "4" |
| 555 |
id %Digits; #REQUIRED> |
| 556 |
|
| 557 |
<!ELEMENT timestamp (tstamp)+> |
| 558 |
<!-- 0 <= oflw <=15 --> |
| 559 |
|
| 560 |
|
| 561 |
|
| 562 |
Kennedy Informational [Page 10] |
| 563 |
|
| 564 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 565 |
|
| 566 |
|
| 567 |
<!ATTLIST timestamp |
| 568 |
copied CDATA #FIXED "0" |
| 569 |
class CDATA #FIXED "2" |
| 570 |
number CDATA #FIXED "4" |
| 571 |
length %Digits; #REQUIRED |
| 572 |
pointer %Digits; #REQUIRED |
| 573 |
oflw %Digits; #REQUIRED |
| 574 |
flag (0 | 1 | 3) #REQUIRED> |
| 575 |
|
| 576 |
<!ELEMENT tstamp EMPTY> |
| 577 |
<!ATTLIST tstamp |
| 578 |
time %Digits; #REQUIRED |
| 579 |
address %IP4Addr; #IMPLIED> |
| 580 |
<!-- |
| 581 |
padding to bring header to 32-bit boundary. |
| 582 |
pad MUST be "0"* |
| 583 |
--> |
| 584 |
<!ELEMENT padding EMPTY> |
| 585 |
<!ATTLIST padding |
| 586 |
pad CDATA #REQUIRED> |
| 587 |
|
| 588 |
<!-- payload MUST be encoded as base-64 [RFC2045], as modified |
| 589 |
by section 2.1 of this RFC --> |
| 590 |
<!ELEMENT payload (CDATA)> |
| 591 |
|
| 592 |
7.2. TCPoXML DTD |
| 593 |
|
| 594 |
<!-- |
| 595 |
DTD for TCP over XML. |
| 596 |
Refer to this DTD as: |
| 597 |
|
| 598 |
<!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd"> |
| 599 |
--> |
| 600 |
|
| 601 |
<!-- the pseudoheader is only included for checksum calculations --> |
| 602 |
<!ELEMENT tcp (tcp.pseudoheader?, tcp.header, payload)> |
| 603 |
|
| 604 |
<!ELEMENT tcp.header (src, dest, sequence, acknowledgement, offset, |
| 605 |
reserved, control, window, checksum, urgent, |
| 606 |
tcp.options, padding)> |
| 607 |
|
| 608 |
<!ELEMENT src EMPTY> |
| 609 |
<!-- 0 <= port <= 65,535 --> |
| 610 |
<!ATTLIST src |
| 611 |
port %Digits; #REQUIRED> |
| 612 |
|
| 613 |
<!ELEMENT dest EMPTY> |
| 614 |
<!-- 0 <= port <= 65,535 --> |
| 615 |
|
| 616 |
|
| 617 |
|
| 618 |
Kennedy Informational [Page 11] |
| 619 |
|
| 620 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 621 |
|
| 622 |
|
| 623 |
<!ATTLIST dest |
| 624 |
port %Digits; #REQUIRED> |
| 625 |
|
| 626 |
<!ELEMENT sequence EMPTY> |
| 627 |
<!-- 0 <= number <= 4294967295 --> |
| 628 |
<!ATTLIST sequence |
| 629 |
number %Digits; #REQUIRED> |
| 630 |
|
| 631 |
<!ELEMENT acknowledgement EMPTY> |
| 632 |
<!-- 0 <= number <= 4294967295 --> |
| 633 |
<!ATTLIST acknowledgement |
| 634 |
number %Digits; #REQUIRED> |
| 635 |
|
| 636 |
<!ELEMENT offset EMPTY> |
| 637 |
<!-- 0 <= number <= 255 --> |
| 638 |
<!ATTLIST offset |
| 639 |
number %Digits; #REQUIRED> |
| 640 |
|
| 641 |
<!ELEMENT reserved EMPTY> |
| 642 |
<!ATTLIST reserved |
| 643 |
value CDATA #FIXED "0"> |
| 644 |
|
| 645 |
<!ELEMENT control EMPTY> |
| 646 |
<!ATTLIST control |
| 647 |
urg (0|1) #IMPLIED |
| 648 |
ack (0|1) #IMPLIED |
| 649 |
psh (0|1) #IMPLIED |
| 650 |
rst (0|1) #IMPLIED |
| 651 |
syn (0|1) #IMPLIED |
| 652 |
fin (0|1) #IMPLIED> |
| 653 |
|
| 654 |
<!ELEMENT window EMPTY> |
| 655 |
<!-- 0 <= size <= 65,535 --> |
| 656 |
<!ATTLIST window |
| 657 |
size %Digits; #REQUIRED> |
| 658 |
|
| 659 |
<!-- |
| 660 |
checksum as in ip, but with |
| 661 |
the following pseudo-header added into the tcp element: |
| 662 |
--> |
| 663 |
<!ELEMENT tcp.pseudoheader (source, destination, protocol, |
| 664 |
tcp.length)> |
| 665 |
|
| 666 |
<!-- |
| 667 |
tcp header + data length in octets. does not include the size of |
| 668 |
|
| 669 |
the pseudoheader. |
| 670 |
--> |
| 671 |
|
| 672 |
|
| 673 |
|
| 674 |
Kennedy Informational [Page 12] |
| 675 |
|
| 676 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 677 |
|
| 678 |
|
| 679 |
<!ELEMENT tcp.length EMPTY> |
| 680 |
<!ATTLIST tcp.length |
| 681 |
value %Digits; #REQUIRED> |
| 682 |
|
| 683 |
<!ELEMENT urgent EMPTY> |
| 684 |
<!-- 0 <= pointer <= 65,535 --> |
| 685 |
<!ATTLIST urgent |
| 686 |
pointer %Digits; #REQUIRED> |
| 687 |
|
| 688 |
<!ELEMENT tcp.options (tcp.end | tcp.noop | tcp.mss)+> |
| 689 |
|
| 690 |
<!ELEMENT tcp.end EMPTY> |
| 691 |
<!ATTLIST tcp.end |
| 692 |
kind CDATA #FIXED "0"> |
| 693 |
|
| 694 |
<!ELEMENT tcp.noop EMPTY> |
| 695 |
<!ATTLIST tcp.noop |
| 696 |
kind CDATA #FIXED "1"> |
| 697 |
|
| 698 |
<!ELEMENT tcp.mss EMPTY> |
| 699 |
<!ATTLIST tcp.mss |
| 700 |
kind CDATA #FIXED "2" |
| 701 |
length CDATA #FIXED "4" |
| 702 |
size %Digits; #REQUIRED> |
| 703 |
|
| 704 |
7.3. UDPoXML DTD |
| 705 |
|
| 706 |
<!-- |
| 707 |
DTD for UDP over XML. |
| 708 |
Refer to this DTD as: |
| 709 |
|
| 710 |
<!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd"> |
| 711 |
--> |
| 712 |
|
| 713 |
<!ELEMENT udp (udp.pseudoheader?, udp.header, payload)> |
| 714 |
|
| 715 |
<!ELEMENT udp.header (src, dest, udp.length, checksum)> |
| 716 |
|
| 717 |
<!ELEMENT udp.pseudoheader (source, destination, protocol, |
| 718 |
udp.length)> |
| 719 |
|
| 720 |
<!-- |
| 721 |
udp header + data length in octets. does not include the size of |
| 722 |
the pseudoheader. |
| 723 |
--> |
| 724 |
<!ELEMENT udp.length EMPTY> |
| 725 |
<!ATTLIST udp.length |
| 726 |
value %Digits; #REQUIRED> |
| 727 |
|
| 728 |
|
| 729 |
|
| 730 |
Kennedy Informational [Page 13] |
| 731 |
|
| 732 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 733 |
|
| 734 |
|
| 735 |
8. Security Considerations |
| 736 |
|
| 737 |
XML, as a subset of SGML, has the same security considerations as |
| 738 |
specified in SGML Media Types [RFC1874]. Security considerations |
| 739 |
that apply to IP, TCP and UDP also likely apply to BLOAT as it does |
| 740 |
not attempt to correct for issues not related to message format. |
| 741 |
|
| 742 |
9. References |
| 743 |
|
| 744 |
[JABBER] Miller, J., "Jabber", draft-miller-jabber-00.txt, |
| 745 |
February 2002. (Work in Progress) |
| 746 |
|
| 747 |
[RFC768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, |
| 748 |
August 1980. |
| 749 |
|
| 750 |
[RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, |
| 751 |
September 1981. |
| 752 |
|
| 753 |
[RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC |
| 754 |
793, September 1981. |
| 755 |
|
| 756 |
[RFC894] Hornig, C., "Standard for the Transmission of IP |
| 757 |
Datagrams over Ethernet Networks.", RFC 894, April 1984. |
| 758 |
|
| 759 |
[RFC1042] Postel, J. and J. Reynolds, "Standard for the |
| 760 |
Transmission of IP Datagrams Over IEEE 802 Networks", STD |
| 761 |
43, RFC 1042, February 1988. |
| 762 |
|
| 763 |
[RFC1123] Braden, R., "Requirements for Internet Hosts - |
| 764 |
Application and Support", RFC 1123, October 1989. |
| 765 |
|
| 766 |
[RFC1874] Levinson, E., "SGML Media Types", RFC 1874, December |
| 767 |
1995. |
| 768 |
|
| 769 |
[RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003, |
| 770 |
October 1996. |
| 771 |
|
| 772 |
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail |
| 773 |
Extensions (MIME) Part One: Format of Internet Message |
| 774 |
Bodies", RFC 2045, November 1996. |
| 775 |
|
| 776 |
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate |
| 777 |
Requirement Levels", BCP 14, RFC 2119, March 1997. |
| 778 |
|
| 779 |
[RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO |
| 780 |
10646", RFC 2279, January 1998. |
| 781 |
|
| 782 |
|
| 783 |
|
| 784 |
|
| 785 |
|
| 786 |
Kennedy Informational [Page 14] |
| 787 |
|
| 788 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 789 |
|
| 790 |
|
| 791 |
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 |
| 792 |
(IPv6) Specification", RFC 2460, December 1998. |
| 793 |
|
| 794 |
[RFC3080] Rose, M., "The Blocks Extensible Exchange Protocol Core", |
| 795 |
RFC 3080, March 2001. |
| 796 |
|
| 797 |
[SOAP] Box, D., Ehnebuske, D., Kakivaya, G., Layman, A., |
| 798 |
Mendelsohn, N., Nielsen, H. F., Thatte, S. Winer, D., |
| 799 |
"Simple Object Access Protocol (SOAP) 1.1" World Wide Web |
| 800 |
Consortium Note, May 2000 http://www.w3.org/TR/SOAP/ |
| 801 |
|
| 802 |
[XML] Bray, T., Paoli, J., Sperberg-McQueen, C. M., "Extensible |
| 803 |
Markup Language (XML)" World Wide Web Consortium |
| 804 |
Recommendation REC- xml-19980210. |
| 805 |
http://www.w3.org/TR/1998/REC-xml-19980210 |
| 806 |
|
| 807 |
10. Author's Address |
| 808 |
|
| 809 |
Hugh Kennedy |
| 810 |
Mimezine |
| 811 |
1060 West Addison |
| 812 |
Chicago, IL 60613 |
| 813 |
USA |
| 814 |
|
| 815 |
EMail: kennedyh@engin.umich.edu |
| 816 |
|
| 817 |
|
| 818 |
|
| 819 |
|
| 820 |
|
| 821 |
|
| 822 |
|
| 823 |
|
| 824 |
|
| 825 |
|
| 826 |
|
| 827 |
|
| 828 |
|
| 829 |
|
| 830 |
|
| 831 |
|
| 832 |
|
| 833 |
|
| 834 |
|
| 835 |
|
| 836 |
|
| 837 |
|
| 838 |
|
| 839 |
|
| 840 |
|
| 841 |
|
| 842 |
Kennedy Informational [Page 15] |
| 843 |
|
| 844 |
RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 |
| 845 |
|
| 846 |
|
| 847 |
11. Full Copyright Statement |
| 848 |
|
| 849 |
Copyright (C) The Internet Society (2002). All Rights Reserved. |
| 850 |
|
| 851 |
This document and translations of it may be copied and furnished to |
| 852 |
others, and derivative works that comment on or otherwise explain it |
| 853 |
or assist in its implementation may be prepared, copied, published |
| 854 |
and distributed, in whole or in part, without restriction of any |
| 855 |
kind, provided that the above copyright notice and this paragraph are |
| 856 |
included on all such copies and derivative works. However, this |
| 857 |
document itself may not be modified in any way, such as by removing |
| 858 |
the copyright notice or references to the Internet Society or other |
| 859 |
Internet organizations, except as needed for the purpose of |
| 860 |
developing Internet standards in which case the procedures for |
| 861 |
copyrights defined in the Internet Standards process must be |
| 862 |
followed, or as required to translate it into languages other than |
| 863 |
English. |
| 864 |
|
| 865 |
The limited permissions granted above are perpetual and will not be |
| 866 |
revoked by the Internet Society or its successors or assigns. |
| 867 |
|
| 868 |
This document and the information contained herein is provided on an |
| 869 |
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING |
| 870 |
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING |
| 871 |
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION |
| 872 |
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF |
| 873 |
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. |
| 874 |
|
| 875 |
Acknowledgement |
| 876 |
|
| 877 |
Funding for the RFC Editor function is currently provided by the |
| 878 |
Internet Society. |
| 879 |
|
| 880 |
|
| 881 |
|
| 882 |
|
| 883 |
|
| 884 |
|
| 885 |
|
| 886 |
|
| 887 |
|
| 888 |
|
| 889 |
|
| 890 |
|
| 891 |
|
| 892 |
|
| 893 |
|
| 894 |
|
| 895 |
|
| 896 |
|
| 897 |
|
| 898 |
Kennedy Informational [Page 16] |
| 899 |
|