VNFとは?CNFとは?
これまでNFVをベースとした仮想化の説明をしてきたが、肝心のVNFについて説明していなかったことに気づいた。今日はそもそも”VNFとは何か?“について解説してみる。
Network Functionを仮想化した“VNF“
VNF (Virtual Network Function)とは、このNetwork Functionを仮想化したものであり、主にVM型とコンテナ型がある。ETSI-NFVの仕様としては特定のタイプのNetwork Functionに限定している訳ではないが、NFVは元々aTCAの有力な後継機として始まったこともあり、暗黙的にモバイルコア(交換機)を最初のターゲットして検討している。
上記図の通り、aTCAとNFVの関係をまとめると、概ね1 Chassisが1VNFインスタンスであり、1 Baldeが1VNFC (VNF component)となっている。もちろん、APLの性質によっては1VNF = 1VNFCとして設計することも可能である。
components | aTCA | NFV | |
---|---|---|---|
blade | APL | APL | APL |
MW | MW | MW | |
OS | CGL | Guest OS | |
HW | aTCA | VM | |
NW | segment | VLAN + L2SW | Virtual Link (VL) |
port | port | Connection Point (CP) + Top Of Rack (TOR) | |
HW manager | HW OAM | Charssis manager | VIM |
HW control | Charssis manager | N/A |
NW関係がL2SWからVLと変更になり、PortがVM側のNICとなったりCPとなっている点が分かりにくい点であろう。
また、コンテナの登場によりCNF (Cloud native Network Function)という俗語も使われ始めている。ETSI GS NFV 003 にはCNFという定義は無く、ETSI-NFVとしてはコンテナベースのNetwork FunctionであってもVNFと呼び、 VMベースのVNFと同じVNF LCM APIで制御可能な仕様となっている。しかしながら、「CISMとは?CCMとは?NFVでコンテナ管理はどうやるの?」の通り、コンテナはAPL部のみをカプセル化して位置透過性を高めることで運用の自動化を促進している。そのため、NWやDB、OAMなどの機能はVNFから分離され、別レイヤに搭載されることを想定している。「ETSI-NFV仕様の各リリース機能」の通り、ETSI-NFV Rel4においてコンテナ環境を支援するための機能がNFV-MANOに導入される予定なので、それらによりVNFの機能を共通機能として外出ししていけるようになるかもしれない。
ETSI-NFVにおけるVNFの管理ポイント
「LCMとは?」の通りETSI-NFVでは、VNFDを利用してVNFをDeploy/Instantiateできる。この時NFV-MANOからは、基本的にはVMの中(APL/MW/OS)はOut of scope (管理対象外)であり、Compute(VM/コンテナ)やNW、Storageを制御する。
VNFDの説明はETSI NFV SOL001の歩き方やOpenStack Tackerのマニュアルを参照頂きたいが、VNFDはVNFに関する様々な定義や設計情報が含まれ、大別すると
- 仮想リソースに関するDescriptor
- VirtualComputeDesc、VirtualLinkDesc、VirtualStorageDescがある
- Deployする最小単位のテンプレートであるVDU
- VirtualComputeDescやVirtualStorageDesc、SW image、VduCp (NIC相当)が含まれる
- VNFの中の内部NWであるVnfVirualLink (internal VL)
- VL+CPによって必要なNWを算出して、VnfVirtualLink (Internal VL)やExtVirtualLink (External VL)を作成する
- VNFと外部NWとの接続ポイントであるVnfExtCp
- VMのNICがVnfExtCp: VnfExtCpからVduCpがダイレクトに参照される
- VnfVirtualLink (Internal VL)上のLBやRouterのPortがVnfExtCp: VnfExtCpはVnfVirtualLinkに接続される
- VM等に付与されたVIPがVnfExtCp: VMのNICのVnfExtCpとは別にVipCpが定義される
- コンテナのService IPがVnfExtCp: VirtualCPとして定義され、実態の仮想リソースは存在しない
- LCM関連の定義
- Configuration、各イベント毎に参照するLCM Script、Indicator、Coordinate LCM、各LCM OperationのConfigであるOpConfig
- Delopyment Flavour
- 該当VNFが用途によって様々な構成を取りうるときの必要なVDU、VnfExtCp、LCM Operationの定義リスト
- 同一プロダクトでありながら、S-GW、P-GW、SP-GWのように使い分けるときにS-GW用/P-GW用/SP-GW用のDeployment Flavourとして分けて定義可能である。
- TOSCAではVNFDをTop level service templateとして定義し、DeploymentFlavourはLow level service templateとしてVNFDからsubstitution_mappingによって関連づけられる。
NFV-MANOはVNFの中(Guest OS)などにログインしてインストールや設定変更を行うわけではない。そのため、例えばAddressDataもVM側の設定をDHCPにしておくことでDHCP Agentを利用して特定のIP addressを付与したり、UserData(Cloud-init)でScriptをBoot時にVMに渡して設定を投入したり、VM Boot後にVNFMの中の機能としてAnsible Playbookでインストールしたりと言ったことが行われる。
コンテナ用VNFの場合も、1 POD = 1VNFDの考えのもと基本的な考え方はVM用VNFと変わらず、仮想リソースDesc(OsContainerDescを追加)、VDU(1POD複数VM image許容)、VnfExtCp(VirtualCPを追加済)、LCM関連定義(MCIOP(Managed Container Infrastructure Object Package)が追加)はそのまま利用可能である。VnfVirtualLinkはPrimary/Secondary Container Networkに置き換えられるが、VNF LCMは現在仕様をほぼ利用可能となった。
今回はaTCAとNFV仕様を簡単に比較することでVNFの定義について説明した。NFVは汎用的な仕様になっている分、使い方が分かりにくいという問題がある。ETSI GS NFV-SOL 016のProcedureと本説明を合わせて読むことで、VNFDの定義やVNF LCMの動きが分かるようになると思う。
コメント
コメントを投稿