30fffab by Aleksandar Sasha Babic at 2009-09-25 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