OpFlexを用いた グループポリシーによる ネットワーク設定 2015年6月2日 株式会社富士通研究所 李 忠翰 ([email protected]) 中川 幸洋 ([email protected]) Copyright 2015 FUJITSU LABORATORIES LIMITED アジェンダ はじめに GBP/OpFlexの紹介 OpenDaylightのGBP projectの紹介 GBPを用いたネットワーク設定の実行例 OpenDaylightのRendererに新しい機能を 追加してみよう! 1 Copyright 2015 FUJITSU LABORATORIES LIMITED はじめに グループポリシー(GBP)をトラフィック制御に用いる 実行例を紹介します 前回はOpenFlowをベースにして仮想スイッチだけを 制御しましたが、今回は、IETFで標準化が進んでい るOpFlexプロトコルを用いて仮想・物理スイッチを 制御します MD-SALのアプリを開発する人にとっては参考になる かと思います 注)LithiumではAD-SALのアプリがなくなり、MD-SALのみとなります MD-SAL: Model Driven Service Abstraction Layer AD-SAL: API Driven Service Abstraction Layer 2 Copyright 2015 FUJITSU LABORATORIES LIMITED GBP/OpFlexの紹介 3 Copyright 2015 FUJITSU LABORATORIES LIMITED Group based Policy (GBP) Group based Policy(GBP) Endpoint(EP)をグループ化し、Endpoint Group(EPG)間の接続性を 記述したPolicyでネットワークを抽象化 GBPで使用される用語 Policy rule Action : EPGのtrafficに対して何かの作業(QoSなど)を実施 Classifier : EPGのtrafficに対してdirection/matchingなどを実施 Policy(Contract) : Policy ruleの集合 (ODLではRESTconfで記述) EPG:web-serverとEPG:web-client間のPolicy例 4 Copyright 2015 FUJITSU LABORATORIES LIMITED OpenDaylight, GBP, and OpFlex ODLに着目したGBPの実装 5 MD-SAL(RESTconf) MD-SAL(Data Store) GBP renderer Framework (Ofoverlay, opflex) … 3 rd Party OpenFlowはFlowという具体的なものを 制御するが、OpFlexは抽象度が 高いPolicyに基づいて制御する OpenDaylight OpFlex OpFlexの特徴 Orchestration OpenFlow RESTconf : Northbound protocol Data Store : RESTconfからのデータを保存 (Yangで記述) Renderer Framework Ofoverlay, opflex rendererが存在 OpenFlow, OpFlex, …, 3rd party : Southbound protocol Copyright 2015 FUJITSU LABORATORIES LIMITED OpFlexシステム OpFlexシステムアーキテクチャー Policy Repository (PR) :ポリシーを一元管理するコンポーネント Endpoint Repository (EPR):エンドポイントを格納するコンポーネント Observer:システムのモニタリングを行うサブシステム Policy Agent:ポリシーを機器に適用するコンポーネント 「Policy Element (PE)とも呼ばれる」 6 Copyright 2015 FUJITSU LABORATORIES LIMITED GBP projectのRenderer紹介 7 Copyright 2015 FUJITSU LABORATORIES LIMITED GBP renderers GBP rendererの紹介 基本的には同じ形式のRESTconf messageを使用してユーザとODL間 でやり取りを実施し、Southbound protocol (OVSDB, OpenFlow or OpFlex)に変換してネットワーク機器の制御を行う https://wiki.opendaylight.org/view/Group_Policy:Main https://github.com/opendaylight/groupbasedpolicy 主なGBP rendererの特徴 Name Target 特徴 ofoverlay renderer OpenFlow &IP-overlay OpenFlowスイッチ(OVS)とOpenFlow protocolを 利用してやり取りを行い、ODLが直接Renderingを 実施 (ODL Hackfest Tokyo 2014ではOfoverlay rendererをベースに試作してデモを実施) https://wiki.opendaylight.org/images/c/c2/GBP_demo_HackFest_20141029_v8.pdf opFlex renderer OpFlex 一般的なネットワーク機器を制御するためのOpFlex agentとOpFlex protocolを利用してやり取りを行い 実際のRenderingはPolicy agentが実施 8 Copyright 2015 FUJITSU LABORATORIES LIMITED GBPを用いたネットワーク 設定の実行例 9 Copyright 2015 FUJITSU LABORATORIES LIMITED データセンターのトラヒックの特徴 データセンターのトラヒックの分類 大容量のデータ通信 Elephant : スループットが重要 細かい制御メッセージやその応答 Mice : 遅延が重要 データセンターのトラヒックの構成1) 多数のMice(90%)と少数のElephant(10%)で構成 1) The Nature of Data Center traffic: Measurements & Analysis, In IMC, 2009 10 10 Copyright 2015 FUJITSU LABORATORIES LIMITED 前回のデモでは…(ODL hackfest 2014) ofoverlay rendererをベースに仮想スイッチを制御するため にDSCP markingする部分を試作し、事前設定した 物理スイッチと連携してIP-overlay(VXLAN)環境でTarget flow(Elephantフロー)を優先制御 Background traffic Physical Switch (10 Gbps) 192.168.1.220 Mice flows Tunnel remote IP 192.168.100.20 35.2 Elephant flow Ubuntu 14.04 eth7 OVS 2.3 S3 Tunnel remote IP 192.168.100.20 DSCP Marking (20) OVS 2.3 S4 35.4 36.2 EG1 EG2 10.0.35.1/24 10.0.36.1/24 EG3 10.0.35.1/24 11 11 Ubuntu 14.04 eth4 DSCP Marking (20) 36.4 EG4 10.0.36.1/24 * 全てのLink: 10Gbps Copyright 2015 FUJITSU LABORATORIES LIMITED デモ概要 ねらい OpFlexプロトコルを用いて物理・仮想ネットワーク機器を 制御して仮想ネットワーク(VLAN)でTarget flowを優先制御 実現方法 Target flowを優先制御するために、EPGとPolicyを 作成してRESTconfを利用して伝送 Renderingする対象としてVLANによる仮想ネットワーク Endpoint登録時、VLANを決定 ポリシーに基づいて特定のVLANのCoSを設定するように 仮想スイッチ(OVS)を設定 ポリシーのActionを利用してQoSをHighで設定してCoSに 基づいて物理スイッチでキューを分ける 12 12 Copyright 2015 FUJITSU LABORATORIES LIMITED ODLを中心にした優先制御の手順 ODLを中心にした全体の動作手順 1. UserはEPG[VLAN ID]/Policy[優先制御]を登録するために、 RESTconf Message(Northbound)を作成し、ODLに送信 2. ODLのMD-SAL(RESTconf)はMessageを解釈して、Data Storeに保存 3. ODLのOpFlex rendererはData StoreからEPG[VLAN ID]/Policy [優先制御]の情報を取り出してOpflex messageを作成 4. ODLのOpFlex rendererはOpFlex protocol(Southbound)を利用して EPGに関連するPolicy agentにPolicy[優先制御]を送信 RESTconf protocol User OpenDaylight MD-SAL(RESTconf) MD-SAL(Data Store) Opflex renderer OpFlex protocol 13 13 OpFlex Protocol Policy Policy Policy agent agent Agent Copyright 2015 FUJITSU LABORATORIES LIMITED OpFlexを基にしたFlowの優先制御 優先制御の手順 1. iperf clientのEPG(EPG3)にCoS=2/VLAN(202)を割り当て EPG3から待ち受けサーバに(iperf server)のEPG(EPG4)にデータを伝送 2. Background trafficとして毎秒ごとに100個のMice flows(756KB)が 待ち受けサーバに伝送され、Target flowに対して輻輳を再現 3. EPG3に対して優先制御のPolicyが設定され、Target flowに対しては 仮想・物理スイッチが連携して輻輳時にキューを分ける優先制御を実施 観測データ可視化 * 全てのLink: 10Gbps 14 14 Copyright 2015 FUJITSU LABORATORIES LIMITED 実際デモ 当日(6/2) 公開予定 !! 15 15 Copyright 2015 FUJITSU LABORATORIES LIMITED OpenDaylightのRendererに 新しい機能を追加してみよう! 16 16 Copyright 2015 FUJITSU LABORATORIES LIMITED OpenDaylightに新機能追加 OpenDaylightを新しい機能を追加するために必要な知識 YANG SAL (AD-SAL/MD-SAL) RESTconf JAVA Concurrent programming (Multithreading) Generic Object Orient Programming (OOP) Maven 17 17 Copyright 2015 FUJITSU LABORATORIES LIMITED Yang Yangって何? Data modeling languageの一つで、代表的にNetconfで利用される なぜ、Yangが必要か? 次のODL(Lithium)ではAD-SALが完全になくなり、MD-SALに 移行される予定 MD-SALで内部のデータ構造がYangで記述されているので、 必ず理解する必要がある Yangで記述したものがJAVAのClassやObjectとしてマップされる 参考文献&資料 YangのRFC https://tools.ietf.org/html/rfc6020 18 18 Copyright 2015 FUJITSU LABORATORIES LIMITED SAL (AD-SAL/MD-SAL) Service Abstraction Layer (SAL)って何? SALはOSのKernelのようなもの AD-SAL/MD-SALの違い AD-SAL : Application(Feature)のData modelの構造を個別に設計・ 実装する必要があり、RESTAPIのmessageを個別のData storeに保存 MD-SAL : Data modelをYangで記述して必要なAPIなどをYangtools が自動生成したりRESTconfのmessageを共通のData storeに保存 RESTAPI (Northbound) RESTconf (Northbound) ODL(MD-SAL) ODL(AD-SAL) Feature Feature Data Store Data Store Feature Feature Data Store ・共通のDatastoreでDataの管理 ・必要なAPIなどの自動生成 ・個別のDatastoreでDataの管理 ・必要なAPIなどの直接設計・実装 19 19 Copyright 2015 FUJITSU LABORATORIES LIMITED MD-SAL/RESTconf MD-SALの参考資料 第一回ODLUGでのNEC社の資料「MD-SAL技術紹介」(Shigeru Yasuda) https://wiki.opendaylight.org/view/Ping (Ping featureの実装) RESTconfって何? MD-SALで利用されるNorthboundのProtocolであり,Rest + Netconf Endpoint/Policyなどで必要な機能を追加してPUT/POST/DELETE/GET を利用してODLのData storeを操作 参考資料 RESTconfのRFC • https://tools.ietf.org/id/draft-bierman-netconf-restconf-04.txt ODL APIdoc • http://your host ip:8181/apidoc/explorer/index.html >feature:install odl-mdsal-apidocs (ODL[karaf]でAPIdocを有効) • 使用するRESTconf messageがどのType(PUT/POST/DELETE/GET)をサポートして いるかを記述 20 20 Copyright 2015 FUJITSU LABORATORIES LIMITED JAVA – (1) なぜJAVA concurrent programmingの知識が必要か? ODLはJAVAベースであり、RendererもJAVAで実装 Rendererの内部実装がMultithreading構造になっていて 複数のThreadが同時に実行されるケースが頻繁に存在 Callback methodもかなり登場 実際よく登場するケースと対策 Methodの最初にObjectがNULLであるかどうかをCheckしてNULLで あればそのままThreadが終了されるケースが頻繁に存在 →どこで終了されたのかを把握することがとても困難 最後にThreadが終了された部分を探す時にLogger(Debug mode)を 利用すると割と役に立つ 21 21 Copyright 2015 FUJITSU LABORATORIES LIMITED JAVA – (2) なぜGenericの知識が必要か? Yangtoolsで変換されてDataStoreに保存されたObjectの中で 必要なObjectだけを取り出して保存するために必要 内部実装でGoogleのpackage(com.google.common.collect)も 良く使われるので覚えたほうが良い なぜOOPの知識が必要か? 多くの内部実装がJAVA classの単一継承や複数のInterfaceを利用した 多重継承を普通に使用 22 22 Copyright 2015 FUJITSU LABORATORIES LIMITED Maven Mavenって何? 作ったアプリケーション(feature)をコンパイルする時に利用されるtool なぜMavenの知識が必要か? 単純にコンパイルだけできれば良いのではないか? → NO,コンパイルする際にいろいろoptionがあり、POM.XMLを修正して 作ったfeatureを新たにODL(karaf)上でfeatureとしてDeployするために必要 覚えておくと役に立つ機能 -Dmaven.test.skip=true Unit testをSkip (Skipしたくなければ、test codeを実装すればOK) -o Offline modeで実行 ControllerのCore部分(MD-SALなど)がたまたま変わることもあり、 突然ODL上でちゃんとFeatureをinstallできない状況がある MavenをOffline modeでTestをskipして実行 23 23 Copyright 2015 FUJITSU LABORATORIES LIMITED 実践編)OpFlex rendererに新機能の追加 Action(QoS)を追加するための全体的な手順 Actionは現時点のOSS版では実装されていない(2015/06/01) ① Data Storeのために、Yang(Data model)でActionを追加・修正 ② Data Storeの保存されているPolicy objectから必要な部分だけを 取り出すためのMethodの実装 ③ Policy agentにActionを渡すためのOpFlex messageを作成する Methodの実装 ④ Mavenを利用してコンパイルして、RESTconf message (Northbound)を作成してOpFlex message(Southbound)が 降りてくることを確認 User RESTconf protocol OpenDaylight MD-SAL(RESTconf) ④ MD-SAL(Data Store) ① Opflex renderer ②③ OpFlex protocol ④ 24 24 OpFlex Protocol Policy Policy Policy agent agent agent Copyright 2015 FUJITSU LABORATORIES LIMITED YangでPolicy action部分を修正 Yang fileを修正 Policyを修正するために以下のPathにあるYangを修正 groupbasedpolicy/groupbasedpolicy/src/main/yang/model/policy.yang action-ref(修正あり),action-instance(修正なし)はJAVA classとして importされてDataStoreからDataを取り出す時に利用される Instanceを使えるようにinstance-nameを追加して修正 Action-ref < After > < Before > 25 25 Copyright 2015 FUJITSU LABORATORIES LIMITED DataStoreからObjectを取り出す – (1) DataStoreからObjectをParsing Policyを修正するために以下のPathにあるYangを修正 groupbasedpolicy/renderers/opflex/src/main/java/org/opendaylight/gr oupbasedpolicy/renderer/opflex/MessageUtils.java まず,actionに関連するJAVA classをimport これらのClassの実体は存在せず、yangtoolsから自動生成 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy. policy.rev140421.has.action.refs.ActionRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy. policy.rev140421.tenants.tenant.subject.feature.instances. ActionInstance; 26 26 Copyright 2015 FUJITSU LABORATORIES LIMITED DataStoreからObjectを取り出す – (2) DataStoreからObjectをParsing DataStoreのInstanceをparsing部分の実装 実装するmethod : getRuleMo() InstanceがActionであるかどうかを確認してAction instanceであれば JAVA Generic(PolicyObjectInstance poi)に保存 Action instanceを 処理 27 27 Copyright 2015 FUJITSU LABORATORIES LIMITED OpFlex 関連部分の実装 RESTconfのQoS部分をOpFlexに変換 RESTconfのQoS(high/mid/low)をOpFlexのQoS(2/1/0)に変換 high/mid/lowがこちらの 値としてopflexでマップ high/mid/lowが 処理される 28 28 Copyright 2015 FUJITSU LABORATORIES LIMITED Policy登録 (RESTconf) OpFlex renderer用のRESTconf message Demo(ODL wiki*)のRESTconf(Policy登録部分)のmessageがベースで あり、今回実装したQoS(Action)を入れるため、以下の部分を追加 “parameter-value” : [ { “name” : “qos” “string-value” : “high” } ] <ContractでAction-refを追加> *https://wiki.opendaylight.org/view/ Group_Policy:Building_and_Running 29 29 <Subject-feature-instancesで action-instanceを追加> Copyright 2015 FUJITSU LABORATORIES LIMITED Policyの確認 (OpFlex) Policyの中でAction部分を確認してQoS設定値を確認 Policy resolveを通じてQoS設定部分を確認することが可能 {"subject":"GbpeL24Action","uri":{"value":"/PolicyUniverse/PolicySpace/f5c7d 344-d1c7-4208-0000-2c2693657e12/GbpeL24Action/qoshigh"},"properties":[{"name":"qos","data":2},{"name":"name","data":"qoshigh"}],"parent_subject":"PolicySpace","parent_uri":{"value":"/PolicyUniverse /PolicySpace/f5c7d344-d1c7-4208-0000-2c2693657e12"} 30 30 Copyright 2015 FUJITSU LABORATORIES LIMITED まとめ OpFlexを用いて仮想&物理スイッチを 制御するデモを実施 OpenDaylightに新機能追加するために, 必要な事前知識について説明 実際に、OpenDaylightで機能を追加する時の 方法について説明 31 31 Copyright 2015 FUJITSU LABORATORIES LIMITED 最後に OpenDaylightのFeature(Application)を 作ることは大変であるが、いろいろ新しい 技術を学ぶことが可能 多くの資料は残念ながら英語であるが、 いろいろ揃っており書いてあることは だいたい可能 各Projectサイズは膨大であり、Bug tracking は地獄!!! 意外にLoggerが役に立つかも!? 32 32 Copyright 2015 FUJITSU LABORATORIES LIMITED 33 33 Copyright 2015 FUJITSU LABORATORIES LIMITED
© Copyright 2024 ExpyDoc