IPv6は解説書が書きにくい

   このエントリをはてなブックマークに登録    2016/11/17-1

IPv6の利用が世界中で増えつつあり、IETFなどのコミュニティではIPv4を廃止しようという動きが以前よりも活発化しています(参考)。

いまのところは、TCP/IPを解説するような文章を書くのであればIPv4を前提とした文章を書きつつ、IPv6の存在も紹介するという方法になりがちですが、今後の状況によっては、IPv4の紹介は「昔はそういうプロトコルがありました」と記述しつつ、IPv6を前提とした技術解説文を書く可能性も考えられます。

IPv6利用者数がIPv4利用者数を大きく超えるような状況になるのかならないのか、なるのであればそれがいつなのかに関しては、現時点では良くわかりません。ただ、「IPv6への移行」を目指して活動するネットワーク関係者の勢いは以前よりも強くなっている印象です。

例示用IPv6アドレスがわかりにくい

「IPv6への移行」を目指す動きが活発化しているものの、TCP/IPを紹介する技術書などを書くことを考えたときに、IPv6の方が説明しにくいと私は考えています。

IPアドレス表記のルールがIPv4よりもIPv6の方が複雑だったり、端末がIPアドレスを決定する方法が複数存在していてわかりにくかったりと、わかりにくいポイントは色々ありそうです。

色々あるなかで、個人的にどうにかして欲しいと感じている課題のひとつに、「ドキュメンテーション用のIPv6アドレスの見分けがつきにくい」という問題があげられます。

IPv4には、ドキュメンテーションで利用するための例示用IPアドレスとして/24が3ブロック用意されています。

  • TEST-NET-1 192.0.2.0/24
  • TEST-NET-2 198.51.100.0/24
  • TEST-NET-3 203.0.113.0/24

一方、IPv6用としては「2001:db8::/32」だけです。

IPv6の/32は、IPv4の/24と比べて膨大に大きな空間なのですが、解説書などを書くときにとにかくわかりにくいです。

現在のIPv6解説がどうなるか

では、IPv4とIPv6で、実際にどのような違いが出るのかを見てみましょう。

次の図は、IPv4でASをまたぐ通信の例を示しています。

これを現在のIPv6例示アドレスを使うと、次のようになります。

2001:db8:2::/48と、2001:db8:1::/48の2つの異なるネットワークを繋いだ図です。 2001:db8:2::/48がAS 64496にあり、2001:db8:1::/48がAS 64500にあるという設定になっています。 これは非常にわかりにくいです。

ドキュメンテーションで使えるAS番号が64496-64511(RFC 5398)ということもあり、そもそもAS番号がわかりにくいという問題もありますが。。。

既存の例示用IPアドレス標準化の経緯と新しいIPv6例示アドレスの可能性

これまで、様々な特殊用途IPアドレスが「RIRからの寄付」という形をとっています。

たとえば、IPv6例示アドレスである2001:db8::/32は、APNICのポリシー議論を経たうえでIETFで2004年にRFC 3849になっています(参考)。APNICからの寄付なのです。

IPv4の例示用IPv4アドレスも最初から3つあったわけではありません。IPv4のTEST-NET-2とTEST-NET-3がRFC 5735によって追加されたのが2010年ですが、それらもIPv6例示アドレス同様にAPNICからの寄付という形になっています。

例示アドレスではありませんが、ISP等が内部ネットワークで利用できるShared IPv4 Address(RFC 6598)である100.64.0.0/10は、ARINからの寄付という形でした。

このように、RIRからの寄付という形を取る前例があるのですが、新しいIPv6例示アドレスを既にある2001:db8::/32と異なる新しいIPv6例示アドレスを追加するには、RIR等からの寄付という形が前例に沿っているかも知れません。

ただ、IANAからAPNICに対して割り振られているIPv6アドレスの多くは、「2001」から始まるため、APNICからの寄付となってしまうと、結局はわかりやすいものにならなそうです(2400:0000::/12もありますが)。そのため、わかりやすいIPv6例示アドレスを実現するには、APNICではないRIRからの寄付である方が良いのではないかと考えています。

RIRからの寄付という方法の他に、3ffe::/16と5f00::/8をドキュメンテーション用に割り当てるという方法も考えられると個人的には考えています。3ffe::/16と5f00::/8は、かつては6bone用に割り振られたものの、現在はIANAに返却されているので(参考)、通常の用途のために再度割り振りされることはなさそうです。そういった「一般利用では使いにくいIPv6アドレス」であれば、IPv6例示用に割り当てをしてもらえる可能性があるかも知れないと個人的に期待しています。

この問題が改善可能かどうかに関して、一昨年にビッグローブの川村さんがRIPEで呼びかけてくれたのですが、海外のエンジニアからは「表現用のアドレススペースはいまのままで十分ある」という感じで問題意識を理解してもらえませんでした(参考)。

IPv6の方が例示用IPアドレスが便利な点も

IPv6の方がIPv4よりも例示用IPアドレスが優れていると思える点がひとつだけあります。

IPv4では、BGPなどの解説を行うときに/24よりも大きなIPアドレスブロックを扱った解説をしたくなるときがありますが、IPv4例示用のアドレスは/24しか存在しません。そのため、/23であったり、/16といった大きなIPアドレスブロックを扱う文章を書こうと思うと、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16というプライベートIPv4アドレスを使わざるを得ない場合もあるのです。

一方で、IPv6だと2001:db8::/32は大きな空間なので、2001:db8::/32を利用して複数のIPアドレスブロックを表現可能です。

ただ、例で登場するIPv6アドレスがすべて2001:db8:から始まってしまってわかりにくいという問題は、そのままですが。

もう一度働きかけてみるかも

一度は失敗したわけですが、あきらめずに少しずつ問題意識を発信することも大事かなぁと思いつつあります。

   このエントリをはてなブックマークに登録