ここまでできる! 設定ファイルからのネットワーク構成可視化 / npstudy17

B2a04c1ec959edba430bcb38ca6ffc81?s=47 m.hagiwara
June 28, 2019
1.8k

ここまでできる! 設定ファイルからのネットワーク構成可視化 / npstudy17

2019/06/28 npstudy#17 資料です

ネットワークプログラマビリティ勉強会 #17 - connpass
https://network-programmability.connpass.com/event/134914/

See also:
Batfish を使ってネットワーク構成を可視化してみよう (1) - Qiita https://qiita.com/corestate55/items/8a39af553785fd77c20a

B2a04c1ec959edba430bcb38ca6ffc81?s=128

m.hagiwara

June 28, 2019
Tweet

Transcript

  1. ここまでできる! 設定ファイルからの ネットワーク構成可視化 1 TIS株式会社 萩原 学 2019/06/28 ネットワークプログラマビリティ勉強会#17

  2. 自己紹介 • 萩原 学 (HAGIWARA Manabu) – ネットワークの話が好きです • 今日の資料はこのへんにあります

    2 twitter.com/ github.com/ qiita.com/ speakerdeck.com/ corestate55
  3. 今日話したいこと • 「構成を可視化する」話中心です – データソース=batfish の話はあまりしません • どう? – イイ!

    / いまいち… – ウチで問題になってるこれにはどうだろう… – もっとこういうことはできないか… • 何かやってみようかな 3
  4. 背景 4

  5. 課題感 • システムの複雑化 – 全体像をとらえるのが難しい – どこで何をすべきか? – どこで何が起きているか? •

    結果… – 属人化 – 多重レビュー – 初動対応の遅れ • 構成要素単体ではなく、 相互の関係性をとらえたい 図から情報を読み取る 図を基に判断する ことがボトルネックに Monitor Network Fig data (config) 5
  6. 目指す世界 • 構成図 “職人芸” からの脱却 – 人による「図」読み書きの機械化 • Read: 全体像(構成)のキャッチアップ

    – 実際の環境情報のマッピング – モデル(設計情報)との照合…影響範囲調査 – 状況に応じた情報量のコントロール – 変更差分の可視化 • Write: モデルベース設計 – 書いた図(モデル)がそのままデプロイされる – 図(モデル)レベルでのテスト自動化 (静的解析, verify, simulation) モデル中心 システム設計・運用 Fig data (config) RFC8345: Network Topology Data Model Monitor Network 各種 データ ソース 6
  7. 方向性 対象ネットワークのモデリングとモデルの評価 モデルデータをどうやって作るか 運用 いま動いている環境から 情報を集める 設計・構築 ゼロから自分で考える 最初から作る モデルを使ってやりたいこと・ユースケース

    監視・ログ分析連動 構成変更管理 設定自動化 インパクト分析 静的解析 シミュレーション 7
  8. データモデルと「見せ方」 8

  9. RFC8345 9 +------------------------+ | | | Abstract Network Model |

    | | +------------------------+ | +-------+-------+ | | V V +------------+ .............. | Abstract | : Inventory : | Topology | : Model(s) : | Model | : : +------------+ '''''''''''''' | +-------------+-------------+-------------+ | | | | V V V V ............ ............ ............ ............ : L1 : : L2 : : L3 : : Service : : Topology : : Topology : : Topology : : Topology : : Model : : Model : : Model : : Model : '''''''''''' '''''''''''' '''''''''''' '''''''''''' Figure 1: The Network Data Model Structure RFC8346で L3 Node用に拡張 RFC8345では NW Model Base Topology のふたつを定義 データモデル構造と NW階層の話は別物
  10. 「ネットワーク図」のモデル • RFC 8345 - A YANG Data Model for

    Network Topologies https://datatracker.ietf.org/doc/rfc8345/ • RFC 8346 - A YANG Data Model for Layer 3 Topologies https://datatracker.ietf.org/doc/rfc8346/ 10 draft-medved-i2rs-topology-im-01 - An Information Model for Network Topologies https://datatracker.ietf.org/doc/draft- medved-i2rs-topology-im/ +----------------+ | topology |<... +----------------+ : * * : : | | :...: | | +--------+ +--------+ ...>| node |<.......| link |<... : +--------+<.......+--------+ : : : * : : : : :..... | : : :...: | : : +--------+<...........: : | TP |<.............: +--------+ IETF報告会(94th横浜) SDN(網制御・管理)関連報告動画 – JPNIC https://www.nic.ad.jp/ja/materials/ietf- report/20151208/20151208-07-tochio.html
  11. DEMO 11

  12. デモシナリオ • batfish のチュートリアル用 データを使用 – pybatfish/jupyter_notebooks/networks/ex ample at master

    · batfish/pybatfish https://github.com/batfish/pybatfish/tree /master/jupyter_notebooks/networks/exa mple • 元のNW構成図との対比を とりながら見てください 12 元図 https://github.com/batfish/pybatfish/blob/master/jupyter_note books/networks/example/example-network.png
  13. データ処理フロー Fig RFC8345 Topology data Monitor Network Device config Data

    table Batfish コンフィグ解析 netomox データ 変換 netoviz トポロジ 可視化 利用者 (NWオペレータ) 13
  14. データ処理フロー Fig RFC8345 Topology data Monitor Network Device config Data

    table 利用者 (NWオペレータ) NW機器コンフィグをデータソースにした トポロジデータの作成 Batfish コンフィグ解析 netomox データ 変換 netoviz トポロジ 可視化 14
  15. データ処理フロー Fig RFC8345 Topology data Monitor Network Device config Data

    table 利用者 (NWオペレータ) 階層のあるトポロジデータの可視化 Batfish コンフィグ解析 netomox データ 変換 netoviz トポロジ 可視化 15
  16. データ処理フロー Fig RFC8345 Topology data Monitor Network Device config Data

    table 利用者 (NWオペレータ) アラート対象の可視化 Batfish コンフィグ解析 netomox データ 変換 netoviz トポロジ 可視化 16
  17. データモデルとグラフの対応 network (topology) node termination point link supporting network supporting

    node supporting tp supporting link +----------------+ | topology |<... +----------------+ : * * : : | | :...: | | +--------+ +--------+ ...>| node |<.......| link |<... : +--------+<.......+--------+ : : : * : : : : :..... | : : :...: | : : +--------+<...........: : | TP |<.............: +--------+ draft-medved-i2rs-topology-im-01 - An Information Model for Network Topologies https://datatracker.ietf.org/doc/draft- medved-i2rs-topology-im/ 17
  18. 隣接関係 (bgp/layer3) 18 元図 https://github.com/batfish/pybatfish/blob/master/jupyter_note books/networks/example/example-network.png BGP(AS) BGP(Proc) Layer3

  19. tpX 見せ方 (dependency) network (topology) node termination point link supporting

    network supporting node supporting tp supporting link Node A1 Node B1 Node A2 Node B2 Layer1 Layer2 Node A1 Node B1 Layer1 Layer2 tpY tpP tpQ tpY tpP Node A2 Node B2 tpQ tpX 隣接関係は無視する 19
  20. 階層間の関係性 20 大きな構造(AS)が 何から構成されているか? 小さな構成要素(L3機器)が 何に影響を及ぼすか?

  21. tpY tpX 見せ方 (nested) network (topology) node termination point link

    supporting network supporting node supporting tp supporting link Node A1 Node B1 Node A2 Node B2 Layer1 Layer2 Node A1 Node A2 Node B1 Node B2 tpY tpP tpQ tpX tpQ tpP 隣接関係と依存関係を合成する • ノードの依存関係→入れ子 • ポートの依存関係→矢印 21
  22. 隣接関係と階層間の関係性の合成 22 大きな構造(AS)が 何から構成されているか? 小さな構成要素(L3機器)が 何に影響を及ぼすか?

  23. 階層間の関係性はきれいな木構造にならない 23 レイヤが高いところは 抽象化(グループ化)されて 束ねられる レイヤが低いところは 物理集約される 複数のプロセスが同一ノードにある → どう表現する?

    仮想化されるところ L2-L3のオブジェクトが多い
  24. loopback & routing process (ospf) 24 ospf neighbor layer3

  25. loopback & routing process (bgp) 25 router bgp 1 bgp

    router-id 1.10.1.1 bgp log-neighbor-changes neighbor as1 peer-group neighbor as1 remote-as 1 neighbor 1.1.1.1 peer-group as1 neighbor 1.1.1.1 update-source Loopback0 neighbor 1.2.2.2 peer-group as1 neighbor 1.2.2.2 update-source Loopback0 ! address-family ipv4 bgp dampening bgp additional-paths select all bgp additional-paths send receive neighbor as1 send-community neighbor as1 route-reflector-client neighbor as1 advertise additional-paths all neighbor 1.1.1.1 activate neighbor 1.2.2.2 activate maximum-paths 5 exit-address-family ! IGP(OSPF)の経路情報を加味しな いと、BGP Proc の neighbor (loopback = router id) への到達 性はわからない https://github.com/batfish/pybatfish/blo b/master/jupyter_notebooks/networks/ example/configs/as1core1.cfg
  26. モデル検査 26 hagiwara@dev01:~/nwmodel/netomox-examples$ bundle exec netomox check public/model/bf_trial.json | jq

    '.[] | select(.checkup == "link reference count of terminal-point").messages[] | select(.path|test("__Lo0")|not)' { "severity": "warn", "path": "layer3__as1border2__Gi2/0", "message": "irregular ref_count:0" } { "severity": "warn", "path": "layer3__as3core1__Gi2/0", "message": "irregular ref_count:0" } { "severity": "warn", "path": "layer3__as3core1__Gi3/0", "message": "irregular ref_count:0" } hagiwara@dev01:~/nwmodel/netomox-examples$ リンクのない 怪しいIPのポート がある
  27. まとめ 27

  28. できたこと • batfishをつかうと config から いろんなプロトコルのトポロジ情報が取れる • RFC8345データモデルを使うと複数のトポロジ (レイヤ)の関係性を定義できる •

    関係性の定義された複数のトポロジの「見せ方」を いくつか試してみた 28
  29. 課題 • 今回使った batfish tutorial のトポロジは シンプルでわかりやすい – All L3

    (VLAN/VRF他 仮想化技術系がない) – 複数の要素を束ねるような冗長化機能を使っていない • 運用上、把握が難しい構成要素をどう扱う(表現する)か? – 仮想化, 冗長化, Overlay, 動的に変わる状態など – 設計情報など “L8” 方向の関係性? – それらのモデル化 + 可視化(見せ方) • 脳内マッピングやめたい 29
  30. Fig RFC8345 Topology data Network 利用者 (NWオペレータ) 自動化・テスト・ シミュレーション CMDBなど

    各種データソース トポロジ エディタ 考えたいこと 30 Write: モデル中心の設計・設定・構成変更 構築・本番作業前の事前チェック・テスト・シミュレーションへの応用 「図を書いたらその通りのシステムができる」へ
  31. 参照 • TISとフィックスポイント、「標準トポロジモデルを応用したネットワーク構成の可 視化に関する研究」を共同で開始 https://www.tis.co.jp/news/2018/tis_news/20181017_1.html • 「ネットワーク図」のモデル化とモデルを起点にした自動化の可能性 / onic2018 https://speakerdeck.com/corestate55/onic2018

    31 今回発表した内容の解説ブログあります • Batfish を使ってネットワーク構成を可視化してみよう (1) - Qiita https://qiita.com/corestate55/items/8a39af553785fd77c20a • (1)-(3)まであります
  32. ツール • netomox: Network Topology Modeling Toolbox https://github.com/corestate55/netomox – データ定義DSL

    – Topology Data (JSON) の CLI diff • netoviz: Network Topology Visualizer https://github.com/corestate55/netoviz – https://netoviz.herokuapp.com/ (demo) – Topology Data (JSON) Visualizer 32