ネットワークプログラマビリティ勉強会#4に参加してきた

Agenda

  • ソフトウェアSDN/OpenFlowスイッチ Lagopusとそのプログラミング
  • SDNを導入してみて思ったこと
  • LOOM OpenFlow Controller

  • ネットワークのテスト自動化

  • Openflow 超解釈

http://network-programmability.connpass.com/event/13103/

ソフトウェアSDN/OpenFlowスイッチ Lagopusとそのプログラミング

Agenda

  • Lagopusの概要
  • Lagopus(openflow)で遊んでみる

Lagopusの概要

snd?openflow?lagopus?

  • openflowの話とlagopusの位置づけ(省略)

やってみた

  • 会場内のトラフィック制御

    • meter
  • ブラジル〜日本間の映像伝送実験

    • IPごとのルート制御(宛先IPを書き換える)
  • iPoP2015での実証実験

    • packetの複製+MACとIP書き換え

Lagopusターゲット

  • NFVに対応する仮想スイッチ
  • 異種NWを接続するゲートウェイ

中身の話

概要

  • ネットに転がっているので省略
機能評価
  • Lagopusは評価高い
性能評価
  • 資料にグラフあり
  • Throughput vs flow
    • OVSとほぼ同じ性能(最近追いつかれた?)
  • 2015/2/1リリースでDPDK 2.0.0rc1にマージされた

  • ソースコードはlagopus.github.io

Lagopus(openflow)で遊んでみる

  • Flowを設計して動かしてみる
  • Openflowっぽいことをする

Flowを設計して動かしてみる

  • Lagpus
  • Ryu(app/ofctl_rest.py)
  • ofctl_script(flow addなど)

Openflowっぽいことをする

  1. つなげてみる
  2. 増やしてみる(VLAN)
  3. リファクタリング&デバッグ(ミラーリング)
  4. 騙してみる(DHCPサーバの共有)
1.つなげてみる
  • ns間をflowでつなげてみる
  • match inport, action outport
2.増やしてみる(VLAN)
3.リファクタリング
  • マルチテーブル、メタデータ
  • メタデータは次のテーブルで使える
  • ポートミラーリング、VLANミラーリング
  • debugテーブルでメタデータを用いて識別。複製。
4.DHCPサーバの共有
  • MACアドレスが既知前提だった。。

Flow設計の注意

  • パケットイン遅い
  • パケットコピーの処理は多い
  • ARP学習はパケットイン
  • フロー数増え過ぎ問題

Lagopusってすごい

  • 10Gbps, 1MFlow
  • OSS / x86

質問

  • マルチテーブルの名前ってどうなる?

    • ryuは名前でdefineできる
    • スイッチ側はidで認識
  • NFVってキーワード出たけど、Lagopus的にレイヤーあがってく?

    • 基本方針はopenflowに追従していく
    • セッション情報はコントローラにもたすことになるかな(個人的意見とのこと)
    • LagopusはFWやLBへのねじ曲げかな(個人的意見とのこと)

SDNを導入してみて思ったこと

導入の背景

  • 社内の某事業部がスポンサー(機材供給)になる関係でSDNのソリューションを国際展開

国際通信の問題

  • お隣との通信品質、改善には高いコスト
  • 2014年に地区全体で23回発生したネットワークダウンを削減したい

具体的な品質問題

  • 2014/2 海底ケーブルが一度に2カ所断
    • こういったトラブルに大してBCPを考慮したネットワークを作りたい
    • 日常的なインターネットVPNのパケットロスを抑えたい

施策

  • 落ちないネットワークを作る

    • 2種類の経路(トンネリング)を設置
    • 経路の状態を毎秒監視する
    • 10秒ごとの経路の品質評価と切り替え処理を自動実行
  • ポータル可視化

使用機材

  • Centech V330
  • Openflow1.3対応
  • GigabitEthernet 48ポート

コントローラー

  • RyuコントローラのREST APIをモニタサーバから叩く
  • 制御プログラム、コンソール画面はモニタへ

既存技術との比較

  • ルータが自律的に動くのに比べると問題発生時の見通しが良い
  • 経路上で問題が起きた場合の代替経路もあらかじめ決めておく必要あり
  • 可視化しやすい
  • 切り替えが高速
  • 即財に元の状態に戻せる

工夫したところ

  • コントローラーからの経路は2重化
  • 複数経路のステートフルFWのTCPホールパンチングの考慮(複製してエンドの手前で止めるようなことをした)

実装時のポイント

  • 内部実装のモジュールの影響範囲は最小に(コード重複よりも重視)
  • コンソールはシンプルに

導入後の感想

  • 実装、テスト、運用を一人で行うので、毎回避難訓練を行っている感じになる(強いオペレータになる)
  • SDNは入れてみないと便利さがわからない
  • 実際に入れてみると続々とアイディアが出てくる
  • 仕組みを理解しないと手が出せない

質問

  • テストって本番使った?

    • 実際に海外に機材持っていた
    • 試験用と商用は経路を分けて試験している
  • 例のFW通過はどうした?

    • バイパス経路と通常経路を用意している
    • 比較的問題は起きていない
  • 何を通信品質の監視につかった?

    • loss rate
    • latency

LOOM OpenFlow Controller

LOOM OpenFlow Controllerとは

  • infobloxとerlang solutionsのエンジニアが主に開発

Erlangって?

  • 平行プログラミングがやりやすい
  • 分散プログラミングがやりやすい

LOOM OpenFlow Controllerについて

  • ofs_handler:sync_send/2

  • Demo

ネットワークのテスト自動化

Network Programmabilityって?

  • SDN

    • OpenFlow
    • OpenStack
  • Configuration

    • NETCONF
    • REST API
    • SSH
  • Test automation

    • RSpec

Test Automationは今からでもできる

  • Ruby & RSpec

  • LBspec, infrastaster-plugin-firewall(自作)

  • 他にもRspec-ssltlsなども

  • 実際の画面は資料参照

資料はこちら

Openflow 超解釈

  • OpenFlow 1.5 Relesed

  • Packet Type Aware

  • OXM_OF_PACKET_TYPE(Matchの要素, Set-fieldフィールド)

  • Default = Ehetnet

  • packet_type(3, 80)とやるとHTTP


マスタリングTCP/IP OpenFlow編
あきみち 宮永 直樹 岩田 淳
オーム社
売り上げランキング: 134,980


OpenFlow徹底入門
OpenFlow徹底入門
posted with amazlet at 15.04.23
翔泳社 (2013-10-30)
売り上げランキング: 16,909

ネットワークプログラマビリティ勉強会#2@六本木に参加してきた

ネットワークプログラマビリティ勉強会 2回目


ネットワークプログラマビリティ勉強会 2回目に参加した際のメモです。

  • 12/16
  • 19:00-19:05 はじめに
  • 19:05-20:00 結局、OpenStackとは何なのか?
  • 20:15-21:00 Docker入門: コンテナ型仮想化技術の仕組みと使い方

http://network-programmability.connpass.com/event/10338/

結局、OpenStackとは何なのか? ユーザ会 中嶋氏

今回は、OpenStackって何?という入門の話です。

■自己紹介

  • 日本OpenStackユーザ会長
  • @IT OpenStack超入門

■日本OpenStacckユーザ会とは

日本は世界で最も活発なコミュニティの一つ

  • 22団体
  • 約1800名
  • メーリングリスト
  • ローカライズ、翻訳

■OpenStackの概要

概要

  • OSSで開発されるCloudOS
  • IaaSからPaaS
  • Juno→Kilo
  • コンポーネント紹介(図)
  • 機能で分割したマイクロコード構造
  • Pythonで実装

ネットワーク例

  • Linux Bridge/OVSを使った場合のネットワーク例の紹介(Virtual/Physical)
  • 操作イメージ(Neutron API/SDK)

■エコシステム

どんな人が何のために使っているの?

当初、RackspaceがAWSに対抗するために始めたもの

  • Phase1 IaaS基盤
    • PublicをターゲットにしたIaaS基盤を作りたい
    • 研究開発に大規模なリソースを使いたい
  • Phase2 サービス基盤
    • 標準化による効率化を目的として、自社サービス基盤として採用
    • 現在、最も活発に活用されている領域
  • Phase3 クラウドネイティブ
    • フルプログラマビリティな世界

事例に関して

  • 公式サイトのユーザストーリーに事例が多数あり
  • Marketplaceでも登録したユーザを多数確認可能
  • BMW
  • BestBuyなど

ディズニーの話。

Good/Cheap/Fast→Fast/Fast/Fastへの転換。

■よくある質問

  • 一般的なk草加ソフトウェアとどう違うの?
  • どんなメリットがあるの?
  • 非IT企業で使うメリットは?
  • ミッションクリティカルなところは・・・

→回答略

■OpenStackって何なのか?

横に見るのではなく

  • 個別の技術要素(コンポーネント)をそれぞれ見ても・・・

縦に見る

  • 人での作業から解放する

抽象化と標準化を進めてくれる

抽象化と標準化を良しとする

  • 当然、HyperVでもVMWareでもKVMでも
  • 細かい機能を細かく使うのではない
  • 結果、完全な自動化を実現していこう

■まとめ

  • とりあえず触ってみる(BMWがそうだった)
  • OpenStack Days 2015 2/3-4
  • OpenStack Summit 2015/OctはTokyo

■質問

  • 規模が大きく開発チームが必要なイメージがあるがどうか?
    → 規模が大きいと大変。ただし小規模からスタートして行くことが大事である。

  • OpenStackを意識して開発しておくべきか
    → PublicからPrivateに持っていくのもAPIに準拠していれば簡単です。逆も簡単です。

  • IaaSからPaaSまでのPaaSってどのあたりまで?HerokuだとGitとの連携などあるけど。
    → プロジェクトが増えてきている。今回紹介したのはコアコンポーネントでPaaSでいうとHeat/Sahara/Troveあたり。

  • エッジオーバーレイの話はNeutronのAPIを持っているものが多いが、ネットワーク系のデファクトはNeutornになってきている?
    → NFVはOpenStackに近づいてきている。そんな印象を受けます。

  • NovaとNeutronが連携してサーバ/NWのプロビジョニングはKVMだけという話を聞いたが、他の事例は?
    → HyperVは7から盛り上がっている。VMは楽天が使っている。
    → VMだとNSX使わない場合、裏で作り込みが必要と聞いたが?
    → KVMが一番実績がある

Openstackはリソースを調達するとこまで、アプリケーションの管理はDockerという流れもある。

Docker入門: コンテナ型仮想化技術の仕組みと使い方 Cisco TAC伊藤氏


Dockerの基礎です。

  • Dockerって何?
  • なぜNEがDocker?
  • 基本的な使い方と応用例
  • 次回あれば:Dockerとその足回りと実運用

■自己紹介

  • Cisco TAC
  • Docker仕事ではなく個人利用
  • 最近作ったサービスとして「ゆくも」を紹介
  • 「ゆくも」の裏ではDockerが動いている

■Dockerの概要

Dockerって何?

  • Linuxで利用される仮想化技術です
  • コンテナと呼ばれる仮想化技術を使う

コンテナ型って何?

  • OSの一部のみを仮想化
  • LinuxのKernelの機能でリソースを分離
  • JVMとJarに近い
  • 実際はnamespacesやcgroupsをまとめている

Infrastructure as a Code

  • サーバのイメージがCodeとして扱われる
  • Codeをコンテナとしてイメージ化
  • コンテナ切り替えが容易

Dockerの強み

  • OS on OSではないのでオーバーヘッドが少ない
    • Linpackを使った演算性能測定でNativeとパフォーマンスが近い結果が
  • 「コード」でインフラの構成を管理

なぜNetwork EngineerがなぜDockerをやるか

  • ネットワーク機器への接続を意識する
  • Ambassadorパターン
  • コンテナがネットワーク機器の内部で使われる可能性があるよね
  • トラフィックジェネレータとしてのDocker

■Dockerの使い方のデモ

Dockerのコンポーネント

  • Docker Client:Daemonに対して命令を与える
  • Docker Daemon:コンテナを実際に動かす
  • Docker Repository:イメージを保存

Dockerの状態遷移

  • running
  • paused
  • stopped
  • image
  • removed

Dockerのイメージ取扱い

  • docker run
  • docker build
  • docker commit
  • docker push
  • docker pull
  • docker rmi
  • import

Docker Demo

  1. まずはdocker searchコマンドでイメージを探す

  2. docker pullでイメージを取ってくる

  3. docker imageで確認

  4. docker run ubuntu:14.04 echo “hello docker”で応答を確認

  5. docker run ubuntu:14.04 cat /etc/issue でOSも確認

  6. docker run ubuntu:14.04 cat uname -a とするとカーネルは同じに見える

  7. docker run -t -i ubuntu:14.04 /bin/bash でシェルに入る(tty/interactive)

  8. 新しいコンテナを立ち上げると別のコンテナでの操作は見えない

  9. docker run -d -p 80:5000 コンテナ名 で外と中をマッピングして導通確認

  10. docker ps で状態確認 -aで停止中のコンテナも表示

  11. docker stop / start の紹介

  12. docker commitでイメージ化(IDを指定)

  13. docker pushでレポジトリへ追加する

  14. docker fileからイメージを作成。Scriptファイルのようなもの。docker buildで実行。

■Dockerのネットワーク

Dockerのネットワーク構成

  • docker0 Bridgeにvethが接続されている。
  • vethの先にコンテナのeth0が接続
  • eth0は不定のIPが割り当てられる
  • 物理NICでNAPT

DockerのPort Forwarding

  • 外部からのNAT越えはポートフォワードする
  • docker run -p Port_X:PORT_Y

DockerでのIP不定対策

  • IPではなく「Link」
  • –linkを使用
  • envで参照可能

3階層の例

  • Nginx Python MySQL
  • 階層間の接続には必ずLinkを使う
  • イメージ化しましょう
  • 各コンテナにサービスをすべて入れて、Nginxでドメイン振り分け

■まとめ

  • 従来の仮想化と違いリソースを効率的に利用
  • 環境を適度に分離する
  • 不変なイメージをコンテナ化する
  • 大規模環境ではKubernetesのようなオーケストレーションツールで管理する必要性が高まる
  • Dockerを挟むとベンダ依存が減る
  • コンテナ間の連携は苦労する。DNSによる連携の補足スライドあり(パフォーマンス面で難あり)

質問は大分聞き逃したので省略します・・・

次回はOpenDayLightの話を予定しています

その他のセミナー参加メモ


紹介がありましたがOpenStackは日本語の参考書も出ています。勉強しておいた方が良いと思います

オープンソース・クラウド基盤 OpenStack入門 構築・利用方法から内部構造の理解まで
中井悦司 中島倫明
KADOKAWA/アスキー・メディアワークス
売り上げランキング: 33,738