Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20200729 BGP 概説

20200729 BGP 概説

以前、JPIX さんの BGP セミナーで話した内容から、機種依存の項目を削除して再構成したもの。今時は web でも本でもいろいろあるからいらないかなーと思いつつ...

Ryuichi Takashima

May 25, 2022
Tweet

More Decks by Ryuichi Takashima

Other Decks in Technology

Transcript

  1. 目次 I. BGPとは II. PATH属性と経路選択 III. IBGP と EBGP IV.

    AS間の接続形態 V. 経路制御の必要性 2
  2. 用語 4 ✓ AS内での経路制御に用いられる ✓ 代表的なプロトコル ➢ Connected, Static, RIP,

    OSPF, IS-IS IGP (Interior Gateway Protocol) ✓ AS間での経路制御に用いられる ✓ 代表的なプロトコル ➢ BGP-4及びその拡張 EGP ※ (Exterior Gateway Protocol) ✓ 一定の経路制御ポリシーに従って制御される ネットワークの塊 ✓ 日本語にすると”自律システム” ✓ 多くの場合はISP,会社,大学等の組織単位 AS (Autonomous System) 本資料のターゲット ※EGPという特定のプロトコル名である狭義のEGP(RFC-904)も存在するので注意。
  3. IGPとEGP 6 ISP B AS65002 ISP C AS65003 ISP A

    AS65001 IGP IGP IGP BGP IGP BGP 凡例 AS内において、ルータ間、個々のサブ ネット間の経路情報を制御 AS間において、ASに割り振られた CIDR単位で経路情報を制御 EGP(BGP) IGP
  4. BGP経路選択のタイブレークルール 8 ✓ 最も高いものを優先する LOCAL_PREF ✓ 最も短いものを優先する AS_PATH ✓ IGP>EGP>Incomplete

    の順に優先する ORIGIN ✓ EBGPから学習した経路をIBGPから学習した経路より優先す る IBGP/EBGP ✓ NEXT_HOPへのIGPのCostが低いものを優先する IGP Cost ✓ Router-IDが低いものから学習した経路を優先する Router-ID 比 較 順 序 ✓ 同一ASから複数の経路を学習している場合にはMEDが低い ものを優先する MED ※この他にも該当ルータ内でのみ有効なweight等、ベンダ依存の実装も存在する
  5. NEXT_HOP 9 ✓ もちろん”次に転送すべきルータのアドレス” ✓ 但し、IGPのNEXT HOPとは違いがある NEXT_HOP ✓ 宛先アドレスへの到達経路となる直接接続されている

    次のルータのインタフェースアドレス ✓ P-to-P接続か、ARP等で解決できる必要がある IGP NEXT HOP ✓ 宛先アドレスへの到達経路となる隣接ASへ接続されて いる次のルータ ✓ IGPにより解決できる必要がある BGP NEXT HOP
  6. NEXT_HOP 10 ISP B AS65002 ISP A AS65001 ルータA II

    I III AS65001内のルータAが宛先となるAS65002内のIPアドレスのNEXT HOP解決をする例 ルータC ルータD ✓ 直接接続されたルータBのインタフェースアドレス IGP NEXT HOP ✓ ルータC~ルータDのリンクアドレスをAS65001内のIGPでルーティング していない場合 (*) ➢ ルータCのループバックアドレス ✓ ルータC~ルータDのリンクアドレスをAS65001内のIGPでルーティング している場合 ➢ ルータDのインタフェースアドレス BGP NEXT HOP ルータB 選択経路 I II III (*)C社なら neighbor next-hop-self, H社なら peer next-hop-local等の BGP NEXT__HOP 書き換えの設定が必要
  7. ※ 2013年現在、RFC-904のEGPを利用することはない為、排除してよい ※ 2013年現在、RFC-904のEGPを利用することはない為、排除してよい ORIGIN 11 ✓ そのBGP Prefixを生成したルータが設定。 ✓

    他ルータでの上書きは不可 ✓ 経路選択のタイブレークルールの一つとして用いられる ORIGIN ✓ IGPで到達可能な経路をBGP Prefixとして設定した場 合 IGP ✓ EGP (RFC-904)で到達可能な経路をBGP Prefixとし て設定した場合 EGP ※ ✓ IGP, EGP以外の方法で到達可能な経路をBGP Prefixとして設定した場合 ➢ 例) redistribute コマンドを使った設定 Incomplete ✓ EGP (RFC-904)で到達可能な経路をBGP Prefixとし て設定した場合 EGP ※ 優 先 度 低 高
  8. AS_PATH 12 ✓ その経路が経由されてきたASの順序リスト ✓ 経路選択のタイブレークルールの一つとしてAS_PATH長が用いられる ✓ 自ASを含むAS_PATHを持つ経路はループとして廃棄される AS_PATH AS65001

    AS65002 AS65003 AS65004 AS65005 AS65001のPrefix 10.0.0.0/8のAS_PATH変化の例 10.0.0.0/8 65001 i 10.0.0.0/8 65001 i 10.0.0.0/8 65003 65001 i 10.0.0.0/8 65004 65003 65001 i 10.0.0.0/8 65002 65001 i 10.0.0.0/8 i 隣接ASへ広告時 に自AS番号を追加 他の条件が同一ならば AS_PATH長の短い 上の経路を選択 Best Path!
  9. AS_PATH • Prepend による戻りトラフィック制御 13 ✓ 隣接ASに経路広告する際、自ASを2つ以上AS_PATHに追加して 広告する事により、見かけ上のAS_PATH長を長く見せかける事により、 戻りトラフィックを制御するテクニック AS_PATH

    Prepend AS65001 AS65002 AS65003 AS65004 AS65005 AS_PATH Prependによる経路選択変化の例 10.0.0.0/8 65001 65001 65001 i 10.0.0.0/8 65001 i 10.0.0.0/8 65003 65001 i 10.0.0.0/8 65004 65003 65001 i 10.0.0.0/8 65002 65001 65001 65001 i 10.0.0.0/8 i AS_PATH長がPrependに よって変更され、異なるパス を選択 Best Path! 2つ自ASを追加 (2つ分prepend)
  10. LOCAL_PREF (Local Preference) 14 ➢ ユーザが任意に設定可能な重み付け。値の高いものが優先 ➢ 何も設定しない場合には100がdefaultとなる ➢ 自AS内でのみ有効

    LOCAL_PREF 14 AS65001 AS65002 AS65003 AS65004 AS65005 10.0.0.0/8 65004 65003 65001 i LOCAL_PREF 300 10.0.0.0/8 65002 65001 i LOCAL_PREF 100 AS_PATHは上の経路が短いが、 経路受信時にLOCAL_PREFをセットすることに より下の経路を優先することが可能 LOCAL_PREFによる経路選択の例 Best Path! 10.0.0.0/8 65001 i 10.0.0.0/8 65001 i 10.0.0.0/8 65003 65001 i 10.0.0.0/8 i
  11. MULTI_EXIT_DISC (MED) 15 ➢ 同一AS間で複数の接続がある場合にどちらを優先するかの重み付 け。値の低いものが優先。 ➢ 基本的には経路を広告する側が設定する※ ➢ Egress

    トラフィックを接続先にコントロールされる事になる為、事前に 合意形成をしておく必要がある MED ISP B AS65002 ISP A AS65001 I II 同一AS間に複数の接続が存在する例 10.0.0.0/8 65001 i MED 0 10.0.0.0/8 65001 i MED 100 他の条件が同一ならばMEDの 低い接続 が選択される I ※任意の場所で上書きが可能な為、受信側で設定しなおすケースも存在 Best Path!
  12. MULTI_EXIT_DISC (MED) • always-compare-med 16 AS65001 AS65004 10.0.0.0/8 i 10.0.0.0/8

    65002 65001 i MED 100 10.0.0.0/8 65003 65001 i MED 200 ➢ ひとつの隣接ASと自ASの間で複数のピアがある場合のみ、MEDの 値が比較される ➢ デフォルト設定では下のケースではMEDは比較されない デフォルト設定 ➢ always-compare-med 設定時には隣接ASが異なる場合にも、タイ ブレークルールとしてMEDを比較させることが可能 always- compare-med 本来隣接ASが異 なる為比較を行わ ないが、比較 Best Path! 10.0.0.0/8 65001 i 10.0.0.0/8 65001 i AS65003 AS65002
  13. BGP経路選択のタイブレークルール 18 ✓ 最も高いものを優先する LOCAL_PREF ✓ 最も短いものを優先する AS_PATH ✓ IGP>EGP>Incomplete

    の順に優先する ORIGIN ✓ EBGPから学習した経路をIBGPから学習した経路より優先す る IBGP/EBGP ✓ NEXT_HOPへのIGPのCostが低いものを優先する IGP Cost ✓ Router-IDが低いものから学習した経路を優先する Router-ID 比 較 順 序 ✓ 同一ASから複数の経路を学習している場合にはMEDが低い ものを優先する MED ※この他にも該当ルータ内でのみ有効なweight等、ベンダ依存の実装も存在する
  14. EBGPの特長 21 ➢ 異なるAS間で設定されるBGPセッション EBGP ✓ 隣接するASは異なるポリシーにより制御される他組織 であることが多い為、経路の広告、受信ともに隣接AS 毎に一定のポリシーを設定することが多い ポリシー制御

    ✓ 異なるASでは通常IGPを動作させない為、特殊な場合 ※を除き、物理インタフェースアドレスを利用する事が多 い BGPセッション に使うアドレス ✓ AS_PATHを利用する。自ASを含むAS_PATHを持つ経 路はループと判断し廃棄する ループ検知の 仕組み ※EBGPマルチホップを利用して複数回線のロードバランスを行う場合等
  15. IBGPの特長 22 ➢ 同一AS内で設定されるBGPセッション IBGP ✓ 同一AS内では経路情報が同期していないとループが発 生する可能性がある為、個別のIBGPピア毎には制御を しないことが多い ポリシー制御

    ✓ IBGPピア間ではIGPが動作しており、冗長パスを持つこ とが前提となる為、ループバックアドレスを設定することが 多い BGPセッション に使うアドレス ✓ 同一AS内ではAS_PATHによるループ検知を利用でき ない為、 EBGPで学習した経路はIBGPピアに広告するが、 IBGPで学習した経路はIBGPピアに広告しない ループ検知の 仕組み
  16. IBGPトポロジの制限 • BGPスピーカの間にあるルータは全てBGPスピーカ 23 AS65001 AS65002 BGPスピーカの間にIGPしか知らないルータがいた場合 BGP BGP BGP

    ルータA ルータB ルータC 10.0.0.0/8 65001 I Next Hop Z ① ルータCはBGPルーティングテーブルに従い、10.0.0.0/8のBGP NEXT_HOP ルータAへのIGP最短パスであるルータBに転送 ② ルータBは10.0.0.0/8をどこに転送すればよいかわからず、破棄するかもしくは OSPFのデフォルトに従い転送 → たまたまOSPFデフォルトがルータAを向いていればよいがそうでない場合に はループもしくはパケット廃棄が生じ、転送不可 ルータCから10.0.0.0/8への通信の例 10.0.0.0/8 65001 I NEXT_HOP ルータA 10.0.0.0/8 i Z 10.0.0.0/8なし! BGPスピーカ間の通信に利用される可能性がある経路のルータは全て BGPスピーカで同一のルーティングテーブルを持つ必要がある
  17. ルートリフレクタ 26 ルートリフレクタはCluster内のクライアントから学習した経路を他 のクライアント、もしくはCluster外のIBGPピアに広告 ルートリフレクタ ※1 自分のROUTER_IDをORIGINATOR_IDに持つ経路を廃棄 ※2 EBGPのAS, AS_PATHに相当。自分のCLUSTER_IDを

    CLUSTER_LISTに含む経路を廃棄 ルートリフレクタはIBGP経路をリフレクトする際に、自分のRouter ID をORIGINATOR_ID※1にセットし、ループ検知に利用 Originator ルートリフレクタはIBGP経路をリフレクトする際に、CLUSTER_IDを CLUSTER_LIST※2に追加し、ループ検知に利用 Cluster Cluster RR NRR/RC NRR/RC RR RC NRR/RC クラスタ内のルートリフレクタ クラスタ内のルートリフレクタクライアント クラスタ外のIBGPスピーカ RC RC 同一AS IBGPピア
  18. ルートリフレクタの特長 • ユースケースによる比較 27 ルートリフレクタを利用しない例 単一Cluster、2台のRRで冗長化した例 RR RC RR RC

    RC RC ✓ N(N-1)/2のピア数が発生 ✓ ルータ追加時には全てのルータで設定を 追加 ✓ 2N-3のピア数が発生 ✓ ルータ追加時にはリフレクタ2台と追加対 象のルータに設定を追加
  19. Sub AS 65534 ASコンフェデレーション 28 ✓ ASをSub ASという単位に分割 ✓ Sub

    AS内は従来通り、IBGPの制限を持つ ✓ Sub AS間は EIBGPというEBGPに似た動きをする ➢ 但し、Sub AS間ではNEXT_HOPは変更されない Sub AS EIBGPピア IBGPピア Sub AS 65533 Sub AS 65535 AS65001
  20. ASコンフェデレーションの特長 29 ✓ Sub AS間の通信では AS_CONFED_SEQUENCEという特殊な 要素をAS_PATHとして追加する ✓ 但し、AS_CONFED_SEQUENCEはAS_PATH長として経路選 択には利用されない

    AS_PATH ✓ Sub AS内ではルートリフレクタとの併用が可能 ルートリフレクタ との併用 ✓ 各Sub AS毎にIGPドメインを分割する為に利用されることがあ る。但し、各Sub AS内の経路をEIBGPで交換する必要がある 等、特殊なノウハウ※が必要となる。 IGP分割 への応用 ※参考資料 http://www.janog.gr.jp/meeting/janog4/presen/IGP-JANOG4-MAEMURA.pdf http://www.janog.gr.jp/meeting/janog11/pdf/janog-11-as-integration.pdf
  21. トランジット 31 ➢ トランジットする側は持っている全てのPrefix(フルルート)を広告する ➢ トランジットする側は受信したPrefixは全ての接続先に広告する トランジット 多くのケースでは、有料でインターネット全体への接続を保障する サービス条件の下で利用するもの AS65001

    65535の Prefix AS65535 AS65001が他のASへAS65535をトランジットする例 フルルート AS65002 … AS NのPrefix AS65003 AS N AS65002 … 65535の Prefix AS65001を経由して他のASへ通信可能 自AS以外を含む全ての BGP経路を広告 AS65535から受けとった経路を 他のASへ広告
  22. ピアリング 32 ➢ お互いの自身のASと顧客のASのみPrefixを広告する ➢ 受信したPrefixは自身のAS内での利用と顧客のAS間でのみ利用 する ピアリング 多くのケースでは金銭の授受の発生しない対等の トラフィック交換をする条件の下で利用するもの※

    ※AS間の関係によっては金銭の授受が発生するペイドピアリングと呼ばれるケースもある AS65001 65535の Prefix AS65535 AS65001が他のASへAS65535をトランジットしない例 AS65003 AS N AS65002 … 65535の Prefix 65001とのみ通信可能 65001の Prefix トランジットと違い、他のASへ AS65535の経路を広告しない トランジットと違い、自分のAS 及び顧客以外の経路を広告しない
  23. プライベートピアとパブリックピア • 物理的な接続形態 33 プライベートピア パブリックピア ✓ 専用接続を敷設し、1:1で接続 ➢ 帯域、ルータインタフェースを占有

    ✓ IXに接続し、IXの参加者と1:Nで接続 ➢ 帯域、ルータインタフェースを共有 AS A AS B AS B AS C AS A 多くのケースでは特にトラフィックの多い大手ISP間でプライベートピアが実施される ➢ 一般的にはパブリックピアの方がコストが安いとされるが、同一DC内では構内配線等で も専用の接続を用意できる為、一概には言えない
  24. マルチラテラルとバイラテラル 34 ➢ 他のIX参加者と経路情報を交換する必要がある IXに繋いだだけでは トラフィックは流れない バイラテラルピアリング マルチラテラルピアリング※ ✓ 個々のIX参加者間でピアリングの可否を

    交渉し、個別にピアを設定する ✓ マルチラテラルピアリングに同意したASは ルートサーバとピアを設定する ✓ ルートサーバは自分のASをAS_PATHに加 えずに経路を媒介する AS B AS C AS A A.ピアしませんか? B.いいですよ となって初めてピア成立 直接のピアで経路交換 ※参考資料 http://www.janog.gr.jp/meeting/janog29/_downloads/janog29-bgpmulti-after-yoshida-01.pdf AS B AS C AS A ルートサーバ ルートサーバを経由して、 マルチラテラルピアリングに 同意した同士の経路が交 換される
  25. ピアリングの交渉 35  トラフィック解析による効果の高いピアリング候補の選定  加入IXにおける参加者リストの確認 ピアリング交渉候補の選定  加入IXにおけるコンタクト先の確認 

    Peering DB 等の公開情報で ※ でコンタクト先及び公開さ れているポリシーを確認 連絡先や相手の ピアリングポリシーの確認 ※ https://www.peeringdb.com/  メール  対面での交渉 ➢ IXユーザ会はキーマンが集まるのでチャンス コンタクト  金銭授受の発生しない場合には、簡単なものが多い  国外ISPの場合には、免責事項や責任所在が事細かに記 述されたものが用意されている場合もある ピアリング条件の確認と 覚書 (Agreement) の締結  実際に設定してトラフィックを流し始める ピアリング成立
  26. ピアリングの交渉 36 ➢ 各組織によってピアリングに関する事情もポリシーも 様々 交渉すれば繋いでくれるとは 限らない… メリットが見出される場合のみピアリング (個別検討) 条件を満たせば誰とでもピアリング

    (オープンピアリングポリシー)  複数箇所でピアリングを実施できること  一定以上のトラフィックが見込めること  該当IX接続に帯域の空きが存在すること  接続性の向上などが見込めること  顧客関係にないこと  潜在顧客を失わないこと IXでのピアリングの前提条件の例
  27. ピアリング交渉ケーススタディ 37 vs. 上流 大手ISP 新規にIXに接続したAS A の場合 大手ISP 顧客AS

    顧客AS 顧客AS 大手ISP 顧客AS 顧客AS 顧客AS 大手ISP 顧客AS 顧客AS 顧客AS 課金回線 課金回線 課金回線 プライベートピア プライベートピア プライベートピア A C B D A B ➢ Bにしてみれば今課金できているト ラフィックを無料のピアリングに移行 するメリットがない! 拒否! vs. 大手ISP C ➢ Cにすれば既にBとのプライベートピ アで交換できておりコストメリットがな い ➢ 将来 A が上流回線の見直しを行 う際にも候補から外れる可能性が あり、潜在顧客を失う 拒否! vs. D ➢ 御互いに課金回線経由で交換し ていたトラフィックをピアリングに移行 できてHappy! 成立! ✓ ピアリングの交渉は自分と相手のポリシーと利害関係次第 ✓ 断わられてもめげない! 拒否! 拒否!
  28. 広告する経路の制御 39 ➢ トラフィックの方向としては “IN” の方向の制御 自ASがどういった 経路を広告するか ➢ 不必要な経路を出していないか

     AS_PATHによるフィルタリング  Prefixによるフィルタリング  Communityによるフィルタリング ピアリング相手毎に 適切な経路だけを出す制御 ➢ どの物理回線、ピア先から返ってきて欲しいか  MEDによる同一AS複数接続の優先設定  AS_PATH Prependによる優先設定  Community属性の付与によるタグ付け 同一経路に対する 戻りのトラフィックの制御
  29. 受信する経路の制御 40 ➢ トラフィックの方向としては “OUT” の方向の制御 隣接ASから受信した経路を どう扱うか ➢ 不必要な経路を受信していないか

     AS_PATHによるフィルタ設定  Prefixによるフィルタ設定  受信経路上限の設定 ピアリング相手毎に適切な 経路だけを受信する制御 ➢ どの物理回線、ピアに向けたいか  MEDによる同一AS複数接続の優先設定  LOCAL_PREFによる優先設定  Community属性により経路に色付けを行い、 Community毎に優先設定やフィルタリングを行 う 自ASからトラフィックの制御
  30. Community 属性 41 ✓ Prefixに付ける “目印” ➢ 各PATH属性とは異なり、直接経路選択には利用されない ➢ 32bit

    の数値、ひとつのPrefixに複数付けられる ➢ Well-known community ※ を除き、自由に設定してよい ➢ ASを跨いで送信する事も可能だが、事前に合意が必要 Community Community 利用の例 AS65001 AS65535 インターネット ✓ AS_PATHとPrefixでフィル タを実施 ✓ フィルタを通過したPrefixに は Community 65001:65001をセット 顧客 トランジット提供者 ✓ Community 65001:65001 でフィルタを実施 ✓ フィルタを通過したPrefix はCommunityを除去した 上で上位ISPに広告 B でのフィルタ工数の削減 Prefix追加時にもAでのみ設定を 追加すればよい Bでの設定の簡略化 AS_PATHとPrefixで設定した場合 には全ての顧客のAS_PATHと Prefixの総和となるリスト管理が必 要 A B 本ケースのメリット ※ ASの外に広告しない NO_EXPORT、いかなるルータにも広告しない NO_ADVERTISE、 Sub ASの外に広告しない NO_EXPORT_SUBCONFEDの3種類