Ch.10 インフラストラクチャ―サービス

SDN

ルーティングテーブルやARPテーブルなどの情報はコントロールプレーン、実際に転送を行う機能はデータプレーンと呼ばれている。このコントロールプレーンを外部のサーバーのソフトウェアで一元管理することが可能になった。これをコントローラ、またはSDNコントローラと呼ぶ。SDNコント―ローラとデータプレーンはサウスバウンドAPIと呼ばれるインターフェースでやり取りが行われている。

コントローラとデータプレーンの間のやり取りをつかさどる、サウスバウンドAPIプロトコルとしてOpen Flowがある。他にもNETCONFやciscoの開発したone Platform kitなどがある。

なお、従来のTelnet, SSHなどもサウスバウンドAPIに分類される。

また、SDNコントローラーにネットワークの要件を伝えるアプリケーションも存在し、これをアプリケーションプレーンと呼んでいる。 アプリケーションプレーンとSDNコントローラはノースバウンドAPIと呼ぶ。

ノースバウンドAPIに今のところ標準化が期待できるプロトコルは存在しない。

Csico APIC-EM

CiscoのSDNコントローラで、単にデータプレーンに設定を行うだけではなく、サウスバウンドAPIを通じて、ネットワーク機器から様々な情報を収集して、ネットワーク構成を視覚的に表示することもできる。

ネットワーク全体を一貫性をもって設定できるので、万が一機器に故障が生じても、最小のダウンタイムで復旧させることが出来る。 ネットワーク全体が定期的にスキャンされ、構成情報一覧が定期的に更新されるほか、複雑なネットワークの運用ポリシーも適用できる。

ネットワークの可視化はACLの分析の際に非常に便利でPath Trace ACLという、パケットがどこのACLでブロックされているかわかりやすく分析される。

Cisco IWAN

Cisco APIC-EMがLAN内でのネットワークマネジメントの自動化であったのに対して、WANではCisco IWANというWAN最適化ソリューションが存在する。

IWANはパケットの優先度をアプリケーションごとに定義してたり、リアルタイムなWANの状況に応じてデータを圧縮したりすることが出来る。(インテリジェントパス制御)またトランスポート独立接続器のにより、DMVPNによる拠点間のフレキシブルで安全な通信を提供するほか、ファイアーウォールなどの機能も提供する。

CEF

Ciscoのメモリには2つのタイプが存在する。

  • CAM - MACアドレステーブル検索に用いる。ビットの完全一致だけを行う。
  • TCAM - ルーティングテーブル検索、ACLQoSなどさまざまな用途で用いる。完全一致だけでなく、I don't careにも対応できるため、ACLの部分一致なども検索できる。

Cisco Express Forwrdingではルーター・レイヤ3スイッチがこれらのメモリを極力参照せず、データプレーンだけで独立してパケット転送を行うようになっている。(フレーム転送はこれが用いられず、通常のCAM・TCAMルックアップが行われる。)

CEFではデータプレーンにTACAMの代わりにAdjancyテーブルを、CAMの代わりにFIBテーブルを持ち、検索と転送処理自体はデータプレーンで完結する。但し、FIB、Adjancyテーブルの内容はコントロールプレーンにあるMACアドレステーブルとルーティングテーブルからダウンロードし、必要に応じて同期を行う。

QoS

通信品質の担保には主に以下の2つの方法が用いられる。

  • IntServ

宛先・送り元IPアドレスを認識して、高い品質が求められるトラフィックのフローを認識するとともに、その宛先までのパスの間で帯域をResource Reservation Protocolによって予約しておく。P2Pの全てのパスでこの設定を行って初めて送信が開始されるため、柔軟性に乏しい。

  • DiffServ

IPヘッダ内の優先順位を示すフィールドにマーキングすることで、トラフィックを重要度ごとにクラス分けして取り扱う方法。スケーラブルで実装が簡単なので、こちらの方が一般的である

  • Best Effort

トラフィックの到着順に転送を行う方法。デフォルトのQoS設定はこれになっている。First-In First-outなのでFIFOと呼ばれる。

QoSマーキング

EthernetフレームのマーキングはIEEE802.1QのVLAN IDタグ内のPCP(Priority Code Point)と呼ばれるフィールドに8段階で設定する。VLAN IDタグを読み込むのはトランキングポートだけなので、当然QoSはトランキングポートでしか有効にならない。

一方、IPパケットのマーキングにはToSというフィールドがあるが、そのフィールドの上位3bitを使って8段階の設定を行うIP Precedenceと上位6bitを用いて64段階で設定するDSCPが存在する。DSCPはIPPに対する互換性があり、一般的にはよりきめ細やかな設定の出来るDSCPが利用される。各段階に応じて、パケットは異なる扱い(Per-hop Behavior)がされる。

この値がEFExpendited Fowrdingのときは緊急転送が行われ、パケットの破棄は行われない。VoIPのパケットは通常このPHBで扱われる。

また、こうしたマーキングは一度行われた後、他のデバイスで再度評価を行うのはリソースの無駄遣いになる。そのマーキングを信頼して同じポリシーを適用する範囲を信頼境界と呼び、なるべく発信元の近くのマーキングして、他の機器で評価を共有することが望ましい。アクセススイッチの他、Ip Phoneでもマーキングとその信頼境界が可能である。一方、ネットワークの使用者が勝手につけたマーキングは信頼できないので、これは無視する必要がある。

受信したマーキング情報を信頼して、ルーティングとスイッチングを行う場合(config-int) mls qos trustを設定する必要がある。

トラフィックの識別

優先度の高いアプリケーションのトラフィックの識別をNetwork - Based Application Recongitionと呼び、IPアドレスやポート番号などが目印として使われるが、同じポートを共有する複数のアプリケーションごとに優先度が異なったり、一つのトラフィックでも動的にポート番号を変更する場合がある。こうした、アプリケーションごとのパケットの利用をより正確に行うことをディープパケットインスペクションと呼び、これが出来るモジュールをPacket Description Laguage Moduleと呼ぶ。NBARではこのモジュールによる、正確なトラフィックの把握をサポートしていて、後述のCBWFQやLLQに正確な分類情報を提供している。

ポリシングとシェービング

一つのインターフェースを通過するトラフィックの値が指定の値を超えたとき、その超過トラフィック分を破棄してしまうことで、キューイングによる遅延やジッターを発生させない方法をポリシングという。ただし、破棄されたパケットにTCPパケットが含まれていた場合、再送処理が行われてしまう。

一方、トラフィックの値が指定値を超えたとき、超えた分のパケットをバッファに格納して、キューイングすることで遅延させながらパケットの破棄を防ぐ方法をシェ―ピングという。TCPパケットの再送を防ぐことは出来るが、パケットの到着に遅延が発生するのでVoIP等には向かない。また、バッファリング用の十分なメモリも必要になる。

このバッファリングが始まった状態を輻輳状態と呼び、キューにあるパケットを優先度順に並び替えてどのタイミングで送信するかを決定する。FIFOの他にも、以下のようなキューイングポリシーがある。

  • Priority Queuing 優先度の高いパケットが空になってから、優先度の低いパケットを送信する。優先度の低いパケットは非常に長い時間キューに残される可能性がある。

  • WFQ (Weighted Fair Queing) 使用できる帯域幅トラフィックフローの数で割って、公平な帯域を提供する。IPアドレスやポート番号を見て、トラフィックフローを分類できるので、手動で設定する手間がかからない。

  • Class Based Weighted Fair Queing 管理者が自由にクラスを設定し、そのクラスに対しては帯域幅を保証する。のこりのトラフィックフローに関しては公平に取り扱う。ただし、レイテンシーの保証は出来ないのでVoIP等は取り扱えない。

  • Low Latency Queing CBWFQにPQを追加し、優先度の高いパケットを最優先に取り扱う。帯域幅を確保しつつ、低レイテンシーが求められるパケットの取り扱いもできるため、VoIPなどに適している。

こうした、ポリシーによってキューが満杯になってしまった場合、後から到着したパケットはテールドロップ、つまり後続のパケットを無差別に破棄する。パケットの破棄は優先度によっては望ましくなく、特にTCPパケットの場合は、ウィンドウサイズが一気に低下するスロースタートが行われてしまうので、リンクの帯域幅の使用率を一気に下げてしまう。

そこで、キューがいっぱいになる前に優先度の低いパケットの削除を少しづつ初めておき、優先度の高いパケットの破棄を防ぐのがWREDと呼ばれるツールで、優先度を考慮しないREDの拡張版として誕生した。優先度はDSCPまたはIP Precedenceを元に決定される。またTCPパケット専用の機能となっている。

リンク効率化

一般的なデータパケットが1500バイトなのに対して、音声パケットが60パケットしかない。よってデータパケットと音声パケットを同時に取り扱うと、音声パケットの送信に遅延が発生しやすい。そこで、データパケットを小さくフラグメントして、音声パケットと同じような大きさにすることで、この遅延を小さくすることが出来る。これをLink -fragmentation and interleavingと呼ぶ。