3-15 IPv6 ルーティング — OSPFv3 と MP-BGP
IPv6 のルーティングプロトコル OSPFv3 と MP-BGP を扱う。OSPFv3 が OSPFv2 と異なる点と MP-BGP の address-family ipv6 unicast による経路交換を、CML2.9 IOS-XE 17.x の show 出力で実機確認する。
1. 前節の振り返りと本節の内容
3-13 では、IPv6 のアドレス体系を扱いました。128 ビットを 16 進数 8 グループで表記すること、/64 を基本単位にプレフィックスとインタフェース ID に分かれること、アドレス種別 (GUA / LLA / ULA / マルチキャスト / anycast) が先頭プレフィックスで決まること、1 つのインタフェースが LLA + GUA + ULA を同時に持つことを show ipv6 interface / show ipv6 route で確認しました。3-14 では、近隣探索 NDP (Neighbor Discovery Protocol) とアドレス自動設定 SLAAC (StateLess Address AutoConfiguration) を扱い、LLA (Link-Local Address) が ipv6 enable だけで MAC アドレスから生成されること、ホストが RA を受けてアドレスを自動取得することを debug ipv6 nd で裏付けました。
3-13 / 3-14 で扱った LLA は、本節で実用の場を得ます。3-13 §11 / 3-14 §11 で「LLA は OSPFv3 のネイバーピアリングのアドレスとして使われる」と予告した内容を、本節で回収します。アドレスを設定し (3-13)、自動設定の仕組みを知り (3-14)、最後にそのアドレスをルータ間で経路として交換する (本節 3-15)。この 3 節で IPv6 編が完結します。
本節 3-15 では、IPv6 の経路をルータ間で交換するルーティングプロトコル、すなわち IPv4 の OSPFv2 / BGP に対応する OSPFv3 (Open Shortest Path First version 3) と MP-BGP (Multiprotocol BGP) を扱います。OSPFv3 が OSPFv2 と異なる点 (address-family 方式の構成・インタフェース側での有効化・LLA でのネイバーピアリング・Type 8 / Type 9 LSA の追加)、MP-BGP が address-family ipv6 unicast で IPv6 経路を運ぶ仕組み、そして OSPFv3 経路と MP-BGP 経路が 1 つの RIB でどう共存するかを、CML2.9 IOS-XE 17.x の R1 / R2 / R3 / R4 を使い、show ospfv3 / show bgp ipv6 unicast / show ipv6 route の出力で裏付けます。
2. IPv6 のルーティング — OSPFv3 と MP-BGP
IPv6 のルーティングは、IPv4 で使ってきた経路制御の仕組みを IPv6 アドレスに対応させたものです。経路を交換する基本的な考え方 (IGP と EGP の役割分担、リンクステート型のコスト計算、パスベクトル型の経路選択) は IPv4 と変わりません。変わるのは、運ぶアドレスが IPv6 になったことと、それに伴う設定方式・LSA 構造・ネイバーアドレスの違いです。
IGP (Interior Gateway Protocol) の代表である OSPF は、IPv6 では OSPFv3 という別バージョンになります。3-5 で扱った OSPFv2 (IPv4 用) と OSPFv3 (IPv6 用) は、パケットヘッダ内の Version フィールドや LSA 構造が異なる別バージョンですが、IP プロトコル番号はどちらも 89 で共通です (OSPFv2 は IPv4 の Protocol = 89、OSPFv3 は IPv6 の Next Header = 89。RFC 2328 / RFC 5340)。リンクステート型としての基本動作 (Hello でネイバーを張り、LSA を flooding し、SPF で最短経路木を作る) も共通です。本節は OSPFv2 との差を主役に、address-family 方式の構成・LLA ピアリング・新設された LSA 種別を扱います。なお RIPng (RIP next generation) や EIGRP for IPv6 など IPv6 対応の IGP は他にもありますが、本節は OSPFv3 に絞ります。
EGP すなわち AS 間の経路交換は、IPv4 と同じ BGP (Border Gateway Protocol) を使います。BGP は IPv4 unicast 以外のアドレスファミリも運べるよう拡張されており、IPv6 unicast 経路を運ぶときの BGP を慣例的に MP-BGP (Multiprotocol BGP) と呼びます。MP-BGP は 1 つの BGP セッション上で複数のアドレスファミリを運び、IPv6 経路は address-family ipv6 unicast という枠で交換します。本節では R3 を境界ルータ (ASBR) とし、OSPFv3 と MP-BGP の両方を 1 つのトポロジで動かして、IPv6 経路が AS をまたいで疎通するところまで確認します。
3. 本ラボのトポロジ
検証ラボは、R1 / R2 / R3 の 3 台で OSPFv3 area 0 を組み、R3 を境界ルータ (ASBR) として R3-R4 で IPv6 eBGP (MP-BGP) を 1 ホップ立てた構成です。R1 / R2 / R3 が属する AS65010 の内部 IGP が OSPFv3、別 AS の R4 (AS65020) が MP-BGP で経路を広告します。各ルータは Lo0 (Loopback0) に /128 のホスト経路を持ち、R1 / R2 / R3 の Lo0 を OSPFv3 で、R4 の Lo0 を MP-BGP で交換します。
各リンクは GUA 2001:db8::/32 帯 (RFC 3849 のドキュメント用プレフィックス) を /64 単位で割り当てています。R1 Gi2 - R2 Gi2 が 2001:db8:0:12::/64、R2 Gi3 - R3 Gi2 が 2001:db8:0:23::/64、R3 Gi3 - R4 Gi2 が 2001:db8:0:34::/64 です。Router ID は OSPFv3 でも IPv4 ドット形式のため、R1 / R2 / R3 にそれぞれ 1.1.1.1 / 2.2.2.2 / 3.3.3.3 を、R4 には BGP router-id 4.4.4.4 を割り当てています。トポロジ全体は以下のとおりです。本節で使うアドレスはすべて小文字で表記しますが、後で引用する show 出力では IOS-XE が大文字 (2001:DB8 / FE80) で表示します。表記の大小は同じアドレスを指します。
4. OSPFv3 — OSPFv2 との違い
OSPFv3 は、OSPFv2 と 4 つの点で異なります。リンクステート型としての中核 (Hello・LSA・SPF・area・cost) は共通ですが、設定方式・LSA 種別・ピアリングのアドレス・Router ID の扱いが IPv6 向けに変わっています。タイマーやコスト体系は OSPFv2 と同じで、本ラボでも Hello 10 秒 / Dead 40 秒 / 参照帯域 100 Mbps が維持されます。
1 つ目は 設定方式です。OSPFv2 が router ospf 1 の下で network <wildcard> area 0 を書いて参加インタフェースを指定するのに対し、OSPFv3 (IOS-XE 17.x の address-family 方式) は インタフェース側で ospfv3 1 ipv6 area 0 を書いて参加を宣言します。プロセス側 router ospfv3 1 には router-id と address-family ipv6 unicast を置くだけで、どのインタフェースを参加させるかはインタフェースコンフィグで決まります。2 つ目は LSA 種別で、IPv6 では Type 8 Link-LSA と Type 9 Intra-Area-Prefix-LSA が追加されています (§6 で詳述)。3 つ目は ピアリングで、OSPFv3 はネイバー関係と next-hop を LLA (fe80::) で表します (§5 で詳述)。4 つ目は Router ID で、OSPFv3 でも 32 ビットの IPv4 ドット形式のまま (x.x.x.x) ですが、IPv6 インタフェースしか無いと自動選出できず手動設定が要ります (§10 で詳述)。
R1 で OSPFv3 プロセスの状態を見ると、address-family と Router ID、SPF の実行回数が確認できます。OSPFv3 1 address-family ipv6 がプロセス名で、Router ID は 1.1.1.1 です。
show ospfv3
OSPFv3 1 address-family ipv6
Router ID 1.1.1.1
...
Reference bandwidth unit is 100 mbps
Area BACKBONE(0)
Number of interfaces in this area is 2
SPF algorithm executed 7 times
Number of LSA 12. Checksum Sum 0x05F927Reference bandwidth unit is 100 mbps が示すとおり、参照帯域は OSPFv2 と同じ 100 Mbps です。SPF algorithm executed 7 times は SPF (Dijkstra) の実行回数で、リンクステート型として OSPFv2 と同じ計算を行っていることを示します。OSPFv2 との 4 つの違いをまとめると以下のとおりです。
5. OSPFv3 の隣接 — LLA でピアリングする
OSPFv3 の隣接で最も注意すべき点は、ネイバーを識別する ID と、ピアリング・転送に使うアドレスが別物であることです。show ospfv3 neighbor に出る「Neighbor ID」は Router ID (IPv4 ドット形式) ですが、Hello の送信元アドレスや経路の next-hop は LLA (fe80::) になります。この二面性が OSPFv3 の肝で、3-13 / 3-14 で扱った LLA がここで実用されます。
OSPFv3 は Hello を LLA を送信元として送り、宛先は all-OSPFv3-routers マルチキャスト ff02::5 です。ネイバーが確立すると、show ospfv3 neighbor の Neighbor ID 列にはネイバーの Router ID が IPv4 形式で表示されます。R1 から見ると、ネイバー R2 が 2.2.2.2 (Router ID)、状態 FULL/BDR で現れます。OSPFv2 と同じ表記です。
show ospfv3 neighbor
OSPFv3 1 address-family ipv6 (router-id 1.1.1.1)
Neighbor ID Pri State Dead Time Interface ID Interface
2.2.2.2 1 FULL/BDR 00:00:38 8 GigabitEthernet2ところが、このネイバーを経由する経路の next-hop は Router ID ではなく LLA です。R1 から R2 の Lo0 (2001:db8:0:2::1/128) への経路を show ipv6 route ospf で見ると、next-hop が R2 Gi2 の LLA FE80::5054:FF:FEE2:8F79 になっています。
show ipv6 route ospf
O 2001:DB8:0:2::1/128 [110/1]
via FE80::5054:FF:FEE2:8F79, GigabitEthernet2「Neighbor ID は 2.2.2.2 (Router ID、IPv4 形式)、転送の next-hop は FE80::5054:FF:FEE2:8F79 (LLA)」という二面性が読み取れます。Router ID は LSA を識別するためのキーであってアドレスではなく、実際にパケットを送る相手は LLA です。3-13 / 3-14 で「LLA はリンク内でのみ使える」と扱ったとおり、OSPFv3 のネイバーは通常の物理リンクでは同一リンク上にいるため、LLA を next-hop にしても問題なく転送できます (RFC 5340 では OSPFv3 パケットの送信元は「ほぼ常に」LLA とされますが、virtual link は例外で自ルータのグローバル IPv6 アドレスを使うなど、「常に LLA」とは限らない点だけ補足します。本ラボの通常リンク構成では LLA です)。OSPFv3 が LLA でピアリングする流れは以下のとおりです。
6. OSPFv3 の LSA — Type 8 / Type 9 の追加
OSPFv3 で LSA (Link State Advertisement) の種別が変わったのは、トポロジ情報とアドレス情報を分離したためです。OSPFv2 では Router-LSA (Type 1) と Network-LSA (Type 2) がトポロジ (誰と誰がつながっているか) とアドレス (そのリンクのプレフィックス) の両方を運んでいました。OSPFv3 はトポロジを Type 1 / Type 2 に残したまま、アドレス情報を Type 8 Link-LSA と Type 9 Intra-Area-Prefix-LSA という新しい LSA に切り出しました。
R2 で OSPFv3 のデータベースを見ると、Router-LSA / Network-LSA に加えて Link-LSA (Type-8) と Intra-Area-Prefix-LSA が並びます。
show ospfv3 database
Router Link States (Area 0)
Net Link States (Area 0)
Link (Type-8) Link States (Area 0)
Intra Area Prefix Link States (Area 0)Type 8 = Link-LSA は、各インタフェースの LLA とそのリンクのプレフィックスを運びます。リンクローカルにのみ flooding され、隣接ルータに「このリンクの自分の LLA はこれ、プレフィックスはこれ」を伝えます。R2 Gi3 の Link-LSA を見ると、Advertising Router が 2.2.2.2、Link Local Address が FE80::5054:FF:FE2D:FEDF、プレフィックスが 2001:DB8:0:23::/64 です。ネイバーが next-hop に使う LLA は、この Type 8 で運ばれます。
show ospfv3 database link
LS Type: Link-LSA (Interface: GigabitEthernet3)
Link State ID: 9 (Interface ID)
Advertising Router: 2.2.2.2
Link Local Address: FE80::5054:FF:FE2D:FEDF
Number of Prefixes: 1
Prefix Address: 2001:DB8:0:23::
Prefix Length: 64Type 9 = Intra-Area-Prefix-LSA は、Router-LSA / Network-LSA から 分離されたプレフィックス情報を area 内に運びます。show ospfv3 database prefix を見ると、Advertising Router 1.1.1.1 が 2001:DB8:0:1::1/128 (R1 の Lo0) を広告しており、Referenced LSA Type: 2001 は対応するトポロジ LSA が Router-LSA (16 進 0x2001) であることを示します。どのトポロジ LSA に対応するプレフィックスかを、この Referenced LSA Type で結び付けます。
show ospfv3 database prefix
LS Type: Intra-Area-Prefix-LSA
Advertising Router: 1.1.1.1
Referenced LSA Type: 2001
Number of Prefixes: 1
Prefix Address: 2001:DB8:0:1::1
Prefix Length: 128, Options: LA, Metric: 0OSPFv2 では Router-LSA / Network-LSA がトポロジとアドレスを兼ねていたため、プレフィックスが変わるたびに SPF の対象であるトポロジ LSA まで再 flooding していました。OSPFv3 はトポロジ (Type 1 / 2) とアドレス (Type 8 / 9) を分離したことで、アドレスの追加・削除がトポロジ計算に与える影響を抑えられます。なお、LSA 種別の番号と名前は記憶や通説ではなく、実機 show ospfv3 database の表記 (Link (Type-8) Link States / Intra Area Prefix Link States) で確定しています。show ipv6 ospf database でも同じ情報が見えます。
7. OSPFv3 の経路 — show ipv6 route ospf
OSPFv3 が学習した経路は、show ipv6 route ospf に O コードで現れます。area 内 (Intra-Area) の経路を表す O は OSPFv2 と同じコードで、AD (Administrative Distance) も OSPFv2 と同じ 110 です。R1 で見ると、R2 Lo0 (2001:DB8:0:2::1/128) が [110/1]、R3 Lo0 (2001:DB8:0:3::1/128) が [110/2] で、いずれも next-hop が R2 Gi2 の LLA FE80::5054:FF:FEE2:8F79 です。
show ipv6 route ospf
O 2001:DB8:0:2::1/128 [110/1]
via FE80::5054:FF:FEE2:8F79, GigabitEthernet2
O 2001:DB8:0:3::1/128 [110/2]
via FE80::5054:FF:FEE2:8F79, GigabitEthernet2R3 Lo0 はホップが 1 つ遠いため metric が [110/2] ですが、next-hop は同じ R2 Gi2 の LLA です。R3 へは R2 を経由するため、R1 から見た出口は常に R2 です。経路の詳細を show ipv6 route 2001:db8:0:3::1 で見ると、Known via "ospf 1", distance 110, metric 2, type intra area と表示され、AD 110・area 内経路であることが確認できます。From も FE80::5054:FF:FEE2:8F79 で、§5 のとおりネイバーも next-hop も LLA です。
経路が正しく入れば、実際に疎通します。R1 から R3 Lo0 (2001:db8:0:3::1) への ping ipv6 は 100 パーセント成功 (5/5) しました。OSPFv3 が広告した経路で、area 内のルータ間で IPv6 が疎通することを確認できます。MP-BGP を絡めた AS をまたぐ疎通は §9 で扱います。
8. MP-BGP — address-family ipv6 unicast
MP-BGP は、1 つの BGP セッション上で複数のアドレスファミリを運ぶ拡張です。アドレスファミリは AFI (Address Family Identifier) と SAFI (Subsequent Address Family Identifier) の組で識別され、IPv6 unicast は AFI=2 / SAFI=1 です。本ラボでは R3 (AS65010) と R4 (AS65020) の間に IPv6 eBGP を 1 ホップ立て、IPv6 unicast の経路を交換します。
MP-BGP で IPv6 経路を流すには、設定上 2 つの手順が要ります。1 つ目は no bgp default ipv4-unicast で、これは 新しく定義した neighbor に対して IPv4 unicast address-family を既定で有効化するのを抑止する 設定です (別の IPv4 neighbor オブジェクトを暗黙作成する設定ではなく、各 neighbor の IPv4 unicast 自動 activate を切るものです)。IPv6 専用 BGP では IPv4 unicast が勝手に有効になると混乱するため、明示的に切ります。2 つ目は address-family ipv6 unicast の下で neighbor <IPv6 アドレス> activate を書くことです。ネイバーを neighbor 2001:DB8:0:34::4 remote-as 65020 でグローバルに定義しただけでは IPv6 経路は流れず、address-family の下で activate して初めて IPv6 unicast の経路交換が始まります。activate を忘れると、ネイバーは Established になっても経路が交換されません。
R3 でネイバーの状態を show bgp ipv6 unicast summary で見ると、IPv6 アドレス 2001:db8:0:34::4 のネイバーと Established していることが分かります。State/PfxRcd の 1 は、1 つのプレフィックスを受信済みであることを示します。
show bgp ipv6 unicast summary
BGP router identifier 3.3.3.3, local AS number 65010
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2001:DB8:0:34::4
4 65020 8 8 2 0 0 00:03:45 1受信した経路を show bgp ipv6 unicast で見ると、R4 Lo0 (2001:db8:0:4::1/128) を学習しています。Next Hop は R4 の GUA 2001:db8:0:34::4、AS_PATH は 65020、Origin は i (IGP、R4 の network 文由来) です。
show bgp ipv6 unicast
Network Next Hop Metric LocPrf Weight Path
*> 2001:DB8:0:4::1/128
2001:DB8:0:34::4
0 0 65020 iIPv6 BGP の next-hop が GUA と LLA の 2 つを併記する場面がある点も特徴です。RFC 2545 では、MP_REACH_NLRI の IPv6 next-hop は GUA 単独、または GUA に LLA を続けた形を取り得ます (LLA を含めるのは、広告元が next-hop と広告先 peer の両方と同一サブネットを共有する場合)。本ラボの直結 eBGP はこの条件を満たすため 2 つ併記され、show bgp ipv6 unicast 2001:db8:0:4::1 の詳細では 2001:DB8:0:34::4 (FE80::5054:FF:FECE:5F5A) from 2001:DB8:0:34::4 (4.4.4.4) のように、GUA next-hop の後ろに R4 の LLA が括弧で併記されます。直結 eBGP では GUA next-hop で転送できます (常に 2 つ持つわけではなく、共通サブネットを持たない場合は GUA のみになります)。MP-BGP が 1 セッションで複数アドレスファミリを運ぶ構造は以下のとおりです。
9. OSPFv3 と MP-BGP の共存 — IPv6 経路選択
OSPFv3 で学んだ経路と MP-BGP で学んだ経路は、境界ルータ R3 の RIB で O コードと B コードとして共存します。R3 で show ipv6 route を見ると、OSPFv3 由来の O 経路 (AD 110) と eBGP 由来の B 経路 (AD 20)、自身の Lo0 の LC 経路が並びます。
show ipv6 route (R3)
O 2001:DB8:0:1::1/128 [110/2]
O 2001:DB8:0:2::1/128 [110/1]
LC 2001:DB8:0:3::1/128 [0/0]
B 2001:DB8:0:4::1/128 [20/0], tag 65020AD は IPv4 と同じ体系で、OSPFv3 が 110、eBGP が 20 です。R3 で経路の詳細を見ると、2001:db8:0:4::1 が Known via "bgp 65010", distance 20、2001:db8:0:1::1 が Known via "ospf 1", distance 110, metric 2, type intra area で、それぞれの AD が確認できます。本ラボはプレフィックスが重複しないため AD 競合は起きませんが、もし同じプレフィックスを OSPFv3 と eBGP の両方から学んだ場合は、AD の小さい eBGP (20) が選ばれます。
R3 で OSPFv3 と MP-BGP を相互再配送すると、AS をまたいだ経路の往来が完成します。MP-BGP で受けた R4 Lo0 を OSPFv3 へ、OSPFv3 の内部経路を MP-BGP へ流すと、R4 Lo0 が OSPFv3 ドメインの奥の R1 まで届きます。R1 で show ipv6 route を見ると、R4 Lo0 (2001:DB8:0:4::1/128) が OE2 (OSPFv3 external type 2) [110/1], tag 65020 で現れます。
show ipv6 route (R1)
OE2 2001:DB8:0:4::1/128 [110/1], tag 65020
via FE80::5054:FF:FEE2:8F79, GigabitEthernet2OE2 は OSPFv3 ドメインの外部から再配送された経路を示すコードで、tag 65020 は再配送時に元の AS 番号が自動でタグ化されたものです。next-hop は §5 / §7 と同じく R2 Gi2 の LLA です。経路の詳細を show ipv6 route 2001:db8:0:4::1 で見ると、Tag 65020, type extern 2 と表示されます。MP-BGP (AS65020) 由来の経路が OSPFv3 ドメインへ再配送され、AS をまたいで R1 まで到達したことが読み取れます。
最後に、R1 から R4 Lo0 (2001:db8:0:4::1) への ping ipv6 は 100 パーセント成功 (5/5) でした。3-13 でアドレスを設定し、3-14 で自動設定の仕組みを知り、本節で OSPFv3 と MP-BGP の連携によって IPv6 が異なる AS 間で実際に疎通するところまで到達しました。OSPFv3 経路と MP-BGP 経路が R3 で共存し、再配送で R1 まで届く流れは以下のとおりです。
10. 落とし穴・補足
本節で押さえておきたい論点と、教科書 / 実装の挙動との差を 5 件まとめます。3-3 から 3-14 と同じ「正直記録」枠で、CML2.9 IOS-XE 17.x (csr1000v) の実装の振る舞いと python での検算を優先します。
落とし穴 1: OSPFv3 の Router ID は IPv6 環境で手動設定が要る
OSPFv3 の Router ID は、IPv6 でも 32 ビットの IPv4 ドット形式 (1.1.1.1 等) のままです。これはアドレスではなく LSA を識別するためのキーだからで、IPv4 から IPv6 に変わっても変わりません。問題は、インタフェースに IPv4 アドレスが無いと Router ID を自動選出できない点です。本ラボのように IPv6 のみの環境では、router ospfv3 1 の下で router-id 1.1.1.1 を明示しないと %OSPFv3-4-NORTRID が出てプロセスが起動しません。「OSPFv3 でも Router ID は IPv4 形式」という教科書の記述は、この自動選出の事情を背景に持ちます。
落とし穴 2: ospfv3 コマンドと ospf コマンドの両系統が見える
IOS-XE 17.x は、OSPFv3 の状態を show ospfv3 neighbor と show ipv6 ospf neighbor の両方で見られます。出力内容は同じで、本ラボでも両方を取得して一致を確認しました。設定方式も、本ラボで採用した router ospfv3 1 (address-family 統合方式) と、旧来の ipv6 router ospf 1 (OSPFv3 専用方式) の 2 系統があります。現行の推奨は address-family 統合方式で、1 つのプロセスで IPv4 / IPv6 の address-family を扱えます。show ospfv3 ... が見つからない、あるいは設定例と表示が食い違うときは、どちらの系統を使っているかを疑います。
落とし穴 3: MP-BGP は activate しないと経路が流れない
MP-BGP で IPv6 経路を流すには、no bgp default ipv4-unicast に加えて address-family ipv6 unicast の下で neighbor ... activate が要ります (§8)。これを忘れると、show bgp ipv6 unicast summary でネイバーが Established (State/PfxRcd に数値) になっていても、IPv6 unicast の経路が 1 つも交換されません。「ネイバーは上がっているのに経路が来ない」ときは、まず address-family ipv6 unicast 下の activate 漏れを疑います。グローバルの neighbor 定義はセッションを張るだけで、どのアドレスファミリを運ぶかは address-family の下の activate で決まります。
落とし穴 4: OSPFv3 のネイバー ID と next-hop を混同しない
OSPFv3 の show ospfv3 neighbor の「Neighbor ID」列は Router ID (IPv4 形式) ですが、show ipv6 route ospf の via に出る next-hop は LLA (fe80::) です (§5)。この二面性を「ネイバーは IPv4 形式だから next-hop も IPv4 か」と誤解しやすい点に注意します。Router ID は LSA を識別するキー、LLA は実際にパケットを送る相手です。show ipv6 route <prefix> の From も LLA で表示されるため、転送に関わるアドレスは一貫して LLA だと押さえます。
落とし穴 5: 再配送経路は Origin が ? (incomplete)
MP-BGP の経路は、由来によって Origin コードが変わります。R4 が network 文で広告した経路は Origin i (IGP) ですが、R3 が OSPFv3 から再配送した経路を R4 側で受信すると B 2001:DB8:0:1::1/128 [20/1], tag 65010 のように Origin が ? (incomplete) になります。? は「再配送由来で出自が不明」を示すコードで、network 文由来の i と区別されます。ここで属性の整理として、ORIGIN と AS_PATH は別の BGP 属性 です (ORIGIN は well-known mandatory の Type Code 1、AS_PATH は Type Code 2。RFC 4271)。show bgp ipv6 unicast の Path 列では AS_PATH の後ろに Origin code (i / e / ?) が並んで表示されるため見た目は一続きですが、「AS_PATH の末尾文字」ではなく独立した ORIGIN 属性を読んでいる、と捉えるのが正確です。この Origin code が i か ? かを見ると、その経路が network 文由来か再配送由来かを判別できます。
11. 第 3 章のまとめと次節の内容
本節 3-15 では、IPv6 のルーティングを扱いました。OSPFv3 が OSPFv2 と 4 点で異なること (インタフェース側での有効化・Type 8 / Type 9 LSA によるトポロジとアドレスの分離・LLA でのネイバーピアリング・Router ID は IPv4 形式)、ネイバー ID は Router ID だが転送の next-hop は LLA であること、MP-BGP が address-family ipv6 unicast (AFI=2 / SAFI=1) で IPv6 経路を運び activate して初めて経路が流れること、OSPFv3 経路 (O、AD 110) と eBGP 経路 (B、AD 20) が R3 の RIB で共存すること、そして再配送によって R4 Lo0 が R1 まで OE2 で届き AS をまたいで ping6 が 100 パーセント成功することを、CML2.9 IOS-XE 17.x の show ospfv3 / show bgp ipv6 unicast / show ipv6 route で裏付けました。3-13 / 3-14 で扱った LLA が、OSPFv3 のピアリングと next-hop として実用される様子を回収しました。
3-13 から 3-15 までの 3 節で、IPv6 編が完結しました。3-13 でアドレス体系 (表記・種別・複数アドレス)、3-14 で NDP / SLAAC (近隣探索・アドレス自動設定)、本節 3-15 で OSPFv3 / MP-BGP (経路交換) を扱い、IPv6 が「設定して終わり」ではなく、アドレスを自動設定し、経路をルータ間で交換し、異なる AS 間で実際に通信が成立するところまで到達しました。
第 3 章は、3-1 のルーティングの基礎から始まり、RIP / OSPF / EIGRP / BGP の各ルーティングプロトコル、再配送・ルーティングポリシー・FHRP による冗長化、そして IPv6 ルーティングまでを扱ってきました。ここまではすべて 1 対 1 のユニキャストでした。第 3 章の締めとなるマルチキャスト編は、1 対多の配信を扱う範囲が広いため 3 節 (3-16 / 3-17 / 3-18) に分けて進めます。次節 3-16 マルチキャスト基礎では、その土台となるマルチキャストグループアドレスと MAC マッピング、ホストとルータ間でグループ参加を伝える IGMP (Internet Group Management Protocol) / MLD (Multicast Listener Discovery)、ループ防止の根幹となる RPF (Reverse Path Forwarding) チェック、共有ツリー (*,G) と送信元ツリー (S,G) という配信ツリーの考え方を扱います。RP (Rendezvous Point) と PIM-SM (Protocol Independent Multicast - Sparse Mode) の詳しい仕組みは 3-17 へ続きます。ユニキャストとは経路の作り方が根本的に異なるマルチキャストの仕組みを、CML2.9 の実機検証とともに見ていきます。