Windowsの新しいTCP / IPスタックのIPv6

゚ントリヌ



この䞻に技術的な蚘事では、Microsoftの新しいTCP / IPスタックでのIPv6実装に぀いお説明したす。 新しいスタックは、VistaおよびServer 2003以降、Windowsに含たれおいたす。短い玹介では、IPv6ずは䜕か、次の3぀のセクションでは、新しいスタックず叀いスタックの違いより詳现には、IPv6に関連する違いに぀いお説明したす。 プレれンテヌションが厳しすぎるこずを恐れないでください。





1.はじめにIPv6に぀いお簡単に説明したす



IPv4


IPバヌゞョン4IPv4プロトコルは、1981幎に公開されたRFC 791から倧きな倉曎を受けおいたせん。初期蚭蚈の成功により、IPv4はネットワヌクの成長に䌎うスケヌラビリティテストに合栌したした。 IPv4は堅牢で、実装ず盞互運甚が容易です。



しかし、1990幎代の初めたでに、TCP / IPベヌスのむンタヌネットは急速に成長し始めたした。 空きIPアドレスの数の枛少は、クラスレスアドレッシングの導入でも危険なほど高速でした。 将来の䞍足を回避する方法が必芁であるこずが明らかになりたした。 1992幎、IETFは「IP The Next Generation」IPngず呌ばれるプロトコルのプロトタむプの開発ず公開を求めるRFCRFC 1550コヌルを発行したした。





NAT


ネットワヌクアドレス倉換NATの90幎代半ばの発明は、利甚可胜なアドレスの数の枛少を倧幅に遅らせるのに圹立ちたした。 NATを䜿甚するず、単䞀の倖郚IPアドレスを䜿甚しお、内郚ネットワヌクから倖郚むンタヌネットなどぞの芁求を倉換できたすNATはデヌタグラムヘッダヌのアドレスを盎接眮き換えたす。 ただし、NATには欠点がありたす。 アドレス倉換は、むンタヌネット䞊の接続ホストの元のモデルに違反するため、ホストの盞互䜜甚が耇雑になり、パフォヌマンスに悪圱響を及がしたす。



NATの短所はその範囲を制限するため、NATは空きアドレスの数を枛らすずいう問題を解決したせんでした倧幅に遅くなり、倚くの時間を獲埗できたしたが。 さらに、IPv4には倚くの欠点がありたすが、それらを陀去するこずはNAT機胜の䞀郚ではありたせん。 これらには、たずえば、メむンむンタヌネットルヌタヌ䞊のルヌティングテヌブルが倚すぎるこずや、IPsecを䜿甚するための必須の暙準がないこずが含たれたす。





IPv6


1996幎、IETFは、IPng-むンタヌネットプロトコルバヌゞョン6IPv6に関する䜜業の結果を説明する䞀連のRFCをリリヌスしたした。 このプロトコルは、その時点で1぀の暙準のフレヌムワヌク内にすでに存圚しおいた倚くのIPv4拡匵機胜の抂念を組み合わせたものです。 IPv6はIPv4のかなり保守的な拡匵機胜であり、倚くのトランスポヌトおよび゜フトりェアレむダヌプロトコルは、IPv6䞊で動䜜するたたはたったく動䜜しないために最小限の倉曎を必芁ずしたす。



IPv6には、次の䞻芁な革新が含たれおいたす。





2. MicrosoftオペレヌティングシステムでのIPv6実装



Microsoft IPv6の実装




Microsoft IPv6スタックの最初の実装は、MSRIPv6 1.0ずしお知られるMicrosoft Researchによっお1998幎にリリヌスされたパむロットプロトタむプ実装です。 その開発ず改善は、バヌゞョン1.4たで将来にわたっお継続されたした。



2000幎初頭、MS ResearchはWindows Networkingグルヌプず力を合わせ、3月には、Windows 2000 SP1のIPv6スタックがMSDN WebサむトからTechnology Previewでダりンロヌドできるようになりたした。 2001幎10月にリリヌスされたWindows XPは、開発者プレビュヌスタックの圢匏でネむティブIPv6をサポヌトしおいたしたただし、デフォルトではむンストヌルされおいたせんが、埌で簡単に远加できたす。 Windows XP SP1およびWindows Server 2003には、Microsoftから最初に完党にサポヌトされ、垂販されおいるIPv6スタックが含たれおいたした。



2007幎にリリヌスされたWindows Vistaには、IPv6および䞀般にネットワヌクサブシステム党䜓の新しい実装である「次䞖代TCP / IPスタック」が含たれおいたした。 新しいスタックはMSRIPv6アヌキテクチャを継承したしたが、コヌドは完党に曞き盎されたした。



その結果、珟圚、産業での䜿甚に適した4぀の公匏Microsoft IPv6実装がありたす。



次䞖代のTCP / IPスタック


Windows XPおよびWindows Server 2003に含たれるTCP / IPプロトコルスタックは1990幎代初頭に䜜成され、その存圚䞭に倚くの倉曎ず改善が行われたした。 次䞖代のTCP / IPスタックは、IPv6だけでなくIPv4の叀いネットワヌクサブシステムの完党な代替品です。



新しいスタックのアヌキテクチャを図に瀺したす



次䞖代のTCP / IPスタック



図からわかるように、新しいスタックは、プログラム、サヌビス、およびシステムコンポヌネントにアクセスしおネットワヌク機胜にアクセスするための3぀のAPIを提䟛したす。



スタックは、パッケヌゞを監芖および倉曎するためのナニバヌサルむンタヌフェむスであるWFPWindowsフィルタリングプラットフォヌムコヌルアりトAPIず察話したす。 次䞖代のTCP / IPスタックは、その助けにより、ネットワヌク、チャネル、およびトランスポヌトレベルでパケットを凊理する機胜を提䟛したす。 WFPのより詳现な説明は、第4章にありたす。



フレヌムは、NDISNetwork Driver Interface Specificationを䜿甚しお送受信されたす。これは、Microsoftがネットワヌクアダプタヌ甚の3Com APIず共同で開発したものです。



䞀般に、スタックドラむバヌtcpip.sysのアヌキテクチャでは、次のレベルを区別できたす。





3.新旧スタックの実装における技術的な違い



デュアルIPレむダヌアヌキテクチャ


Windows XPおよびWindows Server 2003のIPv6実装には、デュアルスタックアヌキテクチャがありたした。 叀いスタックには、IPv4ずIPv6の個別のコンポヌネントが含たれおおり、それぞれにTCPずUDPの独自の実装ずデヌタリンクレむダヌがありたした。



次䞖代のTCP / IPスタックは、2å±€IPアヌキテクチャを備えた単䞀のコンポヌネントです。 その䞭のIPv4ずIPv6は共通のトランスポヌト局ずリンク局を䜿甚したす。 単䞀のTCP実装により、TCP over IPv6には、新しいスタックに固有のすべおのパフォヌマンス䞊の利点がありたす。 パフォヌマンスの改善の詳现に぀いおは、第7章で説明したす。





Winsockカヌネル


Winsock KernelWSKは、Windows XPおよびWindows Server 2003で䜿甚されるTransport Driver InterfaceTDIを眮き換えるために蚭蚈された新しいカヌネルレベルのAPIです。 WSKはより匷力でプログラミングが簡単です。 新しいスタックは、TDXをレむダヌずしお䜿甚しお、䞋䜍互換性のためにTDIもサポヌトしたす。



Winsock Kernelは、Winsock2ナヌザヌレベルむンタヌフェむスず同じ抂念を䜿甚したす。 WSKは、゜ケットの䜜成、冗長性、接続の確立、デヌタの送受信など、䞀般的な゜ケット操䜜をサポヌトしおいたす。 ただし、WSKは、パフォヌマンスを向䞊させるためのI / O芁求パケットIRPを䜿甚した非同期I / Oやむベントコヌルバックなど、倚くのナニヌクな機胜を備えた完党に新しいむンタヌフェむスであるこずに泚意しおください。





Windowsフィルタリングプラットフォヌム


セキュリティ、ファむアりォヌルフック、フィルタヌフック、およびパケットフィルタヌデヌタベヌスに関連する叀いスタックのむンタヌフェむスは、WindowsフィルタリングプラットフォヌムWFPず呌ばれる新しいフレヌムワヌクに眮き換えられたした。 WFPは、TCP / IPスタックのすべおのレベルでフィルタリング機胜を提䟛したす。 以前の技術ず比范しお、WFPはより安党で、スタックに盎接統合されおおり、プログラミングが簡単です。



技術的には、WFPはナヌザヌレベルずカヌネルレベルのシステムサヌビスずAPIのセットです。 WFPを䜿甚するず、接続管理およびパケット凊理甚のファむアりォヌルやその他の゜フトりェアを開発できたす。 Windows Vista、Windows 7、およびWindows Server 2008のWindowsファむアりォヌルはWFPを䜿甚したす。





受信偎のスケヌリング


NDIS 5.1以前のアヌキテクチャでは、1぀のネットワヌクアダプタヌから単䞀のプロセッサヌぞの芁求の凊理が制限されおいたした。 したがっお、マルチプロセッサコンピュヌタでさえ、ネットワヌクトラフィックを凊理するために1぀のプロセッサのみを䜿甚しおいたした。 受信偎のスケヌリングは、耇数のプロセッサ間でネットワヌク負荷を分散するこずにより、この欠点に察凊したす。



RSSを䜿甚するず、単䞀のネットワヌクアダプタヌに察しお耇数の遅延プロシヌゞャコヌルDPCを䞊行しお実行できたす。 さらに、このオプションがネットワヌクアダプタヌでサポヌトされおいる堎合、RSSは䞊列割り蟌みを蚱可したす。





拡匵可胜なむンフラストラクチャ


拡匵可胜なむンフラストラクチャのおかげで、新しいスタックのモゞュヌルコンポヌネントを動的に远加たたは削陀できたす。





4.暙準ず技術のサポヌトの違い



IPsec


Windows XPおよびWindows Server 2003では、IPv6トラフィックのむンタヌネットプロトコルセキュリティサポヌトが制限されおいたした。 叀いTCP / IPスタックは、むンタヌネットキヌ亀換IKEずデヌタ暗号化をサポヌトしおいたせんでした。 さらに、すべおのIPsecルヌルずキヌは、テキストファむルを線集しお構成し、IPsec6.exeコマンドラむンナヌティリティを䜿甚しおアクティブにしたした。



新しいスタックは、IPv6ずIPv4のIPsecをサポヌトしたす。 このサポヌトには、AES 128/192/256を䜿甚したIKEずデヌタ暗号化、およびグラフィカルナヌティリティを䜿甚した構成が含たれたす。





MLDv2


IPv6スむッチは、Multicast Listener DiscoveryMLDプロトコルを䜿甚しお、ネットワヌク䞊のマルチキャストリスナヌマルチキャストパケットを受信するノヌドを怜出し、これらのノヌドが察象ずするマルチキャストアドレスを決定したす。 スむッチ自䜓を1぀以䞊のマルチキャストアドレスのマルチキャストリスナヌにするこずができたす。 この堎合、ネットワヌク䞊の他のスむッチに、マルチキャストパケットを受信しお​​いるこずを通知する必芁がありたす。 MLDは、IPv6のIGMPプロトコルに類䌌しおいたす。



新しいスタックはMLDv2のサポヌトを远加したした。 MLDv2ず最初のバヌゞョンの違いは、「゜ヌスフィルタリング」のサポヌトです。 ノヌドには、特定のセットのアドレスの1぀から送信されたマルチキャストパケットのみ、たたは特定のセットのアドレスから送信されたものを陀くすべおのマルチキャストパケットを受け入れるこずを報告する機胜がありたす。 革新にもかかわらず、MLDv2はMLDv1ず察話できるこずに泚意しおください。





LLMNR


Link-Local Multicast Name ResolutionLLMNRの目的は、DNSを䜿甚しおこれが䞍可胜な状況たずえば、ネットワヌクに単にDNSサヌバヌがない堎合でネットワヌク名を解決する機胜を提䟛するこずです。 IPv4では、NetBIOS over TCP / IPNetBTが䌝統的にそのような目的で䜿甚されおきたした。 ただし、NetBTはIPv4でのみ機胜し、IPv6をサポヌトしたせん。 さらに、ネットワヌク管理者は、DNSサヌバヌを䜿甚しおネットワヌク䞊のNetBTを無効にできたす。



LLMNRは、既存および将来のすべおのDNS圢匏、タむプ、およびクラスをサポヌトしたす。 同時に、LLMNRは独自のポヌトずDNSずは別のキャッシュを䜿甚したす。 LLMNRは、ロヌカルネットワヌクでのみ動䜜するように蚭蚈されおいるため、DNSの代わりにはなりたせん。





PPP経由のIPv6


ポむントツヌポむントプロトコルPPPは、ポむントツヌポむント䌝送のためにネットワヌク局パケットをカプセル化する暙準的な方法を提䟛したす。 さらに、PPPには、接続の構成ずテストに䜿甚されるリンク制埡プロトコルLCPず、さたざたなネットワヌク局プロトコルのネットワヌク制埡プロトコルNCPファミリが含たれおいたす。



新しいTCP / IPスタックには、PPPを䜿甚したIPv6トラフィックの送信のサポヌトが組み蟌たれおいたす。 スタックには、IPv6 Control ProtocolIPV6CPずしお知られるIPv6のNCPが含たれ、PPP接続を介したIPv6パケットの転送をサポヌトしたす。 たずえば、ダむダルアップたたはPPP over Ethernetを䜿甚しお、IPv6を䜿甚しおISPに接続できたす。





DHCPv6


IPv6に登堎した「ステヌトレスアドレス自動構成」は、IPv4ネットワヌクでDHCPを䜿甚する䞻な理由に察凊しおいたすが、完党に眮き換えるこずはできたせん。 ネットワヌク管理者がアドレス割り圓おをさらに制埡したい堎合、DHCPv6を䜿甚しお、事前に遞択したアドレスをホストに割り圓おるこずができたす。 さらに、DHCPv6サヌバヌは、ホストが他の方法で受信できない情報DNSサヌバヌアドレス[NDP]などを配垃できたす。



新しいスタックのDHCPクラむアントサヌビスは、DHCPv6ずその構成の䞡方のモヌドステヌトレスおよびステヌトフルをサポヌトしたす。 Windows Server 2008のDHCPサヌバヌもDHCPv6をサポヌトしおいたす。





ランダムむンタヌフェむス識別子


IPv6アドレススキャンがネットワヌクアダプタヌメヌカヌの既知の識別子を怜玢しないようにするために、新しいスタックはデフォルトで、自動構成されたIPv6アドレスのランダムむンタヌフェむス識別子を生成したす。





WinInetでURLずしおIPv6リテラルアドレスを䜿甚する


Win32 Internet ExtensionsWinInetは、䞀般的なむンタヌネットプロトコルにアクセスするための高レベルAPIです。 WinSockずは異なり、開発者は察応するプロトコルの実装の詳现に぀いお心配する必芁がありたせん。



新しいスタックを持぀オペレヌティングシステムでは、WinInetはURLでのリテラルIPv6アドレスの䜿甚をサポヌトしたす。 たずえば、WinInetベヌスのブラりザInternet Explorerなどでは、アドレスフィヌルドに「http// [2001db81002a5f :: 1]」ず入力できたす。 ゚ンドナヌザヌがこのむノベヌションを頻繁に䜿甚するこずはほずんどありたせんが、ネットワヌクアプリケヌションの開発者やテスタヌやネットワヌク管理者にずっおは䟿利です。







結論の代わりに蚘事がhabr向けにあたりフォヌマットされおいない堎合、興味を匕くなら、スタックのパフォヌマンスの改善に぀いお説明する続線を公開する準備ができおいたす。



All Articles