-
Notifications
You must be signed in to change notification settings - Fork 0
/
abstract.tex
164 lines (144 loc) · 10.5 KB
/
abstract.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
%% -*- coding: utf-8-unix -*-
\chapter{はじめに}
\label{chap:abstract}
本書は、沖縄オープンラボラトリ~\cite{ool-web}で2016年度に実施された「ネッ
トワークテストシステムプロジェクト」~\cite{ool-l1pj-web}の成果報告書であ
る。本書の目的は、プロジェクトの目標と実施した活動、活動の結果・成果をま
とめ、報告することである。特に、最終的な成果(物)についての解説だけでなく、
そこへ至るまでの検討過程・判断や選択の基準などについても取りあげ、「考え
かた」についても共有することを目的としている。
\section{本プロジェクトの目的}
\label{sec:pj-purpose}
% TODO: OOD発表資料のp1 : 視点/観点の話をいれること
% OOD発表資料のp.2-3
情報システムを構築して利用者に提供していくにあたって、システムを構築・運
用する側は、様々な製品や技術を組み合わせてシステムを構成し、サービスを実
現していく必要がある。複数の仮想化技術を導入し、拡張性に対する要求とそれ
を実現するための自動化技術が発展したことにより、システムは抽象化されて、
より柔軟な制御が可能になった。その反面、大規模かつ複雑にもなっている。こ
うした、ブラックボックスを多数くみあわせた複雑なシステムの構築や運用では、
構成要素どうしの連携を把握し、システム内部変更によるシステム全体の動作や
サービスへの影響を判断することは難しい。一方で、利用者の要求やサービスが
変化するサイクルは速くなっており、システム開発者やサービス提供者は、その
要求に追従していくことが求められる。したがって、今後サービス提供者は、シ
ステムに加えた機能や変化によって最終的に利用者に対して価値が提供できてい
るかどうか、サービス利用者の観点でシステムの状況を判断することが重要にな
る。
本プロジェクトは、サービス変化の迅速性を考えるうえでボトルネックになりが
ちなネットワークに着目する。ネットワークの構築や運用プロセスにおける課題
と、プロセス全体の時間を短縮するためのテスト手法について検討する。そして、
より高速かつ網羅的にネットワークが提供するサービスの正常性をテストするた
めのシステムを提案する。また、その有効性を確認するための実証実験をおこな
う。これによって従来のネットワーク構築・運用における迅速性の向上・リスク
低減・CI/CDプロセス実現を目指す。
\section{関連研究}
\label{sec:related-research}
\subsection{沖縄オープンラボラトリ内での位置付け}
沖縄オープンラボラトリでは、本プロジェクト以外にネットワークテストに関す
る研究が複数ある。OF-Patchプロジェクト~\cite{ool-testbedpj}はOpenFlow制
御による物理パッチパネルを実装・OSS公開している。また、それによって実際
に沖縄オープンラボのテストベッドを構築し、利用者に提供している。VNFテス
トシナリオ自動化PJ~\cite{ool-vnftestpj}はVNFのデプロイパターンや相互接続
性に着目している。このプロジェクトでは、VNFとハイパーバイザ・VNF同士の接
続などさまざまなパターンで接続性や性能測定を網羅的に自動実行するシステム
を構築した。
OF-PatchはL1(物理トポロジ)操作に、VNFテストシナリオ自動化はVNFの利用(組
合せ・機能・特性)に焦点をあてている。いずれもネットワークで顕著な問題と
なるパターン網羅性や物理トポロジ操作の自動化といった課題とりあげている。
対象とする課題点として重複する部分はあるが、本プロジェクトはテストによる
構築・運用プロセスや一般的なネットワークの「ふるまい」に着目する点で違い
がある。
\subsection{ネットワークテストの自動化に関する研究・プロダクト}
End-to-endの通信やネットワーク全体のふるまい、物理ネットワークのテストに
着目したテストや検証の自動化に関する関連研究やプロダクト、それらの特徴に
ついて順に挙げる。
\paragraph{研究}
ホワイトボックススイッチと従来の(レガシーな)ネットワーク機器で構成された
テストベッドネットワークに対して、OSSを組み合わせて任意の箇所に自動で障
害を発生させる検証自動化システム~\cite{wbsw-oss-test-automation}が提案さ
れている。レガシー機器の利用・end-to-endでのふるまいへの着目など本プロジェ
クトと課題感が近く、テスト環境の自動構築などテストとして求められる機能一
式に対応している。本プロジェクトではテスト対象環境の自動構築には比重を置
いていないこと、テストトラフィックのディストリビューションにOpenFlow制御
を利用していること、テストシナリオ実装の考えかたなどに違いがある。
\paragraph{商用製品}
FWパケットフィルタをテストする自動化製品として
NeedleWork~\cite{needlework-web}がある。NeedleWorkは小型のアプライアンス
として実装されており、FW単体あるいはFWに接続された3ゾーン(セグメント)構
成のネットワークをテスト対象としている。また、内部ではnetcatを使用してお
り~\cite{needlework-slide}、L4レベルのテストトラフィック生成をおこなうこ
とができる。
\paragraph{OSS}
ネットワークのテストが可能なOSSとして、
InfraTester~\cite{infratester-github}、ToDD~\cite{todd-github}、
OpenVNet~\cite{openvnet-web}がある。InfraTesterはネットワークを経由して、
サービスの外側からの動作(ふるまい)をテストできる。構成として、定点
(InfraTesterサーバ)から見たときのサービスを観測するかたちになるため、
L2/L3のネットワーク(物理的な分散性)についてはターゲットとしていない。
ToDDは、テスト対象ネットワークにAgentを配布し、ToDDサーバとメッセージキュー
によって情報交換をおこなう~\cite{todd-blog}。テスト自体はtestletという形
でToDDサーバからAgentへおくられ、実行される。Agentを使うことで、ネットワー
クの物理的な分散性(distribution)に対応しており、拡張性のたかいアーキテク
チャをもっている。OpenVNetはOpenFlowを利用したネットワーク仮想化システム
だが、本プロジェクトと同様の課題感から物理ネットワークのテストへの対応を
すすめている。OpenVNetで構成した仮想ネットワーク(オーバーレイ)に対して
OpenFlow対応ハードウェアを介して物理ネットワーク(ネットワーク機器)を接続
する~\cite{openvnet-slide,network-testing-sdn-atmarkit}。仮想ネットワーク
(論理構成)についてはterraformやcloudifyなどのオーケストレーションツール
を併用し、論理構成を記述し、再現・再構成可能とすることで環境構成の自由度
を確保している。
\paragraph{周辺技術動向}
本PoCではターゲットとしていない(\ref{sec:discuss-network-test}節参照)が、
テスト対象となるネットワーク機器の操作をおこなうための仕組みに関する近年
の動向について簡単に触れておく。従来のネットワーク機器API(CLI)を抽象化す
るためのOSS開発~\cite{netmiko-github,trigger-github,napalm-github}は活発
におこなわれている\footnote{本プロジェクトでは相当する機能について、より
シンプルで簡易的なツール(付録~\ref{sec:expectacle})を使用している。}。ま
た、Ansible~\cite{ansible-web}はバージョン2.2よりネットワーク機器の操作
に対応~\cite{ansible-22-news}しており、ネットワークの構築・運用自動化への
応用事例が増えていくことが予想される。技術動向としては、Google等のネット
ワークオペレータによってベンダ中立なネットワーク機器インタフェース(API)
策定の活動がおこなわれている(OpenConfig~\cite{openconfig})。OpenConfigに
ついてはJuniper, Cisco, Aristaなどの商用製品による採
用~\cite{openconfig-news}もはじまっている。
\section{前提事項}
\label{sec:premise}
本書の読者としては、ネットワークテストシステムを利用・導入し、有効性の判
断をおこないたいエンジニアを想定している。本書では、以下にあげる点につい
ては基礎知識として取り上げない。
\begin{itemize}
\item Linuxの基本的な使用方法
\begin{itemize}
\item KVM による仮想マシン(VM)の操作/管理
\item 必要なツールやソフトウェアのインストール/パッケージ管理
\item Git の使用方法
\item Linux Network Namespace および iproute2 ( \code{ip} コマン
ド)によるNamespace の操作
\end{itemize}
\item 基本的なネットワークに関する知識
\begin{itemize}
\item TCP/IP および Ethernet/VLAN
\item Cisco や Juniper の L2/L3 Switch, Firewall の基本的な動作・
設定
\end{itemize}
\item OpenFlow
\begin{itemize}
\item OpenFlow/1.0
\item Trema による OpenFlow Controller の実装
\item OpenFlow スイッチ (Open vSwitch) の基本的な動作・設定
\end{itemize}
\item Rubyプログラミング
\begin{itemize}
\item RubyEnv をつかった ruby 環境の管理
\item Bundler をつかったパッケージ管理
\item Cucumber によるテストシナリオ実装
\end{itemize}
\end{itemize}
また、本プロジェクトの前身となる、2015年度にOOLで実行したプロジェクト
(「L1patch 応用ネットワークテストシステム」プロジェク
ト~\cite{ool-l1pj-web}、通称\lopj)で扱った内容については解説しない。
\lopj については、\lopjpoc や \lopjtech を参照すること。
%%% Local Variables:
%%% mode: yatex
%%% TeX-master: "main.tex"
%%% End: