CORDの概要と構築
2017年12月4日
日本電気株式会社
ネットワークソリューション事業部
藤井 貴之
Okinawa Open Days 2017
本日の内容
•CORD概要
- ONFのCORD Projectについて
- CORDができていること
- 通信キャリアのCORDユースケース動向
•CORD環境構築
- 2-way build a CORD POD
- CORDマニュアルデプロイ
- CORD関連で困ったこと
- 今後CORDでやりたいこと
4 © NEC Corporation 2017 Okinawa Open Days 2017
ONFのONOS Project, CORD Project
▌
ONF:Open Networking Foundation
2011年に設立された非営利団体
s S
18 Partners(ボードメンバ)
16 Collaborating Innovators
Mission: Transformation of network infrastructure
and carrier business models.
CORD Project
データセンタの要素技術を使い、局舎ネットワークの再構築
▌
ONOS:SDNコントローラ
▌
CORD:ONOSのユースケースの1つ
「VNFサービスチェイン」
M-CORD:Mobile Network
R-CORD:Residential Network
E-CORD:Enterprise Network
ONOS
CORD
M-CORD
R-CORD
E-CORD
Past
6 © NEC Corporation 2017 Okinawa Open Days 2017
CORDができていること(ex. R-CORD)
▌
現在のネットワークトポロジ
CPE
OLT
OLT
OLT
Router
(SG)
Access Network
Subscriber access building Home Apartment Business
Metro&Core Network
…ONU
ONU
TransportISP
ISP
CORDができていること(ex. R-CORD)
▌
オープンな技術を使って
機能の再配置
Network OS:ONOS
(DockerにUnder,Over)
VNFs:Openstack VM
(jujuでコンポーネントデプロイ)
Device:Ubuntu, ONL
(MAASデプロイ)
PON OLT Opt. cable splitter Spine Switch Spine Switch Leaf Switch Leaf Switch Opt. cable CPE ONU CPE ONUNAT PPPoE Server
Compute Node NAT PPPoE vSG VM Server Head Node ONOS Openstack XOS Internet
8 © NEC Corporation 2017 Okinawa Open Days 2017
CORDのユースケース動向(ex. R-CORD)
▌
オープンな技術を使って
機能の再配置+Edge Cloud
Network OS:ONOS
(DockerにUnder,Over)
VNFs:Openstack VM
(jujuでコンポーネントデプロイ)
Device:Ubuntu, ONL
(MAASデプロイ)
PON OLT Spine Switch Opt. cable splitter Spine Switch Leaf Switch Leaf Switch Opt. cable CPE ONU CPE ONU Server Compute Node NAT PPPoE vSG VM Server Head Node ONOS Openstack XOS Internet Opt. cable Server Compute Node vCDN etc.CORDのユースケース動向(ex. R-CORD)
オープンな技術を使って機能の再配置+Edge Cloud(computing)
11 © NEC Corporation 2017 Okinawa Open Days 2017
CORDのユースケース動向(ex. R-CORD)
s
Telefónicaは米Qwilt(Multi-CDN PF)などと組んで、CORDベース*のプラットフォームで
(video)contents cacheの実証実験を行う予定
*Open Nebulaを使っているなど、ONFからリリースされているCORDに
手が加えられている。
TelefónicaがCORD build 2017で発表した内容オープンな技術を使って機能の再配置+Edge Cloud(computing)
CORDのユースケース動向(ex. R-CORD)
s
NTT東日本はCORDプラットフォームにIoTゲートウェイ、コンテンツキャッシュ、顔認証
を載せた、サービスユースケースの実証実験を行う予定
*ONF実装CORDをそのまま使う。
NTT東日本がCORD build 2017で発表した内容オープンな技術を使って機能の再配置+Edge Cloud(computing)
2-way build a CORD POD
▌
Automation deployment(Jenkins integration)
ONFのjenkinsサーバにつなぐだけ。
▌
Manual deployment by script and makefile
D
Download from github
“Two commands, and few reboots”
マニュアルデプロイは未だ難しく、試行錯誤が必須。
こちらについて話します
15 © NEC Corporation 2017 Okinawa Open Days 2017
CORD POD構築フロー
▌
CORD POD
少なくとも、2つのサーバと1つのスイッチで構成された環境。
CORDのコア機能をすべて使うことができる。
External
E
xte
rn
al
M
an
age
men
t
Head node
corddev
compute
node
Fabric Switch
IPMI
Fabric
Fabric
Mgmt
Mgmt
Mgmt
External
CORD POD構築フロー
▌
corddev install
Githubよりcord-bootstrap.shをダウンロードしてインストール
▌
Head
node
deploy
corddevでHead nodeにするサーバをIP指定してmake config⇒configファイル作成
configファイルを基にmake build⇒LXC, Docker, MAASが用意されてdeploy完了
▌
Compute node&Fabric switch deploy
compute node:head nodeをイーサ接続して起動するとMAASでUbuntuが
インストールされて、ansibleで整備される。
Fabric switch:ONIEブートでONLインストール, ansibleで整備される。
Internet External
Exte
rn
a
l
Man
ag
e
me
n
t
Head node
corddev
compute node
Fabric Switch
IPMI Fabric Fabric Mgmt Mgmt Mgmt External17 © NEC Corporation 2017 Okinawa Open Days 2017
CORD POD構築フロー
▌
corddev install
Githubよりcord-bootstrap.shをwget&bashしてインストール
▌
Head
node
deploy
corddevでHead nodeにするサーバをIP指定してmake config⇒configファイル作成
configファイルを基にmake build⇒LXC, Docker, MAASが用意されてdeploy完了
▌
Compute node&Fabric switch deploy
compute node:head nodeをイーサ接続して起動するとMAASでUbuntuが
インストールされて、ansibleで整備される。
Fabric switch:ONIEブートでONLインストール, ansibleで整備される。
ExternalE
xte
rn
al
Ma
n
a
ge
me
n
t
Head node
corddev
compute node
Fabric Switch
IPMI Fabric Fabric Mgmt Mgmt Mgmt ExternalCORD POD構築フロー
▌
corddev install
Githubよりcord-bootstrap.shをwget&bashしてインストール
▌
Head
node
deploy
corddevでHead nodeにするサーバをIP指定してmake config⇒configファイル作成
configファイルを基にmake build⇒LXC, Docker, MAASが用意されてdeploy完了
▌
Compute node&Fabric switch deploy
Compute node:head nodeをイーサ接続して起動するとMAASでUbuntuが
インストールされて、ansibleで整備される。
Fabric switch:ONIEブートでONLインストール、 ansibleで整備される。
ExternalE
xte
rn
al
Ma
n
a
ge
me
n
t
Head node
corddev
compute node
Fabric Switch
IPMI Fabric Fabric Mgmt Mgmt Mgmt External19 © NEC Corporation 2017 Okinawa Open Days 2017
Focus on Head node deploy
▌
v3系ではスクリプト主体⇒v4系ではMakefile
実行を細かく指定することができるようになった。
Build failedは減り、Build timeも~46%減った。
#make PODCONFIG=config.yml config
fabric_ip: '10.1.0.1/24' management_ip: '10.6.0.1/24' external_ip: '192.168.99.1/16' external_gw: '192.168.0.10' external_iface: 'eth0' management_network: 10.6.0.0/24 inventory_groups: head: head1: ansible_host: 192.168.99.1 ansible_port: 22 ansible_user: cord ansible_ssh_pass: onf fabric_include_names: eth1 fabric_exclude_names: eth0,eth2,eth3,eth4,eth5 management_include_names: eth2,eth3,eth4,eth5 management_exclude_names: eth0,eth1
Head nodeのNIC IP設定
デプロイするHead node
のIPやuser/pwを指定
Focus on Head node deploy
▌
v3系ではスクリプト主体⇒v4系ではMakefile
実行を細かく指定することができるようになった。
Build failedは減り、Build timeも~46%減った。
#make PODCONFIG=config.yml config
#make –j4 build | tee ~/install.out
Deploy完了をチェック(docker daemons, juju services,…)
cord@cord-head-1:~$ docker ps --format "{{.Names}} | {{.Status}}"
switchq | Up 6 days
onosfabric_xos-onos_1 | Up 2 weeks
onoscord_xos-onos_1 | Up 2 weeks
(中略)
registry | Up 2 weeks
cord@cord-head-1:~$ juju status --format tabular [Services]
NAME STATUS EXPOSED CHARM
ceilometer active false cs:trusty/ceilometer-17
glance active false cs:trusty/glance-28
(中略)
21 © NEC Corporation 2017 Okinawa Open Days 2017
Focus on Head node deploy
▌
Docker images/daemons on Head node
もし動作不良の場合は、docker-compose kill&upする必要がある。
• onos-fabric
⇒Underlay NW用ONOS
• onos-cord
⇒Overlay NW用ONOS
• switchq
⇒PODへのマシン(サーバ、スイッチ)追加を監視して、
それがスイッチの場合にプロビジョニングを開始する。
• automation
⇒MaaSがベアメタルにデプロイする際に、PXEブートを自動化する。
• provisioner
⇒PODに追加されるマシンに対してansible playbookを実行する。
• harvester
⇒すべてのホストをDNS経由で解決できるように、CORD/DHCP/DNS
を統合する。
• allocator
⇒Fabric IFにIPをアロケートする。
Focus on Head node deploy
▌
Juju services on Head node
Jujuによって、Openstackのコンポーネントと関係性が定義されている。
23 © NEC Corporation 2017 Okinawa Open Days 2017
▌
Juju services on Head node
Juju serviceの追加はGUIかCLI(#juju deploy~)で可能
Focus on Head node deploy
つながるものだけがハイライト表示される
Juju GUIで編集したトポロジは
Focus on Compute&Switch deploy
▌
MAASからOSインストール
Compute nodeはUbuntu14.04(MAAS GUIでイメージを用意)、
Fabric switchはONL 2.0(roles/maas/defaults/main.ymlにて定義)
Control plane(management)でHead nodeとつながっていればok.
複数回リブートが起きた後、MAAS GUIで以下のような画面になればOSインストール完了
*MAAS GUIの”Deployed”はOSインストール完了の意味。
accton_as6712_32x: 'https://www.dropbox.com/s/pl3cvr9olnaufw5/ONL-2.0.0_ONL-OS_2017-01-04.0024-8d23df5_AMD64_INSTALLED_INSTALLER'
25 © NEC Corporation 2017 Okinawa Open Days 2017
Focus on Compute&Switch deploy
▌
Ansible playbook整備
OSインストール後、Ansibleで各種設定が行われる。
Compute node:Dockerインストール、 NIC設定、juju-compute設定
Fabric switch:OpenFlowのDPID設定(デフォルトではMACアドレスから生成)、
OFagentを起動/停止するスクリプトの生成
deployが完了すると、
cord@cord-head-1:~$ cord prov list
NAME MAC IP STATUS MESSAGE
front-playground.cord.lab d4:3d:7e:6d:c6:de 10.6.0.14 Complete
feminine-fold.cord.lab d4:3d:7e:71:0e:bd 10.6.0.16 Complete
================================================================ juju-compute-setup : Wait for nova-compute nodes to come online --- 309.52s
juju-compute-setup : Add machines to Juju --- 46.38s juju-compute-setup : Pause to let Juju settle --- 20.07s
compute-node-enable-maas : Pause to work around race in VTN or ONOS synchronizers -- 20.05s juju-compute-setup : Deploy nova-compute service if needed --- 6.67s
juju-compute-setup : Create relations between nova-compute and other services if needed --- 5.79s common-prep : Remove annoying default editors --- 3.52s
compute-prep : update-ca-certificates --- 1.69s
compute-node-enable-maas : Load TOSCA to add OpenStack compute nodes, over REST --- 1.47s Gathering Facts --- 1.47s
Focus on Trellis configuration
▌
Trellis configuration
Trellis: DC Fabric Underlay + Virtual Network Overlay
+ Unified SDN Controller
fabric-network-cfg.jsonを編集してXOSからONOSに流し込む。
27 © NEC Corporation 2017 Okinawa Open Days 2017
Focus on Trellis configuration
▌
Trellis configuration
Trellis: DC Fabric Underlay + Virtual Network Overlay
+ Unified SDN Controller
fabric-network-cfg.jsonを編集してXOSからONOSに流し込む。
CORD POD構築完了
▌
CORD POD build complete
最後に、XOSから要件に合わせたサービスを用意することでCORD PODの構築完了
R-CORDのほか、M-CORDも現在整備されている。
31 © NEC Corporation 2017 Okinawa Open Days 2017
CORD構築の経験
▌
CORD PODで困ったことの例(原因調査中のもの)
Head nodeデプロイ時に”failed to fetch PPA information”
ONOS起動時にIntentServiceが起動せず
TASK [maas : MAAS Repository]
**************************************************************** FAILED - RETRYING: MAAS Repository (3 retries left).
FAILED - RETRYING: MAAS Repository (2 retries left). FAILED - RETRYING: MAAS Repository (1 retries left).
fatal: [head1]: FAILED! => {"attempts": 3, "changed": false, "failed": true, "msg": "failed to fetch
PPA information, error was: Request failed: <urlopen error [Errno -2] Name or service not known>"}
onos> summary
Service org.onosproject.net.intent.IntentService not found
onos> log:display (一部抜粋)
| ERROR | Component Actor | onoscorenet | 127 org.onosproject.onoscorenet -1.10.6 | [org.onosproject.net.intent.impl.installer.DomainIntentInstaller(10)] Cannot create
component instance due to failure to bind reference intentExtensionService
| ERROR | sh for user onos | onoscorenet | 127 org.onosproject.onoscorenet
-1.10.6 | [org.onosproject.net.intent.impl.ObjectiveTracker(33)] Cannot create component instance due to failure to bind reference topologyService
| ERROR | sh for user onos | onoscorenet | 127 org.onosproject.onoscorenet
-1.10.6 | [org.onosproject.net.intent.impl.IntentManager(9)] Cannot create component instance due to failure to bind reference coreService
⇒何らかの理由でcoreServiceが作られず、IntentManagerが起動できなかった? Multiple ONOS, Docker ONOSに見られる現象であり、鋭意調査中。
CORD構築の経験
▌
CORD PODで困ったことの例(原因調査中のもの)
Serverリブート時にjuju serviceがhook failed
[Services]
NAME STATUS EXPOSED CHARM
ceilometer error false cs:trusty/ceilometer-17
ceilometer-agent false cs:trusty/ceilometer-agent-13
glance error false cs:trusty/glance-28
juju-gui unknown false cs:trusty/juju-gui-142
keystone error false cs:trusty/keystone-267
mongodb unknown false cs:trusty/mongodb-33
nagios unknown false cs:trusty/nagios-10
neutron-api error false cs:~cordteam/trusty/neutron-api-6
nova-cloud-controller error false cs:trusty/nova-cloud-controller-64
nova-compute error false cs:~cordteam/trusty/nova-compute-3
nrpe false cs:trusty/nrpe-4
ntp false cs:trusty/ntp-14
openstack-dashboard error false cs:trusty/openstack-dashboard-19
percona-cluster error false cs:trusty/percona-cluster-31
rabbitmq-server error false cs:trusty/rabbitmq-server-42
⇒機能が使えないことはないが、作業の懸念点となる。 一部のサービスは下記コマンドで対処可能
#juju resolved --retry <unit name>
33 © NEC Corporation 2017 Okinawa Open Days 2017
CORD構築の経験
▌
ONFが推奨するHW要件
(CORD Guideより)
Server: OCP-qualified QuantaGrid D51B-1U server.
Each server is configured with 2x Intel E5-2630,
64GB of RAM 2133MHz DDR4, and a 40 Gig adapter.
Strongly Suggested NIC:
・Intel Ethernet Converged Network Adapters XL710 10/40 GbE…
・ConnectX®-3 EN Single/Dual-Port 10/40/56GbE Adapters…
Fabric switch: OCP-qualified Accton 6712 switch.
Each switch is configured with 32x40GE ports;
produced by EdgeCore and HP.
ソフトウェア実装の中にベンダ依存が組み込まれている
fabric_include_module_types: 'i40e, mlx4_en'
“prefix” : “CC:37:AB”,(EdgecoreのOUI)
“vendor” : “Edgecore Networks Corporation”,
CORD構築の経験
▌
非推奨HWでCORD環境を作る
目的:マシンルームにある機材をそのままCORD用に使うことできる。
非推奨HWでも動くことが確認できたら、多くの方がCORDに触れることができる。
実際はソフトウェア実装を変えなくても、ある程度HW要件の融通は効く。
• Server
⇒40G NICではなく、10G NICでも代用可能(ofdpa.confで設定変更)。
⇒NICモジュール(i40e,…)依存はあまり効かない(要検証)。
• Fabric Switch
⇒as6712のほか、as5712やas5812も対応している。
⇒as4610も”Leaf switchとして”使うことができる(要検証)。
# port_mode_1=1x40g if=SR4
#
port_mode_1=4x10g # front port 1
#port_mode_2=1x40g # front port 2
35 © NEC Corporation 2017 Okinawa Open Days 2017
CORD構築の経験
▌
非推奨HWでCORD環境を作る
SW-Hub Server Head Node Data plane(Underlay NW) Control plane(Overlay Network) IPMI External Server Compute Node Break out cable 1G->10G Convert Switch LAN cable SW-Hub Fabric Switch 40G Server Compute Node VLAN separated Fabric Switch 40G Fabric Switch 40G Fabric Switch 40G Optical cable 1G->10G Convert Switch Internet Break out cablePODconfig,ソフトウェア実装を把握することで、
ネットワーク含めた柔軟な構築が手軽にできた
CORDでやっていること&みたいこと
▌
非推奨HWでCORD環境+VNFプラットフォーム
SW-Hub Server Head Node Data plane(Underlay NW) Control plane(Overlay Network) IPMI External Compute Node vSG Break out cable 1G->10G Convert Switch LAN cable SW-Hub Leaf Switch 40G Compute Node Service VLAN separated Leaf Switch 40G Spine Switch 40G Spine Switch 40G Optical cable 1G->10G Convert Switch Internet Break out cable Compute Node Service OLT devices Out of CORD management CORD37 © NEC Corporation 2017 Okinawa Open Days 2017