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,79 @@
1
+ % Title = "TELNET RANDOMLY-LOSE Option"
2
+ % abbrev = "TELNET RANDOMLY-LOSE Option"
3
+ % category = "info"
4
+ % docName = "rfc-748"
5
+ % ipr= "trust200902"
6
+ % area = "Internet"
7
+ % workgroup = "Network Working Group"
8
+ % keyword = [""]
9
+ %
10
+ % date = 1978-04-01T00:00:00Z
11
+ %
12
+ % [[author]]
13
+ % initials="M."
14
+ % surname="Crispin"
15
+ % fullname="M. Crispin"
16
+ % organization="SU-AI"
17
+
18
+ {mainmatter}
19
+
20
+ # Command name and code
21
+
22
+ RANDOMLY-LOSE 256
23
+
24
+ # Command meanings
25
+
26
+ IAC WILL RANDOMLY-LOSE:
27
+ : The sender of this command REQUESTS permission to, or confirms
28
+ that it will, randomly lose.
29
+
30
+ IAC WON'T RANDOMLY-LOSE:
31
+ : The sender of this command REFUSES to randomly lose.
32
+
33
+ IAC DO RANDOMLY-LOSE:
34
+ : The sender of this command REQUESTS that the receiver, or grants
35
+ the receiver permission to, randomly lose.
36
+
37
+ IAC DON'T RANDOMLY-LOSE:
38
+ : The command sender DEMANDS that the receiver not randomly lose.
39
+
40
+ # Default
41
+
42
+ {align="left"}
43
+ WON'T RANDOMLY-LOSE
44
+
45
+ DON'T RANDOMLY-LOSE
46
+
47
+ i.e., random lossage will not happen.
48
+
49
+ # Motivation for the option
50
+
51
+ Several hosts appear to provide random lossage, such as system
52
+ crashes, lost data, incorrectly functioning programs, etc., as part
53
+ of their services. These services are often undocumented and are in
54
+ general quite confusing to the novice user. A general means is
55
+ needed to allow the user to disable these features.
56
+
57
+ # Description of the option
58
+
59
+ The normal mode does not allow random lossage; therefore the system
60
+ is not allowed to crash, mung user files, etc. If the server wants
61
+ to provide random lossage, it must first ask for permission from the
62
+ user by sending IAC WILL RANDOMLY-LOSE.
63
+
64
+ If the user wants to permit the server to randomly lose, it replys
65
+ with IAC DO RANDOMLY-LOSE. Otherwise it sends IAC DONT
66
+ RANDOMLY-LOSE, and the server is forbidden from randomly losing.
67
+
68
+ Alternatively, the user could request the server to randomly lose, by
69
+ sending IAC DO RANDOMLY-LOSE, and the server will either reply with
70
+ IAC WILL RANDOMLY-LOSE, meaning that it will then proceed to do some
71
+ random lossage (garbaging disk files is recommended for an initial
72
+ implementation). Or, it could send IAC WONT RANDOMLY-LOSE, meaning
73
+ that it insists upon being reliable.
74
+
75
+ Since this is implemented as a TELNET option, it is expected that
76
+ servers which do not implement this option will not randomly lose;
77
+ ie, they will provide 100% reliable uptime.
78
+
79
+ {backmatter}
@@ -0,0 +1,116 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE rfc SYSTEM 'rfc2629.dtd' []>
3
+ <rfc ipr="trust200902" category="info" docName="rfc-748">
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="TELNET RANDOMLY-LOSE Option">TELNET RANDOMLY-LOSE Option</title>
14
+
15
+ <author initials="M." surname="Crispin" fullname="M. Crispin">
16
+ <organization>SU-AI</organization>
17
+ <address>
18
+ <postal>
19
+ <street></street>
20
+ <city></city>
21
+ <code></code>
22
+ <country></country>
23
+ <region></region>
24
+ </postal>
25
+ <phone></phone>
26
+ <email></email>
27
+ <uri></uri>
28
+ </address>
29
+ </author>
30
+ <date year="1978" month="April" day="1"/>
31
+
32
+ <area>Internet</area>
33
+ <workgroup>Network Working Group</workgroup>
34
+ <keyword></keyword>
35
+
36
+
37
+ </front>
38
+
39
+ <middle>
40
+
41
+ <section anchor="command-name-and-code" title="Command name and code">
42
+
43
+ <figure align="center"><artwork align="center">
44
+ RANDOMLY-LOSE 256
45
+ </artwork></figure>
46
+ </section>
47
+
48
+ <section anchor="command-meanings" title="Command meanings">
49
+ <t>
50
+ <list style="hanging">
51
+ <t hangText="IAC WILL RANDOMLY-LOSE:">
52
+ <vspace />
53
+ The sender of this command REQUESTS permission to, or confirms
54
+ that it will, randomly lose.</t>
55
+ <t hangText="IAC WON'T RANDOMLY-LOSE:">
56
+ <vspace />
57
+ The sender of this command REFUSES to randomly lose.</t>
58
+ <t hangText="IAC DO RANDOMLY-LOSE:">
59
+ <vspace />
60
+ The sender of this command REQUESTS that the receiver, or grants
61
+ the receiver permission to, randomly lose.</t>
62
+ <t hangText="IAC DON'T RANDOMLY-LOSE:">
63
+ <vspace />
64
+ The command sender DEMANDS that the receiver not randomly lose.</t>
65
+ </list>
66
+ </t>
67
+ </section>
68
+
69
+ <section anchor="default" title="Default">
70
+
71
+ <figure align="left"><artwork align="left">
72
+ WON'T RANDOMLY-LOSE
73
+
74
+ DON'T RANDOMLY-LOSE
75
+ </artwork></figure>
76
+ <t>i.e., random lossage will not happen.
77
+ </t>
78
+ </section>
79
+
80
+ <section anchor="motivation-for-the-option" title="Motivation for the option">
81
+ <t>Several hosts appear to provide random lossage, such as system
82
+ crashes, lost data, incorrectly functioning programs, etc., as part
83
+ of their services. These services are often undocumented and are in
84
+ general quite confusing to the novice user. A general means is
85
+ needed to allow the user to disable these features.
86
+ </t>
87
+ </section>
88
+
89
+ <section anchor="description-of-the-option" title="Description of the option">
90
+ <t>The normal mode does not allow random lossage; therefore the system
91
+ is not allowed to crash, mung user files, etc. If the server wants
92
+ to provide random lossage, it must first ask for permission from the
93
+ user by sending IAC WILL RANDOMLY-LOSE.
94
+ </t>
95
+ <t>If the user wants to permit the server to randomly lose, it replys
96
+ with IAC DO RANDOMLY-LOSE. Otherwise it sends IAC DONT
97
+ RANDOMLY-LOSE, and the server is forbidden from randomly losing.
98
+ </t>
99
+ <t>Alternatively, the user could request the server to randomly lose, by
100
+ sending IAC DO RANDOMLY-LOSE, and the server will either reply with
101
+ IAC WILL RANDOMLY-LOSE, meaning that it will then proceed to do some
102
+ random lossage (garbaging disk files is recommended for an initial
103
+ implementation). Or, it could send IAC WONT RANDOMLY-LOSE, meaning
104
+ that it insists upon being reliable.
105
+ </t>
106
+ <t>Since this is implemented as a TELNET option, it is expected that
107
+ servers which do not implement this option will not randomly lose;
108
+ ie, they will provide 100% reliable uptime.
109
+ </t>
110
+ </section>
111
+
112
+ </middle>
113
+ <back>
114
+
115
+ </back>
116
+ </rfc>
@@ -0,0 +1,109 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" category="info" docName="rfc-748">
3
+ <front>
4
+ <title abbrev="TELNET RANDOMLY-LOSE Option">TELNET RANDOMLY-LOSE Option</title>
5
+
6
+ <author initials="M." surname="Crispin" fullname="M. Crispin">
7
+ <organization>SU-AI</organization>
8
+ <address>
9
+ <postal>
10
+ <street></street>
11
+ <city></city>
12
+ <code></code>
13
+ <country></country>
14
+ <region></region>
15
+ </postal>
16
+ <phone></phone>
17
+ <email></email>
18
+ <uri></uri>
19
+ </address>
20
+ </author>
21
+ <date year="1978" month="April" day="1"/>
22
+
23
+ <area>Internet</area>
24
+ <workgroup>Network Working Group</workgroup>
25
+ <keyword></keyword>
26
+
27
+ </front>
28
+
29
+ <middle>
30
+
31
+ <section anchor="command-name-and-code">
32
+ <name>Command name and code</name>
33
+ <artwork>
34
+ RANDOMLY-LOSE 256
35
+ </artwork>
36
+ </section>
37
+
38
+ <section anchor="command-meanings">
39
+ <name>Command meanings</name>
40
+ <dl>
41
+ <dt>IAC WILL RANDOMLY-LOSE:</dt>
42
+ <dd>The sender of this command REQUESTS permission to, or confirms
43
+ that it will, randomly lose.</dd>
44
+ <dt>IAC WON'T RANDOMLY-LOSE:</dt>
45
+ <dd>The sender of this command REFUSES to randomly lose.</dd>
46
+ <dt>IAC DO RANDOMLY-LOSE:</dt>
47
+ <dd>The sender of this command REQUESTS that the receiver, or grants
48
+ the receiver permission to, randomly lose.</dd>
49
+ <dt>IAC DON'T RANDOMLY-LOSE:</dt>
50
+ <dd>The command sender DEMANDS that the receiver not randomly lose.</dd>
51
+ </dl>
52
+ </section>
53
+
54
+ <section anchor="default">
55
+ <name>Default</name>
56
+ <artwork align="left">
57
+ WON'T RANDOMLY-LOSE
58
+
59
+ DON'T RANDOMLY-LOSE
60
+ </artwork>
61
+ <t>
62
+ i.e., random lossage will not happen.
63
+ </t>
64
+ </section>
65
+
66
+ <section anchor="motivation-for-the-option">
67
+ <name>Motivation for the option</name>
68
+ <t>
69
+ Several hosts appear to provide random lossage, such as system
70
+ crashes, lost data, incorrectly functioning programs, etc., as part
71
+ of their services. These services are often undocumented and are in
72
+ general quite confusing to the novice user. A general means is
73
+ needed to allow the user to disable these features.
74
+ </t>
75
+ </section>
76
+
77
+ <section anchor="description-of-the-option">
78
+ <name>Description of the option</name>
79
+ <t>
80
+ The normal mode does not allow random lossage; therefore the system
81
+ is not allowed to crash, mung user files, etc. If the server wants
82
+ to provide random lossage, it must first ask for permission from the
83
+ user by sending IAC WILL RANDOMLY-LOSE.
84
+ </t>
85
+ <t>
86
+ If the user wants to permit the server to randomly lose, it replys
87
+ with IAC DO RANDOMLY-LOSE. Otherwise it sends IAC DONT
88
+ RANDOMLY-LOSE, and the server is forbidden from randomly losing.
89
+ </t>
90
+ <t>
91
+ Alternatively, the user could request the server to randomly lose, by
92
+ sending IAC DO RANDOMLY-LOSE, and the server will either reply with
93
+ IAC WILL RANDOMLY-LOSE, meaning that it will then proceed to do some
94
+ random lossage (garbaging disk files is recommended for an initial
95
+ implementation). Or, it could send IAC WONT RANDOMLY-LOSE, meaning
96
+ that it insists upon being reliable.
97
+ </t>
98
+ <t>
99
+ Since this is implemented as a TELNET option, it is expected that
100
+ servers which do not implement this option will not randomly lose;
101
+ ie, they will provide 100% reliable uptime.
102
+ </t>
103
+ </section>
104
+
105
+ </middle>
106
+ <back>
107
+
108
+ </back>
109
+ </rfc>
@@ -0,0 +1,80 @@
1
+ = TELNET RANDOMLY-LOSE Option
2
+ M. Crispin
3
+ :doctype: internet-draft
4
+ :abbrev: TELNET RANDOMLY-LOSE Option
5
+ :status: info
6
+ :name: rfc-748
7
+ :ipr: trust200902
8
+ :area: Internet
9
+ :workgroup: Network Working Group
10
+ :revdate: 1978-04-01T00:00:00Z
11
+ :forename_initials: M.
12
+ :organization: SU-AI
13
+ :smart-quotes: false
14
+
15
+ == Command name and code
16
+
17
+ ....
18
+ RANDOMLY-LOSE 256
19
+ ....
20
+
21
+ == Command meanings
22
+
23
+ IAC WILL RANDOMLY-LOSE::
24
+ +
25
+ The sender of this command REQUESTS permission to, or confirms
26
+ that it will, randomly lose.
27
+
28
+ IAC WON'T RANDOMLY-LOSE::
29
+ +
30
+ The sender of this command REFUSES to randomly lose.
31
+
32
+ IAC DO RANDOMLY-LOSE::
33
+ +
34
+ The sender of this command REQUESTS that the receiver, or grants
35
+ the receiver permission to, randomly lose.
36
+
37
+ IAC DON'T RANDOMLY-LOSE::
38
+ +
39
+ The command sender DEMANDS that the receiver not randomly lose.
40
+
41
+ == Default
42
+
43
+ ....
44
+ WON'T RANDOMLY-LOSE
45
+
46
+ DON'T RANDOMLY-LOSE
47
+ ....
48
+
49
+ i.e., random lossage will not happen.
50
+
51
+ == Motivation for the option
52
+
53
+ Several hosts appear to provide random lossage, such as system
54
+ crashes, lost data, incorrectly functioning programs, etc., as part
55
+ of their services. These services are often undocumented and are in
56
+ general quite confusing to the novice user. A general means is
57
+ needed to allow the user to disable these features.
58
+
59
+ == Description of the option
60
+
61
+ The normal mode does not allow random lossage; therefore the system
62
+ is not allowed to crash, mung user files, etc. If the server wants
63
+ to provide random lossage, it must first ask for permission from the
64
+ user by sending IAC WILL RANDOMLY-LOSE.
65
+
66
+ If the user wants to permit the server to randomly lose, it replys
67
+ with IAC DO RANDOMLY-LOSE. Otherwise it sends IAC DONT
68
+ RANDOMLY-LOSE, and the server is forbidden from randomly losing.
69
+
70
+ Alternatively, the user could request the server to randomly lose, by
71
+ sending IAC DO RANDOMLY-LOSE, and the server will either reply with
72
+ IAC WILL RANDOMLY-LOSE, meaning that it will then proceed to do some
73
+ random lossage (garbaging disk files is recommended for an initial
74
+ implementation). Or, it could send IAC WONT RANDOMLY-LOSE, meaning
75
+ that it insists upon being reliable.
76
+
77
+ Since this is implemented as a TELNET option, it is expected that
78
+ servers which do not implement this option will not randomly lose;
79
+ ie, they will provide 100% reliable uptime.
80
+
@@ -0,0 +1,257 @@
1
+ % Title = "Scenic Routing for IPv6"
2
+ % abbrev = "Scenic Routing for IPv6"
3
+ % category = "info"
4
+ % docName = "rfc-7511"
5
+ % ipr= "trust200902"
6
+ % area = "Internet"
7
+ % workgroup = "Network Working Group"
8
+ %
9
+ % date = 2015-04-01T00:00:00Z
10
+ %
11
+ % [[author]]
12
+ % initials="M."
13
+ % surname="Wilhelm"
14
+ % fullname="Maximilian Wilhelm"
15
+ % [author.address]
16
+ % email = "max@rfc2324.org"
17
+ % phone = "+49 176 62 05 94 27"
18
+ % [author.address.postal]
19
+ % city = "Paderborn, NRW"
20
+ % country = "Germany"
21
+
22
+ .# Abstract
23
+
24
+ This document specifies a new routing scheme for the current version
25
+ of the Internet Protocol version 6 (IPv6) in the spirit of "Green
26
+ IT", whereby packets will be routed to get as much fresh-air time as
27
+ possible.
28
+
29
+ {mainmatter}
30
+
31
+ # Introduction
32
+
33
+ In times of Green IT, a lot of effort is put into reducing the energy
34
+ consumption of routers, switches, servers, hosts, etc., to preserve
35
+ our environment. This document looks at Green IT from a different
36
+ angle and focuses on network packets being routed and switched around
37
+ the world.
38
+
39
+ Most likely, no one ever thought about the millions of packets being
40
+ disassembled into bits every second and forced through copper wires
41
+ or being shot through dark fiber lines by powerful lasers at
42
+ continuously increasing speeds. Although RFC 5841 [@!RFC5841] provided
43
+ some thoughts about Packet Moods and began to represent them as a TCP
44
+ option, this doesn't help the packets escape their torturous routine.
45
+
46
+ This document defines another way to deal with Green IT for traffic
47
+ and network engineers and will hopefully aid the wellbeing of a
48
+ myriad of network packets around the world. It proposes Scenic
49
+ Routing, which incorporates the green-ness of a network path into the
50
+ routing decision. A routing engine implementing Scenic Routing
51
+ should therefore choose paths based on Avian IP Carriers [@?RFC1149]
52
+ and/or wireless technologies so the packets will get out of the
53
+ miles/kilometers of dark fibers that are in the ground and get as
54
+ much fresh-air time and sunlight as possible.
55
+
56
+ As of the widely known acceptance of the current version of the
57
+ Internet Protocol (IPv6), this document only focuses on version 6 and
58
+ ignores communication still based on Vintage IP [@?RFC0791].
59
+
60
+ ## Conventions and Terminology
61
+
62
+ The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**",
63
+ "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this
64
+ document are to be interpreted as described in RFC 2119 [@!RFC2119].
65
+
66
+ Additionally, the key words "**MIGHT**", "**COULD**", "**MAY WISH TO**", "**WOULD
67
+ PROBABLY**", "**SHOULD CONSIDER**", and "**MUST (BUT WE KNOW YOU WON'T)**" in
68
+ this document are to interpreted as described in RFC 6919 [@!RFC6919].
69
+
70
+ # Scenic Routing
71
+
72
+ Scenic Routing can be enabled with a new option for IPv6 datagrams.
73
+
74
+ ## Scenic Routing Option (SRO)
75
+
76
+ The Scenic Routing Option (SRO) is placed in the IPv6 Hop-by-Hop
77
+ Options Header that must be examined by every node along a packet's
78
+ delivery path [@!RFC2460].
79
+
80
+ The SRO can be included in any IPv6 datagram, but multiple SROs **MUST
81
+ NOT** be present in the same IPv6 datagram. The SRO has no alignment
82
+ requirement.
83
+
84
+ If the SRO is set for a packet, every node en route from the packet
85
+ source to the packet's final destination **MUST** preserve the option.
86
+
87
+ The following Hop-by-Hop Option is proposed according to the
88
+ specification in Section 4.2 of RFC 2460 [@!RFC2460].
89
+
90
+ {#fig-scenic-routing-option-layout}
91
+ ~~~
92
+ 0 1 2 3
93
+ 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
94
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
95
+ | Option Type | Option Length |
96
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
97
+ | SRO Param | |
98
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
99
+ ~~~
100
+ Figure: Scenic Routing Option Layout
101
+
102
+ Option Type
103
+ : <br/>8-bit identifier of the type of option. The option identifier
104
+ 0x0A (On Air) is proposed for Scenic Routing.
105
+
106
+ {#fig-option-type}
107
+ ~~~~~
108
+ HEX act chg rest
109
+ --- --- --- -----
110
+ 0A 00 0 01010 Scenic Routing
111
+ ~~~~~
112
+ Figure: Scenic Routing Option Type
113
+
114
+ The highest-order two bits are set to 00 so any node not
115
+ implementing Scenic Routing will skip over this option and
116
+ continue processing the header. The third-highest-order bit
117
+ indicates that the SRO does not change en route to the packet's
118
+ final destination.
119
+
120
+ Option Length
121
+ : <br/>8-bit unsigned integer. The length of the option in octets
122
+ (excluding the Option Type and Option Length fields). The value
123
+ **MUST** be greater than 0.
124
+
125
+ SRO Param
126
+ : <br/>8-bit identifier indicating Scenic Routing parameters encoded as a bit string.
127
+
128
+ {#fig-bit-string-layout}
129
+ ~~~~~
130
+ +-+-+-+-+-+-+-+-+
131
+ | SR A W AA X Y |
132
+ +-+-+-+-+-+-+-+-+
133
+ ~~~~~
134
+ Figure: SRO Param Bit String Layout
135
+
136
+ The highest-order two bits (SR) define the urgency of Scenic
137
+ Routing:
138
+
139
+ {style="empty"}
140
+ - 00 - Scenic Routing **MUST NOT** be used for this packet.
141
+ - 01 - Scenic Routing **MIGHT** be used for this packet.
142
+ - 10 - Scenic Routing **SHOULD** be used for this packet.
143
+ - 11 - Scenic Routing **MUST** be used for this packet.
144
+
145
+ The following BIT (A) defines if Avian IP Carriers should be used:
146
+
147
+ {style="empty"}
148
+ - 0 - Don't use Avian IP Carrier links (maybe the packet is
149
+ afraid of pigeons).
150
+ - 1 - Avian IP Carrier links may be used.
151
+
152
+ The following BIT (W) defines if wireless links should be used:
153
+
154
+ {style="empty"}
155
+ - 0 - Don't use wireless links (maybe the packet is afraid of
156
+ radiation).
157
+ - 1 - Wireless links may be used.
158
+
159
+ The following two bits (AA) define the affinity for link types:
160
+
161
+ {style="empty"}
162
+ - 00 - No affinity.
163
+ - 01 - Avian IP Carriers **SHOULD** be preferred.
164
+ - 10 - Wireless links **SHOULD** be preferred.
165
+ - 11 - RESERVED
166
+
167
+ The lowest-order two bits (XY) are currently unused and reserved
168
+ for future use.
169
+
170
+ # Implications
171
+
172
+ ## Routing Implications
173
+
174
+ If Scenic Routing is requested for a packet, the path with the known
175
+ longest Avian IP Carrier and/or wireless portion **MUST** be used.
176
+
177
+ Backbone operators who desire to be fully compliant with Scenic
178
+ Routing **MAY WISH TO** -- well, they **SHOULD** -- have separate MPLS paths
179
+ ready that provide the most fresh-air time for a given path and are
180
+ to be used when Scenic Routing is requested by a packet. If such a
181
+ path exists, the path MUST be used in favor of any other path, even
182
+ if another path is considered cheaper according to the path costs
183
+ used regularly, without taking Scenic Routing into account.
184
+
185
+ ## Implications for Hosts
186
+
187
+ Host systems implementing this option of receiving packets with
188
+ Scenic Routing requested **MUST** honor this request and **MUST** activate
189
+ Scenic Routing for any packets sent back to the originating host for
190
+ the current connection.
191
+
192
+ If Scenic Routing is requested for connections of local origin, the
193
+ host MUST obey the request and route the packet(s) over a wireless
194
+ link or use Avian IP Carriers (if available and as requested within
195
+ the SRO Params).
196
+
197
+ System administrators **MIGHT** want to configure sensible default
198
+ parameters for Scenic Routing, when Scenic Routing has been widely
199
+ adopted by operating systems. System administrators **SHOULD** deploy
200
+ Scenic Routing information where applicable.
201
+
202
+ ## Proxy Servers
203
+
204
+ If a host is running a proxy server or any other packet-relaying
205
+ application, an application implementing Scenic Routing **MUST** set the
206
+ same SRO Params on the outgoing packet as seen on the incoming
207
+ packet.
208
+
209
+ Developers **SHOULD CONSIDER** Scenic Routing when designing and
210
+ implementing any network service.
211
+
212
+ # Security Considerations
213
+
214
+ The security considerations of RFC 6214 [@!RFC6214] apply for links
215
+ provided by Avian IP Carriers.
216
+
217
+ General security considerations of wireless communication apply for
218
+ links using wireless technologies.
219
+
220
+ As the user is able to influence where flows and packets are being
221
+ routed within the network, this **MIGHT** influence traffic-engineering
222
+ considerations and network operators **MAY WISH TO** take this into
223
+ account before enabling Scenic Routing on their devices.
224
+
225
+ # IANA Considerations
226
+
227
+ This document defines a new IPv6 Hop-by-Hop Option, the Scenic
228
+ Routing Option, described in (#scenic-routing-option-sro).
229
+ If this work is standardized, IANA is requested to assign a value from the "Destination Options and
230
+ Hop-by-Hop Options" registry for the purpose of Scenic Routing.
231
+
232
+ There are no IANA actions requested at this time.
233
+
234
+ # Related Work
235
+
236
+ As Scenic Routing is heavily dependent on network paths and routing
237
+ information, it might be worth looking at designing extensions for
238
+ popular routing protocols like BGP or OSPF to leverage the full
239
+ potential of Scenic Routing in large networks built upon lots of
240
+ wireless links and/or Avian IP Carriers. When incorporating
241
+ information about links compatible with Scenic Routing, the routing
242
+ algorithms could easily calculate the optimal paths providing the
243
+ most fresh-air time for a packet for any given destination.
244
+
245
+ This would even allow preference for wireless paths going alongside
246
+ popular or culturally important places. This way, the packets don't
247
+ only avoid the dark fibers, but they get to see the world outside of
248
+ the Internet and are exposed to different cultures around the globe,
249
+ which may help build an understanding of cultural differences and
250
+ promote acceptance of these differences.
251
+
252
+ {backmatter}
253
+
254
+ # Acknowledgements
255
+
256
+ The author wishes to thank all those poor friends who were kindly
257
+ forced to read this document and that provided some nifty comments.