CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。
1.SDNの概要と実装
1-1.ルータやスイッチの内部構造
ルータやスイッチには、大きく分けて 3つの役割があります。
データプレーン、コントロールプレーン、マネジメントプレーンという 3つの役割があります。
■ 1-1-1.データプレーン
データプレーン(データ転送機能)は、ネットワーク機器がデータの転送処理を行う部分になります。
受信したデータの宛先をテーブルから検索し、送り先を決定しデータの転送をします。
また、データのカプセル化やACLによるフィルタリングなど、データの転送に
必要な処理もこのデータプレーンで実行されます。
■ 1-1-2.コントロールプレーン
コントロールプレーン(制御機能)は、データプレーンを制御する部分になります。
データプレーンがデータを転送する際には、転送する為の宛先が不可欠です。
データを転送する為に必要なルーティングテーブルやMACアドレステーブルなどの
経路情報を作成・制御する役割を担います。
また、IPアドレスとMACアドレスをひも付けるためのARPやIPv6のNDP(Neighbor Discovery
Protocol)もコントロールプレーンの機能です。
■ 1-1-3.マネジメントプレーン
マネジメントプレーン(管理機能)は、ネットワーク機器の構成・設定管理する部分となります。
データプレーンやコントロールプレーンとは異なり、直接的にデータの転送処理に
関わる事はしません。マネジメントプレーンを操作する事で、設定した内容が
データプレーンやコントロールプレーンに反映されます。
TELNET、SSH、SNMPなどの様々な管理用プロトコルにより、ユーザに対する
機器の操作・管理の機能を提供しています。
#### 1-2.SDNの概要 SDN(Software Defined Network)とは、従来はネットワーク機器がそれぞれ行ってきた ネットワーク制御とデータ転送処理を分離し、制御部分をソフトウェアの操作だけで動的に 設定(変更)する技術の仕様の総称です。
SDNでは、SDNコントローラで全てのコントロールプレーンの機能を集中管理・集中制御します。
その為、各ネットワーク機器ではデータプレーンの機能のみが動作し、SDNコントローラからの制御に
よってデータ処理を行います。
1-3.SDNのアーキテクチャ
SDNのアーキテクチャ(構造)は、3つに分かれています。
インフラストラクチャレイヤ、コントロールレイヤ、アプリケーションレイヤの 3つに分かれます。
■ 1-3-1.インフラストラクチャレイヤ
インフラストラクチャレイヤは、データの転送を実際に行うネットワーク上に配置された
ルータやスイッチなどの機器が該当するレイヤです。データプレーンの機能を実現します。
コントロールレイヤからの制御により動作し、データの転送の役割を担います。
これらの機器の制御には OpenFlow※1、NETCONF※2、RESTCONF※3、OpFlex※4といった
標準プロトコルや、機器ごとに設定されたAPI(Application Programming Interface)を利用します。
このプロトコルやAPIを纏めて、Southbound API(サウスバウンドAPI)または
サウスバウンドインターフェースと呼びます。
コントロールレイヤから見て下に位置する為に、このような呼ばれ方をしています。
※1 後程解説
※2 NETCONFは、ネットワーク機器の設定や状態を取得/更新する為の管理用プロトコル
※3 RESTCONFは、RESTを基にネットワーク機器の設定を取得/更新する為の HTTPベースの
通信プロトコル
※4 OpFlexは、APICと様々なベンダーの「仮想/物理スイッチ、L4/L7デバイス」のインターフェースと
なるプロトコル
また、従来の機器でも使用可能な TELNET、SSH、SNMPといったプロトコルを用いて
SDNコントローラからネットワーク機器を制御する事もある為、これらのプロトコルも
サウスバウンドAPIに含まれます。
■ 1-3-2.コントロールレイヤ
コントロールレイヤは、SDNコントローラが該当するレイヤです。
コントロールプレーンの機能を実現します。
インフラストラクチャレイヤのネットワーク機器を制御し、同時にインフラストラクチャレイヤの
各機器のネットワーク機能をアプリケーションレイヤに提供します。
アプリケーションレイヤとコントロールレイヤを繋ぎ、やり取りする際のAPIを纏めて
Northbound API(ノースバウンドAPI)または、ノースバウンドインターフェースとも
呼ばれます。コントロールレイヤから見て上に位置する為に、このような呼ばれ方をしています。
■ 1-3-3.アプリケーションレイヤ
アプリケーションレイヤは、SDNコントローラを操作する各種アプリケーションが該当するレイヤです。
SDNコントローラを操作するアプリケーションは、SDNコントローラとセットになってベンダーから
提供されるものあれば、カスタマイズしたアプリケーションを自作する事も出来ます。
ユーザは、これらのアプリケーションを通じてSDNコントローラを操作します。
■ 1-3-4.API
API(Application Programming Interface)とは、あるコンピュータプログラム(ソフトウェア)の
機能や管理するデータなどを、外部の他のプログラムから呼び出して利用する為の手順や
データ形式などを定めた規約です。
例えば、ルーティング制御するアプリケーションは、APIを使用する事でコントロールレイヤの細かい
プログラム仕様を知らなくても、SDNコントローラに設定や制御、また情報を受け取るといった事が
出来るようになります。
■ 1-3-5.Northbound API
ノースバウンドAPIは、サウスバウンドAPIとは異なり、標準的なプロトコルやAPIは存在しません。
SDNコントローラを提供する各ベンダーによってAPIが提供されています。
SDNコントローラとSDNコントローラを操作するアプリケーションがインストールされた端末は、
多くの場合ネットワーク上の異なる場所に配置されています。その為、アプリケーションと
SDNコントローラはネットワークを介してデータのやり取りを行う為、HTTPやHTTPSと
とても相性が良いので、これらを用いてやり取りを行う場合、REST API※1というAPIが使用されて
います。この場合、ノースバウンドAPIにREST APIが使用されているという事になります。
※1 RESTとは、ソフトウェアアーキテクチャ(基本構造)の1つです。
以下の要件を満たすものが「REST」と呼ばれます。
RESTの要素 | 説明 |
---|---|
クライアント/サーバ型 | 要求を行うクライアントと、要求を処理して応答するサーバで構成 |
ステートレス | 処理を行うにあたって前提となる状態を保持しない |
キャッシュの制御 | レスポンスの情報を一定期間保持可能かを指定出来る |
階層構造 | データや処理ごとに階層構造を取り、それぞれ独立している |
コードオンデマンド | サーバだけでなくクライアント側でも処理実行が出来る |
▶︎ 補足:HTTPやHTTPSととても相性が良いのは、HTTPやHTTPSが以下の特徴である為
⚫️ WEB(HTTP)サーバとブラウザ(クライアント)で構成
⚫️ HTTPは状態(ステート)を管理しない
⚫️ キャッシュの可否をサーバからクライアントに通知出来る
⚫️ URIによってアクセスするリソースを分離する
⚫️ JavaScriptなどで、WEBブラウザ側で処理が出来る
#### 1-4.OpenFlow ##### ■ 1-4-1.OpenFlowの概要 OpenFlowとは、通信ネットワークを構成する通信機器を一つの制御装置で集中管理し、 複雑な転送制御を行なったり柔軟にネットワーク構成を変更出来る技術です。 つまり、通信ネットワークを構成するスイッチでの、パケットの転送方式をすべてコントローラー側で 決めて、個々のスイッチをパケットの転送に専念させる事で、全体として効率のよいネットワークを 作るという発想である。
業界団体のOpen NetworkingFoundation(ONF)によって標準仕様の策定が行われています。
OpenFlowは、従来のネットワーク機器では内部にある「コントロールプレーン」と
「データプレーン」を分離させています。SDNコントローラである OpenFlowコントローラと、
ネットワーク機器であるOpenFlowスイッチで構成され、OpenFlowによってコントローラと
スイッチのやり取りを行います。
OpenFlowは機器とコントローラ間を制御するサウスバウンドAPIに該当します。
■ 1-4-2.OpenFlowの通信の流れ
OpenFlowコントローラでは、複数のOpenFlowスイッチの設定や動作を一括して管理出来ます。
ネットワーク管理者はOpenFlowコントローラ上で、各スイッチの動作を記述したフローテーブルを
作成して、OpenFlowコントローラからネットワーク上のOpenFlowスイッチへとOpenFlowプロトコルに
よって配送、各スイッチはこれに基づいてデータの転送や破棄、宛先の書き換えなどを実行します。
OpenFlowスイッチは、それぞれは保持しているフローテーブルに従って通信を転送する為、
ホップバイホップ方式と呼ばれる通信転送方式となります。
フローテーブルには記述できる情報には、OpenFlowスイッチの物理ポート番号、
送信元・宛先MACアドレス、VLAN ID、MPLSラベル、送信元・宛先IPアドレス、
TCP/UDPポート番号等が記述出来ます。
OpenFlowは、OpenFlowコントローラにより一括でネットワーク内のOpenFlowスイッチを制御し
フローテーブルによる柔軟な通信制御を実現する事が出来ますが、フローテーブルの設定や
維持・管理が難しい事、ネットワーク内の全ての機器がOpenFlowに対応している必要があると
いった課題も抱えています。
■ 1-4-3.OpenDaylight
OpenDaylightは、ベンダーの垣根を超えたOpenFlowコントローラを共同開発をする為の
プラットフォームとして開発されたオープンソースのSDNコントローラです。
OpenDaylightは、OpenFlowコントローラのみならず、様々なサウスバウンドAPIに対応した
凡庸的なコントローラになっており、各ベンダーはOpenDaylightを利用して独自の
SDNコントローラを開発する事が可能です。
Ciscoは、このOpenDaylightコントローラーを基に Cisco Open SDN Controllerをリリース
しましたが、現在は生産・販売は行っていません。
## 関連投稿記事 [CiscoのSDNソリューション](https://qiita.com/k-yasuhiro/items/9fe436e4ca70aa8a2fc0) [ネットワークの自動化](https://qiita.com/k-yasuhiro/items/3995d9fd9d8b087c07bd)