Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

試してわかるSDN

1,899 views

Published on

Packet generation with Trema

Published in: Technology
  • Be the first to comment

  • Be the first to like this

試してわかるSDN

  1. 1. 試してわかるSDN ~Tremaではじめるパケット生成~ techcircle
  2. 2. 自己紹介 • @Clorets8lack • 株式会社デベルアップジャパン代表 • トラブルシューティングを効率化するパケットレコーダー 「Sonarman」を販売中 • IoT対応 “SonarmanR” 近日発売予定
  3. 3. 今日やること • Tremaから仮想スイッチへ指令を送り、仮想スイッチでUDPパ ケット(syslogメッセージ)を生成する。 • 仮想スイッチの先にあるサーバプログラムにメッセージを送信 し、連携動作をさせる
  4. 4. 今日の流れ 仮想スイッチ 生成 Tremaでパケット 生成を指令 スイッチで パケットを生成 パケットを トリガーにして 処理を実行 処理の実行結果を 確認する 一連の流れを パケットキャプチャで 見てみる
  5. 5. 今日の環境 PC 外部へ DHCP address Virtualbox SonarmanVM Trema ホストオンリー接続 vswitch br0xabc UDP Packet_Out eth1を キャプチャ PCから操作 eth0 192.168.56.xxx ブリッジ接続 eth1 プロミスキャスモード veth11 192.168.1.35 veth12 add-portSwatch
  6. 6. SDNとは • Software Defined Network の略 • 様々なタイプの「SDN」がある • ネットワークをソフトウェアで制御する技術の総称 • ソフトウェア化すると何が嬉しいか • 作業の自動化による工数削減や今まで不可能だったきめ細かい制御 が可能になる • 個人的な志向は後者 • ソフトウェアでしか実現できないような何かをやりたい • 参考 「フライバイワイヤ」 https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%82%A4%E3%83%BB%E3%83%90%E3%82%A4%E3%83%BB% E3%83%AF%E3%82%A4%E3%83%A4
  7. 7. OpenFlowとは? • ネットワーク機器に指令を与えるプロトコル • 今回はパケット生成を指示する「Packet_Out」メッセージを使 用する • パケットに対する振舞をかなり自由に設定できる • 「SDN」の文脈で頻繁に登場するメジャーな規格
  8. 8. Tremaとは? • OpenFlowを扱うための国産フレームワーク • 言語はRuby • 今回のハンズオンでは仮想スイッチを生成/起動させ、パケット 生成を行う一連の処理を実行する
  9. 9. Open vSwitchとは? • OpenFlowをサポートするソフトウェアスイッチ • オープンソース • SDNを手軽に実現できる鉄板のソフトウェア • 今回の仮想スイッチはOpenvSwitchで作成する
  10. 10. Sonarmanについて • パケットキャプチャを継続的に収集し、解析するため のプラットフォーム • トラブルシューティングを効率化するためのアプライ アンス ソナーマン
  11. 11. Sonarmanの機能紹介 • ローテーションでの上書き防止と調査速度向上のた め、Syslogと連動して障害が発生したタイミングの キャプチャを自動的に退避する • Syslog上に現れるキーワードを検知してあらかじめ 設定された処理を行う(Swatch)
  12. 12. HandsOn開始 • Qiitaをご参照ください http://qiita.com/Clorets8lack/private/60f3992f86c11f0ce104
  13. 13. 結局何が便利なの? • Packet_outで生成できるのは一方通行のメッセージのみ • 経路上のアクセスコントロールを無視できる • 信頼性の低いUDPをTCP(openflow)で補い、WANを越える などの使い方が出来る • WakeOnLANなどへの応用
  14. 14. アイデアは無限 • 大事なのはシンプルな方法でサーバとの連携ができること • 複雑なことはサーバからやればよい • 何をきっかけにしてどう操作すると便利なのか? – 不正なDHCPサーバを検知してUDPパケットをドロップするフローを設 定する • bootp.option.dhcp == 2 && bootp.ip.your != 172.16.0.0/16 – 一定以上のトラフィックを検知してQoSを入れる
  15. 15. 【CM】 Sonarmanの紹介 • トラブルシューティングを効率化する小型パケットレコーダー • 障害はいつ起きるか分からない • 原因究明や再発防止のための可視化が大切 • パケットキャプチャを蓄積、ローテーションして障害に備える • 異常検知やダッシュボード機能を搭載
  16. 16. 原因不明の積み残し障害 ありませんか? 障害 原因 不明 再現 待ち 未解 決 積み 残し 負の連鎖 今再現したら解決できますか?
  17. 17. 改善すべきは原因究明プロセス • エビデンスを元にした効率的な障害 対応 • インフラ担当者が主導権を持ってプ ロセスを回す • 修正の受け入れ基準が明確化、テ ストも容易 障害 原因 判明 再発 防止 余裕 将来へ の投資 良い循環
  18. 18. トラブル実例 • アプリチームよりヘルプ要請 「ネットワークおかしくない?」 • 問題はアプリの承認画面でタイムアウトエラーが起きること • パケットキャプチャをプログラム名で検索、正常時の呼び出し と比較した結果、異常なし(frame contains "XXX001") • 呼び出しに対しDBからの応答が返っていない事を確認 • DB調査の結果、デッドロックを発見し解消 • 解決までの所要時間は1時間くらい 結構なパワーワード
  19. 19. 対策 • デッドロック発生を示す"ORA-00060"テキストがネットワーク を流れたらメールで通知する仕組みをSonarmanに設定 • デッドロック対策検討をアプリチームに要請 美しい協力体制 インフラが運用しやすい アプリを作ってもらう (少しの先回りがポイント)
  20. 20. トラブルからの学び • 障害原因がブーメランのように戻ってくることがわりとある • 思い込みにとらわれず、事実を積み上げて問題に取り組む • スパッと解決できると、「振り返り」とか「対策」をやる気になる 好循環へ
  21. 21. SonarmanVM • 本日お渡ししたUSBメモリとVMはそのままお持ち帰りください。 • 開発、検証用途であれば無期限に使用/複製可です。 • あらためて評価用のVMをご希望の方はTwitterまでご連絡く ださい。

×