ネットワークプロトコル：なんちゃら over なんちゃら の一覧表

ネットワークの勉強をするとOSI参照モデルというのを習うわけですが、世の中L1の上にL2、その上にL3、…と綺麗に並んでいるかというと全然そんなことはなくて、L2 over L3とかL2.5とかいろいろあるじゃないですか。そこで、なんちゃら over なんちゃら とか、なんちゃら in なんちゃら とか、カプセル化とか、トンネリングとか呼ばれるいろいろなプロトコルを一覧表にしたら分かりやすいかなーと思ったのです。

。。。カオスな表ができあがりました。分かりやすいとは言いがたいところですが、まあ見てやってください。

#用語の定義

##スパース
これは正式な用語ではなく、本稿のローカルタームです。
通信の両端が「A over B」プロトコルで通信するとき、中継ノードはBのみに対応し、Aプロトコルは単にペイロードとして伝送するのみという場合、その構成をスパース（sparse、疎）な構成と呼びます。逆に、中継ノードを含めて全部のノードが「A over B」プロトコルに対応する構成をデンス（dense、密）な構成と呼びます。
この用語選択は、FCoEのスパースモードとデンスモードからの流用です。

#本文
|上位|下位|規格書|プロトコル名称|備考|スパース可|
|:--|:--|:--|:--|:--|:--|
|ATM|L2TPv3|[RFC4454](https://tools.ietf.org/html/rfc4454) ([Google翻訳](https://rfcs.web.fc2.com/rfc4454.html))|||
|Ethernet|AAL5 (ATM)|[AF-LANE-0084.000](https://www.broadband-forum.org/ftp/pub/approved-specs/af-lane-0084.000.pdf)|LANE|802.1QはLANE上を通らない。||
|Ethernet|GRE|[RFC2784](https://tools.ietf.org/html/rfc2784) ([Google翻訳](https://rfcs.web.fc2.com/rfc2784.html))|EoGRE|NVGREとは別物。||
|Ethernet|GRE|[RFC7637](https://tools.ietf.org/html/rfc7637) ([Google翻訳](https://rfcs.web.fc2.com/rfc7637.html))|NVGRE|NVGREはGREの上位レイヤというよりGREの「一種」とでも呼ぶべき構造。ただしEoGREとは別物。プロトコルタイプは0x6558。[RFC7637](https://tools.ietf.org/html/rfc7637)の文言上、IPv4 over Ethernet over (NV)GRE over IPv4 over Ethernetと定義されているが、ではIPv6やIPSecやPPPやATMは非対応なのか？と言われると、そこはよく分からない。||
|Ethernet|IEEE802.1ah|IEEE802.1ah|||？|
|Ethernet|[IEEE802.1Q](http://standards.ieee.org/about/get/802/802.1.html) (VLAN)|||STPはVLAN上を通らない。ただしメーカー独自拡張 (Cisco PVST+) が提供されている。また、VLANごとにSTPを通す標準技術としてはIEEE802.1s (MST) がある。|○VLAN|
|Ethernet|InfiniBand||EoIB||○|
|Ethernet|IP|[RFC3378](https://tools.ietf.org/html/rfc3378) ([Google翻訳](https://rfcs.web.fc2.com/rfc3378.html))|EtherIP||○NAT不可|
|Ethernet|L2TPv3|[RFC4719](https://tools.ietf.org/html/rfc4719) ([Google翻訳](https://rfcs.web.fc2.com/rfc4719.html))||||
|Ethernet|MPLS|[RFC4448](https://tools.ietf.org/html/rfc4448) ([Google翻訳](https://rfcs.web.fc2.com/rfc4448.html))|EoMPLS|||
|Ethernet|SONET/SDH||||○|
|Ethernet|VXLAN|[RFC7348](https://tools.ietf.org/html/rfc7348) ([Google翻訳](https://rfcs.web.fc2.com/rfc7348.html))||今のところVXLANはEthernetしか通さない。ただしVXLANにはReserved領域があるため、将来は分からない。||
|FC-2 (Fibre Channel)|Ethernet||FCoE|Ethernetは拡張が必要。|○|
|Frame-Relay|L2TPv3|[RFC4349](https://tools.ietf.org/html/rfc4349) ([Google翻訳](https://rfcs.web.fc2.com/rfc4349.html))||||
|GRE|IP|[RFC2784](https://tools.ietf.org/html/rfc2784) ([Google翻訳](https://rfcs.web.fc2.com/rfc2784.html))|||○NAT不可|
|GRE|DTLS|[RFC8086](https://tools.ietf.org/html/rfc8086) ([Google翻訳](https://rfcs.web.fc2.com/rfc8086.html))|||○|
|GRE|IPSec||IPSecトンネルモード|||
|GRE|UDP|[RFC8086](https://tools.ietf.org/html/rfc8086) ([Google翻訳](https://rfcs.web.fc2.com/rfc8086.html))|||○|
|HDLC|L2TPv3|[RFC4349](https://tools.ietf.org/html/rfc4349) ([Google翻訳](https://rfcs.web.fc2.com/rfc4349.html))||||
|IEEE802.1ah|Ethernet|IEEE802.1ah|||○|
|IEEE802.1ah|[IEEE802.1Q](http://standards.ieee.org/about/get/802/802.1.html) (VLAN)|IEEE802.1ah||802.11ahヘッダの下位（外側）は802.11Qと共通の構造になっており、中継網には802.11Q対応のL2SWをそのまま使える。|○|
|[IEEE802.1Q](http://standards.ieee.org/about/get/802/802.1.html) (VLAN)|Ethernet|[IEEE802.1Q](http://standards.ieee.org/about/get/802/802.1.html)||LANE、Wi-Fiの上は通らない。|×|
|[IEEE802.1Q](http://standards.ieee.org/about/get/802/802.1.html) (VLAN)|IEEE802.1ah|IEEE802.1ah||802.11ahのテナントネットワーク上に802.11Qを通すことができる。||
|[IEEE802.1Q](http://standards.ieee.org/about/get/802/802.1.html) (VLAN)|[IEEE802.1Q](http://standards.ieee.org/about/get/802/802.1.html) (VLAN)|IEEE802.1ad|QinQ||○|
|IP|AAL5 (ATM)|[RFC2225](https://tools.ietf.org/html/rfc2225) ([Google翻訳](https://rfcs.web.fc2.com/rfc2225.html))|Classical IP over ATM||○|
|IP|Ethernet|[RFC894](https://tools.ietf.org/html/rfc894) ([Google翻訳](https://rfcs.web.fc2.com/rfc894.html))|||○|
|IP|FC-3 (Fibre Channel)|[RFC2625](https://tools.ietf.org/html/rfc2625) ([Google翻訳](https://rfcs.web.fc2.com/rfc2625.html))|IPFC|||
|IP|GRE|[RFC2784](https://tools.ietf.org/html/rfc2784) ([Google翻訳](https://rfcs.web.fc2.com/rfc2784.html))||||
|IP|InfiniBand|[RFC4391](https://tools.ietf.org/html/rfc4391) ([Google翻訳](https://rfcs.web.fc2.com/rfc4391.html)), [RFC4392](https://tools.ietf.org/html/rfc4392) ([Google翻訳](https://rfcs.web.fc2.com/rfc4392.html))|IPoIB||○|
|IP|IP|[RFC1853](https://tools.ietf.org/html/rfc1853) ([Google翻訳](https://rfcs.web.fc2.com/rfc1853.html))|IP in IP||○|
|IP|IPSec|[RFC4302](https://tools.ietf.org/html/rfc4302) ([Google翻訳](https://rfcs.web.fc2.com/rfc4302.html)), [RFC4303](https://tools.ietf.org/html/rfc4303) ([Google翻訳](https://rfcs.web.fc2.com/rfc4303.html))|IPSecトンネルモード|||
|IP|MPLS|[RFC3031](https://tools.ietf.org/html/rfc3031) ([Google翻訳](https://rfcs.web.fc2.com/rfc3031.html)), [RFC3032](https://tools.ietf.org/html/rfc3032) ([Google翻訳](https://rfcs.web.fc2.com/rfc3032.html))||||
|IPv4|PPP|[RFC1332](https://tools.ietf.org/html/rfc1332) ([Google翻訳](https://rfcs.web.fc2.com/rfc1332.html))||||
|IPv6|PPP|[RFC5072](https://tools.ietf.org/html/rfc5072) ([Google翻訳](https://rfcs.web.fc2.com/rfc5072.html))||||
|IPSec|IP|[RFC4302](https://tools.ietf.org/html/rfc4302) ([Google翻訳](https://rfcs.web.fc2.com/rfc4302.html)), [RFC4303](https://tools.ietf.org/html/rfc4303) ([Google翻訳](https://rfcs.web.fc2.com/rfc4303.html))|||○NAT不可|
|IPSec|TCP|[RFC8229](https://tools.ietf.org/html/rfc8229) ([Google翻訳](https://rfcs.web.fc2.com/rfc8229.html))|||○NAT可|
|IPSec|UDP|[RFC3497](https://tools.ietf.org/html/rfc3497) ([Google翻訳](https://rfcs.web.fc2.com/rfc3497.html)), [RFC3498](https://tools.ietf.org/html/rfc3498) ([Google翻訳](https://rfcs.web.fc2.com/rfc3498.html))|IPSec NATトラバーサル||○NAT可|
|IPv6|IPv4|[RFC2529](https://tools.ietf.org/html/rfc2529) ([Google翻訳](https://rfcs.web.fc2.com/rfc2529.html))|6over4|||
|L2TP|IPSec|[RFC3193](https://tools.ietf.org/html/rfc3193) ([Google翻訳](https://rfcs.web.fc2.com/rfc3193.html))|L2TP/IPSec||○|
|L2TPv3|IP|[RFC3931](https://tools.ietf.org/html/rfc3931) ([Google翻訳](https://rfcs.web.fc2.com/rfc3931.html))|L2TP over IP||○NAT不可|
|L2TPv3|UDP|[RFC3931](https://tools.ietf.org/html/rfc3931) ([Google翻訳](https://rfcs.web.fc2.com/rfc3931.html))|L2TP over UDP||○NAT可|
|MPLS|ATM|[RFC3031](https://tools.ietf.org/html/rfc3031) ([Google翻訳](https://rfcs.web.fc2.com/rfc3031.html)), [RFC3035](https://tools.ietf.org/html/rfc3035) ([Google翻訳](https://rfcs.web.fc2.com/rfc3035.html))|||○|
|MPLS|DTLS|[RFC7510](https://tools.ietf.org/html/rfc7510) ([Google翻訳](https://rfcs.web.fc2.com/rfc7510.html))||||
|MPLS|Ethernet|[RFC3031](https://tools.ietf.org/html/rfc3031) ([Google翻訳](https://rfcs.web.fc2.com/rfc3031.html)), [RFC3032](https://tools.ietf.org/html/rfc3032) ([Google翻訳](https://rfcs.web.fc2.com/rfc3032.html))|||？|
|MPLS|GRE|[RFC4023](https://tools.ietf.org/html/rfc4023) ([Google翻訳](https://rfcs.web.fc2.com/rfc4023.html))||||
|MPLS|IP|[RFC4023](https://tools.ietf.org/html/rfc4023) ([Google翻訳](https://rfcs.web.fc2.com/rfc4023.html))||||
|MPLS|MPLS|[RFC3031](https://tools.ietf.org/html/rfc3031) ([Google翻訳](https://rfcs.web.fc2.com/rfc3031.html))||MPLSラベルは多段化できる（ラベルスタック）。||
|MPLS|PPP|[RFC3031](https://tools.ietf.org/html/rfc3031) ([Google翻訳](https://rfcs.web.fc2.com/rfc3031.html)), [RFC3032](https://tools.ietf.org/html/rfc3032) ([Google翻訳](https://rfcs.web.fc2.com/rfc3032.html))||||
|MPLS|UDP|[RFC7510](https://tools.ietf.org/html/rfc7510) ([Google翻訳](https://rfcs.web.fc2.com/rfc7510.html))||||
|PPP|AAL5 (ATM)|[RFC2364](https://tools.ietf.org/html/rfc2364) ([Google翻訳](https://rfcs.web.fc2.com/rfc2364.html))|PPPoA|||
|PPP|Ethernet|[RFC2516](https://tools.ietf.org/html/rfc2516) ([Google翻訳](https://rfcs.web.fc2.com/rfc2516.html))|PPPoE||○|
|PPP|L2TPv3|[RFC4349](https://tools.ietf.org/html/rfc4349) ([Google翻訳](https://rfcs.web.fc2.com/rfc4349.html))|||○|
|PPP|MPLS|[RFC4618](https://tools.ietf.org/html/rfc4618) ([Google翻訳](https://rfcs.web.fc2.com/rfc4618.html))||||
|PPP|SONET/SDH|[RFC1619](https://tools.ietf.org/html/rfc1619) ([Google翻訳](https://rfcs.web.fc2.com/rfc1619.html))|||○|
|TCP|IPSec|[RFC4302](https://tools.ietf.org/html/rfc4302) ([Google翻訳](https://rfcs.web.fc2.com/rfc4302.html)), [RFC4303](https://tools.ietf.org/html/rfc4303) ([Google翻訳](https://rfcs.web.fc2.com/rfc4303.html))|IPSecトランスポートモード|||
|UDP|IPSec|[RFC4302](https://tools.ietf.org/html/rfc4302) ([Google翻訳](https://rfcs.web.fc2.com/rfc4302.html)), [RFC4303](https://tools.ietf.org/html/rfc4303) ([Google翻訳](https://rfcs.web.fc2.com/rfc4303.html))|IPSecトランスポートモード|||
|VXLAN|UDP|[RFC7348](https://tools.ietf.org/html/rfc7348) ([Google翻訳](https://rfcs.web.fc2.com/rfc7348.html))||[RFC7348](https://tools.ietf.org/html/rfc7348)の文言上、Ethernet over VXLAN over UDP over IPv4 over Ethernetと定義されている。ではIPv6やIPSecやPPPやATMは非対応なのか？と言われると、そこはよく分からない。|○|

以上！
他にもCプレーン的な話とかフレームサイズの話とかマルチキャストとブロードキャストのマッピングとか面倒くさいモロモロは多くありますが疲れてきたので略させていただきます。ごめんあそばせ。

#緩募：誰か教えてください

~~MPLSのルータ (LSR, LER) をEthernetでつなぐ場合、その間に普通のL2SWを挟んでいいんでしょうか。それとも全部MPLSルータで構成しないとダメなんでしたっけ。~~→ 間にL2SWを挟んでもちゃんと動くとのコメントをいただきました。詳しくはコメント欄を参照して下さい。

VXLANはNATトラバーサルできるんでしょうか。

FCIPとiFCPは、Fibre Channelのレイヤ的にはどのレイヤの上、どのレイヤの下に来ると位置付ければいいんでしょうか。

この手の なんちゃら over なんちゃら 系のプロトコルって他に何かありましたっけ。

~~EoGREのプロトコルタイプって何番なんでしょうか（NVGREは0x6558）。~~→ EoGREも0x6558です。従来型EoGREとNVGREとの違いはコメント欄を参照。プロトコルタイプの全リストは[こちら](http://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml)