最近ようやくIPv6を勉強し始めている。何を今更と言う勿れ。IP Core担当としては、そのScalability、Stability、Security向上のために、やるべきことが山ほどあったのだ。(今でも山ほどあるけれども。。)
IPv6の関連RFCを読むと、古き佳きThe Internetの担い手が、IPの近未来を策定しようとしている様子が見て取れる。IPv6の動機は、当然第一義的にはアドレススペースの拡大であるが、その他にもいくつかある。Prefix Aggregation, Plug and play, 複数のaddress scope、経路増大を抑えながらもMultihomeを行うための技術、MTU discoveryやIP SecのBuild-in、など。彼らが、IPv4の何を問題点、制限と考えていたか、というのもよくわかる。そして、日本の技術者も、持ち前の論理的緻密さで、いくつかの方式提案そして実装に大きく貢献している。
では私がここ数年何を主に取り組んできたかというと、
- Fast Convergence, prefix independent convergence
- High Availability (GR, NSF, SSO, NSR)
- MPLS (LDP, RSVP-TE, BGPおよびアーキテクチャ設計)
- MPLSのためのIGP拡張
- Fast Protection (FRR, etc.)
- Fast Detection (BFD, etc.)
- OAM: lsp-ping, trace, CV
- Infrastructure Security
- QoS, Traffic Management
といったものだ。そして改めて考えると、これらを推進する際に切り離せない概念が、「Control PlaneとForwardingの分離」と「RoutedとRoutingの区別」である。
いわゆる"HA"の技術は、コンピュータであれば"fault tolerant"と言われていたもので、要するにProgramやRoute Processor等のControl Plane障害が起こっても、forwarding処理を続行する仕組みである。一方、Fast ConvergenceやProtectionは、障害が起こったら、それを逸早く検知して逸早く切り替えるのが至上命題であるから、「しばらく現状維持」しようとするHA技術とは拮抗する。ここでの解決は、起こった障害が、「Control Planeの障害」か、「Forwarding Planeの障害」かを、明確に区別することである。
また、IGP経路の収束を早めるために、様々な取り組みが行われているが、結局収束時間は経路数に依存するため、IGP prefix数を減らす、または、重要経路のみを先に収束させる、というのが、かなり大きな効果をもたらす。で、何が重要経路か、というと、routingするために用いるnext hopアドレスである。ここで、”routed” prefixと”routing” prefix == nexthopを区別する必要が生じる。
この辺の概念 - 「Control PlaneとForwardingの分離」と「RoutedとRoutingの区別」 - は、これまでのところIPv6には無いように見える。しかし、IPv6-only coreを構築するのであれば、そしてそのcoreを信頼性の高いものにするためには、これら概念および技術はやはり必要になると思う。
IPv6の適用性は、疑いの余地はないと言ってよい。最近IPv4アドレス枯渇の提言も発表され、特に個人や家庭に割り振るアドレスとしてIPv6の普及は進むであろう。しかし、coreまでIPv6-onlyにすべきかどうかは、よくわからない。CiscoでもTony Hainなどは、IPv6普及により徐々にIPv4が減り、最終的にはIPv6-onlyになる、と言うが、これは疑問である。
上記のようなIPv4を前提にしたprotocolに行ってきたことを、IPv6のためにまた繰り返すrationaleが見つけられない。native IPであればまだよいが、MPLSを使いたい場合は、まずLDP, RSVPと言ったシグナリングそのものをv6対応にしなければならない。さらに、IGPへの拡張、それらプロトコルのHA対応...。BFDだって、本来隣接へのforwarding planeダウンを検出するためだったら、Protocol (IPv4/v6) agnosticにしておいてもよかったのだ。
勿論、繰り返す、という道もありえる。一度通った道だからもっとうまくやれるかもしれない。しかし技術者は、繰り返し、焼き直しがあまり好きではない。少なくとも私はそうだ。また、Infrastructure Securityの観点から見ても、コアのアドレスをglobally routedにする必要は無い。確かに、外部からのtracabilityはあった方が良いという議論もあると思うが、最近ではやはり、それよりDDoS対策の方が緊急度が高い。
時々起こるIPv6推進論争も、未だ詳細にブレークダウンした議論がなされていない感じがする。大雑把に括れば私の意見ももしかしたらIPv6否定派に取られてしまうのかもしれないが、全然そうではない。IPv6推進=IPv6原理主義という単純化され過ぎた構図が間違っていると言いたい。
”RoutedとRouting”の区別のスキームを進めれば、”Routed”のAddress Familyと”Routing”のAddress Familyが必ずしも一致している必要は無くなる。そうすれば一つの統一されたコア技術で、いかなるAddress Familyを扱えるようになる。IPv4, IPv6を始め、RD付きのVPNv4, VPNv6アドレス、MACアドレス、E.164だって...。但し、このためにはrfc2547(現rfc4364)的なアーキテクチャが必要になる。嫌いな人は嫌いかも。。。でも、これをもう少し単純化、普遍化する道はある、と思う。
コメント