ログイン新規登録

Qiitaにログインして、便利な機能を使ってみませんか?

あなたにマッチした記事をお届けします

便利な情報をあとから読み返せます

3
7

この記事は最終更新日から3年以上が経過しています。

ネットワークの自動化【SDNの概要】

最終更新日 投稿日 2021年03月02日

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ソリューション
ネットワークの自動化

3
7
0

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
  3. ダークテーマを利用できます
ログインすると使える機能について
k-yasuhiro

@k-yasuhiro(kawai yasuhiro)

クラウドエンジニアとして勤務中。アウトプット用に開設しました。 取得資格【CCNP Enterprise】、LPIC level1、AWS認定12冠、AZ-104: Microsoft Azure Administrator】
この記事は以下の記事からリンクされています

コメント

この記事にコメントはありません。

いいね以上の気持ちはコメントで

記事投稿キャンペーン開催中

音声認識APIを使ってみよう!

~
詳細を見る
3
7

ログインして続ける

ソーシャルアカウントでログイン・新規登録

メールアドレスでログイン・新規登録