asciidoctor-rfc 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.oss-guides.rubocop.yml +1077 -0
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +19 -1063
  6. data/.travis.yml +3 -2
  7. data/Guardfile +22 -0
  8. data/README.adoc +1151 -0
  9. data/Rakefile +1 -1
  10. data/asciidoctor-rfc.gemspec +20 -3
  11. data/bin/asciidoctor-rfc2 +15 -0
  12. data/bin/asciidoctor-rfc3 +15 -0
  13. data/bin/rspec +0 -1
  14. data/lib/asciidoctor-rfc.rb +4 -0
  15. data/lib/asciidoctor/rfc/common/base.rb +218 -0
  16. data/lib/asciidoctor/rfc/common/front.rb +120 -0
  17. data/lib/asciidoctor/rfc/v2/base.rb +341 -0
  18. data/lib/asciidoctor/rfc/v2/blocks.rb +192 -0
  19. data/lib/asciidoctor/rfc/v2/converter.rb +64 -0
  20. data/lib/asciidoctor/rfc/v2/front.rb +69 -0
  21. data/lib/asciidoctor/rfc/v2/inline_anchor.rb +102 -0
  22. data/lib/asciidoctor/rfc/v2/lists.rb +134 -0
  23. data/lib/asciidoctor/rfc/v2/table.rb +112 -0
  24. data/lib/asciidoctor/rfc/v2/validate.rb +738 -0
  25. data/lib/asciidoctor/rfc/v2/validate2.rng +716 -0
  26. data/lib/asciidoctor/rfc/v3/base.rb +358 -0
  27. data/lib/asciidoctor/rfc/v3/blocks.rb +203 -0
  28. data/lib/asciidoctor/rfc/v3/converter.rb +64 -0
  29. data/lib/asciidoctor/rfc/v3/front.rb +115 -0
  30. data/lib/asciidoctor/rfc/v3/inline_anchor.rb +90 -0
  31. data/lib/asciidoctor/rfc/v3/lists.rb +190 -0
  32. data/lib/asciidoctor/rfc/v3/svg.rng +9081 -0
  33. data/lib/asciidoctor/rfc/v3/table.rb +65 -0
  34. data/lib/asciidoctor/rfc/v3/validate.rb +2168 -0
  35. data/lib/asciidoctor/rfc/v3/validate.rng +2143 -0
  36. data/lib/asciidoctor/rfc/version.rb +2 -2
  37. data/spec/asciidoctor/rfc/v2/appendix_spec.rb +124 -0
  38. data/spec/asciidoctor/rfc/v2/area_spec.rb +60 -0
  39. data/spec/asciidoctor/rfc/v2/author_spec.rb +444 -0
  40. data/spec/asciidoctor/rfc/v2/comments_spec.rb +316 -0
  41. data/spec/asciidoctor/rfc/v2/crossref_spec.rb +205 -0
  42. data/spec/asciidoctor/rfc/v2/date_spec.rb +166 -0
  43. data/spec/asciidoctor/rfc/v2/dlist_spec.rb +108 -0
  44. data/spec/asciidoctor/rfc/v2/document_spec.rb +161 -0
  45. data/spec/asciidoctor/rfc/v2/example_spec.rb +50 -0
  46. data/spec/asciidoctor/rfc/v2/front_spec.rb +75 -0
  47. data/spec/asciidoctor/rfc/v2/image_spec.rb +81 -0
  48. data/spec/asciidoctor/rfc/v2/indexterm_spec.rb +66 -0
  49. data/spec/asciidoctor/rfc/v2/inline_formatting_spec.rb +177 -0
  50. data/spec/asciidoctor/rfc/v2/keyword_spec.rb +63 -0
  51. data/spec/asciidoctor/rfc/v2/listing_spec.rb +59 -0
  52. data/spec/asciidoctor/rfc/v2/literal_spec.rb +53 -0
  53. data/spec/asciidoctor/rfc/v2/olist_spec.rb +147 -0
  54. data/spec/asciidoctor/rfc/v2/paragraph_spec.rb +68 -0
  55. data/spec/asciidoctor/rfc/v2/preamble_spec.rb +140 -0
  56. data/spec/asciidoctor/rfc/v2/quote_spec.rb +24 -0
  57. data/spec/asciidoctor/rfc/v2/references_spec.rb +96 -0
  58. data/spec/asciidoctor/rfc/v2/section_spec.rb +260 -0
  59. data/spec/asciidoctor/rfc/v2/sidebar_spec.rb +32 -0
  60. data/spec/asciidoctor/rfc/v2/table_spec.rb +293 -0
  61. data/spec/asciidoctor/rfc/v2/ulist_spec.rb +96 -0
  62. data/spec/asciidoctor/rfc/v2/workgroup_spec.rb +60 -0
  63. data/spec/asciidoctor/rfc/v3/appendix_spec.rb +130 -0
  64. data/spec/asciidoctor/rfc/v3/area_spec.rb +63 -0
  65. data/spec/asciidoctor/rfc/v3/author_spec.rb +540 -0
  66. data/spec/asciidoctor/rfc/v3/comments_spec.rb +308 -0
  67. data/spec/asciidoctor/rfc/v3/crossref_spec.rb +269 -0
  68. data/spec/asciidoctor/rfc/v3/date_spec.rb +149 -0
  69. data/spec/asciidoctor/rfc/v3/dlist_spec.rb +121 -0
  70. data/spec/asciidoctor/rfc/v3/document_spec.rb +109 -0
  71. data/spec/asciidoctor/rfc/v3/example_spec.rb +34 -0
  72. data/spec/asciidoctor/rfc/v3/front_spec.rb +43 -0
  73. data/spec/asciidoctor/rfc/v3/image_spec.rb +81 -0
  74. data/spec/asciidoctor/rfc/v3/indexterm_spec.rb +69 -0
  75. data/spec/asciidoctor/rfc/v3/inline_formatting_spec.rb +319 -0
  76. data/spec/asciidoctor/rfc/v3/keyword_spec.rb +33 -0
  77. data/spec/asciidoctor/rfc/v3/link_spec.rb +34 -0
  78. data/spec/asciidoctor/rfc/v3/listing_spec.rb +59 -0
  79. data/spec/asciidoctor/rfc/v3/literal_spec.rb +51 -0
  80. data/spec/asciidoctor/rfc/v3/olist_spec.rb +168 -0
  81. data/spec/asciidoctor/rfc/v3/paragraph_spec.rb +73 -0
  82. data/spec/asciidoctor/rfc/v3/preamble_spec.rb +112 -0
  83. data/spec/asciidoctor/rfc/v3/quote_spec.rb +91 -0
  84. data/spec/asciidoctor/rfc/v3/references_spec.rb +147 -0
  85. data/spec/asciidoctor/rfc/v3/section_spec.rb +198 -0
  86. data/spec/asciidoctor/rfc/v3/series_info_spec.rb +151 -0
  87. data/spec/asciidoctor/rfc/v3/sidebar_spec.rb +30 -0
  88. data/spec/asciidoctor/rfc/v3/table_spec.rb +275 -0
  89. data/spec/asciidoctor/rfc/v3/ulist_spec.rb +74 -0
  90. data/spec/asciidoctor/rfc/v3/workgroup_spec.rb +33 -0
  91. data/spec/examples/davies-template-bare-06.adoc +361 -0
  92. data/spec/examples/davies-template-bare-06.xml.orig +426 -0
  93. data/spec/examples/example-v2.adoc +181 -0
  94. data/spec/examples/example-v2.xml +675 -0
  95. data/spec/examples/example-v3.adoc +185 -0
  96. data/spec/examples/example-v3.xml +1009 -0
  97. data/spec/examples/mib-doc-template-xml-06.adoc +596 -0
  98. data/spec/examples/mib-doc-template-xml-06.xml.orig +654 -0
  99. data/spec/examples/rfc1149.md +76 -0
  100. data/spec/examples/rfc1149.md.2.xml +94 -0
  101. data/spec/examples/rfc1149.md.3.xml +93 -0
  102. data/spec/examples/rfc1149.md.adoc +65 -0
  103. data/spec/examples/rfc2100.md +149 -0
  104. data/spec/examples/rfc2100.md.2.xml +169 -0
  105. data/spec/examples/rfc2100.md.3.xml +163 -0
  106. data/spec/examples/rfc2100.md.adoc +136 -0
  107. data/spec/examples/rfc3514.md +203 -0
  108. data/spec/examples/rfc3514.md.2.xml +238 -0
  109. data/spec/examples/rfc3514.md.3.xml +258 -0
  110. data/spec/examples/rfc3514.md.adoc +324 -0
  111. data/spec/examples/rfc5841.md +342 -0
  112. data/spec/examples/rfc5841.md.2.xml +393 -0
  113. data/spec/examples/rfc5841.md.3.xml +449 -0
  114. data/spec/examples/rfc5841.md.adoc +414 -0
  115. data/spec/examples/rfc6350.adoc +3499 -0
  116. data/spec/examples/rfc6350.bib +763 -0
  117. data/spec/examples/rfc748.md +79 -0
  118. data/spec/examples/rfc748.md.2.xml +116 -0
  119. data/spec/examples/rfc748.md.3.xml +109 -0
  120. data/spec/examples/rfc748.md.adoc +80 -0
  121. data/spec/examples/rfc7511.md +257 -0
  122. data/spec/examples/rfc7511.md.2.xml +300 -0
  123. data/spec/examples/rfc7511.md.3.xml +347 -0
  124. data/spec/examples/rfc7511.md.adoc +417 -0
  125. data/spec/spec_helper.rb +115 -5
  126. metadata +274 -9
  127. data/.hound.yml +0 -3
  128. data/README.md +0 -84
  129. data/lib/asciidoctor/rfc.rb +0 -7
  130. data/spec/asciidoctor-rfc/.keep +0 -0
@@ -0,0 +1,300 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE rfc SYSTEM 'rfc2629.dtd' []>
3
+ <rfc ipr="trust200902" category="info" docName="rfc-7511">
4
+ <?rfc toc="yes"?>
5
+ <?rfc symrefs="yes"?>
6
+ <?rfc sortrefs="yes"?>
7
+ <?rfc compact="yes"?>
8
+ <?rfc subcompact="no"?>
9
+ <?rfc private=""?>
10
+ <?rfc topblock="yes"?>
11
+ <?rfc comments="no"?>
12
+ <front>
13
+ <title abbrev="Scenic Routing for IPv6">Scenic Routing for IPv6</title>
14
+
15
+ <author initials="M." surname="Wilhelm" fullname="Maximilian Wilhelm">
16
+ <organization></organization>
17
+ <address>
18
+ <postal>
19
+ <street></street>
20
+ <city>Paderborn, NRW</city>
21
+ <code></code>
22
+ <country>Germany</country>
23
+ <region></region>
24
+ </postal>
25
+ <phone>+49 176 62 05 94 27</phone>
26
+ <email>max@rfc2324.org</email>
27
+ <uri></uri>
28
+ </address>
29
+ </author>
30
+ <date year="2015" month="April" day="1"/>
31
+
32
+ <area>Internet</area>
33
+ <workgroup>Network Working Group</workgroup>
34
+
35
+
36
+ <abstract>
37
+ <t>This document specifies a new routing scheme for the current version
38
+ of the Internet Protocol version 6 (IPv6) in the spirit of &quot;Green
39
+ IT&quot;, whereby packets will be routed to get as much fresh-air time as
40
+ possible.
41
+ </t>
42
+ </abstract>
43
+
44
+
45
+ </front>
46
+
47
+ <middle>
48
+
49
+ <section anchor="introduction" title="Introduction">
50
+ <t>In times of Green IT, a lot of effort is put into reducing the energy
51
+ consumption of routers, switches, servers, hosts, etc., to preserve
52
+ our environment. This document looks at Green IT from a different
53
+ angle and focuses on network packets being routed and switched around
54
+ the world.
55
+ </t>
56
+ <t>Most likely, no one ever thought about the millions of packets being
57
+ disassembled into bits every second and forced through copper wires
58
+ or being shot through dark fiber lines by powerful lasers at
59
+ continuously increasing speeds. Although RFC 5841 <xref target="RFC5841"/> provided
60
+ some thoughts about Packet Moods and began to represent them as a TCP
61
+ option, this doesn't help the packets escape their torturous routine.
62
+ </t>
63
+ <t>This document defines another way to deal with Green IT for traffic
64
+ and network engineers and will hopefully aid the wellbeing of a
65
+ myriad of network packets around the world. It proposes Scenic
66
+ Routing, which incorporates the green-ness of a network path into the
67
+ routing decision. A routing engine implementing Scenic Routing
68
+ should therefore choose paths based on Avian IP Carriers <xref target="RFC1149"/>
69
+ and/or wireless technologies so the packets will get out of the
70
+ miles/kilometers of dark fibers that are in the ground and get as
71
+ much fresh-air time and sunlight as possible.
72
+ </t>
73
+ <t>As of the widely known acceptance of the current version of the
74
+ Internet Protocol (IPv6), this document only focuses on version 6 and
75
+ ignores communication still based on Vintage IP <xref target="RFC0791"/>.
76
+ </t>
77
+
78
+ <section anchor="conventions-and-terminology" title="Conventions and Terminology">
79
+ <t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,
80
+ &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this
81
+ document are to be interpreted as described in RFC 2119 <xref target="RFC2119"/>.
82
+ </t>
83
+ <t>Additionally, the key words &quot;<spanx style="strong">MIGHT</spanx>&quot;, &quot;<spanx style="strong">COULD</spanx>&quot;, &quot;<spanx style="strong">MAY WISH TO</spanx>&quot;, &quot;<spanx style="strong">WOULD
84
+ PROBABLY</spanx>&quot;, &quot;<spanx style="strong">SHOULD CONSIDER</spanx>&quot;, and &quot;<spanx style="strong">MUST (BUT WE KNOW YOU WON'T)</spanx>&quot; in
85
+ this document are to interpreted as described in RFC 6919 <xref target="RFC6919"/>.
86
+ </t>
87
+ </section>
88
+ </section>
89
+
90
+ <section anchor="scenic-routing" title="Scenic Routing">
91
+ <t>Scenic Routing can be enabled with a new option for IPv6 datagrams.
92
+ </t>
93
+
94
+ <section anchor="scenic-routing-option-sro" title="Scenic Routing Option (SRO)">
95
+ <t>The Scenic Routing Option (SRO) is placed in the IPv6 Hop-by-Hop
96
+ Options Header that must be examined by every node along a packet's
97
+ delivery path <xref target="RFC2460"/>.
98
+ </t>
99
+ <t>The SRO can be included in any IPv6 datagram, but multiple SROs <spanx style="strong">MUST
100
+ NOT</spanx> be present in the same IPv6 datagram. The SRO has no alignment
101
+ requirement.
102
+ </t>
103
+ <t>If the SRO is set for a packet, every node en route from the packet
104
+ source to the packet's final destination MUST preserve the option.
105
+ </t>
106
+ <t>The following Hop-by-Hop Option is proposed according to the
107
+ specification in Section 4.2 of RFC 2460 <xref target="RFC2460"/>.
108
+ </t>
109
+
110
+ <figure anchor="fig-scenic-routing-option-layout" align="center" title="Scenic Routing Option Layout
111
+ "><artwork align="center">
112
+ 0 1 2 3
113
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
114
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
115
+ | Option Type | Option Length |
116
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
117
+ | SRO Param | |
118
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
119
+ </artwork></figure>
120
+ <t>
121
+ <list style="hanging">
122
+ <t hangText="Option Type">
123
+ <vspace />
124
+ <vspace/>
125
+ 8-bit identifier of the type of option. The option identifier
126
+ 0x0A (On Air) is proposed for Scenic Routing.
127
+
128
+ <figure anchor="fig-option-type" align="center" title="Scenic Routing Option Type
129
+ "><artwork align="center">
130
+ HEX act chg rest
131
+ --- --- --- -----
132
+ 0A 00 0 01010 Scenic Routing
133
+ </artwork></figure>
134
+ The highest-order two bits are set to 00 so any node not
135
+ implementing Scenic Routing will skip over this option and
136
+ continue processing the header. The third-highest-order bit
137
+ indicates that the SRO does not change en route to the packet's
138
+ final destination.</t>
139
+ <t hangText="Option Length">
140
+ <vspace />
141
+ <vspace/>
142
+ 8-bit unsigned integer. The length of the option in octets
143
+ (excluding the Option Type and Option Length fields). The value
144
+ MUST be greater than 0.</t>
145
+ <t hangText="SRO Param">
146
+ <vspace />
147
+ <vspace/>
148
+ 8-bit identifier indicating Scenic Routing parameters encoded as a bit string.
149
+
150
+ <figure anchor="fig-bit-string-layout" align="center" title="SRO Param Bit String Layout
151
+ "><artwork align="center">
152
+ +-+-+-+-+-+-+-+-+
153
+ | SR A W AA X Y |
154
+ +-+-+-+-+-+-+-+-+
155
+ </artwork></figure>
156
+ The highest-order two bits (SR) define the urgency of Scenic
157
+ Routing:
158
+ <list style="empty">
159
+ <t>00 - Scenic Routing MUST NOT be used for this packet.</t>
160
+ <t>01 - Scenic Routing <spanx style="strong">MIGHT</spanx> be used for this packet.</t>
161
+ <t>10 - Scenic Routing SHOULD be used for this packet.</t>
162
+ <t>11 - Scenic Routing MUST be used for this packet.</t>
163
+ </list>
164
+ The following BIT (A) defines if Avian IP Carriers should be used:
165
+ <list style="empty">
166
+ <t>0 - Don't use Avian IP Carrier links (maybe the packet is
167
+ afraid of pigeons).</t>
168
+ <t>1 - Avian IP Carrier links may be used.</t>
169
+ </list>
170
+ The following BIT (W) defines if wireless links should be used:
171
+ <list style="empty">
172
+ <t>0 - Don't use wireless links (maybe the packet is afraid of
173
+ radiation).</t>
174
+ <t>1 - Wireless links may be used.</t>
175
+ </list>
176
+ The following two bits (AA) define the affinity for link types:
177
+ <list style="empty">
178
+ <t>00 - No affinity.</t>
179
+ <t>01 - Avian IP Carriers SHOULD be preferred.</t>
180
+ <t>10 - Wireless links SHOULD be preferred.</t>
181
+ <t>11 - RESERVED</t>
182
+ </list>
183
+ The lowest-order two bits (XY) are currently unused and reserved
184
+ for future use.</t>
185
+ </list>
186
+ </t>
187
+ </section>
188
+ </section>
189
+
190
+ <section anchor="implications" title="Implications">
191
+
192
+ <section anchor="routing-implications" title="Routing Implications">
193
+ <t>If Scenic Routing is requested for a packet, the path with the known
194
+ longest Avian IP Carrier and/or wireless portion MUST be used.
195
+ </t>
196
+ <t>Backbone operators who desire to be fully compliant with Scenic
197
+ Routing <spanx style="strong">MAY WISH TO</spanx> -- well, they SHOULD -- have separate MPLS paths
198
+ ready that provide the most fresh-air time for a given path and are
199
+ to be used when Scenic Routing is requested by a packet. If such a
200
+ path exists, the path MUST be used in favor of any other path, even
201
+ if another path is considered cheaper according to the path costs
202
+ used regularly, without taking Scenic Routing into account.
203
+ </t>
204
+ </section>
205
+
206
+ <section anchor="implications-for-hosts" title="Implications for Hosts">
207
+ <t>Host systems implementing this option of receiving packets with
208
+ Scenic Routing requested MUST honor this request and MUST activate
209
+ Scenic Routing for any packets sent back to the originating host for
210
+ the current connection.
211
+ </t>
212
+ <t>If Scenic Routing is requested for connections of local origin, the
213
+ host MUST obey the request and route the packet(s) over a wireless
214
+ link or use Avian IP Carriers (if available and as requested within
215
+ the SRO Params).
216
+ </t>
217
+ <t>System administrators <spanx style="strong">MIGHT</spanx> want to configure sensible default
218
+ parameters for Scenic Routing, when Scenic Routing has been widely
219
+ adopted by operating systems. System administrators SHOULD deploy
220
+ Scenic Routing information where applicable.
221
+ </t>
222
+ </section>
223
+
224
+ <section anchor="proxy-servers" title="Proxy Servers">
225
+ <t>If a host is running a proxy server or any other packet-relaying
226
+ application, an application implementing Scenic Routing MUST set the
227
+ same SRO Params on the outgoing packet as seen on the incoming
228
+ packet.
229
+ </t>
230
+ <t>Developers <spanx style="strong">SHOULD CONSIDER</spanx> Scenic Routing when designing and
231
+ implementing any network service.
232
+ </t>
233
+ </section>
234
+ </section>
235
+
236
+ <section anchor="security-considerations" title="Security Considerations">
237
+ <t>The security considerations of RFC 6214 <xref target="RFC6214"/> apply for links
238
+ provided by Avian IP Carriers.
239
+ </t>
240
+ <t>General security considerations of wireless communication apply for
241
+ links using wireless technologies.
242
+ </t>
243
+ <t>As the user is able to influence where flows and packets are being
244
+ routed within the network, this <spanx style="strong">MIGHT</spanx> influence traffic-engineering
245
+ considerations and network operators <spanx style="strong">MAY WISH TO</spanx> take this into
246
+ account before enabling Scenic Routing on their devices.
247
+ </t>
248
+ </section>
249
+
250
+ <section anchor="iana-considerations" title="IANA Considerations">
251
+ <t>This document defines a new IPv6 Hop-by-Hop Option, the Scenic
252
+ Routing Option, described in <xref target="scenic-routing-option-sro"/>.
253
+ If this work is standardized, IANA is requested to assign a value from the &quot;Destination Options and
254
+ Hop-by-Hop Options&quot; registry for the purpose of Scenic Routing.
255
+ </t>
256
+ <t>There are no IANA actions requested at this time.
257
+ </t>
258
+ </section>
259
+
260
+ <section anchor="related-work" title="Related Work">
261
+ <t>As Scenic Routing is heavily dependent on network paths and routing
262
+ information, it might be worth looking at designing extensions for
263
+ popular routing protocols like BGP or OSPF to leverage the full
264
+ potential of Scenic Routing in large networks built upon lots of
265
+ wireless links and/or Avian IP Carriers. When incorporating
266
+ information about links compatible with Scenic Routing, the routing
267
+ algorithms could easily calculate the optimal paths providing the
268
+ most fresh-air time for a packet for any given destination.
269
+ </t>
270
+ <t>This would even allow preference for wireless paths going alongside
271
+ popular or culturally important places. This way, the packets don't
272
+ only avoid the dark fibers, but they get to see the world outside of
273
+ the Internet and are exposed to different cultures around the globe,
274
+ which may help build an understanding of cultural differences and
275
+ promote acceptance of these differences.
276
+ </t>
277
+ </section>
278
+
279
+ </middle>
280
+ <back>
281
+ <references title="Normative References">
282
+ <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"?>
283
+ <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2460.xml"?>
284
+ <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5841.xml"?>
285
+ <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6214.xml"?>
286
+ <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6919.xml"?>
287
+ </references>
288
+ <references title="Informative References">
289
+ <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml"?>
290
+ <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1149.xml"?>
291
+ </references>
292
+
293
+ <section anchor="acknowledgements" title="Acknowledgements">
294
+ <t>The author wishes to thank all those poor friends who were kindly
295
+ forced to read this document and that provided some nifty comments.
296
+ </t>
297
+ </section>
298
+
299
+ </back>
300
+ </rfc>
@@ -0,0 +1,347 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" category="info" docName="rfc-7511">
3
+ <front>
4
+ <title abbrev="Scenic Routing for IPv6">Scenic Routing for IPv6</title>
5
+
6
+ <author initials="M." surname="Wilhelm" fullname="Maximilian Wilhelm">
7
+ <organization></organization>
8
+ <address>
9
+ <postal>
10
+ <street></street>
11
+ <city>Paderborn, NRW</city>
12
+ <code></code>
13
+ <country>Germany</country>
14
+ <region></region>
15
+ </postal>
16
+ <phone>+49 176 62 05 94 27</phone>
17
+ <email>max@rfc2324.org</email>
18
+ <uri></uri>
19
+ </address>
20
+ </author>
21
+ <date year="2015" month="April" day="1"/>
22
+
23
+ <area>Internet</area>
24
+ <workgroup>Network Working Group</workgroup>
25
+
26
+
27
+ <abstract>
28
+ <t>
29
+ This document specifies a new routing scheme for the current version
30
+ of the Internet Protocol version 6 (IPv6) in the spirit of &quot;Green
31
+ IT&quot;, whereby packets will be routed to get as much fresh-air time as
32
+ possible.
33
+ </t>
34
+ </abstract>
35
+
36
+ </front>
37
+
38
+ <middle>
39
+
40
+ <section anchor="introduction">
41
+ <name>Introduction</name>
42
+ <t>
43
+ In times of Green IT, a lot of effort is put into reducing the energy
44
+ consumption of routers, switches, servers, hosts, etc., to preserve
45
+ our environment. This document looks at Green IT from a different
46
+ angle and focuses on network packets being routed and switched around
47
+ the world.
48
+ </t>
49
+ <t>
50
+ Most likely, no one ever thought about the millions of packets being
51
+ disassembled into bits every second and forced through copper wires
52
+ or being shot through dark fiber lines by powerful lasers at
53
+ continuously increasing speeds. Although RFC 5841 <xref target="RFC5841"/> provided
54
+ some thoughts about Packet Moods and began to represent them as a TCP
55
+ option, this doesn't help the packets escape their torturous routine.
56
+ </t>
57
+ <t>
58
+ This document defines another way to deal with Green IT for traffic
59
+ and network engineers and will hopefully aid the wellbeing of a
60
+ myriad of network packets around the world. It proposes Scenic
61
+ Routing, which incorporates the green-ness of a network path into the
62
+ routing decision. A routing engine implementing Scenic Routing
63
+ should therefore choose paths based on Avian IP Carriers <xref target="RFC1149"/>
64
+ and/or wireless technologies so the packets will get out of the
65
+ miles/kilometers of dark fibers that are in the ground and get as
66
+ much fresh-air time and sunlight as possible.
67
+ </t>
68
+ <t>
69
+ As of the widely known acceptance of the current version of the
70
+ Internet Protocol (IPv6), this document only focuses on version 6 and
71
+ ignores communication still based on Vintage IP <xref target="RFC0791"/>.
72
+ </t>
73
+
74
+ <section anchor="conventions-and-terminology">
75
+ <name>Conventions and Terminology</name>
76
+ <t>
77
+ The key words &quot;<bcp14>MUST</bcp14>&quot;, &quot;<bcp14>MUST NOT</bcp14>&quot;, &quot;<bcp14>REQUIRED</bcp14>&quot;, &quot;<bcp14>SHALL</bcp14>&quot;, &quot;<bcp14>SHALL NOT</bcp14>&quot;,
78
+ &quot;<bcp14>SHOULD</bcp14>&quot;, &quot;<bcp14>SHOULD NOT</bcp14>&quot;, &quot;<bcp14>RECOMMENDED</bcp14>&quot;, &quot;<bcp14>MAY</bcp14>&quot;, and &quot;<bcp14>OPTIONAL</bcp14>&quot; in this
79
+ document are to be interpreted as described in RFC 2119 <xref target="RFC2119"/>.
80
+ </t>
81
+ <t>
82
+ Additionally, the key words &quot;<strong>MIGHT</strong>&quot;, &quot;<strong>COULD</strong>&quot;, &quot;<strong>MAY WISH TO</strong>&quot;, &quot;<strong>WOULD
83
+ PROBABLY</strong>&quot;, &quot;<strong>SHOULD CONSIDER</strong>&quot;, and &quot;<strong>MUST (BUT WE KNOW YOU WON'T)</strong>&quot; in
84
+ this document are to interpreted as described in RFC 6919 <xref target="RFC6919"/>.
85
+ </t>
86
+ </section>
87
+ </section>
88
+
89
+ <section anchor="scenic-routing">
90
+ <name>Scenic Routing</name>
91
+ <t>
92
+ Scenic Routing can be enabled with a new option for IPv6 datagrams.
93
+ </t>
94
+
95
+ <section anchor="scenic-routing-option-sro">
96
+ <name>Scenic Routing Option (SRO)</name>
97
+ <t>
98
+ The Scenic Routing Option (SRO) is placed in the IPv6 Hop-by-Hop
99
+ Options Header that must be examined by every node along a packet's
100
+ delivery path <xref target="RFC2460"/>.
101
+ </t>
102
+ <t>
103
+ The SRO can be included in any IPv6 datagram, but multiple SROs <strong>MUST
104
+ NOT</strong> be present in the same IPv6 datagram. The SRO has no alignment
105
+ requirement.
106
+ </t>
107
+ <t>
108
+ If the SRO is set for a packet, every node en route from the packet
109
+ source to the packet's final destination <bcp14>MUST</bcp14> preserve the option.
110
+ </t>
111
+ <t>
112
+ The following Hop-by-Hop Option is proposed according to the
113
+ specification in Section 4.2 of RFC 2460 <xref target="RFC2460"/>.
114
+ </t>
115
+ <figure anchor="fig-scenic-routing-option-layout">
116
+ <name>Scenic Routing Option Layout
117
+ </name>
118
+ <artwork>
119
+ 0 1 2 3
120
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
121
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
122
+ | Option Type | Option Length |
123
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
124
+ | SRO Param | |
125
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
126
+ </artwork>
127
+ </figure>
128
+ <dl>
129
+ <dt>Option Type</dt>
130
+ <dd><t>
131
+ <vspace/>8-bit identifier of the type of option. The option identifier
132
+ 0x0A (On Air) is proposed for Scenic Routing.
133
+ </t>
134
+ <figure anchor="fig-option-type">
135
+ <name>Scenic Routing Option Type
136
+ </name>
137
+ <artwork>
138
+ HEX act chg rest
139
+ --- --- --- -----
140
+ 0A 00 0 01010 Scenic Routing
141
+ </artwork>
142
+ </figure>
143
+ <t>
144
+ The highest-order two bits are set to 00 so any node not
145
+ implementing Scenic Routing will skip over this option and
146
+ continue processing the header. The third-highest-order bit
147
+ indicates that the SRO does not change en route to the packet's
148
+ final destination.
149
+ </t></dd>
150
+ <dt>Option Length</dt>
151
+ <dd><t>
152
+ <vspace/>8-bit unsigned integer. The length of the option in octets
153
+ (excluding the Option Type and Option Length fields). The value
154
+ <bcp14>MUST</bcp14> be greater than 0.
155
+ </t></dd>
156
+ <dt>SRO Param</dt>
157
+ <dd><t>
158
+ <vspace/>8-bit identifier indicating Scenic Routing parameters encoded as a bit string.
159
+ </t>
160
+ <figure anchor="fig-bit-string-layout">
161
+ <name>SRO Param Bit String Layout
162
+ </name>
163
+ <artwork>
164
+ +-+-+-+-+-+-+-+-+
165
+ | SR A W AA X Y |
166
+ +-+-+-+-+-+-+-+-+
167
+ </artwork>
168
+ </figure>
169
+ <t>
170
+ The highest-order two bits (SR) define the urgency of Scenic
171
+ Routing:
172
+ </t>
173
+ <ul>
174
+ <li>00 - Scenic Routing <bcp14>MUST NOT</bcp14> be used for this packet.</li>
175
+ <li>01 - Scenic Routing <strong>MIGHT</strong> be used for this packet.</li>
176
+ <li>10 - Scenic Routing <bcp14>SHOULD</bcp14> be used for this packet.</li>
177
+ <li>11 - Scenic Routing <bcp14>MUST</bcp14> be used for this packet.</li>
178
+ </ul>
179
+ <t>
180
+ The following BIT (A) defines if Avian IP Carriers should be used:
181
+ </t>
182
+ <ul>
183
+ <li>0 - Don't use Avian IP Carrier links (maybe the packet is
184
+ afraid of pigeons).</li>
185
+ <li>1 - Avian IP Carrier links may be used.</li>
186
+ </ul>
187
+ <t>
188
+ The following BIT (W) defines if wireless links should be used:
189
+ </t>
190
+ <ul>
191
+ <li>0 - Don't use wireless links (maybe the packet is afraid of
192
+ radiation).</li>
193
+ <li>1 - Wireless links may be used.</li>
194
+ </ul>
195
+ <t>
196
+ The following two bits (AA) define the affinity for link types:
197
+ </t>
198
+ <ul>
199
+ <li>00 - No affinity.</li>
200
+ <li>01 - Avian IP Carriers <bcp14>SHOULD</bcp14> be preferred.</li>
201
+ <li>10 - Wireless links <bcp14>SHOULD</bcp14> be preferred.</li>
202
+ <li>11 - RESERVED</li>
203
+ </ul>
204
+ <t>
205
+ The lowest-order two bits (XY) are currently unused and reserved
206
+ for future use.
207
+ </t></dd>
208
+ </dl>
209
+ </section>
210
+ </section>
211
+
212
+ <section anchor="implications">
213
+ <name>Implications</name>
214
+
215
+ <section anchor="routing-implications">
216
+ <name>Routing Implications</name>
217
+ <t>
218
+ If Scenic Routing is requested for a packet, the path with the known
219
+ longest Avian IP Carrier and/or wireless portion <bcp14>MUST</bcp14> be used.
220
+ </t>
221
+ <t>
222
+ Backbone operators who desire to be fully compliant with Scenic
223
+ Routing <strong>MAY WISH TO</strong> -- well, they <bcp14>SHOULD</bcp14> -- have separate MPLS paths
224
+ ready that provide the most fresh-air time for a given path and are
225
+ to be used when Scenic Routing is requested by a packet. If such a
226
+ path exists, the path MUST be used in favor of any other path, even
227
+ if another path is considered cheaper according to the path costs
228
+ used regularly, without taking Scenic Routing into account.
229
+ </t>
230
+ </section>
231
+
232
+ <section anchor="implications-for-hosts">
233
+ <name>Implications for Hosts</name>
234
+ <t>
235
+ Host systems implementing this option of receiving packets with
236
+ Scenic Routing requested <bcp14>MUST</bcp14> honor this request and <bcp14>MUST</bcp14> activate
237
+ Scenic Routing for any packets sent back to the originating host for
238
+ the current connection.
239
+ </t>
240
+ <t>
241
+ If Scenic Routing is requested for connections of local origin, the
242
+ host MUST obey the request and route the packet(s) over a wireless
243
+ link or use Avian IP Carriers (if available and as requested within
244
+ the SRO Params).
245
+ </t>
246
+ <t>
247
+ System administrators <strong>MIGHT</strong> want to configure sensible default
248
+ parameters for Scenic Routing, when Scenic Routing has been widely
249
+ adopted by operating systems. System administrators <bcp14>SHOULD</bcp14> deploy
250
+ Scenic Routing information where applicable.
251
+ </t>
252
+ </section>
253
+
254
+ <section anchor="proxy-servers">
255
+ <name>Proxy Servers</name>
256
+ <t>
257
+ If a host is running a proxy server or any other packet-relaying
258
+ application, an application implementing Scenic Routing <bcp14>MUST</bcp14> set the
259
+ same SRO Params on the outgoing packet as seen on the incoming
260
+ packet.
261
+ </t>
262
+ <t>
263
+ Developers <strong>SHOULD CONSIDER</strong> Scenic Routing when designing and
264
+ implementing any network service.
265
+ </t>
266
+ </section>
267
+ </section>
268
+
269
+ <section anchor="security-considerations">
270
+ <name>Security Considerations</name>
271
+ <t>
272
+ The security considerations of RFC 6214 <xref target="RFC6214"/> apply for links
273
+ provided by Avian IP Carriers.
274
+ </t>
275
+ <t>
276
+ General security considerations of wireless communication apply for
277
+ links using wireless technologies.
278
+ </t>
279
+ <t>
280
+ As the user is able to influence where flows and packets are being
281
+ routed within the network, this <strong>MIGHT</strong> influence traffic-engineering
282
+ considerations and network operators <strong>MAY WISH TO</strong> take this into
283
+ account before enabling Scenic Routing on their devices.
284
+ </t>
285
+ </section>
286
+
287
+ <section anchor="iana-considerations">
288
+ <name>IANA Considerations</name>
289
+ <t>
290
+ This document defines a new IPv6 Hop-by-Hop Option, the Scenic
291
+ Routing Option, described in <xref target="scenic-routing-option-sro"/>.
292
+ If this work is standardized, IANA is requested to assign a value from the &quot;Destination Options and
293
+ Hop-by-Hop Options&quot; registry for the purpose of Scenic Routing.
294
+ </t>
295
+ <t>
296
+ There are no IANA actions requested at this time.
297
+ </t>
298
+ </section>
299
+
300
+ <section anchor="related-work">
301
+ <name>Related Work</name>
302
+ <t>
303
+ As Scenic Routing is heavily dependent on network paths and routing
304
+ information, it might be worth looking at designing extensions for
305
+ popular routing protocols like BGP or OSPF to leverage the full
306
+ potential of Scenic Routing in large networks built upon lots of
307
+ wireless links and/or Avian IP Carriers. When incorporating
308
+ information about links compatible with Scenic Routing, the routing
309
+ algorithms could easily calculate the optimal paths providing the
310
+ most fresh-air time for a packet for any given destination.
311
+ </t>
312
+ <t>
313
+ This would even allow preference for wireless paths going alongside
314
+ popular or culturally important places. This way, the packets don't
315
+ only avoid the dark fibers, but they get to see the world outside of
316
+ the Internet and are exposed to different cultures around the globe,
317
+ which may help build an understanding of cultural differences and
318
+ promote acceptance of these differences.
319
+ </t>
320
+ </section>
321
+
322
+ </middle>
323
+ <back>
324
+ <references>
325
+ <name>Normative References</name>
326
+ <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
327
+ <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2460.xml"/>
328
+ <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5841.xml"/>
329
+ <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6214.xml"/>
330
+ <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6919.xml"/>
331
+ </references>
332
+ <references>
333
+ <name>Informative References</name>
334
+ <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml"/>
335
+ <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1149.xml"/>
336
+ </references>
337
+
338
+ <section anchor="acknowledgements">
339
+ <name>Acknowledgements</name>
340
+ <t>
341
+ The author wishes to thank all those poor friends who were kindly
342
+ forced to read this document and that provided some nifty comments.
343
+ </t>
344
+ </section>
345
+
346
+ </back>
347
+ </rfc>