【ICTSC7】C6D (IPv6+BGP) の問題解説

こんにちは。

ついこの前、3/4〜3/5に開催された第七回ICTトラブルシューティングコンテストで運営をやってきました。
参加された皆様および関係者の皆様、ありがとうございました!

今回私は、イベントサポートで会場準備・司会・大人との交渉などをしていた他に問題作成も行っていました。
ここではその作成した問題の解説をします。

早速ですが、私の問題構成は以下のようになっていました。



問題コード : C6D

コア技術

IPv6
RA/RS
( BGP )

IPv6
Internet Protocol Version 6(インターネット プロトコル バージョン6)、IPv6(アイピーブイ6、アイピーバージョン6)は、Internet Protocolの一種で、OSI参照モデルにおいてネットワーク層に位置付けられるプロトコルである。

IPv6が誕生した背景には、IPv4IPアドレス枯渇問題がある。

引用 : IPv6 - ウィキペディア

RA
RA (Router Advertisement; ルータ広告)とは、 IPv6アドレスの自動設定を行う機能(Stateless Address Autoconfiguration, SLAAC)(*1)の一部分で、 RFC4862で標準化されています。

引用 : インターネット用語1分解説~RA (Router Advertisement; ルータ広告)とは~ - JPNIC

トポロジ

f:id:yu_ping:20170308190922p:plain

問題文

1841bに対して無事にIPv6アドレスが振られたが、今度は1841aにつながるインターフェイスにグローバルアドレスが振られていないようである。
移行期間内にBGPによるルータの冗長化を完了させて、無事サービスを始められなければインフラ班の首が危ない。
グローバルアドレスが正しく振られていない原因を突き止め、下記経路を通ってインターネットに通信ができるように設定を見直し、コンフィグとともに報告してほしい。
ただし、コアスイッチのBGP経路の重みづけはすでに設定されている。

設定に使用する認証情報と正しい経路の情報は以下のとおりである。

【1841a】

enable password:ihuygh77Kggl4dsg8G8h

【正しい経路】

1841b → 1841a → → → 疎通先

* この問題を解く為には、前提問題を解いた上で基準点を満たす必要があります

トラブルの内容

1. Ciscoルータに、定期的なRA送信を抑制するコマンドが入っている。
また、アドバタイズされたアドレスの最終有効期限が変更されている。

ipv6 nd ra suppress (不完全な抑制コマンド)
ipv6 nd prefix <ipv6-prefix/prefix> <valid-lifetime preferred-lifetime>
(デフォルトは30日だが、大会の性質上120秒と短く設定してました)

尚、上記の抑制コマンドの場合、自らRAは出さないものの、RSが来た場合はRAを送信する。

2. 一度はクライアントにグローバルIPv6アドレスが割り振られるが、最終有効期限が経過すると、グローバルIPv6アドレスが無くなり、外部との通信ができなくなってしまう。

3. RSは基本的にnodeがI/Fをupした時しか流れない為、アドレスが消える度にupし直さないと繋がらない状態が続いてしまう。

4. また、RouterA側にRouterBとピアを張る設定が抜けている為、インタフェースがただupするだけではBGP neighborが張れない

5. 上記が原因で対象のインタフェースとのBGP neighborがdownしてしまい、正しい経路で外部と通信ができない。

* 4と5は、手元トポロジ変更によりOSPFv3ではなくBGPにする必要があった為、付け加えた項目です。

ゴール

  • ipv6 nd ra supressの削除 (valid-lifetimeのみ削除では、デフォルト設定である30日後に繋がらなくなってしまう)
  • インタフェースを立ち上げ直す事でRSを流し、グローバルIPv6アドレスが再度割り振られた事を確認する
  • RouterA側のBGP設定にRouterBの指定インタフェースとピアを張る設定が抜けている為、設定を入れる
  • BGP neighbor downしていたインタフェースがEstablishedに変わりBGP neighbor UPした事を確認する
  • 正しい経路で通信できる事を確認する

* 大会では、参加者手元環境の上流にあるコアL3スイッチにAS_PATHアトリビュートの設定を加えており、指定の経路を通るように重み付けされています

採点基準

  • コンフィグもしくは入力コマンドの未提出で減点
  • ipv6 nd ra supress(+ valid-lifetime)が原因で、グローバルIPv6アドレスが消えると特定できている
  • 上記とRouterA側のBGP設定不備により、BGP neighborがdownしていると特定できている
  • RouterAとRouterB間でBGP neighborがupしている
  • IPv6アドレスを用いて、正しい経路で通信確認ができている
  • RouterA、RouterBが上流ルーターとneigbhorが張れていて、冗長化構成になっている



講評

前回はPathMTUDiscoveryBlackHole問題やAUX問題を出題しましたが、解答者数が多くなかった為、今回は難易度低めの問題にしてました。
この問題では、今後docomo,Softbank,KDDIの三大キャリアがIPv6へ徐々に移行していく事も含め、IPv6に対しての関心と移行時のトラブルを知ってほしい気持ちから作成しています。

トラコン当日、解答状況を見ていると前提問題であるYUTの基準点を満たせず、この問題まで到達できないチームが多かったようでした。
しかし二日目午後終了時間間際になると、この問題に到達できるチームが続々と増え始め、結果的に半分くらいのチームがこの問題の原因を特定し、解答してくれていたので個人的に嬉しかったです。
ただ、惜しかったのは1841bとコアスイッチ間でBGP neighborが張れておらず、冗長化されていないチームが数チーム見受けられました。
show bgp ipv6 unicast neighborコマンドを用いると隣接ノードとのneighbor状況がわかる為、ぜひ使ってみてください。

また、大会のアンケートもしています。
お手隙な時にでもよろしくお願いします。
ICTSC7アンケート




ちなみに・・・

元々、hotstage中盤くらいまではOSPFv3+RA/RSの構成で、抑制コマンドだけ修正すれば良いという、今思い返せば超簡単な問題でした。
初期の問題構成はこんな感じです。

問題コア設定

社内のアドレス設計をIPv4+IPv6のデュアルスタックからIPv6のみへ移行した。
ところが、RouterBを起動してから数分間は外部に通信できるが、それ以降はRouterBから通信できないトラブルが発生した。

想定トポロジ

f:id:yu_ping:20170307125419p:plain

しかし、hotstage中にようやく完成を遂げたもう一つのIPv6問題といざマージ!!となった時、必ずどちらかのコンフィグがみれてしまう(ネタバレしてしまう)という状態に陥ってしまったのです。
今までであれば同時出題等で対処できたものの、今回の大会ルールでは事前にコンフィグがみれてしまうという状況は良くないものでした。
トラコンで出題される問題は、参加学生各個人で作成している為、こう言った競合が出てしまうのは仕方のない事でもあります。
そこで問題リーダー二人と、限られた時間の中相談しつつ考えました、「どうすればうまく出題できるだろう?」・・・

その結果出てきたのが・・・BGP!、そう、BGPでした。
今まで「BGP怖い」といって食わず嫌いをして逃げていた私ですが、一日みっちり勉強し、コンフィグをかけるくらいまでは理解する事ができました。
そして、このBGPを使うことでマルチホーミング環境っぽく見せることができ、かつ、ネタバレ問題を防止できる!なんて素晴らしいんだ!!BGP最高ですね!!すごーい!

こうして、RAにBGPという、現実味がないけどなんとか成立させた問題が仕上がったわけです。わーい。