Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI...

68
Day One :高度なIPv6設定 著者:クリス・グルンデマン Junos ® ネットワーキングテクノロジー シリーズ 1: IPv6に対するBGPサポートの考察 ............................ 5 2: 実稼働環境のIPv6への準備 ................................. 29 3: IPv6対応のシステム管理の確認 ............................. 51 次に参照すべき資料およびサイト ................................. 68

Transcript of Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI...

Page 1: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

Day One:高度なIPv6設定

著者:クリス・グルンデマン

Junos®ネットワーキングテクノロジーシリーズ

第1章: IPv6に対するBGPサポートの考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

第2章: 実稼働環境のIPv6への準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29

第3章: IPv6対応のシステム管理の確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

次に参照すべき資料およびサイト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Page 2: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

© 2011 by Juniper Networks, Inc. All rights reserved.

Juniper Networks、Juniper Networksのロゴ、Junos、NetScreen、および ScreenOSは、Juniper Networks, Inc.(以下、ジュニパーネットワークス)の米国およびその他の国における登録商標です。Junoseは、ジュニパーネットワークスの商標です。その他の商標、サービスマーク、登録商標、登録サービスマークは、それぞれの所有者に帰属します。

ジュニパーネットワークスは、本書に誤りが含まれることがあっても責任を負いません。ジュニパーネットワークスは、予告なく本書を変更、修正、転載、または改訂する権利を留保します。ジュニパーネットワークスが製造、販売する製品、あるいはその部品は、ジュニパーネットワークスが保有する、あるいはライセンスを受けた以下の米国特許のうち 1件または複数により保護されている場合があります。米国特許第 5,473,599号、第5,905,725 号、第 5,909,440 号、第 6,192,051 号、第 6,333,650号、第 6,359,479号、第 6,406,312号、第 6,429,706号、第 6,459,579号、第 6,493,347号、第 6,538,518号、第 6,538,899号、第 6,552,918号、第 6,567,902号、第 6,578,186号、第 6,590,785号。

発行者:Juniper Networks Books著者:クリス・グルンデマン主編集者:パトリック・エイムズ原稿整理・校正編集者:ナンシー・ケルベルJunosプログラムマネージャ:キャシー・ガデッキ

本書はさまざまなフォーマットでwww.juniper.net/dayoneから入手できます。

本書についてのご意見・ご感想は、電子メールで[email protected]宛にお寄せください。

TwitterでDay Oneシリーズ(@Day1Junos)をフォローしてください。

ISBN:978-1-936779-20-8(書籍)印刷:Vervante Corporation(米国)

ISBN:978-1-936779-21-5(電子書籍)

改訂:初版、2011年 4月 2 3 4 5 6 7 8 9 10 #7100139-en

著者の紹介クリス・グルンデマンは、IP、イーサネット、無線イーサネットの大規模ネットワークの設計、実装、運用を専門としており、相互接続ネットワーク(インターネットワーキング)やインターネットに関連するポリシー・ポリティクスに深く関与しています。JNCIE-M #449で、現在は tw telecom社に従事しており、既存および次世代の技術の評価、設計、実装、保守に向けた最先端技術に取り組んでいます。

クリスは、『Day One: IPv6の探求』の著者です。クリスは CO ISOC(インターネット協会のコロラド支部)の設立時から議長を務め、ARIN AC(Advisory Council)のメンバーにも選出されています。クリスはジュニパーネットワークスに関する情報にフォーカスしたニュース情報サイトの Burning With The Bushと、ユーザーと IPv6関連の専門家および専門情報の橋渡し的な役割を担うサイトの The IPv6 Experts .net、それぞれの設立時から編集者を務めています。クリス自身が主宰する個 人 blog(http://weblog.chrisgrundemann.com)では、インターネット関連の記事で、ネットワークの運用および設計、技術的な指針、インターネットの今後の展望といったトピックに焦点を当てています。

著者の謝辞本書の製作にご協力いただいたすべての方々に、深く感謝いたします。パトリック・エイムズ氏は、編集者としても指導者としても絶対的な存在でした。オーウェン・デロンギ氏には、こちらの要望に応えていただく形で技術校閲と整合性チェックを担当していただきました。キャシー・ガデッキ氏は、必要に応じて専門家の方々のとりまとめ役として、本書の製作が円滑に進むよう支援してくれました。ナンシー・ケルベル氏は、本書を読みやすくするために尽力してくれました。ベッカ・ニッツィン氏には本書の技術校閲、エディー・パラ氏には本書の校閲でそれぞれお世話になりました。IETFとその寄稿者の皆さんは、IPv6プロトコルを定義し、駆動するための技術的なオープンスタンダードを作成してくださいました。これなしでは、本書(ひょっとしたらインターネットの未来も)存在しなかったでしょう。最後になりましたが、本書を執筆することを含めて私が何かをするために必要な時間、サポート、そして愛を与えてくれた私の妻、エリン・グルンデマンに感謝したいと思います。皆さん、ありがとうございました。

ii

Page 3: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

本書を読む前に知っておくべきこと本書は、読者が以下の項目に精通していることを前提としています。

Junos CLIと Junos OS。

BGP、OSPF、IS-ISといったネットワークプロトコルと、中~大規模ネットワークでの使用法。

Junosを採用した中~大規模ネットワークでのトラブルシューティング方法。

IPv6プロトコルと IPv6アドレス。少なくとも、インタフェースのアドレス指定やスタティックルートなど、Junosでの基本的な IPv6接続の設定。

Junosを採用した基本的なネットワークとシステム運用。本書は、エンタープライズネットワークやサービスプロバイダネットワーク関連の経験があり、元々、Junos OSで IPv6をある程度使用した経験があるエンジニア向けに記述されています。したがって、経験豊富なユーザーが復習する場合の資料としても利用できます。

本書の学習目標

Junosで IPv6用に BGP(IBGPとEBGPを含む)を設定する。MP-BGPでの IPv6 NLRIの使用法を理解する。IPv6 BGPピアリングの適切な動作を確認する。

DHCPv6を利用して、動的なアドレス割当てに関してより多くの情報提供と制御を実現する。

IPv6で VRRPを使用して、冗長化と迅速なフェイルオーバーを実現する。

IPv6ネットワークで CoSを実装する。

MLD(Multicast Listener Discovery)の基本事項について説明する。

IPv6のシステム管理を目的として利用できるさまざまなオプションについて理解する。

テストベッド環境での成果やフィードバックに基づいて、実稼働IPv6ネットワークを設定する。

iii

Page 4: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

iv

Day One IPv6シリーズ本書では、Day Oneシリーズの一冊として以前に発行された『Day One: IPv6の探求』について言及する機会が多々あります。同書は、以下の方法で入手できます。

� www.juniper.net/dayoneで無償の PDF版を入手する。 � お使いのデバイスの iBooksアプリを使用して、iPhoneおよび

iPad用の電子書籍版を入手する。iBooksを開き、iBookstoreに移動し、「Day One Juniper」を検索して、本書をダウンロードする。

� Kindleアプリ用の電子書籍版を取得する。お使いのデバイスのKindleアプリを開き、Kindle Storeに移動する。「Day One Juniper」を検索する。

� Vervante Corporation社(www.vervante.com)または Amazon社(www.amazon.com)サイトで紙版を購入する。

献呈:ネイサン・デイ氏(1979~ 2010年)本書は、才気あふれるエンジニアにして素晴らしき友人、思いやりある夫にして情愛ある父であった同氏に捧げます。ネイト、君がいなくなって寂しい。クリス・グルンデマン

Page 5: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章

IPv6に対するBGPサポートの考察

IPv6テストベッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

IPv6によるBGPルーティングの導入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

ネイティブIPv6ピアリングについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

IPv4セッションでのIPv6ルートのアドバタイズ . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Page 6: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

6 Day One:高度なIPv6設定

Day Oneシリーズで IPv6関連の最初の一冊である『IPv6の探求』では、IPv6対応 LAN、インタフェースアドレス指定、スタティックルート、近隣探索、および IGPルーティングの設定について基本項目を網羅して紹介しました。同書には、Junos OSで IPv6の基本項目を設定する手順について、ステップ方式の指示が記載されています。同書を未読の場合は、通読して一通りの知識を習得しておくことをお勧めします。この章では、BGP(Border Gateway Protocol)を用いて、『IPv6の探求』で使用したテストベッドネットワークを次のレベルに移行します。したがって、テストベッドネットワークについての知識があれば、大いに役立ちます。『Day One: IPv6の探求』は、www.juniper.net/dayoneでダウンロードできます。また、印刷版と電子書籍版の両方が用意されています。この機会に、ご一読ください。『IPv6の探求』に続いて本書を通読することで、ネットワークで BGPルーティングを有効にする場合に必要な設定とテストの作業を網羅したことになります。第 1章では、IBGP(Internal Border Gateway Protocol)と EBGP(External Border Gateway Protocol)の両方を IPv6で設定する方法、ネイティブ IPv6ピアリングを利用する方法、および IPv6ルートを IPv4ピアリングセッションでアドバタイズする方法について学習します。IPv6 BGP設定をテストして検証する方法についても学習します。では、本題に進みましょう。

警告 ! これは、通常の意味での警告ではありません。本書の著者から、読者の方々へのお願いです。この章で説明している作業に取りかかる前に、Junos CLI、BGP、および Junosの基本的な IPv6ルーティングについて実際に作業する機会を持ち、理解しておくことを強くお勧めします。

さらに詳しくは Junos CLI、Junosの基本的な IPv6ルーティング、およびその他の関連トピックの詳細については、www.juniper.net/dayoneで Day Oneライブラリから目的に見合うタイトルを選んでダウンロードしてください。基本・入門編から上級編に至るまで、豊富なタイトルが用意されており、Junosのスキルレベルに応じて、適切なタイトルを見つけることができます。

IPv6テストベッド本書が高度な IPv6設定についてまとめたものであることは、これまでの説明でおわかりいただけたと思います。それでは、実際に本題に進みましょう。本書では、『Day One:IPv6の探求』で扱わなかった内容を取り上げます。また、同書で作成したテストベッドネットワークを使用していきます。本書で使用しているすべての例は、本書の「実習」セクションも含めて、図 1.1に示すネットワークに基づいています。『IPv6の探求』で構築したものと同じネットワークに、1台のルーター(ルーターP1)を追加することで、EBGPセッションの構築を可能にしています。

Page 7: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 7

『IPv6の探求』の場合と同様に、IPv6と Junos OSについて掘り下げながら、本書を最大限に活用するには、実際のラボやその他の非運用環境に合わせて読み替える必要があります。

R1

R5

R4

R3

R2

ループバックR1 = 2001:db8::1/128R2 = 2001:db8::2/128R3 = 2001:db8::3/128R4 = 2001:db8::4/128R5 = 2001:db8::5/128

::1

::2

::3

::5

2001:db8:0:4::/64

2001

:db8:0

:3::/6

4

2001:db8:0:5::/64

2001:db8:0:::/642001:db8:0:7::/64

2001:db8:0:8::/64

2001:db8:0:2::/64

2001

:db8

:0:9

::/64

2001

:db8

:0:1

::/64

ge-1/0/4

ge-1/

0/3

ge-1/0/1

ge-1/0/2ge-1/0/4

ge-1/0/2

ge-1/0/3

ge-1/0/1.100

ge-1/0/1

ge-1/0/2 ge-1/0/2

ge-1/0/1.100

ge-1/0/4.45

ge-1/0/2.45

ge-1/0/3.45ge-1/0/1.45

::4

ルーターIDR1 = 1.1.1.1R2 = 2.2.2.2R3 = 3.3.3.3R4 = 4.4.4.4R5 = 5.5.5.5

AS 65000 2001:db8::/48

P1AS 65111

2001 :db8:8000::/48MD5 = X-L@RG3

2001:db8:8000:4200::8/64

ge-1/0/3.84

fxp4.34fxp3.34

図 1.1 IPv6テストベッドのトポロジーとアドレス指定

図 1.1を確認するときの注意点として、本書の例と「実習」セクションは、『IPv6の探求』で取り上げた、テストベッドネットワークに関連するすべてのトピックについて、すでに設定および確認が済んでいることを前提としています。本書のテストベッドの IGPについては、『IPv6の探求』のOSPF3設定を使用しています。

Page 8: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

8 Day One:高度なIPv6設定

IPv6によるBGPルーティングの導入BGP(Border Gateway Protocol)は AS(Autonomous System)間ルーティングの事実上の標準であり、現在最も普及している EGP(Exterior Gateway Protocol)として、ASを他の ASに動的に接続する場合に最適な(通常は唯一の)方法であると位置付けられます。IPv4ネットワークで現在、BGPを使用している場合は、同様に IPv6もサポートするため、BGPを設定する必要があると考えられます。マルチホーム型の新しい IPv6ネットワークを立ち上げる場合や、他のASからの動的なルーティング更新を必要とする場合は、必ず IPv6用に BGPを設定する必要があります。Junosソフトウェアは、以下の方法で IPv6用の BGPをサポートしています。

� ネイティブ IPv6ピアリング:この方法では、(単一の 32ビットのルーター ID以外の)IPv4アドレスは不要であり、IPv6 NLRI(Network Layer Reachability Information)だけをサポートしています。

� IPv4での IPv6 NLRIのアドバタイズ:マルチプロトコルのBGP拡張機能をフル活用するため、この方法では、その他の必要な NLRIに加えて、IPv6と IPv4の両方の NLRIをサポートしています。

わかりやすく言い換えると、IPv4および IPv6の NRLI(Network Layer Reachability Information)は、宛先プレフィックスとプレフィックスレングス(ネットワークマスク)に該当します。この情報は、他のBGPパス属性(origin、as-path、next-hop、local-prefなど)との組み合わせで、BGPルートを生成します。

注 NLRIは BGP更新メッセージによって搬送される属性であり、本来は BGP-4で CIDRのサポート(IPv4専用)を有効にする目的で導入されました。現在、この機能は、MP_REACH_NLRIおよびMP_UNREACH_NLRI属性によって他のアドレスファミリにまで拡張されています。IPv4と IPv6の両方で、NLRIは BGP更新メッセージ内に <length, prefix>という形式でエンコードされています。IPv6の例は、/32, 2001:DB8::のようになります。ジュニパーネットワークスの機器は、BGPの実装時に、さまざまなメリットをもたらします。その中でも特に、Junosで見られる特長は、わかりやすく柔軟性に優れたルーティングポリシーとポリシーサブルーチンです。この他にも、IPv6パケットがハードウェアで転送され、Junosには IPv4と IPv6の間で一貫性が確保された簡潔な設定言語が用意されているというメリットがあります。

注 IS-ISと同様に、BGPの現在のバージョンは、IPv4と IPv6の両方をサポートしています。この点は、IPv6をサポートする場合に別のプロトコルバージョンが必要になる他の IGPとは異なります。

Page 9: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 9

さらに詳しくは BGP、NLRI、および MP-BGP の詳細については、RFC 4271『BGP-4』(http://www.ietf.org/rfc/rfc4271.txt) と RFC 4760『Multiprotocol Extensions for BGP-4』(http://www.ietf.org/

rfc/rfc4760.txt)を参照してください。

ネイティブ IPv6ピアリングについてネイティブ IPv6ピアリングは、IPv6対応の 2台の BGPルーター間で IPv6によるBGPセッションを確立します。具体的には、設定済みの隣接機器(neighbor)のアドレスは、その両方が IPv6アドレスであることを意味しています。前述のように、IPv6で確立された BGPピアリングセッションが交換できるのは、IPv6ルートに限定されます。この仕様は、IPv6専用ネットワークの環境や、BGPピアと IPv6ルートのみを交換する必要がある場合には最適です。IPv6でのピアリングセッションでは IPv6以外の NLRIを搬送できず、そのような対応が必要になることもほとんどありません。ただし、基本項目を網羅するため、この章では、実際にテストベッドの EBGPセッションでのネイティブ IPv6ピアリングについて実例を交えて説明するとともに、IBGPセッションでのMP-BGPの設定方法を紹介します。

ベストプラクティス 同じピアと IPv4ルートを交換する場合でも、IPv6 EBGPピアリングセッションをすべてネイティブ方式で設定すると、単一の EBGPセッションで両方の NLRIを組み合わせる場合よりも、柔軟性が大幅に向上するとともに冗長性が確保されます。

『IPv6の探求』でも繰り返し説明したように、IPv6の導入時にJunosを採用する大きなメリットの 1つとして、IPv6の設定は対応する IPv4の設定と共通する部分が多いという点が挙げられます。この点は、IPv6で BGPピアリングを設定する場合にも当てはまります。

IPv6ピアによるBGPの設定

図 1.1に示したテストベッドネットワークを使用して、ネイティブ IPv6 BGPを R4とP1の間に設定しましょう。Junosで IPv4による BGPを設定したことがある場合には、ここで取り上げる一連のステップも目新しいものではないでしょう。

注 この例をもう少し実環境のシナリオに沿って考えると、別のネットワークのルーターを設定する機会はめったにないので、設定する対象は一方の EBGPセッションだけになるでしょう。

最初のステップでは、必要な情報を収集します(図 1.1を参照)。 � AS番号:本書のテストベッドの AS番号は 65000です。

Page 10: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

10 Day One:高度なIPv6設定

� ピアAS:P1は AS 65111に存在します。 � 隣接機器の IP:P1が直接接続しているインタフェースのアドレスは 2001:db8:8000:4200::8/64です。

� インタフェース IP:P1のインタフェースと同じサブネットのアドレスを選択します。ここでは、2001:db8:8000:4200::4/64を使用しましょう。

� MD5キー:P1で使用するキーは X-L@RG3です。

ベストプラクティス 有効な BGPセッションを設定することは必須ではありませんが、すべての BGPピアリングセッションをMD5キーで保護することになるので、ベストプラクティスに該当します。

このデータに基づいて、R4の設定から始めましょう。

ネイティブ IPv6 BGPピアリングを設定するには

1. まず、設定モードに移行します。ipv6@r4> configure Entering configuration mode

2. routing-optionsで、ルーターの AS番号を設定します。 [edit]ipv6@r4# edit routing-options

[edit routing-options]ipv6@r4# set autonomous-system 65000

3. 次に、直接接続するインタフェースを適切な IPv6アドレスで設定します。

[edit routing-options]ipv6@r4# top

[edit]ipv6@r4# edit interfaces ge-1/0/3.84

[edit interfaces ge-1/0/3 unit 84]ipv6@r4# set family inet6 address 2001:db8:8000:4200::4/64

4. BGPを有効にしてから、設定の当該セクションに移動して、PEERSという名前のグループを作成します。

[edit interfaces ge-1/0/3 unit 84]ipv6@r4# top

[edit]ipv6@r4# edit protocols bgp group PEERS

Page 11: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 11

[edit protocols bgp group PEERS]ipv6@r4#

5. 次に、typeを externalに設定することで、EBGPセッションに切り替えます。

[edit protocols bgp group PEERS]ipv6@r4# set type external

6. ピアASとMD5認証キーの設定を含む、BGPの隣接機器を設定します。

[edit protocols bgp group PEERS]ipv6@r4# edit neighbor 2001:db8:8000:4200::8

[edit protocols bgp group PEERS neighbor 2001:db8:8000:4200::8]ipv6@r4# set peer-as 65111

[edit protocols bgp group PEERS neighbor 2001:db8:8000:4200::8]ipv6@r4# set authentication-key X-L@RG3

7. 最後に、設定階層の最上位に戻って、変更内容を確認してから、commitを実行します。

[edit protocols bgp group PEERS neighbor 2001:db8:8000:4200::8]ipv6@r4# top

[edit]ipv6@r4# show | compare [edit routing-options]+ autonomous-system 65000;[edit protocols]+ bgp {+ group PEERS {+ type external;+ neighbor 2001:db8:8000:4200::8 {+ authentication-key "$9$XDMxw2q.Pz3/9Av87-sY5Qz"; ## SECRET-DATA+ peer-as 65111; + }+ }+ }

[edit]ipv6@r4# commit commit complete

お疲れ様でした。これで、R4にネイティブ IPv6 EBGPピアリングセッションを設定したことになります。ただし、このままの状態では、このセッションはテストベッドネットワークで適切に機能しません。解決すべき問題がまだあるということです。現状では、R4は P1にルートをまったくアドバタイズしていないので、戻りトラフィックも入力トラフィックもテストベッドネットワークに到達しません。

Page 12: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

12 Day One:高度なIPv6設定

注 Junosを実行しているルーターが EBGPピアにアドバタイズするのは、デフォルトでは、BGP(IBGPまたは EBGP)経由で学習したルートに限定されます。

この問題に対処する最良の方法は、集約ルートとルーティングポリシーを使用することです。それでは、実際に設定しましょう。

ベストプラクティス IPv6ルートのアドレスサイズは IPv4ルートよりも大きいので(128ビットに対して 32ビット)、IPv6ルートが占有するメモリの量はIPv4ルートよりも多くなります。したがって、IPv6では、ルーティングテーブルの肥大化を避けるため、ネットワークの外部にアドバタイズするのは集約ルートに限定することが重要になります。

基本的な IPv6 EBGPエクスポートポリシーを設定するには

1. まず、テストベッドのネットワークプレフィックスの集約ルートを設定します。

[edit]ipv6@r4# edit routing-options rib inet6.0 aggregate

[edit routing-options rib inet6.0 aggregate]ipv6@r4# set route 2001:db8::/48

注 『Day One:IPv6の探求』で説明したように、IPv6集約ルートは、デフォルトの inet.0 rib(IPv4)ではなく、inet6.0 ribで設定する必要があります。

2. 次に、R4による集約ルート(この情報限定)のアドバタイズを可能にするエクスポートポリシーを設定します。

[edit routing-options rib inet6.0 aggregate]ipv6@r4# top

[edit]ipv6@r4# edit policy-options policy-statement peer-export

[edit policy-options policy-statement peer-export]ipv6@r4# edit term agg

[edit policy-options policy-statement peer-export term agg]ipv6@r4# set from protocol aggregate

[edit policy-options policy-statement peer-export term agg]ipv6@r4# set from route-filter 2001:db8::/48 exact

[edit policy-options policy-statement peer-export term agg]ipv6@r4# set then accept

Page 13: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 13

[edit policy-options policy-statement peer-export term agg]ipv6@r4# up

[edit policy-options policy-statement peer-export]ipv6@r4# edit term kil

[edit policy-options policy-statement peer-export term kil]ipv6@r4# set then reject

3. 設定したポリシーを PEERS BGPグループに適用します。[edit policy-options policy-statement peer-export term kil]ipv6@r4# top edit protocols bgp group PEERS

[edit protocols bgp group PEERS]ipv6@r4# set export peer-export

4. 変更内容を確認して、commitを実行します。[edit protocols bgp group PEERS]ipv6@r4# top

[edit]ipv6@r4# show | compare [edit routing-options]+ rib inet6.0 {+ aggregate {+ route 2001:db8::/48;+ }+ }[edit protocols bgp group PEERS]+ export peer-export;[edit policy-options]+ policy-statement peer-export {+ term agg {+ from {+ protocol aggregate;+ route-filter 2001:db8::/48 exact;+ }+ then accept;+ }+ term kil {+ then reject;+ }+ }

[edit]ipv6@r4# commit and-quit commit completeExiting configuration mode

Page 14: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

14 Day One:高度なIPv6設定

注 今回の peer-exportポリシーに含まれている kilキーワードは、あらゆる BGPルートをアドバタイズするデフォルトの BGPポリシーを無効にします。この設定は、IBGPおよび /またはその他の EBGPピアを設定した後の段階では、さらに重要になります。

これで問題は解決したと思われますが、このまったく新しい IPv6 EBGPピアリングセッションの動作を確認するまでは確証を持てません。次のセクションに進んで、具体的な方法を学習してください。

さらに詳しくは 本書で取り上げていない、BGPを設定する場合の詳細については、『Junos Software Routing Protocols Configuration Guide』の第 37~

39章(www.juniper.net/techpubsで入手可能)を参照してください。

さらに詳しくは Junosでルーティングポリシーを設定する場合の詳細については、『Junos Software Policy Framework Configuration Guide, Part 2』(同様にwww.juniper.net/techpubsで入手可能)を参照してください。

実習:ネイティブ IPv6 BGPピアリングの設定

実際に、手順を実行してみましょう。このセクションで学習した内容と、これまでに習得したBGPについてのあらゆる知識を活用して、テストベッドを設定します。IBGPとEBGPの両方をネイティブ IPv6ピアリングで設定してみてください。IPv4セッションと IPv6セッション両方を同じピアに設定できますか。プレフィックスの制限についてはどうでしょうか。エクスポートポリシーを試して、他のルートを IPv6ピアにアドバタイズしてください。認証を忘れないでください。

ネイティブ IPv6 BGPピアリングの確認

設定したネイティブ IPv6 EBGPピアリングセッションで、今度はテストと確認に重点的に取り組みます。Junosでネイティブ IPv6 BGPセッションを確認する手順は、IPv4 BGPセッションを確認する手順とよく似ています。このセクションでは、以下の必要な各コマンドの出力を解釈する方法について説明します。

� show bgp summary

� show bgp neighbor

� show route receive-protocol

� show route advertising-protocol

� ping

では、本題に進みましょう。

Page 15: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 15

BGPのサマリーを確認するにはshow bgp summaryコマンドを R4で実行することから、R4とP1間のネイティブ IPv6 EBGPピアリングセッションの確認を始めます。

[ipv6@r4> show bgp summary Groups:1 Peers:1 Down peers:0Table Tot Paths Act Paths Suppressed History Damp State Pendinginet6.0 1 1 0 0 0 0Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active Received /Damped...2001:db8:8000:4200::8 65111 373 371 0 0 2:45:56 Establ inet6.0:1/1/0

ipv6@r4>

ここで注意すべき最も重要なポイントは、以下のとおりです。 � State、Establ:ピアの状態は、確立済み(BGPピアリングセッションが有効)であることを示しています。

� #Active/Received/Damped、1/1/0:受信したルートがすべてアクティブであることを示しています(この例では、1つのルート)。

使用したルーティングテーブルが inet6.0であり、ピアが IPv6アドレスによって識別されているので、このセッションはネイティブ IPv6セッションであることがわかります。他にも、この出力に含まれている有用な情報として、セッションの状態が最後に変更された時刻(Last Up/Dwn、2:45:56)とピアAS番号(AS、65111)が挙げられます。

BGPピアの詳細を確認するには

BGPセッションが確立済みであることを確認したので、今度は BGPの隣接機器を show bgp neighborコマンドで詳しく見ていきましょう。

ipv6@r4> show bgp neighbor 2001:db8:8000:4200::8 Peer:2001:db8:8000:4200::8+179 AS 65111 Local:2001:db8:8000:4200::4+2304 AS 65000 Type:External State:Established Flags:<Sync> Last State:OpenConfirm Last Event:RecvKeepAlive Last Error:None Export:[ peer-export ] Options:<Preference AuthKey PeerAS Refresh> Authentication key is configured Holdtime:90 Preference:170 Number of flaps:0 Peer ID:10.0.1.8 Local ID:4.4.4.4 Active Holdtime:90 Keepalive Interval:30 Peer index:0 BFD: disabled, down Local Interface: ge-1/0/3.84

Page 16: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

16 Day One:高度なIPv6設定

NLRI advertised by peer: inet6-unicast NLRI for this session: inet6-unicast Peer supports Refresh capability (2) Table inet6.0 Bit:10000 RIB State:BGP restart is complete Send state: in sync Active prefixes: 1 Received prefixes: 1 Suppressed due to damping: 0 Advertised prefixes: 1 Last traffic (seconds):Received 3 Sent 22 Checked 18 Input messages: Total 417 Updates 1 Refreshes 0 Octets 7979 Output messages:Total 415 Updates 1 Refreshes 0 Octets 7967 Output Queue[0]:0

ipv6@r4>

この出力には有用な情報が数多く含まれていますが、ここではいくつかのポイントに絞って見ていきましょう。まず、このネイティブ IPv6ピアリングセッションでも、ルーター IDはともに IPv4アドレスの参照形式であることに注意してください。これは、BGPが32ビットのルーター IDを必要とすることに起因します。

警告 ! ルーターに IPv4アドレスが設定されていない場合、手動でルーターIDを割り当てる必要があります。

ベストプラクティス 特に必要がない状況でも、ルーター IDは静的に割り当てることがベストプラクティスであると考えられます。

この例では、OSPF3をサポートするため、前述のように 32ビットのルーター IDが必要なので、R4にルーター IDが設定されています。

ipv6@r4> show configuration routing-options router-id router-id 4.4.4.4;

使用されているNLRIタイプは inet6-unicastだけであり、出力の冒頭に含まれているピアおよびローカルアドレスは IPv6アドレスであることもはっきりと確認できるので、ネイティブ IPv6セッションであることの裏付けになっています。

BGPルートを表示するには

ルートテーブル全体を表示するのではなく、IGPの情報があれば十分な場合、Junosでは、各 BGPピアとの間で相互にアドバタイズされるルートに限定して確認できます。

1. まず、想定どおりのルートを隣接機器から受信していることを確認しています。

Page 17: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 17

ipv6@r4> show route receive-protocol bgp 2001:db8:8000:4200::8

inet.0:0 destinations, 0 routes (0 active, 0 holddown, 0 hidden)

inet6.0:29 destinations, 33 routes (29 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path* 2001:db8:8000::/48 2001:db8:8000:4200::8 65111 I

__juniper_private1__.inet6.0:1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)

ipv6@r4>

2. 想定どおりのルートを隣接機器にアドバタイズしていることを確認します。

ipv6@r4> show route advertising-protocol bgp 2001:db8:8000:4200::8

inet6.0:29 destinations, 33 routes (29 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path* 2001:db8::/48 Self I

ipv6@r4>

注 show route receive-protocolおよびshow route advertising-protocol

コマンドは、特定の隣接機器アドレスを指定して呼び出す必要があります(この例では、P1のアドレス:2001:db8:8000:4200::8を使用)。

この出力では、R4が単一のプレフィックス(2001:db8:8000::/48)を P1から受信してから、単一のプレフィックス(2001:db8::/48)をP1にアドバタイズしていることがはっきりと確認できます。これが確認したかった内容そのものです。

pingによるテストで接続を確認するには

すべて順調に運んでいますが、まだ終わりではありません。新しいEBGPセッションがトラフィックを通過させていることを確認する最良の方法は、実際にトラフィックを通過させてみることです。具体的には、従来と同じ pingを実行します。1. まず、アドバタイズされたピアルーターのプレフィックスのアドレスで pingを実行します。

ipv6@r4> ping 2001:db8:8000::1 count 3 rapid PING6(56=40+8+8 bytes) 2001:db8:8000:4200::4 --> 2001:db8:8000::1!!!--- 2001:db8:8000::1 ping6 statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max/std-dev = 0.278/0.342/0.455/0.080 ms

ipv6@r4>

Page 18: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

18 Day One:高度なIPv6設定

2. アドバタイズされたルーターのプレフィックスのアドレス(R4のループバック)からpingを source指定で実行します。

ipv6@r4> ping 2001:db8:8000::1 count 3 rapid source 2001:db8::4 PING6(56=40+8+8 bytes) 2001:db8::4 --> 2001:db8:8000::1!!!--- 2001:db8:8000::1 ping6 statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max/std-dev = 0.282/0.348/0.479/0.092 ms

ipv6@r4>

上出来ですね。アドバタイズされたプレフィックスのアドレスからpingを source指定で実行することで、ピアがプレフィックスを受け入れたことを確認しました。ピアがプレフィックスを受け入れなかった場合、戻りルートがなくなるので、pingは失敗します。これまでに確認した結果から、この例のネイティブ IPv6 BGPセッションはまったく問題なく動作すると判断できます。

さらに詳しくは BGPの運用モードで使用するコマンドの詳細については、『Junos Software Routing Protocols and Policies Command Reference』(www.juniper.net/techpubsで入手可能)の第3章を参照してください。

実習:ネイティブ IPv6 BGPピアリングの確認

今度は、このセクションで学んだ内容をテストベッドに応用して、実際にネイティブ IPv6 BGPピアリングセッションを確認します。すべてのセッションが確立されていて、想定されるすべての IPv6アドレスをアドバタイズおよび受信していることを確認します。プレフィックスごとに最終確認として、pingによるテストを実行します。

IPv4セッションでの IPv6ルートのアドバタイズこの時点で、ネイティブ IPv6 BGPの実装が無事に終了したか、少なくとも具体的な方法について、これまでの説明で一通り学習したことになります。今度は、IPv6ルートを IPv4ベースのピアリングセッションでアドバタイズします。ネイティブ IPv6ピアリングを使用せずに、IPv6 NLRI(つまり、IPv6ルート)を IPv4ベースのピアリングセッションでアドバタイズする主な理由の 1つとして、ピアリングセッションを追加せずに、IBGPトポロジー内で複数のアドレスファミリ(NLRI)をアドバタイズする必要性が挙げられます。ほとんどの場合、ピアリングセッションの数を減らす必要がなければ、ネイティブセッションを使用するのが最良の方法です。IPv4ベースの BGPピアリングセッションでは、ネイティブ IPv6セッションとは異なり、JunosでサポートされているあらゆるNLRIを搬送できます。

Page 19: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 19

� inet:IPv4

� inet6:IPv6

� inet-vpn:IPv4レイヤー 3 VPN

� inet6-vpn:IPv6レイヤー 3 VPN

� l2vpn:IPv4 MPLSベースのレイヤー 2 VPNおよび VPLS

� inet-mdt:IPv4 MDT(Multicast Distribution Tree) � inet-mvpn:IPv4マルチキャストVPN

� inet6-mvpn:IPv6マルチキャストVPN

� iso-vpn:ISO/IS-ISレイヤー 3 VPN

� route-target:VPNルートフィルタリングで使用これらのアドレスファミリのほとんどについて、本書では取り扱いませんが、MPLSや VPNについての経験がある読者の方は、少なくとも1~ 2種類のアドレスファミリについては知っていることでしょう。このリストを紹介したのは、Junosでは IPv4でMP-BGPを実装することによって柔軟性が大幅に向上するという点を強調したかったからです。

警告 ! BGPピアリングセッションに設定されているアドレスファミリを変更すると、そのセッションは破棄されて再確立されるので、一時的に中断することになります。

BGPセッションでアドバタイズされているNLRIを変更すると、ピアリングセッションで中断が生じます。ただし、本書の例で採用している IBGPトポロジーは完全冗長な構成であるので、EBGPセッションの場合と比較すると影響ははるかに小さくなります。このため、通信事業者によっては、IPv6 NLRIを既存の IBGP設定にそのまま追加する方法を選択する場合もあります。次に紹介するのは、この事例そのものです。

既存のピアリングの設定による IPv6のサポート

前のセクションでは、ネイティブ IPv6 BGPピアリングを設定しました。また、読者の方は、過去にネイティブ IPv4 BGPピアリングセッションを実際に設定した経験があるでしょう(少なくとも、目にしたことはあると思います)。本書のテストベッドのルーターR3~R5は、フルメッシュの IPv4専用の IBGPトポロジーで事前に設定されています。この設定を実現するため、図 1.2に示すように、各ルーターには IPv4インタフェースアドレスが割り当てられています。テストベッドのルーターは、既存の IPv6接続に加えて、IPv4の完全な到達可能性を実現するため、OSPFv2でも設定されています。

Page 20: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

20 Day One:高度なIPv6設定

R1

R5

R4

R3

R2

ループバックR1 = 2001:db8::1/128 & 10.10.10.1R2 = 2001:db8::2/128 & 10.10.10.2R3 = 2001:db8::3/128 & 10.10.10.3R4 = 2001:db8::4/128 & 10.10.10.4R5 = 2001:db8::5/128 & 10.10.10.5

::1

::2

::3

::5

2001:db8:0:4::/6410.10.4.0/24

2001

:db8:0

:3::/6

4

10.10

.3.0/2

4

2001:db8:0:5::/6410.10.5.0/24

2001:db8:0:::/6410.10.6.0/24

2001:db8:0:7::/64

10.10.7.0/24

2001:db8:0:8::/64

10.10.8.0/24

2001:db8:0:2::/64

10.10.2.0/24

2001

:db8

:0:9

::/64

2001:db8:0:1::/6410.10.1.0/24

ge-1/0/4

ge-1/

0/3

ge-1/0/1

ge-1/0/2ge-1/0/4

ge-1/0/2

ge-1/0/3

ge-1/0/1.100

ge-1/0/1

ge-1/0/2 ge-1/0/2

fxp4.34fxp3.34

ge-1/0/1.100

ge-1/0/4.45

ge-1/0/2.45

ge-1/0/3.45ge-1/0/1.45

::4

ルーターIDR1 = 1.1.1.1R2 = 2.2.2.2R3 = 3.3.3.3R4 = 4.4.4.4R5 = 5.5.5.5

AS 65000 2001:db8::/48

P1AS 65111

2001 :db8:8000::/48MD5 = X-L@RG3

2001:db8:8000:4200::8/64

ge-1/0/3.84

図 1.2 IPv4アドレス指定を含む IPv6テストベッドのトポロジー

この環境に対して、IPv6を追加しましょう。R4はすでに EBGPピアリングセッションが確立されているので、テストベッドネットワークでは、ここから始めるのが理にかなっているでしょう。

IPv6を既存の IPv4 BGPピアリングセッションに追加するには

1. まず、設定モードから、protocols bgpですでに設定済みの IBGPグループに移動して、inet6アドレスファミリを追加します。

[edit]ipv6@r4# edit protocols bgp group IBGP

[edit protocols bgp group IBGP]ipv6@r4# set family inet6 unicast

Page 21: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 21

2. 次に、デフォルトの inet unicastファミリをこのピアリングセッションに再追加します。

[edit protocols bgp group IBGP]ipv6@r4# set family inet unicast

注 デフォルトの inet4 unicastアドレスファミリは、他のアドレスファミリ(NLRI)を明示的に設定した時点で無効になっています。

3. 最上位に戻って、変更内容を確認してから、commitを実行します。[edit protocols bgp group IBGP]ipv6@r4# top

[edit]ipv6@r4# show | compare [edit protocols bgp group IBGP]+ family inet {+ unicast;+ }+ family inet6 {+ unicast;+ }

[edit]ipv6@r4# commit commit complete

4. 最後に、Junosの load patchコマンドを使用して、テストベッドの残りのルーターを設定します。R1については、以下のようになります。

ipv6@r1> configure Entering configuration mode

[edit]ipv6@r1# load patch terminal [Type ^D at a new line to end input][edit protocols bgp group IBGP]+ family inet {+ unicast;+ }+ family inet6 {+ unicast;+ }^Dload complete

[edit]ipv6@r1# commit commit complete

[edit]ipv6@r1#

Page 22: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

22 Day One:高度なIPv6設定

これで、テストベッドの IBGP設定は、IPv4と IPv6の両方の NLRIをアドバタイズするよう設定されました。ただし、もう察しがついているかもしれませんが、これで終わりではありません。解決すべき問題がまだ 2つあります。

� 2001:db8:8000:4200::/64サブネットは EBGPピアリングを目的としてR4とP1の間で使用されていますが、テストベッドのIGPにはインジェクトされていません。つまり、next-hop selfポリシーを設定して、Pからアドバタイズされたルートを他のテストベッドのルーターで解決できるようにする必要があります。

� さらに、IPv4ベースの IBGPピアリングで交換された IPv6ルートは、IPv4マッピング IPv6アドレスをネクストホップとして使用しています。R4の IPv4マッピングアドレスを IGPにアドバタイズして、到達するための経路を他のテストベッドルーターに認識させる必要があります。

R4に戻って、BGPのネクストホップが適切に設定されていることを確認しましょう。

IPv4 BGPセッションで IPv6の next-hop selfを設定するには

1. まず、P1によってアドバタイズされるルート用の next-hop selfポリシーを作成します。

[edit]ipv6@r4# edit policy-options policy-statement nhs

[edit policy-options policy-statement nhs]ipv6@r4# set term P1 from protocol bgp

[edit policy-options policy-statement nhs]ipv6@r4# set term P1 from neighbor 2001:db8:8000:4200::8

[edit policy-options policy-statement nhs]ipv6@r4# set term P1 then next-hop self

2. R4の IPv4マッピング IPv6アドレスを lo0.0に追加します(lo0.0はOSPFとOSPF3の両方で設定されているので、ここで追加したアドレスはすべてテストベッドの他のルーターにアドバタイズされます)。

[edit policy-options policy-statement nhs]ipv6@r4# top

[edit]ipv6@r4# edit interfaces lo0 unit 0

[edit interfaces lo0 unit 0]ipv6@r4# set family inet6 address ::ffff:10.10.10.4

注 10.10.10.4は R4の IPv4 lo0アドレスであると同時に、IBGPグループで設定されたローカルアドレスでもあるので、::ffff:10.10.10.4を使用する必要があります。

Page 23: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 23

3. 次に、いずれかのアドレスをプライマリとして優先するよう設定することで、lo0に対するセッションの判定動作を確認します。

[edit interfaces lo0 unit 0]ipv6@r4# set family inet6 address 2001:db8::4/128 primary preferred

4. 次に、next-hop selfポリシーを IBGPのピアリングセッションにエクスポートポリシーとして適用します。

[edit interfaces lo0 unit 0]ipv6@r4# top

[edit]ipv6@r4# edit protocols bgp group IBGP

[edit protocols bgp group IBGP]ipv6@r4# set export nhs

5. 変更内容を確認して、commitを実行します。[edit protocols bgp group IBGP]ipv6@r4# top

[edit]ipv6@r4# show | compare [edit interfaces lo0 unit 0 family inet6 address 2001:db8::2/128]+ primary;+ preferred;[edit interfaces lo0 unit 0 family inet6] address 2001:db8::4/128 { ...}+ address ::ffff:10.10.10.4/128;[edit protocols bgp group IBGP]+ export nhs;[edit policy-options]+ policy-statement nhs {+ term P1 {+ from {+ protocol bgp;+ neighbor 2001:db8:8000:4200::8;+ }+ then {+ next-hop self;+ }+ }+ }

[edit]ipv6@r4# commit commit complete

[edit]ipv6@r4#

Page 24: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

24 Day One:高度なIPv6設定

お疲れ様でした。今度は、テストベッドの IBGPトポロジーで IPv6のサポートを確認していきましょう。

ベストプラクティス 本書のテストベッドネットワークでは、R4が IPv6プレフィックスをアドバタイズする唯一のルーターです。したがって、テストベッドの他のルーターに IPv4マッピングアドレスを割り当ててアドバタイズする必要があるとは限りません。ただし、少なくとも、ネットワークの一部のルーターが特定のポイントで IPv6ルートを IBGPにアドバタイズする可能性はあるので、この設定を事前に済ませておくことがベストプラクティスであると考えられます。

さらに詳しくは IPv4ベースの BGPセッションで IPv6プレフィックスをアドバタイズする場合の詳細については、『Junos Software Routing Protocols Configuration Guide』(www.juniper.net/techpubsで入手可能)の第 38章「Enabling Multiprotocol BGP」および「Configuring IPv6 BGP Routes over IPv4 Transport」を参照してください。

実習:IPv4 IBGPの設定による IPv6のサポート

今度も、このセクションで学習した内容を実際に応用していきましょう。テストネットワークでIBGPを設定して、同じピアリングセッションで IPv4と IPv6をサポートします。さらにルートをインジェクトして、アドレスファミリも追加してみてください。特定のルートをフィルタリングできますか。IPv4とIPv6のフィルターを同じポリシーに組み合わせる場合についてはどうでしょうか。inet6ファミリを追加すると、IBGPセッションが再確立されるので、認証処理をまだ設定していない場合は、その好機です。IPv4マッピングアドレスの追加を忘れないでください。実際に行った作業の内容や関心を抱いた点については、J-Net(www.juniper.net/dayone)の本書のページに記事を投稿して、情報の共有にご協力ください。

IBGPピアリングと IPv6サポートの確認

また、確認について取り上げます。Junosは IPv6を的確に実装しているので、IPv4ベースのセッションに対する IPv6サポートの確認手順は、ネイティブ IPv6ピアリングの確認手順とよく似ています。本書のテストベッドの R1の確認から始めましょう。

IPv4ベースの BGPピアリングに対する IPv6サポートを確認するには

1. まず、すべての IBGPセッションが確立されていることを確認します。ipv6@r1> show bgp summary Groups:1 Peers:4 Down peers:0Table Tot Paths Act Paths Suppressed History Damp State Pendinginet.0 0 0 0 0 0 0inet6.0 1 1 0 0 0 0

Page 25: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 25

Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Damped...10.10.10.2 65000 70 72 0 0 31:57 Establ inet.0:0/0/0 inet6.0:0/0/010.10.10.3 65000 69 71 0 0 31:53 Establ inet.0:0/0/0 inet6.0:0/0/010.10.10.4 65000 72 71 0 0 31:57 Establ inet.0:0/0/0 inet6.0:1/1/010.10.10.5 65000 71 73 0 0 32:00 Establ inet.0:0/0/0 inet6.0:0/0/0

2. 次に、非表示(hidden)ルートを確認します。 ipv6@r1> show route hidden

inet.0:19 destinations, 19 routes (19 active, 0 holddown, 0 hidden)

inet6.0:27 destinations, 30 routes (27 active, 0 holddown, 0 hidden)

__juniper_private1__.inet6.0:1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)

3. 次に、BGP隣接機器の詳細(ここでは、R3とのセッション)を確認します。

ipv6@r1> show bgp neighbor 10.10.10.3 Peer:10.10.10.3+179 AS 65000 Local:10.10.10.1+1138 AS 65000 Type:Internal State:Established Flags:<Sync> Last State:OpenConfirm Last Event:RecvKeepAlive Last Error:None Options:<Preference LocalAddress AuthKey AddressFamily Refresh> Authentication key is configured Address families configured: inet-unicast inet6-unicast Local Address:10.10.10.1 Holdtime:90 Preference:170 Number of flaps:0 Peer ID:3.3.3.3 Local ID:1.1.1.1 Active Holdtime:90 Keepalive Interval:30 Peer index:3 BFD: disabled, down NLRI advertised by peer: inet-unicast inet6-unicast NLRI for this session: inet-unicast inet6-unicast Peer supports Refresh capability (2) Table inet.0 Bit:10000 RIB State:BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 0

Page 26: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

26 Day One:高度なIPv6設定

Table inet6.0 Bit:20000 RIB State:BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 0 Last traffic (seconds):Received 10 Sent 5 Checked 55 Input messages: Total 80 Updates 0 Refreshes 0 Octets 1520 Output messages:Total 82 Updates 0 Refreshes 0 Octets 1592 Output Queue[0]:0 Output Queue[1]:0

この出力で注意すべき最も重要なポイントは、以下のとおりです。 � NLRI/アドレスファミリ:inet-unicastと inet6-unicastの両方が出力パラメータ(Address families configured、NLRI advertised

by peer、および NLRI for this session)にリストされています。 � ルートテーブル:inet.0と inet.6 RIBの両方がリストされています。

4. R1が BGPルートを受信していることを確認します。ipv6@r1> show route protocol bgp

inet.0:19 destinations, 19 routes (19 active, 0 holddown, 0 hidden)

inet6.0:27 destinations, 30 routes (27 active, 0 holddown, 0 hidden)+ = Active Route, - = Last Active, * = Both

2001:db8:8000::/48 *[BGP/170] 00:52:42, localpref 100, from 10.10.10.4 AS path:65111 I > to fe80::2a0:c9ff:feca:9cc2 via ge-1/0/3.0

__juniper_private1__.inet6.0:1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)

本書のテストベッドネットワークに設定されている EBGPピアは 1つだけであるので、BGPルートも 1つだけになります。5. 次に、P1のルートを詳しく見ていきます。

ipv6@r1> show route 2001:db8:8000::/48 detail

inet6.0:27 destinations, 30 routes (27 active, 0 holddown, 0 hidden)2001:db8:8000::/48 (1 entry, 1 announced) *BGP Preference:170/-101 Next-hop reference count:3 Source:10.10.10.4 Next hop: fe80::2a0:c9ff:feca:9cc2 via ge-1/0/3.0, selected

Page 27: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第1章:IPv6に対するBGPサポートの考察 27

Protocol next hop:::ffff:10.10.10.4 Indirect next hop:87839a0 131070 State:<Active Int Ext> Local AS:65000 Peer AS:65000 Age:56:12 Metric2:1 Task:BGP_65000.10.10.10.4+2563 Announcement bits (2):0-KRT 4-Resolve tree 2 AS path:65111 I Aggregator:65111 10.0.1.8 Localpref:100 Router ID:4.4.4.4

Sourceおよび Router IDフィールドから、このルートは R4によってアドバタイズされていることがわかります。また、Protocol next hopフィールドを確認すると、R4に追加された next-hop selfポリシーと IPv4マッピングアドレス R4が有効に利用されていることがわかります。6. source指定で pingを実行して、AS 65111への接続を確認します。

ipv6@r1> ping 2001:db8:8000::1 source 2001:db8::1 rapid count 3 PING6(56=40+8+8 bytes) 2001:db8::1 --> 2001:db8:8000::1!!!--- 2001:db8:8000::1 ping6 statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max/std-dev = 0.369/0.450/0.585/0.096 ms

7. 最後に、tracerouteを使用して、AS 65111への最適なパスが使用されていることを確認します。

ipv6@r1> traceroute 2001:db8:8000::1 traceroute6 to 2001:db8:8000::1 (2001:db8:8000::1) from 2001:db8:0:2::1, 30 hops max, 12 byte packets 1 2001:db8:0:2::4 (2001:db8:0:2::4) 0.297 ms 0.268 ms 0.147 ms 2 2001:db8:8000::1 (2001:db8:8000::1) 0.501 ms 0.478 ms 0.427 ms

ipv6@r1>

お疲れ様でした。これで、実際に有効な IPv6 BGPネットワークの設定がすべて終了しました。

ベストプラクティス ネットワークのすべての IBGPルーターに対して、これまでの確認のステップをすべて実行することで、導入した機能全般の動作を確認します。

さらに詳しくは ネイティブ IPv6の確認のセクションで説明したように、BGPを確認するための Junosの運用モードのコマンドの詳細については、『Junos Software Routing Protocols and Policies Command

Reference』(www.juniper.net/techpubsで入手可能)の第 3章を参照してください。

Page 28: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

28 Day One:高度なIPv6設定

実習:IPv4ベースの BGPピアリングに対する IPv6サポートの確認

今度は、実際のテストベッドネットワークで、IPv4ベースの BGPピアリングセッションに対する IPv6サポートを確認します。すべてのセッションが確立されていて、想定されるすべてのIPv6プレフィックスをアドバタイズおよび受信していることを確認します。非表示ルートを確認してから、pingおよび tracerouteによるテストを実行して、各プレフィックスの到達可能性を確認します。

Page 29: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章

実稼働環境のIPv6への準備

DHCPv6の考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

IPv6用のVRRPについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

IPv6でのCoSについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

MLDについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49

Page 30: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

30 Day One:高度なIPv6設定

この時点で、本書のテストベッドネットワークは、ルーティングプロトコルの観点からは、すべての項目が設定されています。ただし、ご存じのこととは思いますが、ルートの交換だけで、ネットワークが正常に運用されるわけではありません。この章では、新しい IPv6ネットワークの運用に必要なプロトコルやツールについて考察します。この章では、DHCPv6、IPv6用の VRRP、および IPv6での CoSを取り上げます。この章全体を通して、多くの事例で不可欠なネットワークのビルディングブロックが IPv6の場合と IPv4の場合でどのように異なるかという点と、IPv6用の VRRPとCoSの両方を設定および確認する方法について学習します。

DHCPv6の考察『Day One:IPv6の探求』では、SLAAC(Stateless Address Auto

Configuration)を紹介して説明しました。SLAACは軽量なアドレス割り当てメカニズムであり、IPv6の近隣探索プロトコルに基づいて導入されています。SLAACに加えて、IPv6では、新しい DHCPv6プロトコルに基づいてDHCPを維持管理しています。この DHCPv6プロトコルについて、これから詳しく見ていきます。

警告 ! このセクションに取り組む前に、Junosでは IPv4で DHCPをどのように実装しているか、よく理解しておく必要があります。

さらに詳しくは Junosで使用する IPv4の DHCPの詳細については、『Junos Software Subscriber Access Configuration Guide』と『Junos Software Broadband Subscriber Management Solutions Guide』(http://www.juniper.net/techpubsで入手可能)を参照してください。

DHCPv6について

アドレスの自動設定機能が IPv6に組み込まれているにも関わらず、DHCPv6を使用する必要があるのはなぜでしょうか。まず、IPv6の動的なホスト設定について知っておくべき点として、DHCPv6とSLAACは互換性があり、組み合わせて使用できるということが挙げられます。SLAACの代わりに、または SLAACに追加する形でDHCPv6を実装する理由は、以下の 2つです。

� 提供する情報の向上:SLAACが提供するネットワーク関連の情報には限りがあるのに対して、DHCPv6は IPv6アドレスやプレフィックスに加えて、DNSサーバーのアドレスや検索オプション、SNTPサーバー、NIS設定などをクライアントに提供します。

Page 31: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 31

� 制御の向上:通信事業者によっては、割り当てるアドレスや、ネットワーク情報の受信を許可するクライアントを制御したいというニーズがあるでしょう。DHCPv6は、このような制御を可能にします。また、クライアントに割り当てられているアドレスや、割り当てのタイミングといった情報も明らかにします。この情報は、監査時には特に有用です。

DHCPv6を採用することが確定したら、IPv4の DHCPとの相違点を理解しておく必要があります。重要なポイントをいくつか挙げると、以下のようになります。

� 新しいプロトコル:IPv4の DHCPが古いプロトコル(BOOTP)に基づいているのに対して、DHCPv6はまったく新しい専用プロトコルであり、IPv4の DHCPに存在していた非効率な部分の多くを切り捨てています。

� マルチキャスト:他の多くの IPv6プロトコルと同様に、DHCPv6はブロードキャストではなく、マルチキャストを採用しています。

� リンクローカルアドレス:DHCPv6クライアントはリンクローカルアドレスを使用して、要求を送信しています。

� 単一の交換処理:単一の DHCPv6要求にクライアントのあらゆるインタフェースを含めることができるので、サーバーは単一の交換処理であらゆるインタフェースにアドレスを提供できます。

� ステートフルまたはステートレス:DHCPv6は、ステートフルモードまたはステートレスモードで動作できます。ステートフルモードを使用するのは、IPv4の DHCPと同様に、DHCPv6で IPv6アドレスを割り当てる必要がある場合です。ステートレスモードを使用するのは、別の方式(SLAACなど)で IPv6アドレスを提供し、DHCPv6では他の設定情報を提供するだけで済む場合です。

さらに詳しくは DHCPv6の詳細については、RFC 3315『Dynamic Host Configuration Protocol for IPv6 (DHCPv6)』(http://tools.ietf.org/rfc/rfc3315.txt)を参照してください。

DHCPv6の設定

本書の執筆時には、時間と機器の制約により、Junosでの DHCPv6用の完全な参考用設定は用意できませんでした。DHCPv6の実装はまだ流動的であり、十分に確定していない部分があるので、本書に記載しているシンプルな参考用設定でも、実際の環境で確実に機能するとは断言できません。動的な移行にはつきものですが、要素によっては、作業と文書化が同時に進められているわけです。

Page 32: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

32 Day One:高度なIPv6設定

したがって、まずは方向性を明確にしたいと思います。本書の執筆時点では、Junosの DHCPv6設定は、以下の 4つの基本要素で構成されています。

1. DHCPv6ローカルサーバーグループ:system services dhcp-

local-server dhcpv6で設定します。2. 加入者管理用の動的プロファイル:dynamic-profilesで設定します。

3. RADIUS 認証:access radius-server および access profile

で設定します。4. inet6アドレス割り当てプール:access address-assignmentで設定します。

基本的に、このセクションは、長い「実習」セクションになっています。それでは、DHCPv6のテストを実行しましょう。役に立つ(または、その逆の)解決策が見つかったら、ご自身の体験を J-Netの各タイトルのページ(www.juniper.net/dayone)に投稿してください。私も適宜、情報を投稿するつもりです。特に DNCPv6設定に関心がある場合は、J-Netの掲示板を確認して、実環境の実装事例についてのディスカッションを参考にしてください。

ヒント 本書をご覧いただいた時期によっては、すでに改訂版が www.juniper.net/dayoneで公開されている可能性があります。特にDNCPv6設定に関心がある場合は、改訂版が公開されていないか確認することをお勧めします。

さらに詳しくは JunosでDHCPを設定する場合の詳細については、『Junos Software Subscriber Access Configuration Guide』と『Junos Software Broadband Subscriber Management Solutions Guide』(ともにwww.juniper.net/techpubsで入手可能)を参照してください。

IPv6用の VRRPについてVRRP(Virtual Router Redundancy Protocol)により、LANホストは単一のデフォルトルート以外の追加設定を必要とせずに、冗長構成のルーティングプラットフォームを利用できるようになります。

VRRPルーターは、LANホストのデフォルトルートに対応する IPアドレスを共有します。VRRPルーターは常に、いずれか 1台がアクティブ(マスター)、残りはバックアップとして機能します。マスタールーターは、送信されたパケットを受け入れて、仮想ルーターの IPアドレス(ホストのデフォルトルートに設定されたアドレス)に転送します。また、

Page 33: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 33

定期的に(デフォルトは、1秒間隔)アドバタイズ情報をバックアップルーターに送信します。既定の時間を過ぎても、バックアップルーターがマスターからアドバタイズ情報を受信しなかった場合、次の優先順位のバックアップルーターがマスタールーターになり、パケットの転送処理を引き継ぎます。この動的なフェイルオーバーはごくわずかな VRRPトラフィックで実行され、ホストからの操作は必要としません。IPv6用の VRRPはプロトコルのバージョン 3に該当し、バージョン 2とは、主に以下の 3つの点で異なります。

� IPv6のサポート:バージョン 2では未対応です。 � 認証不要:IPv4専用のVRRPプロトコル交換は認証可能ですが、

IPv6用の VRRPを使用する場合、このオプションは使用できません。

� リンクローカルアドレス:IPv6用の VRRPでは、グループごとに仮想リンクローカルアドレスを明示的に定義する必要があります。仮想リンクローカルアドレスは、物理インタフェースアドレスと同じサブネットに存在している必要があります。

IPv6についての知識があれば、「IPv6の ND(Neighbor Discovery:近隣探索)を使用して、LANにルートの冗長性を確保できないだろうか」という質問が思い浮かぶことでしょう。

この質問の答えは、「できます」です。ただし、IPv6用の VRRPは、IPv6の NDよりもずっと高速にバックアップルーターへのフェイルオーバーを実行できます。この高速な移行を評価して、多くの通信事業者は、IPv6用の VRRPを優先的に採用しています。

さらに詳しくは IPv6用の VRRPの詳細については、draft-ietf-vrrp-ipv6-spec-08.txt: 『Virtual Router Redundancy Protocol for IPv6』(http://tools.ietf.org/id/draft-ietf-vrrp-ipv6-spec-08.txt)を参照してください。

IPv6用の VRRPの設定

本書のテストベッドネットワークでは、R1とR2が VRRPルーターとして設定され、接続先の LANの冗長性を確保しています。仮想ルーターのグループは IPアドレス 2001:db8:0:9::1を使用して、R1が優先のマスタールーターになります。この条件を図 2.1にまとめています。

Page 34: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

34 Day One:高度なIPv6設定

R1

R5

R4

R3

R2ルーターIDR1=1.1.1.1R2=2.2.2.2R3=3.3.3.3R4=4.4.4.4R5=5.5.5.5

::1

::2

::3

::5

2001:db8:0:4::/64

2001

:db8:0

:3::/6

4

2001:db8:0:5::/64

2001:db8:0:::/64

2001:db8:0:7::/64

2001:db8:0:8::/64

2001:db8:0:2::/64

2001

:db8

:0:9

::/64

2001

:db8

:0:1

::/64

ge-1/0/4ge

-1/0/3

ge-1/0/1

ge-1/0/2ge-1/0/4

ge-1/0/2

ge-1/0/3

ge-1/0/1.100 ge-1/0/1

ge-1/0/2 ge-1/0/2

ge-1/0/4.34ge-1/0/3.34

ge-1/0/1.100

ge-1/0/4.45ge-1/0/2.45

ge-1/0/3.45 ge-1/0/1.45

::4

エリア 0エリア 1

図 2.1 IPv6用の VRRPのテストベッドのトポロジー

LANのクライアントはすべて、デフォルトのゲートウェイ IPアドレス2001:db8:0:9::1ですでに設定されています。それでは、R1の設定から始めましょう。

R1で IPv6用の VRRPを設定するには

1. まず、LANの対向インタフェースでルーターのアドバタイズを有効にします。

[edit]ipv6@r1# edit protocols router-advertisement interface ge-1/0/1.100

[edit protocols router-advertisement interface ge-1/0/1.100]ipv6@r2# set prefix 2001:db8:0:9::/64

2. このインタフェースのリンクローカルアドレスを明示的に指定します。[edit protocols router-advertisement]ipv6@r1# top edit interfaces ge-1/0/1 unit 100 family inet6

[edit interfaces ge-1/0/1 unit 100 family inet6]ipv6@r1# set address fe80:db8:0:9::3/64

Page 35: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 35

3. IPv6用の VRRPの仮想ルーターグループをアドレス 2001:db8:0:9::3/64に作成します。

[edit interfaces ge-1/0/1 unit 100 family inet6]ipv6@r1# edit address 2001:db8:0:9::3/64 vrrp-inet6-group 42

[edit interfaces ge-1/0/1 unit 100 family inet6 address 2001:db8:0:9::3/64 vrrp-inet6-group 42]ipv6@r1#

4. 次に、仮想ルーターグループの IPアドレスを追加します。 [edit interfaces ge-1/0/1 unit 100 family inet6 address 2001:db8:0:9::3/64 vrrp-inet6-group 42]ipv6@r1# set virtual-inet6-address 2001:db8:0:9::1

5. さらに、仮想ルーターグループのリンクローカルアドレスを追加します。

[edit interfaces ge-1/0/1 unit 100 family inet6 address 2001:db8:0:9::3/64 vrrp-inet6-group 42]ipv6@r1# set virtual-link-local-address fe80:db8:0:9::1

6. 優先順位を追加して、preemptを設定することで、R1が利用可能なときは常にマスターになるようにします。

[edit interfaces ge-1/0/1 unit 100 family inet6 address 2001:db8:0:9::3/64 vrrp-inet6-group 42]ipv6@r1# set priority 250

[edit interfaces ge-1/0/1 unit 100 family inet6 address 2001:db8:0:9::3/64 vrrp-inet6-group 42]ipv6@r1# set preempt

7. 最後に、accept-dataを設定して、LANホストが仮想ルーター IP(LANホストのデフォルトゲートウェイ)に pingを実行できるようにします。

[edit interfaces ge-1/0/1 unit 100 family inet6 address 2001:db8:0:9::3/64 vrrp-inet6-group 42]ipv6@r1# set accept-data

半分まで設定できました。R1に IPv6用の VRRPを設定したところです。

ベストプラクティス accept-dataコマンドを使用するときは、ICMPパケットだけを受け入れるよう、ファイアウォールフィルタを設定する必要があります。

LANの冗長性を確保するには、テストベッドに少なくともVRRPルーターをもう 1台追加する必要があります。次に、R2を有効にします。Junosの便利なツールを組み合わせて利用できるなら、もっと簡単に手順を実行できます。

Page 36: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

36 Day One:高度なIPv6設定

R2で IPv6用の VRRPを設定するには

1. R1の変更内容を確定する前に、show | compareコマンドを実行します。

[edit]ipv6@r1# show | compare [edit interfaces ge-1/0/1 unit 100 family inet6 address 2001:db8:0:9::3/64]+ vrrp-inet6-group 42 {+ virtual-inet6-address 2001:db8:0:9::1;+ virtual-link-local-address fe80:db8:0:9::1;+ priority 250;+ preempt;+ accept-data;+ }[edit interfaces ge-1/0/1 unit 100 family inet6] address 2001:db8:0:9::3/64 { ...}+ address fe80:db8:0:9::3/64;[edit]+ protocols {+ router-advertisement {+ interface ge-1/0/1.100 {+ prefix 2001:db8:0:9::/64;+ }+ }+ }

2. これで、出力をテキストエディタにコピーし、物理インタフェースアドレスを ::3から ::2に変更して、priorityを下げます(250から200に変更)。3. さらに、load patch terminalコマンドを使用して、編集したテキストを R2に反映します。

[edit]ipv6@r2# load patch terminal [Type ^D at a new line to end input][edit interfaces ge-1/0/1 unit 100 family inet6 address 2001:db8:0:9::2/64]+ vrrp-inet6-group 42 {+ virtual-inet6-address 2001:db8:0:9::1;+ virtual-link-local-address fe80:db8:0:9::1;+ priority 200;+ preempt;+ accept-data;+ }[edit interfaces ge-1/0/1 unit 100 family inet6] address 2001:db8:0:9::2/64 { ...}+ address fe80:db8:0:9::2/64;[edit]+ protocols {+ router-advertisement {+ interface ge-1/0/1.100 {

Page 37: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 37

+ prefix 2001:db8:0:9::/64;+ }+ }+ }^Dload complete

変更内容を両方のルーターで確定したら、次の作業では、IPv6用のVRRPが適切に動作していることを確認します。

さらに詳しくは Junosでの IPv6用の VRRPを設定する場合の詳細については、『Junos Software High Availability Configuration Guide』(www.

juniper.net/techpubsで入手可能)を参照してください。

実習:IPv6用の VRRPの設定

では、最も楽しい作業に取りかかりましょう。テストベッドネットワークで、これまでに学習した内容を生かして、IPv6用の VRRPを設定します。忘れずに、ルーターのアドバタイズを有効にしてから、リンクローカルアドレスを固定値で指定してください。priority、preemption、accept-dataといった設定で、色々と試してみてください。VRRPルーターを 3台以上、設定してみてください。インタフェースとルートのトラッキング機能を使用して、VRRPの優先順位を変更できますか。J-Net(www.juniper.net/dayone)で公開されている本書に対する投稿欄に結果をお知らせください。

IPv6用の VRRPの確認

あらゆるネットワーキングプロトコルと同様に、IPv6用の VRRPが有効であるといえるのは、その動作が想定どおりである場合に限定されます。ユーザーからの不満を耳にする前に、この点を把握しておくため、実際に確認する必要があります。

IPv6用の VRRPを確認するには

1. まず、IPv6用の VRRPが R1で動作しており、R1がマスターであること確認します。

[ipv6@r1> show vrrp Interface State Group VR state VR Mode Timer Type Addressge-1/0/1.100 up 42 master Active A 0.198 lcl 2001:db8:0:9::3 vip fe80:db8:0:9::1 vip 2001:db8:0:9::1

2. 次に、R2をチェックして、R2が VRRPグループ 42のバックアップであることを確認します。

ipv6@r2> show vrrp Interface State Group VR state VR Mode Timer Type Addressge-1/0/1.100 up 42 backup Active D 2.285 lcl 2001:db8:0:9::2 vip fe80:db8:0:9::1 vip 2001:db8:0:9::1 mas fe80:db8:0:9::3

Page 38: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

38 Day One:高度なIPv6設定

3. VRRPオプションが両方のルーターで適切に設定されていることを確認します。これは、R1からの出力です。

ipv6@r1> show vrrp detail Physical interface: ge-0/0/0, Unit:666, Vlan-id:666, Address:2001:db8:0:9::3/64 Index:70, SNMP ifIndex:133, VRRP-Traps: disabled Interface state: up, Group:42, State: master, VRRP Mode:Active Priority:250, Advertisement interval:1, Authentication type: none Delay threshold:100, Computed send rate:0 Preempt: yes, Accept-data mode: yes, VIP count:2, VIP: fe80:db8:0:9::1, 2001:db8:0:9::1 Advertisement Timer:0.004s, Master router: fe80:db8:0:9::3 Virtual router uptime:00:22:36, Master router uptime:00:17:47 Virtual Mac:00:00:5e:00:02:2a Tracking: disabled

この出力から、preemptとaccept-dataの両方がyesに設定され、トラッキングが無効になっており、R1の優先順位が 250であることがわかります。4. 次に、R1のインタフェースを非アクティブ化して、フェイルオーバーのテストを実行します。

[edit]ipv6@r1# deactivate interfaces ge-1/0/1 unit 100

[edit]ipv6@r1# commit commit complete

5. R2がマスターとして処理を引き継いだことを確認します。ipv6@r2> show vrrp Interface State Group VR state VR Mode Timer Type Addressge-1/0/1.100 up 42 master Active A 0.271 lcl 2001:db8:0:9::2 vip fe80:db8:0:9::1 vip 2001:db8:0:9::1

6. R1の ge-1/0/1.100を再アクティブ化して、R2から処理を引き継いだことを確認します。

[edit]ipv6@r1# rollback 1 load complete

[edit]ipv6@r1# commit and-quit commit completeExiting configuration mode

ipv6@r1> show vrrp Interface State Group VR state VR Mode Timer Type Addressge-1/0/1.100 up 42 master Active A 0.282 lcl 2001:db8:0:9::3 vip fe80:db8:0:9::1 vip 2001:db8:0:9::1

Page 39: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 39

7. 最後に、いずれかの LANホストから仮想 IPに pingを実行して、accept-dataが有効であることを確認します。

client@HOST1> ping6 2001:db8:0:9::1PING 2001:db8:0:9::1(2001:db8:0:9::1) 56 data bytes64 bytes from 2001:db8:0:9::1: icmp_seq=0 ttl=64 time=7.01 ms64 bytes from 2001:db8:0:9::1: icmp_seq=1 ttl=64 time=2.84 ms64 bytes from 2001:db8:0:9::1: icmp_seq=2 ttl=64 time=2.27 ms64 bytes from 2001:db8:0:9::1: icmp_seq=3 ttl=64 time=2.25 ms^C--- 2001:db8:0:9::1 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3004msrtt min/avg/max/mdev = 2.253/3.598/7.018/1.988 ms, pipe 2

上出来ですね。これでテストベッドの LANに、ルーターの冗長性が確保されました。

さらに詳しくは IPv6 用の VRRPを確認する場合の詳細については、『Junos Software Interfaces Command Reference』(www.juniper.net/techpubsで入手可能)を参照してください。

実習:IPv6用の VRRPの確認

今度は、学んだ内容を応用して、テストベッドネットワークで IPv6用の VRRPを確認します。設定したオプションが各 VRRPルーターで統一されていない場合は、どのような影響が現れるでしょうか。トラッキング機能を使用して、トラッキング対象のルートやインタフェースが動作または停止したときに、優先順位がどのように変化するか確認してください。フェイルオーバーには、どのくらいの時間がかかりますか。この時間を短縮できますか。

IPv6での CoSについてCoS(Class of Service)は、さまざまなトラフィッククラスに特定のサービスレベルを適用するための手段と手順をまとめたものです。ネットワーク通信事業者はジュニパーネットワークス製ルーターのCoS機能を利用してサービスレベルを定義することで、さまざまな遅延、ジッター、およびパケットロスの特性をトラフィッククラスごとに設定できます。CoSを効果的に導入するには、エンドツーエンドのレベルでネットワーク全体に一貫して対処する必要があります。さまざまな実稼働ネットワークに見られるマルチベンダー環境では、あらゆるネットワーク機器に、特定のベンダーに依存しない、標準ベースの CoS実装が求められます。ジュニパーネットワークス製ルーターは IETFのDiffServ(Differentiated Service)標準に基づいているので、他のベンダーのデバイスとも連携します。DiffServの仕様では、IPヘッダーに 6ビットのフィールドが規定されています。このフィールドを使用して、パケットが属しているサービス

Page 40: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

40 Day One:高度なIPv6設定

クラスを通知します。このフィールドで搬送される値はDSCP(DiffServ Code Point)であり、ホストアプリケーションまたはネットワークエッジのルーターによって設定されます。パケットのパスに沿って存在しているその他のすべてのルーターは、DSCP値に基づいて、トラフィックの転送時にパケットをどのように扱うのか判定します。IPv4と IPv6の DiffServの主な違いは、パケットのヘッダーに含まれるDSCPビットの場所です。Junosは、dscp-ipv6という新しい設定およびコマンドステートメントで、この違いに対処します。次のセクションでは、この新しいステートメントを利用して、IPv6の CoSを設定する方法について学習します。

警告 ! 以降のセクションに取り組む前に、IPv4での CoSについてしっかりと理解しておく必要があります。

さらに詳しくは IPv6での CoSの詳細については、RFC 2474『Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers』とRFC 4594『 Configuration Guidelines for DiffServ Service Classes』(ともに http://tools.ietf.org/で入手可能)を参照してください。

IPv6での CoSの設定

CoSは範囲が広く、たいていは複雑なテーマであり、CoSだけを取り上げても、Day Oneシリーズの書籍を何冊も執筆できるでしょう。ただし、本書では、CoSの設定と確認について、IPv6と IPv4での違いに限定して取り上げたいと思います。このセクションを読み終えたら、IPv4での CoSの知識を IPv6ネットワークに適用する場合に必要な手段を手に入れたことになります。Junosでは、個別の設定にも、連携に基づく設定も対応するさまざまな CoSメカニズムによって、特に優れた柔軟性を実現し、数多くの個別サービスの提供を可能にしています。このメカニズムは、以下のとおりです。

� 分類子:DSCPを使用する BA(Behavior Aggregate。BAについては、本書で取り上げます)と、ファイアウォールフィルタを使用して柔軟性の向上を実現するMF(Multi-Field)という2つのタイプの分類子を使用して、受信パケットを転送クラスとPLP(Packet Loss Priority)に関連付けることができます。

� 転送クラス:ルーターを通過するパケットのマーキングおよびスケジューリングを定義できます。転送クラスは PLPとの組み合わせで、CoSに対するルーターの PHB(Per-Hop Behavior)を決定します。

Page 41: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 41

� ロス優先順位:名前が示唆しているように、特定のトラフィッククラスに PLPを指定できます。

� 転送ポリシーオプション:CoSベースの転送を定義できます。つまり、トラフィッククラスとネクストホップの関連付けを意味します。

� スケジューラ:パケットの伝送を制御できます。オプションの例として、トラフィッククラスごとの優先順位、帯域幅、遅延バッファサイズ、レート制御ステータス、RED(Random Early Detection)ドロッププロファイルなどが挙げられます。

� ポリサー:入力および出力インタフェースのどちらにも適用され、特定のクラスのトラフィックを対象として、帯域幅やバーストサイズを設定値に制限できます。この制限を超えるトラフィックに対するオプションとして、廃棄と再分類が用意されています。

� 再書き込みマーカー:送信パケットの DSCP値を再書き込みできます。

dscp-ipv6設定ステートメントが必要になるのは、再書き込みルールとBA分類子の設定時に限定されます。それでは、R2のCoSポリシーを作成して、どのようなものになるか確認しましょう。

IPv6の CoSポリシーを設定するには

1. my-dscp-mapという名前で分類子を作成することから始めます。[edit]ipv6@r2# edit class-of-service classifiers dscp-ipv6 my-dscp-map

[edit class-of-service classifiers dscp-ipv6 my-dscp-map]ipv6@r2#

2. 転送クラスを定義します。本書のテストベッドでは、3つの転送クラスを使用します。

[edit class-of-service classifiers dscp-ipv6 my-dscp-map]ipv6@r2# edit forwarding-class best-effort

[edit class-of-service classifiers dscp-ipv6 my-dscp-map forwarding-class best-effort]ipv6@r2# set loss-priority low code-points 000000

[edit class-of-service classifiers dscp-ipv6 my-dscp-map forwarding-class best-effort]ipv6@r2# up

[edit class-of-service classifiers dscp-ipv6 my-dscp-map]ipv6@r2# edit forwarding-class assured-forwarding

Page 42: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

42 Day One:高度なIPv6設定

[edit class-of-service classifiers dscp-ipv6 my-dscp-map forwarding-class assured-forwarding]ipv6@r2# set loss-priority low code-points [ 001010 010100 ]

[edit class-of-service classifiers dscp-ipv6 my-dscp-map forwarding-class assured-forwarding]ipv6@r2# up

[edit class-of-service classifiers dscp-ipv6 my-dscp-map]ipv6@r2# edit forwarding-class network-control

[edit class-of-service classifiers dscp-ipv6 my-dscp-map forwarding-class network-control]ipv6@r2# set loss-priority low code-points 110000

3. 次に、転送クラスごとにdscp-ipv6再書き込みルールを設定します。 [edit class-of-service classifiers dscp-ipv6 my-dscp-map forwarding-class network-control]ipv6@r2# up 3

[edit class-of-service]ipv6@r2# edit rewrite-rules dscp-ipv6 my-dscp-rewrite

[edit class-of-service rewrite-rules dscp-ipv6 my-dscp-rewrite]ipv6@r2# set forwarding-class best-effort loss-priority low code-point 000000

[edit class-of-service rewrite-rules dscp-ipv6 my-dscp-rewrite]ipv6@r2# set forwarding-class assured-forwarding loss-priority low code-point 001010

[edit class-of-service rewrite-rules dscp-ipv6 my-dscp-rewrite]ipv6@r2# set forwarding-class network-control loss-priority low code-point 110000

4. 新しい分類子と再書き込みルールをインタフェースに適用します。[edit class-of-service rewrite-rules dscp-ipv6 my-dscp-rewrite]ipv6@r2# up 2

[edit class-of-service]ipv6@r2# edit interfaces ge-1/0/1 unit 100

[edit class-of-service interfaces ge-1/0/1 unit 100]ipv6@r2# set classifiers dscp-ipv6 my-dscp-map

[edit class-of-service interfaces ge-1/0/1 unit 100]ipv6@r2# set rewrite-rules dscp-ipv6 my-dscp-rewrite

5. 最後に、設定の変更内容を確認して、commitを実行します。[edit class-of-service interfaces ge-1/0/1 unit 100]

Page 43: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 43

ipv6@r2# top

[edit]ipv6@r2# show | compare [edit]+ class-of-service {+ classifiers {+ dscp-ipv6 my-dscp-map {+ forwarding-class assured-forwarding {+ loss-priority low code-points [ 001010 010100 ];+ }+ forwarding-class network-control {+ loss-priority low code-points 110000;+ }+ forwarding-class best-effort {+ loss-priority low code-points 000000;+ }+ }+ }+ interfaces {+ ge-0/0/0 {+ unit 666 {+ classifiers {+ dscp-ipv6 my-dscp-map;+ }+ rewrite-rules {+ dscp-ipv6 my-dscp-rewrite;+ }+ }+ }+ }+ rewrite-rules {+ dscp-ipv6 my-dscp-rewrite {+ forwarding-class best-effort {+ loss-priority low code-point 000000;+ }+ forwarding-class assured-forwarding {+ loss-priority low code-point 001010;+ }+ forwarding-class network-control {+ loss-priority low code-point 110000;+ }+ }+ }+ }

[edit]ipv6@r2# commit commit complete

Page 44: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

44 Day One:高度なIPv6設定

上出来ですね。これで、R2では、完全な CoSポリシーが ge-1/0/1.100に適用され、受信 IPv6トラフィックを分類して、出力 IPv6トラフィックに適切なマークが設定されます。

注 dscpおよび dscp-ipv6分類子の両方と、再書き込みルールを同じインタフェースに適用できます。

この他に、IPv6の CoS設定で異なる部分は、CBF(Class-Based Forwarding)ポリシーです。次のチュートリアルでは、これについて説明します。

IPv6の CoSベースの転送を設定するには

1. まず、CBFのネクストホップマップを作成します。[edit]ipv6@r2# edit class-of-service forwarding-policy next-hop-map my-cbf-map

[edit class-of-service forwarding-policy next-hop-map my-cbf-map]ipv6@r2#

2. BEトラフィックが R3に、AFトラフィックが R4にそれぞれ転送されるよう、ネクストホップを定義します。

[edit class-of-service forwarding-policy next-hop-map my-cbf-map]ipv6@r2# set forwarding-class best-effort next-hop 2001:db8:0:3::3

[edit class-of-service forwarding-policy next-hop-map my-cbf-map]ipv6@r2# set forwarding-class assured-forwarding next-hop 2001:db8:0:5::4

3. 次に、ネクストホップマップをすべての IPv6トラフィックに適用する転送ポリシーを設定します。

[edit class-of-service forwarding-policy next-hop-map my-cbf-map]ipv6@r2# top edit policy-options policy-statement CBF

[edit policy-options policy-statement CBF]ipv6@r2# set term v-six from family inet6

[edit policy-options policy-statement CBF]ipv6@r2# set term v-six then cos-next-hop-map my-cbf-map

4. 転送ポリシーを適用します。[edit policy-options policy-statement CBF]ipv6@r2# top edit routing-options forwarding-table

[edit routing-options forwarding-table]ipv6@r2# set export CBF

Page 45: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 45

5. 最後に、変更内容を確認して、commitを実行します。[edit routing-options forwarding-table]ipv6@r2# top

[edit]ipv6@r2# show | compare [edit]+ routing-options {+ forwarding-table {+ export CBF;+ }+ }+ policy-options {+ policy-statement CBF {+ term v-six {+ from family inet6;+ then cos-next-hop-map my-cbf-map;+ }+ }+ }[edit class-of-service]+ forwarding-policy {+ next-hop-map my-cbf-map {+ forwarding-class best-effort {+ next-hop 2001:db8:0:3::3;+ }+ forwarding-class assured-forwarding {+ next-hop 2001:db8:0:5::4;+ }+ } + }

[edit]ipv6@r2# commit commit complete

読者の方も、CBFを実装した経験が豊富であれば、この設定とJunosの IPv4 CBFの設定の違いは、IPv6のネクストホップの使用と、転送ポリシーでの family inet6の使用だけであることに気付いているかもしれません。

実際には、from family inet6ステートメントで IPv6だけにポリシーを適用する手順は不要です。実装上、問題がない場合、この手順は省略して、IPv6と IPv4の両方のネクストホップをネクストホップマップに設定できます。この場合の設定は、以下のようになります。

routing-options { forwarding-table { export CBF;

Page 46: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

46 Day One:高度なIPv6設定

} } policy-options { policy-statement CBF { then cos-next-hop-map my-cbf-map; } } class-of-service { forwarding-policy { next-hop-map my-cbf-map { forwarding-class best-effort { next-hop [ 2001:db8:0:3::3 10.10.10.3 ]; } forwarding-class assured-forwarding { next-hop [ 2001:db8:0:5::4 10.10.10.4 ]; } } } }

これで、IPv6の CoSを設定したことになります。Junosの実装がシンプルなため、IPv4からの変更はわずかで済みました。

さらに詳しくは IPv6で CoSを設定する場合の詳細は、『Junos Software Class of Service Configuration Guide』(www.juniper.net/techpubsで入手可能)を参照してください。

実習:IPv6での CoSの設定

この作業を行うことは予想されていたと思いますが、何もがっかりすることはありません。今度は、IPv6での CoSの設定について、これまでに学習したあらゆる内容をテストベッドネットワークに応用してみましょう。dscp-ipv6ステートメントを使用して、いくつかの分類子と再書き込みルールを作成することから始めます。作成したものをさまざまなインタフェースに適用してから、CBFの設定に進みます。次に、さらに詳細な CoSの設定に進みます。同じインタフェース上で CoSを IPv4と IPv6に対して機能させることはできますか。

IPv6での CoSの確認

前述のように、dscp-ipv6は、IPv6パケットの DiffServで有効な設定ステートメントとコマンドステートメントを兼ね備えています。IPv6の分類子と再書き込みルールを確認するには、設定時と同様に、このコマンドステートメントを活用する必要があります。実際に見ていきましょう。

IPv6の CoSポリシーを確認するには

1.まず、Classifierを確認します。ipv6@r2> show class-of-service classifier type dscp-ipv6 Classifier: dscp-ipv6-default, Code point type: dscp-ipv6, Index:8 Code point Forwarding class Loss priority

Page 47: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 47

000000 best-effort low 000001 best-effort low 000010 best-effort low 000011 best-effort low 000100 best-effort low 000101 best-effort low 000110 best-effort low 000111 best-effort low 001000 best-effort low 001001 best-effort low 001010 assured-forwarding low<snip>

Classifier: dscp-ipv6-compatibility, Code point type: dscp-ipv6, Index:9 Code point Forwarding class Loss priority 000000 best-effort low 000001 best-effort low 000010 best-effort low 000011 best-effort low 000100 best-effort low 000101 best-effort low 000110 best-effort low 000111 best-effort low 001000 best-effort low 001001 best-effort low 001010 best-effort low <snip>

Classifier: my-dscp-map, Code point type: dscp-ipv6, Index:109 Code point Forwarding class Loss priority 000000 best-effort low 001010 assured-forwarding low 010100 assured-forwarding low 110000 network-control low

ipv6@r2>

2. リライトルールを確認します。 ipv6@r2> show class-of-service rewrite-rule type dscp-ipv6 Rewrite rule: dscp-ipv6-default, Code point type: dscp-ipv6, Index:32 Forwarding class Loss priority Code point best-effort low 000000 best-effort high 000000 expedited-forwarding low 101110 expedited-forwarding high 101110 assured-forwarding low 001010 assured-forwarding high 001100 network-control low 110000 network-control high 111000

Page 48: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

48 Day One:高度なIPv6設定

Rewrite rule: my-dscp-rewrite, Code point type: dscp-ipv6, Index:21793 Forwarding class Loss priority Code point best-effort low 000000 assured-forwarding low 001010 network-control low 110000

ipv6@r2>

お疲れ様でした。R2で設定した分類子と再書き込みルールは、両方とも想定どおりに機能しています。これ以外にも、Junosには、ネットワークの CoSの動作を確認するための便利な手段として、TOSステートメントが用意されています。TOSはサービスのタイプ(type-of-service)を表し、このステートメントは IPv6固有のものではなく、便利さという点で、ここで紹介しておく価値があります。TOSステートメントは、pingコマンドや tracerouteコマンドとも組み合わせて使用できます。どちらのコマンドと組み合わせて使用する場合でも、IP type-of-service value値を指定して、送信される確認用パケットに適用する必要があります。pingコマンドと組み合わせて使用した場合は、特定のトラフィッククラスの遅延やロスを確認する場合に最も有用です。tracerouteコマンドと組み合わせて使用した場合は、CBFを確認する場合に最も有用です。

tracerouteで CBFを確認するには

1. まず、NCクラスを使用して、R1のループバックに対してtracerouteを実行します。

ipv6@r2> traceroute 2001:db8::1 tos 48 traceroute6 to 2001:db8::1 (2001:db8::1) from 2001:db8:0:1::2, 64 hops max, 12 byte packets 1 2001:db8::1 (2001:db8::1) 887.378 ms 6.476 ms 4.086 ms

ipv6@r2>

2. 次に、BEクラスを使用して、同じ tracerouteを実行します。 ipv6@r2> traceroute 2001:db8::1 tos 0 traceroute6 to 2001:db8::1 (2001:db8::1) from 2001:db8:0:1::2, 64 hops max, 12 byte packets 1 2001:db8:0:3::3 (2001:db8:0:3::3) 1.501 ms 2.478 ms 1.427 ms 2 2001:db8::1 (2001:db8::1) 3.922 ms 4.812 ms 3.755 ms

ipv6@r2>

3. 最後に、AFクラスを使用して、R1のループバックに対して同じtracerouteを実行します。

ipv6@r2> traceroute 2001:db8::1 tos 10 traceroute6 to 2001:db8::1 (2001:db8::1) from 2001:db8:0:1::2, 64 hops max, 12 byte packets 1 2001:db8:0:5::4 (2001:db8:0:5::4) 0.072 ms 0.642 ms 0.770 ms

Page 49: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第2章:実稼働環境のIPv6への準備 49

2 2001:db8::1 (2001:db8::1) 1.922 ms 1.812 ms 1.755 ms

ipv6@r2>

結果からも明らかなように、BEトラフィックは R3のネクストホップを使用し、AFトラフィックは R4に転送され、NCトラフィックは CBFが適用されずに IGPの最短パス(R1に直結)を使用しています。これで、CBFの確認が終了しました。

さらに詳しくは IPv6で CoSを設定および確認する場合の詳細については、『Junos Class of Service Using IPv6 DiffServ Feature Guide』(www.juniper.net/techpubsで入手可能)を参照してください。

実習:IPv6での CoSの確認

これまでに学習した内容をテストベッドネットワークに応用しましょう。dscp-ipv6ステートメントを使用して、IPv6 CoSポリシーを確認してから、TOSステートメントを使用して納得のいくまで pingや tracerouteを実行してみます。

MLDについてMLD(Multicast Listener Discovery)プロトコルは、直接接続したリンクにマルチキャストリスナーが存在するかどうか検出して、該当するリスナーに必要なマルチキャストアドレスを学習する目的で、IPv6マルチキャストルーターによって使用されます。情報を入手した時点で、ルーターは使用しているいずれかのマルチキャストルーティングプロトコルに、その情報を送信します。この処理には PIMが一般的な選択肢であり、IPv6の PIMメッセージがリンクローカルアドレスで送信されるという点を除いて、IPv4の PIMと同じです。

注 MLDが IPv4の IGMPv2と同様の機能を実行する一方で、重要なポイントとして、MLDは ICMPv6メッセージを使用し、IPv6用のIGMPは存在しません。

サブネットに複数のMLDルーターが存在する場合、そのルーター同士はクエリメッセージを交換して、一番低いソースアドレスが設定されているルーターがそのサブネットのクエリ元になります。そのサブネットの他のMLDルーターはすべて非クエリになります。

クエリ元のMLDルーターは、MLDクエリを送信して、いずれかの対象リスナーからMLDレポートメッセージを受信します。非クエリのルーターは基本的にバックアップのマルチキャストルーターであり、クエリ元のルーターが停止したときには、クエリ元として処理を引き継ぐことが可能です。

Page 50: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

50 Day One:高度なIPv6設定

さらに詳しくは MLD(Multicast Listener Discovery)の詳細については、RFC 3810『(Multicast Listener Discovery Version 2 (MLDv2) for IPv6)』(http://www.rfc-editor.org/rfc/rfc3810.txt)を参照してください。RFC 2710『(Multicast Listener Discovery (MLD) for IPv6)』やRFC 3590 『(Source Address Selection for the Multicast Listener Discovery (MLD) Protocol)』(ともに http://www.rfc-editor.org/rfc/で入手可能)も参考になるでしょう。

注 Junosは、MLDv1とMLDv2の両方をサポートしています。MLDv2は、SSM(Source-Specific Multicast)をサポートしています。

JunosのMLDの実装で最も優れているのは、PIMまたは DVMRPが設定されている場合に、あらゆるブロードキャストインタフェースで自動的に有効になるという点です。この意味をよく確かめてください。デフォルト設定を変更する必要がなければ、MLDを設定する必要がないということです。

さらに詳しくは ジュニパーネットワークスによるMLDの実装と、JunosでMLDを設定する方法の詳細については、『Junos Software Multicast Protocols Configuration Guide』(http://www.juniper.net/techpubsで入手可能)の第 8、9、および 10章を参照してください。

Page 51: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第3章

IPv6対応のシステム管理の確認

IPv6バックアップルーターの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

ICMPv6のレートリミット設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56

IPV6のPath MTU Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

ホップリミットがゼロのIPv6パケットの受け入れ . . . . . . . . . . . . . . . . . . . . . . . . .64

IPv6重複アドレス検出の制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65

Page 52: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

52 Day One:高度なIPv6設定

実績あるネットワーク通信事業者の多くが認めているように、ネットワークの運用には、ルーティングプロトコル以外にも多くの要素が関係しています。この章では、地味ながらも、多くの場合、ネットワークのシステム管理に不可欠な側面について一通り説明していきます。Junosでは、ほとんどのシステム管理は IPバージョン固有のものではありません。したがって、本書では、IPv6固有のシステム管理ツールに限定して詳しく見ていきます。学習するのは、IPv6によるバックアップルーターの設定、ICMPv6メッセージのレートリミット、IPv6パスのMTU探索の設定、ホップリミットがゼロでの IPv6パケットの受け入れ、IPv6の重複アドレス検出の試行制御などの具体的な方法です。これらのツールのほとんどは簡単に設定できますが、状況によっては命綱のような役割を果たすこともあるので、本書を読み進んで、使える Junosの IPv6設定ツールのバリエーションを増やしてください。

IPv6バックアップルーターの設定ルーターの起動時には、ルーティングプロトコルのプロセス(RPD)は動作していません。つまり、ルーターには(静的ルートまたはデフォルトルートを問わず)使用できるルートがなく、ネットワークで到達不可の状態になっています。多くの場合、直接的なコンソール接続や何らかの形の帯域外管理を採用することで、この潜在的な問題は軽減できますが、バックアップルーターを用意することが望ましい場合もあります。別のルーターをバックアップルーターとして設定しておくことで、ルーティングプロトコルのプロセスが正常な起動に失敗した場合でも、ルーターを起動して、ネットワーク上で到達可能な状態を維持できます。

注 RPDの動作が開始すると、バックアップルーターのアドレスは、ローカルのルーティングおよび転送テーブルから削除されます。

この機能は IPv6からの新機能ではありませんが、この機能を有効にするコマンドは、IPv4の場合と異なります。もう一度、本書のテストベッドに注目しましょう(思い出す必要がある場合には、図 1.1を参照)。

R1での IPv6バックアップルーターの設定方法

1. まず、systemの inet6-backup-router設定レベルに移動します。[edit]ipv6@r1# edit system inet6-backup-router

2. 直接接続しているルーターの IPv6アドレスを追加します。このルーターが R1のバックアップルーターとして機能することになります。

[edit system inet6-backup-router]ipv6@r1# set 2001:db8:0:1::2

Page 53: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第3章:IPv6対応のシステム管理の確認 53

3. 最後に、設定の最上位に移動して、変更内容を確認してから、commitを実行します。

[edit system inet6-backup-router]ipv6@r1# top

[edit]ipv6@r1# show | compare [edit system]+ inet6-backup-router 2001:db8:0:1::2;

[edit]ipv6@r1# commit commit complete

Junosのおかげで、手順はこれだけで済みます。これで、R1は、直接接続しているR2をバックアップルーターとして使用します。

注 デフォルトでは、すべてのホスト(デフォルトルート)がバックアップルーターから到達可能です。

実稼働環境では、たとえ一時的にでも、ルーターの起動中に、デフォルトルートを使用できないことはよくあります。このため、Junosでは、バックアップルーターを介して到達可能な特定の宛先を設定できます。この方法では、ルーターのロード、設定、および復旧の途中でも、デフォルトルートを設定するリスクを伴わずに、ネットワークの到達可能性を確保できます。

R1の IPv6バックアップルーターに特定の宛先を設定するには

1. まず、以前の設定にロールバックします(最初からやり直すため)。[edit]ipv6@r1# rollback 1 load complete

[edit]ipv6@r1# show | compare [edit system]- inet6-backup-router 2001:db8:0:1::2;

[edit]ipv6@r1# commit commit complete

Page 54: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

54 Day One:高度なIPv6設定

2. inet6-backup-router設定レベルに戻ります。[edit]ipv6@r1# edit system inet6-backup-router

3. 次に、バックアップルーターのアドレスをもう一度追加します。ただし今度は、destinationキーワードを使用して、到達可能にするネットワークを追加します。

[edit system inet6-backup-router]ipv6@r1# set 2001:db8:0:1::2 destination 2001:db8:0:9::/64

4. 変更内容を確認して、commitを実行します。[edit system inet6-backup-router]ipv6@r1# top

[edit]ipv6@r1# show | compare [edit system]+ inet6-backup-router 2001:db8:0:1::2 destination 2001:db8:0:9::/64;

[edit]ipv6@r1# commit commit complete

上出来ですね。これで、R1は単一の到達可能なプレフィックスが設定されたバックアップルーターとしてR2を使用します。

ベストプラクティス 宛先を指定して、デフォルトルートの使用に伴うリスクを回避することが常に最良の方法です。

これで完了ですが、質問が 1つ残っています。「RPDの動作が開始した後も、バックアップルーターへのルートを維持するとしたら、どうなるでしょうか。」Junosは、この質問に対する答えを用意しています。ルーターが完全に動作しているときに、バックアップルーターのアドレスをローカルのルーティングテーブルと転送テーブルに保持するには、retainキーワードを使用してスタティックルートを追加します。

IPv6バックアップルーターへのルートを保持するには

1.まず、inet6.0 rib設定階層に移動します。[edit]ipv6@r1# edit routing-options rib inet6.0

2.宛先のスタティックルートを作成します。その際に、バックアップルーターのアドレスをネクストホップとして使用します。

[edit routing-options rib inet6.0]

Page 55: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第3章:IPv6対応のシステム管理の確認 55

ipv6@r1# set static route 2001:db8:0:9::/64 next-hop 2001:db8:0:1::2

3. 次に、retain設定コマンドを追加します。 [edit routing-options rib inet6.0]ipv6@r1# set static route 2001:db8:0:9::/64 retain

4. 最後に、変更内容を確認して、commitを実行します。[edit routing-options rib inet6.0]ipv6@r1# top

[edit]ipv6@r1# show | compare [edit]+ routing-options {+ rib inet6.0 {+ static {+ route 2001:db8:0:9::/64 {+ next-hop 2001:db8:0:1::2;+ retain;+ }+ }+ }+ }

c[edit]ipv6@r1# commit commit complete

これで完了しました。R1は、RPDの動作が開始する前と後の両方で、2001:db8:0:9::/64を宛先とするトラフィックを R2にリダイレクトします。

さらに詳しくは IPv6バックアップルーターの詳細については、『Junos Software System Basics Configuration Guide』(www.juniper.net/techpubsで入手可能)を参照してください。

実習:IPv6バックアップルーターの設定

それでは、また実際に、手順を実行してみましょう。テストベッドネットワークに移動して、いくつかのバックアップルーターを設定します。デフォルトの宛先と、明示的に設定した宛先の両方を使用します。バックアップルーターは(同じ IPv6サブネットで)直接接続している必要があるということを忘れないでください。スタティックルートを使用します。その際、retainコマンドを使用して、ルーティングテーブルと転送テーブルにルートを強制的に維持してみてください。複数の IPv6バックアップルーターを設定できますか。IPv4バックアップルーターと IPv6バックアップルーターの組み合わせについては、どうでしょうか。IPv4と IPv6で異なるルーターを使用してみてください。

Page 56: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

56 Day One:高度なIPv6設定

ICMPv6のレートリミット設定ICMPv6(Internet Control Messaging Protocol version 6) はIPv4用の ICMPに基づいていますが、いくつかの変更が加えられています。ICMPv6は IPv6に不可欠な要素であり、エラーメッセージと情報メッセージの両方を提供し、いくつか例を挙げると、ping、近隣探索、ルーター探索、パスMTU探索などを有効にします。ICMP for IPv6用の ICMP(ICMPv6)は IPv6ネットワークの運用に重要な意味を持つとともに、DoS(Denial of Service:サービス拒否)やその他の攻撃手段で、悪意あるユーザーによって利用される場合もあります。このような攻撃への対抗手段として、Junosにはicmpv6-rate-limit設定コマンドが用意されています。このコマンドを使用することで、送信される ICMPv6メッセージのレートリミット設定が可能になります。このコマンドには、以下の 2つの必須オプションがあります。

� バケットサイズ(bucket-size):レートリミット設定のバケットサイズを秒数で指定します。許容値は、0~ 4294967295秒です。

� パケットレート(packet-rate):レートリミットを適用する毎秒のパケット数を指定します。許容値は、0~ 4294967295ppsです。

R2で ICMPv6レートリミットを有効にするには

1. まず、system internet-options設定階層に移動します。[edit]ipv6@r2# edit system internet-options

2. icmpv6-rate-limitコマンドを使用して、bucket-sizeとpacket-rateの両方を目的の値に設定します。

[edit system internet-options]ipv6@r2# set icmpv6-rate-limit bucket-size 5 packet-rate 1000

3. 最後に、変更内容を確認して、commitを実行します。 [edit system internet-options]ipv6@r2# top

[edit]ipv6@r2# show | compare [edit system]+ internet-options {+ icmpv6-rate-limit packet-rate 1000 bucket-size 5;+ }

[edit]ipv6@r2# commit commit complete

Page 57: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第3章:IPv6対応のシステム管理の確認 57

さらに詳しくは IPv6用の ICMP(ICMPv6)の詳細については、RFC 4443『(Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification)』(tools.ietf.org/rfc/rfc4443.txt)を参照してください。

ポリサーとファイアウォールフィルタの使用

icmpv6-rate-limitコマンドに加えて、ポリサーとファイアウォールフィルタを利用すれば、ネットワークの ICMPv6メッセージのレート制御が容易になります。IPv4の ICMPフィルタと IPv6の ICMPv6フィルタの主な相違点として、以下の 2つが挙げられます。

� family inet6:IPv6のファイアウォールフィルタはすべて、IPv4の family inetではなく、family inet6に基づいて作成されます。

� next-header:IPv4のフィルタ作成時には、プロトコル設定スタンザを使用するのが一般的ですが、IPv6の場合は、代わりにnext-headerキーワードを使用します。

実際に、この違いを確認するため、以下の設定例を一通り確認してみましょう。

R2で ICMPv6のポリシングを設定するには

1. まず、firewall設定から始めます。[edit]ipv6@r2# edit firewall

2. ポリサーを作成します。 [edit firewall]ipv6@r2# edit policer ICMPv6_20m

3. 20Mbpsのレートリミットと625KBの最大バーストサイズという条件で、ポリサーを設定します。

[edit firewall policer ICMPv6_20m]ipv6@r2# set if-exceeding bandwidth-limit 20m

[edit firewall policer ICMPv6_20m]ipv6@r2# set if-exceeding burst-size-limit 625k

[edit firewall policer ICMPv6_20m]ipv6@r2# set then discard

4. 次に、ファイアウォールフィルタと最初の条件(term)を作成します。

Page 58: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

58 Day One:高度なIPv6設定

[edit firewall policer ICMPv6_20m]ipv6@r2# up

[edit firewall]ipv6@r2# edit family inet6 filter POLICE term ICMPv6

5. ICMPv6パケットとの照合を実行し、作成したポリサーを使用して、照合したパケットに対するポリシングを実行するよう、この termを設定します。

[edit firewall family inet6 filter POLICE term ICMPv6]ipv6@r2# set from next-header icmpv6

[edit firewall family inet6 filter POLICE term ICMPv6]ipv6@r2# set then policer ICMPv6_20m

6. 次に、このフィルタをR2のLANの対向インタフェースに適用します。[edit firewall family inet6 filter POLICE term ICMPv6]ipv6@r2# top edit interfaces ge-1/0/1 unit 100 family inet6

[edit interfaces ge-1/0/1 unit 100 family inet6]ipv6@r2# set filter input POLICE

7. 変更内容を確認して、commitを実行します。[edit interfaces ge-1/0/1 unit 100 family inet6]ipv6@r2# top

[edit]ipv6@r2# show | compare[edit interfaces ge-1/0/1 unit 100 family inet6]+ filter {+ input POLICE;+ } [edit]+ firewall {+ family inet6 {+ filter POLICE {+ term ICMPv6 {+ from {+ next-header icmpv6;+ }+ then policer ICMPv6_20m;+ }+ }+ }+ policer ICMPv6_20m {+ if-exceeding {+ bandwidth-limit 20m;+ burst-size-limit 625k;+ }

Page 59: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第3章:IPv6対応のシステム管理の確認 59

+ then discard;+ }+ }

[edit]ipv6@r2# commit commit complete

これで完了しました。R2は、20Mbpsを超える ICMPv6トラフィックを ge-1/0/1.100インタフェースに受け入れなくなります。

ヒント ポリサーの設定では、インタフェースの帯域幅のパーセンテージに基づいて、トラフィックのレートリミットを設定することが可能です。

ベストプラクティス 攻撃に対する防御策を講じるには、ICMPv6とHbH(Hop-by-Hop)のあらゆるオプションにレートリミットを設定します。

さらに一歩進んで、場合によっては、許可するメッセージを近隣探索、ルーターのアドバタイズ、および PMTU Discoveryに必要なメッセージに限定することで、ICMPv6をさらに厳しく制限する必要があるでしょう。Junosでは、このような目的に対処するため、family inet6でのきめ細かいフィルタ制御が可能です。ICMPv6_20mポリサーをR1に追加してから、この機能を詳しく見ていきましょう。

R1で ICMPv6のポリシングとフィルタリングを設定するには

1. まず、IPv6のフィルタと最初の条件(term)の設定から始めます。[edit]ipv6@r1# edit firewall family inet6 filter ICMPv6 term POLICE

2. 次に、必要な ICMPv6メッセージタイプに限定して照合するよう、この termを設定します。

[edit firewall family inet6 filter ICMPv6 term POLICE]ipv6@r1# set from icmp-type packet-too-big

[edit firewall family inet6 filter ICMPv6 term POLICE]ipv6@r1# set from icmp-type router-advertisement

[edit firewall family inet6 filter ICMPv6 term POLICE]ipv6@r1# set from icmp-type router-solicit

[edit firewall family inet6 filter ICMPv6 term POLICE]ipv6@r1# set from icmp-type neighbor-advertisement

[edit firewall family inet6 filter ICMPv6 term POLICE]ipv6@r1# set from icmp-type neighbor-solicit

3. この termを設定して、照合したトラフィックに 20Mのポリサーを適用します。

Page 60: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

60 Day One:高度なIPv6設定

[edit firewall family inet6 filter ICMPv6 term POLICE]ipv6@r1# set then policer ICMPv6_20m

4. 次のファイアウォールフィルタの条件(term)を作成します。[edit firewall family inet6 filter ICMPv6 term POLICE]ipv6@r1# up

[edit firewall family inet6 filter ICMPv6]ipv6@r1# edit term DROP

5. この termを設定して、残るすべての ICMPv6パケットと照合して廃棄します。

[edit firewall family inet6 filter STOP term DROP]ipv6@r1# set from next-header icmpv6

[edit firewall family inet6 filter STOP term DROP]ipv6@r1# set then discard

6. 次に、このフィルタをR1のLANの対向インタフェースに適用します。[edit firewall family inet6 filter ICMPv6 term DROP]ipv6@r1# top edit interfaces ge-1/0/1 unit 100 family inet6

[edit interfaces ge-1/0/1 unit 100 family inet6]ipv6@r1# set filter input ICMPv6

7. 最後に、変更内容を確認して、commitを実行します。[edit interfaces ge-1/0/1 unit 100 family inet6]ipv6@r1# top

[edit]ipv6@r1# show | compare[edit interfaces ge-1/0/1 unit 100 family inet6]+ filter {+ input POLICE;+ }[edit firewall family inet6]+ filter ICMPv6 {+ term POLICE {+ from {+ icmp-type [ packet-too-big router-advertisement router-solicit neighbor-advertisement neighbor-solicit ];+ }+ then policer ICMPv6_20m;+ }+ term DROP {+ from {+ next-header icmpv6;

Page 61: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第3章:IPv6対応のシステム管理の確認 61

+ }+ then discard;+ }+ }

[edit]ipv6@r1# commit commit complete

これで、R1が 20Mbpsまでの重要な ICMPv6トラフィックを ge-1/0/1.100インタフェースに受け入れて、残りのトラフィックはドロップされます。

さらに詳しくは Junosのファイアウォールフィルタとポリサーの詳細については、『Junos Software Policy Framework Configuration Guide』(www.juniper.net/techpubsで入手可能)の第 8~ 12章を参照してください。

実習:ICMPv6のレートリミット設定

今度は、実際にラボのネットワークで作業を行いましょう。icmpv6-rate-limit設定コマンドで、送信される ICMPv6メッセージのレートリミット設定を実行することから始めます。packet-rateおよび bucket-sizeの設定を変更すると、実際のネットワークに、どのような影響を及ぼすでしょうか。 次に、ポリサーとファイアウォールフィルタで、色々と工夫をしてみてください。ここでは、テストするオプションが数多くあります。bandwidth-limitとbandwidth-percentの両方でレートを設定することから始めます。ネットワークの運用に影響を及ぼすほど、リミットを低く設定できますか。burst-size-limit設定も同様に試してみてください。今度は、next-headerオプションを使用して、ポリサーをさまざまなプロトコルに適用してください。特定の ICMPv6メッセージタイプを許可または拒否してみてください。その他のタイプで IPv6のフィルタを作成できますか。本書の他の読者に、これまでの実習で発見したことを説明してください。J-Netの本書のページに、実際の結果、問題、質問などを投稿してください。www.juniper.net/dayoneにアクセスしてください。

IPV6の Path MTU Discovery

Path MTU Discoveryは、フラグメント化されずに 2つのノード間を移動できるパケットの最大サイズを判定する場合に使用する方法です。このパケットのサイズは PMTU(Path Maximum Transmission Unit)として扱われ、そのパス上のすべてのリンクで最小のリンクMTUと一致します。ほとんどの IPv6ホストは、特定のパスで可能な限り最大のパケットサイズを使用して、最適なスループットを実現できるようにするため、PMTU Discoveryを実装しています。PMTUDは、ローカルMTUで許容される最大サイズのパケットをパスの末端に送信することで機能します。パケットが問題なく処理された場合は、ローカルMTUが PMTUとして使用されます。ただし、パ

Page 62: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

62 Day One:高度なIPv6設定

ス上のいずれかのノードでMTUが低く設定されている(したがって、パケットを転送できない)場合は、そのノードはパケットを廃棄して、「ICMPv6パケットのサイズが大きすぎる」というメッセージを返します。送信元のノードがパケットを到達させる(PMTUを検出する)か、IPv6の最小MTUにフェールバックするまで、この処理が繰り返されます。

注 IPv6では、パケットのフラグメント化を実行できるのは送信元ノードに限定されるので、PMTU Discoveryはほとんどすべての IPv6ホストで使用されています。この代替手段としては、IPv6の最小リンクMTU(1280バイト)をすべてのパケットに使用することが挙げられます。

Junosでは、PMTU Discoveryはデフォルトで有効になっているので、多くの場合、特に気にする必要はありません。ただし、状況によっては、PMTU Discoveryを無効にするか、実際のネットワークトポロジーに合わせてデフォルトのタイムアウトを変更する必要があります。

PMTUDを無効にする最も一般的な理由として、パス上のいずれかのポイントで、すべての ICMPv6メッセージがブロックされている状況が挙げられます。送信元が「パケットサイズが大きすぎる」というメッセージを何らかの理由で受信しなかった場合、その送信元には、パケットがドロップしたことを把握する方法がないので、ローカルMTUが適切な PMTUであると不適切に仮定されることになります。この結果、データパケットはサイズが実際の PMTUよりも大きくなり、小さいMTUが設定されているノードでブラックホール化されます。つまり、サイズの大きいパケットは廃棄されますが、それを送信元に通知する方法がありません。ルーティングトポロジーは多くの場合、時間の経過とともに変化します。したがって、最適な PMTUを再探索するため、PMTU Discoveryでは定期的にパスごとに仮の PMTUを流します。このチェックが実行される頻度は、PMTUDのタイムアウトによって決定されます。実際のルーティングトポロジーの変更頻度(頻繁、ほぼ固定、またはまったく変化なし)に応じて、PMTUDのタイムアウトは変更する必要があるでしょう。

さらに詳しくは Path MTU Discoveryの詳細については、RFC 1981『Path MTU Discovery for IP version 6』(tools.ietf.org/rfc/rfc1981.txt)を参照してください。

今度は、Junosで PMTU Discoveryを無効にする方法とデフォルトの PMTUDのタイムアウトを変更する方法に注目しましょう。

R1でパスのMTU探索を無効にするには

1.まず、systemの internet-options設定レベルに移動します。[edit]ipv6@r1# edit system internet-options

Page 63: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第3章:IPv6対応のシステム管理の確認 63

2. no-ipv6-path-mtu-discovery設定コマンドを設定します。[edit system internet-options]ipv6@r1# set no-ipv6-path-mtu-discovery

3. 設定階層の最上位に移動して、変更内容を確認してから、commitを実行します。

[edit system internet-options]ipv6@r1# top

[edit]ipv6@r1# show | compare [edit system]+ internet-options {+ no-ipv6-path-mtu-discovery;+ }

[edit]ipv6@r1# commit commit complete

これで完了しました。R1は、パスのMTU Discoveryを使用しなくなります。この変更をロールバックしたら、今度は、PMTU Discoveryのタイムアウトを明示的に設定します。

R1でパスのMTU探索のタイムアウトを設定にするには

1. まず、systemの internet-options設定レベルに戻ることから始めます。

[edit]ipv6@r1# edit system internet-options

2. PMTU Discoveryのタイムアウトを分単位で設定します。[edit system internet-options]ipv6@r1# set ipv6-path-mtu-discovery-timeout 4

3. 他の手順と同様に、最後のステップでは、変更内容を確認して、commitを実行します。

[edit system internet-options]ipv6@r1# top

[edit]ipv6@r1# show | compare [edit system]+ internet-options {+ ipv6-path-mtu-discovery-timeout 4;+ }

[edit]ipv6@r1# commit commit complete

Page 64: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

64 Day One:高度なIPv6設定

これで、テストベッドルーター R1には、PMTU Discoveryのタイムアウトとして 4分が設定されました。

注 Junosのデフォルトでは、Path MTU Discoveryのタイムアウトは 10分です。

さらに詳しくは PMTU Discoveryを設定する場合の詳細については、『Junos Software System Basics Configuration Guide』(www.juniper.net/techpubsで入手可能)を参照してください。

実習:IPV6の Path MTU Discoveryの設定

これまでに学習した内容をラボまたはテストベッドネットワークに応用してみましょう。PMTU Discoveryのタイムアウトを設定して、PMTU Discoveryを完全に無効にしてみてください。ネットワークの単一のノードに限定して PMTU Discoveryを無効にした場合には、どのような影響が現れるでしょうか。テストベッドのさまざまなパスの PMTUを確認するため、sizeオプションを指定して pingコマンドを実行します。

ホップリミットがゼロの IPv6パケットの受け入れIPv6のホップリミットは、パケットがノードを通過するたびに値が 1ずつ減る 8ビットの整数です。言い換えると、名前は異なりますが、基本的には IPv4の TTL(Time To Live)フィールドと同等の機能を提供します。転送のループを防ぐため、ホップリミットの値がゼロになったパケットは廃棄されます。このため、Junosのデフォルトの動作では、ホップリミットの値がゼロの受信パケットは拒否されます。ただし、状況によっては、パケットのホップリミットの値がゼロでも、ローカルホストにアドレス指定されたパケットを Junosデバイスで受け入れる必要があります。可能性としては、別のベンダーのネットワークデバイスが適切に動作していないか、アプリケーションがルーター宛のパケットに不適切にホップリミットを設定していると考えられます。この状況に対処して、動作を制御できるようにするため、Junosには、no-ipv6-

reject-zero-hop-limit および ipv6-reject-zero-hop-limit 設定ステートメントが用意されています。

R2でホップリミットがゼロの IPv6パケットを受け入れるには

1. まず、systemの internet-options設定階層レベルに移動します。[edit]ipv6@r2# edit system internet-options

2. no-ipv6-reject-zero-hop-limitステートメントを適用します。[edit system internet-options]ipv6@r2# set no-ipv6-reject-zero-hop-limit

Page 65: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

第3章:IPv6対応のシステム管理の確認 65

3. 変更内容を確認して、commitを実行します。 [edit system internet-options]ipv6@r2# top

[edit]ipv6@r2# show | compare [edit system internet-options]+ no-ipv6-reject-zero-hop-limit;

[edit]ipv6@r2# commit commit complete

これで、R2は、R2にアドレス指定されたパケットのうち、ホップリミットがゼロのものを受け入れます。ただし、トランジットパケットは拒否されます。実稼働環境では、ホップリミットがゼロの IPv6パケットを受け入れることは極めてまれであり、このような対応を取るのは、可能な限り、問題となっているパケットのホップリミットが修正されるまでの一時的な対策に限定する必要があります。

注 ipv6-reject-zero-hop-limitステートメントを補足的に使用して、ホップリミットがゼロのパケットをすべて拒否するデフォルトの動作を復元できます。

さらに詳しくは IPv6のホップリミットの詳細については、RFC 2460『Internet Protocol, Version 6 (IPv6) Specification』(http://tools.ietf.org/rfc/rfc2460.txt)を参照してください。

実習:ホップリミットがゼロの IPv6パケットの受け入れ

ここでは、簡単な実習を行います。まず、ホップリミットがゼロのパケットをいずれかの Junosデバイスに送信するよう、テストベッドネットワークを設定します。さらに、no-ipv6-reject-

zero-hop-limitおよび ipv6-reject-zero-hop-limit設定ステートメントを使用して、該当するパケットを受け入れおよび拒否します。両方の設定で、ホップリミットがゼロのトランジットパケットを送信してみてください。

IPv6重複アドレス検出の制御IPv6ネットワークの運用ツールボックスに追加する最後のツールとして、このセクションでは、ipv6-duplicate-addr-detection-transmits

ステートメントを取り上げます。この設定コマンドを使用すると、Junosデバイスによる重複アドレス検出の試行回数を制御できます。この機能を利用する場合としては、極めて損失の多いネットワークにルーターが導入されていて、多くの重複アドレス検出メッセージが失われるような状況(言うまでもなく、この状況も差し迫った問題です)や、

Page 66: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

66 Day One:高度なIPv6設定

さらに可能性が高いのは、多くのノードがすべて同時にオンラインに移行するような状況が挙げられます。また、コリジョンがめったに発生しないか、想定されていない状況で、重複アドレス検出の試行回数を減らすことで、アドレスの割り当て処理を高速化するような場合も考えられます。

R2で重複アドレス検出の試行回数を設定するには

1. まず、systemの internet-options設定階層レベルに移動することから始めます。

[edit]ipv6@r2# edit system internet-options

2. ipv6-duplicate-addr-detection-transmitsコマンドを使用して、試行回数を 9に設定します。

[edit system internet-options]ipv6@r2# set ipv6-duplicate-addr-detection-transmits 9

3. 最後に、変更内容を確認して、commitを実行します。 [edit system internet-options]ipv6@r2# top

[edit]ipv6@r2# show | compare [edit system internet-options]+ ipv6-duplicate-addr-detection-transmits 9;

[edit]ipv6@r2# commit commit complete

これで、インタフェースへのユニキャストアドレスの割り当て前に、本書のテストベッドルーター R2が実行する IPv6重複アドレス検出の試行回数は 9回になりました。この回数は少し多いですが、今回の対象はテストベッドということを念頭に置いてください。

注 Junosのデフォルトでは、重複アドレス検出の試行回数は 3回です。

さらに詳しくは 重複アドレス検出の詳細については、RFC 4429『Optimist ic Duplicate Address Detection (DAD) for IPv6』、RFC 2462『IPv6 Stateless Address Autoconfiguration』、およびRFC 2461『Neighbor Discovery for IP Version 6 (IPv6)』(すべてhttp://

tools.ietf.org/rfc/で入手可能)を参照してください。

Page 67: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

67

Page 68: Junos ネットワーキングテクノロジー シリーズ - …MP-BGP でのIPv6 NLRI の使用法を理解する。 IPv6 BGP ピアリングの適切な動作を確認する。

68

次に参照すべき資料およびサイト

http://www.juniper.net/dayone

本書の PDF版には、追加の「付録」が含まれています。

http://forums.juniper.net/jnet

ジュニパーネットワークスがスポンサーである J-Net Communitiesフォーラムは、ジュニパーネットワークス製品、テクノロジー、およびソリューションに関する情報、ベストプラクティス、質問を共有するための場です。この無料のフォーラムに参加するには、登録が必要です。

http://www.juniper.net/techpubs/software/junos

Junosのテクニカルマニュアルには、IPv6を含む、Junosのあらゆる部分を理解して設定する上で必要なすべての情報が含まれています。

http://www.ipv6forum.com

IPv6フォーラムは、インターネットサービスベンダー、NRENs(National Research & Education Networks:国立研究教育ネットワーク)、および国際 ISPが参加する世界的なコンソーシアムであり、IPv6の導入ついて技術的なガイダンスを提供することを主眼としています。

http://www.getipv6.info

ARIN(American Registry for Internet Numbers)は、この IPv6関連のWikiを管理しており、IPv6についての広範な情報を提供しています。

http://www.juniper.net/us/en/products-services/technical-services/j-care/

ジュニパーネットワークスの AIS(Advanced Insight Solutions)は、Junosの自動化ツールセットを基盤として、高度な自己分析機能を Junosで運用されるプラットフォームに直接導入しています。AISは、カスタマイズされた事前対応型のネットワーク情報およびサポートサービスの自動提供によるジュニパーネットワークスのテクニカルサービスを可能にするため、包括的な一連のツールおよびテクノロジーを提供します。

http://www.theipv6experts.net

IPv6 Experts.netは IPv6の各方面で認知されている業界のエキスパートの集まりであり、IPv6のさまざまな側面について見解や助言を提供します。