この記事はシスコの有志による Cisco Systems Japan Advent Calendar 2023 の 12日目として投稿しています。
2017年版: https://qiita.com/advent-calendar/2017/cisco
2018年版: https://qiita.com/advent-calendar/2018/cisco
2019年版: https://qiita.com/advent-calendar/2019/cisco
2020年版 1枚目: https://qiita.com/advent-calendar/2020/cisco
2020年版 2枚目: https://qiita.com/advent-calendar/2020/cisco2
2021年版 1枚目https://qiita.com/advent-calendar/2021/cisco
2021年版 2枚目https://qiita.com/advent-calendar/2021/cisco2
2022年版(1,2): https://qiita.com/advent-calendar/2022/cisco
2023年版: https://qiita.com/advent-calendar/2023/cisco<---こちら
前書き
Cisco SD-WAN、OMP、BGPのささやかでマニアックな技術仕様について架空人物の会話を通してお届けいたします。
本題
show ip bgpを実行するのに、こんなに緊張するのは初めてだ。流宇太(るうた)はターミナルソフト画面に表示されているshow ip bgpコマンドを凝視しながらこう思った。
まだ若手エンジニアとは言えるが、幾つかの難関ネットワーク案件を完遂してきた実績を持っており、数々の本番環境で落ち着いて作業をこなしてきた流宇太は、人生初めて一つのコマンドを実行するのに、手のひらに汗をかくほど緊張している。
それもそのはずだ。なぜならこのコマンドの実行結果には、愛の告白の返事が入っているからだ。
二週間前にあの愛の告白作戦をやめとけばよかったかもしれないな、と心の中で嘆きながら、流宇太は無意識にWebex画面の向こうの女性に一瞬視線を向けた。
彼女の名前は詩須子(しすこ)、流宇太とは保育園から大学までずっと一緒で、おまけに同じ会社に同期入社している仲だ。ネットワークという共通の趣味を持って、休日は一緒に自宅ラボで検証を楽しむこの二人は、周りから「流宇太と言えば詩須子(♡)、詩須子と言えば流宇太(♡)」と揶揄されるほどだ。
保育園時代の名残で今でもお互いのことを「ちゃん」、「くん」をつけて呼び合っているが、幼馴染以上恋人未満の関係が長く続くと、なぜかその慣れたはずの呼び方から妙にもどかしさを感じる日々になっているようだ。
あの形で愛の告白さえすれば、今年のクリスマスは恋人同士として一緒に過ごせると、自分なりに工夫してきたつもりだったが、逆に墓穴を掘ってしまったのか?
二週間前
Webex会議
そっちは朝の6時だっけ?朝早くて悪いね。米国出張は順調かな?
うん、順調よ。多分クリスマスまでには日本に帰れると思う。流宇太くんが用意してくれたテストデータのおかげよ。
それはよかった。テストデータといえば、前に頼まれた次のテスト用のラボ環境を構築しておいたよ。今軽く確認してもらえるかな?
構築は早いね!うん、一緒にやろう。あっ、日本は結構深夜だけど、流宇太くんは大丈夫?
俺は全然平気よ。今回の環境は特にBGPの部分は心を込めて作ったので、まずはBGPから確認してもらえると嬉しい。
うん、米国側のC01ルータは詩須子ちゃんがいつも愛用している192.168.10.0/24、日本側のR01ルータは俺がいつも使っている192.168.20.0/24にしているよ。構成図はこんな感じ。
R01とC01は同じAS番号となっているけど。意図的にこうしている?
うん、訳があってこうしているよ。C01でallowas-inを設定しているから大丈夫。っていうか、俺の気持ちをBGPに載せているからこうしているってとこかな。
うん、そう、BGPに載せている、俺の気持ち、詩須子ちゃんに伝えたい気持ち。(高校の卒業文集に 大好物はBGP と平気で書いた詩須子ちゃんだからな)
とりあえず、俺の気持ちということで、俺を表す192.168.20.0/24に対してshow ip bgpをC01で実行してみたらわかるよ。
うん?わかった。じゃ、Webexでターミナルソフトの画面を共有しながら実行するね。
はい、実行したよ。
特に変なところがないかな。C01でallowas-inが設定されているので、想定通りの結果よ。
(・・・)英語堪能な詩須子ちゃんなら、わかると思うけどね。英語の略語っていうか、スラングっていうか。そのAS_PATHの数字。
そして、前にさりげなく詩須子ちゃんが言っていた話は覚えているよ。もしルータから突然告白されたら一番ロマンチックって。
色々覚えてくれてありがとう。嬉しい。
1 4 3の意味がわかるよ。I Love Youだよね。(・・・)
(意地悪っぽく笑いながら)私の気持ちは、
そうね、ルータが教えてくれるね。
例えば、私を表す192.168.10.0/24に対してshow ip bgpを日本側のルータR01で実行してみたらわかるよ。あっもちろん、allowas-inをR01で設定してからね。お互いの気持ちを受け止めるという意味で。
じゃ、俺もWebexでターミナルソフトの画面を共有しながら実行してみるね
えっと、AS_PATHは4 1 3となっているのは想定通りだけど、それは詩須子ちゃんの気持ち?よくわからないな。
(意地悪っぽく笑いながら)そうよ。全然英語のスラングでも略語でもないけど、1 4 3と同じノリで解釈すれば、4 1 3 はwait & seeと解釈してもよいかな、と。
大事な話なのに茶化したようでごめんなさい。流宇太くんが自分の気持ちを私の大好きなルータとBGPに載せて伝えてくれてすごく嬉しく思っているわ。やはり私の返事も流宇太くんが構築してくれたこの環境のルータとBGPで伝えなきゃと、さっきからずっと何かよい方法がないかと考えてきたの。
つまり、以下の二つの実行結果のAS_PATHは同時に同じ1 4 3になったらいいな。
• 流宇太くんの気持ち:
o 流宇太くんを表す192.168.20.0/24に対してshow ip bgpを米国側のルータC01で私が実行する
• 私の気持ち:
o 私を表す192.168.10.0/24に対してshow ip bgpを日本側のルータR01で流宇太くんが実行する
そんな方法があるのかな?as-overrideやroute-mapなどで色々頑張ってみるしかないかな。
ううん、as-overrideやroute-mapなどの書き換え系はダメよ。なんかルータの本当の気持ちじゃなくなるから。さらにいうと、R01とC01のコンフィグは変更無しでそのままにしてほしい。ちょっと強引だけど、ありのままの私たちを表しているという解釈で。つまり、こういうお題だね。
(それは無理なんじゃないの?あっ、遠回しのお断りってことか)
もしかして、こんなの無理だよ、遠回しのお断りかと考えているのかな?
読心術ではなく、顔に書いてあるよw
意地悪く聞こえたらごめんさない。実は先ほどお題を出すときに、一つ実現可能性のある方法に思い付いたのね。実際に実現できるかどうかは検証してみないとわからないけど。ぜひ流宇太くんにもこの方法に思い付いて、私たちの大好きなネットワーク技術で私たちの「両思い」を実現してほしい。
(こう言われるとなんか緊張してきたな。本当にできるのかな・・・)
(・・・)あっ、そうだ、来週開催される予定のCisco SD-WAN Black Beltトレーニングはぜひ受けた方がよいよ。私は先月同じトレーニングを受けてきて、とても勉強になった!
特にOMPは面白いよ!大好きなBGPと似て非なるっていうか、とりあえずトレーニングのOMPの部分はちゃんと聞いてね。
二週間後
Webex会議
ううん。こちらこそ、私のわがままのお題に付き合ってくれてありがとう。
俺たちの「両思い」実現のポイントは、ズバリSD-WAN化だ!借用できるSD-WANコントローラの空きがなく、ぎりぎり今日借りることができたけど、今からやる検証はぶっつけ本番だ。愛の告白に相応しく一発勝負ということだ。
Cisco社のルータはコマンド一つでモードを変えることができるため、まずはcontroller-mode enableコマンドで、日本側のWANルータTKYと米国側のWANルータSJCのモードを自律モード(autonomous mode)からSD-WANモード(controller mode)に変更する。こんな感じだ。
初期設定を行い、SD-WANコントローラとコントロール接続を確立する。ここら辺の設定はCisco SD-WAN Black Beltトレーニングのハンズオンで何回もやっているので、ささっと作業を終わらせるね。
次はTKY、SJCのOMP設定とBGPとの再配布設定を行う。
簡単にまとめると、OMPはBGPではないため、そもそもBGPのAS_PATHは再配布時に消失するというのはポイントだね。この時点でC01が受信した192.168.20.0/24のAS_PATH(=俺の気持ち)は1となっているはず。
そして、同じ理屈で、この時点でR01が受信した192.168.10.0/24のAS_PATH(=詩須子ちゃんの気持ち)も1となっているはず。
詩須子ちゃん、一緒にWebexで共有しながら実機でも確認しようか。
では、次のステップとしては、propagate as path機能を有効にして、BGPからOMPへルートを再配布する際に、BGPのAS_PATHを保持できるようにする。
ちなみに、SD-WAN Manager GUIではこのように設定する。
propagate as path有効後のAS_PATH情報を一旦見てみよう。
簡単にまとめると、propagate as path有効化後、BGPルートをOMPへ再配布後もAS_PATH情報が消失せずに保持されるため、そのままOMPを超えて対向側のルータのBGPに通知できる。この時点でC01が受信した192.168.20.0/24のAS_PATH(=俺の気持ち)は1 3となっているはず。
そして、同じ理屈で、この時点でR01が受信した192.168.10.0/24のAS_PATH(=詩須子ちゃんの気持ち)も1 3となっているはず。
詩須子ちゃん、また一緒にWebexで共有しながら実機で確認しようか。
次はいよいよ最後のステップだ。今度はOMPをBGPとみなして、overlay-asを設定してOMPオーバーレイにAS番号を付与する。値は4とする。
ちなみに、SD-WAN Manager GUIではこのように設定する。
overlay-asの設定完了後、つまり、最終形の環境のAS_PATH情報を見てみよう。
簡単にまとめると、overlay-as番号を設定したあと、BGPルートをOMPへ再配布後は元々のAS_PATH情報が消失せずに保持されるだけでなく、さらにOMPオーバーレイのAS番号は当該AS_PATHに追加される。この時点でC01が受信した192.168.20.0/24のAS_PATH(=俺の気持ち)は1 4 3となっているはず。
そして、同じ理屈で、この時点でR01が受信した192.168.10.0/24のAS_PATH(=詩須子ちゃんの気持ち)も1 4 3となっているはず。
ちょっと待って!TKYやSJCのAS番号はAS_PATHに追加されないかな?たとえば、192.168.20.0/24のルート伝播を例にして普通のBGP的に考えると、R01 (AS番号:3) -> TKY(AS番号:1) -> OMPオーバーレイ (AS番号:4) -> SJC(AS番号:1)の順番でAS番号が追加され、C01が受信した192.168.20.0/24のAS_PATHは1 4 1 3になるんじゃないのかな?
いいツッコミだね。
そこは俺も検証できずに色々悩んで考えたけど、結論は1 4 1 3にならずに、1 4 3になるはずだ。なぜなら、TKYの立場で考えると、あくまでも自分のBGPプロセスがR01から受信した192.168.20.0/24のAS_PATH(値:3)を自分のOMPプロセスに再配布するだけで、別に他のBGPスピーカーに192.168.20.0/24をアドバタイズしているわけではないので、自分の持つBGP AS番号(値:1)をAS_PATHに追加することがないと思う。
うん、言われてみればなんか確かにそうだなって感じね。実際の実行結果は気になるね。じゃ、一緒にWebexで共有しながら実機で確認しよう!
現在
Webex会議
流宇太くん、どうしたの?さっきから画面を見てぼうっとしているよ。
流なんか、急に緊張になってきたな、1万回くらい打ったはずのshow ip bgpを見ながら。愛の告白に相応しく一発勝負だという大言壮語を吐いてみたが、やはりぶっつけ本番は怖いね。「両思い」にならなかったらどうしようって。
あはは、情けないw
今のるうたって、ネットワーク機器のことかな、それとも俺のこと?
そうか、そうだね。俺もしすこを信じているから、怖いもの無しだね。
今回のお題の解のポイントとなるCisco SD-WANのCiscoを信じているし、
二週間前にCisco SD-WANやOMPなどのヒントを一生懸命出してくれた詩須子も信じている。そう、絶対にうまくいくと思う!
せーので一緒にshow ip bgpを実行しよう!