• 検索結果がありません。

ID HIMALIS HANA * a) System Design and Software Implementation for User-oriented and Network-oriented High-Availability Networking ID/Locator Separati

N/A
N/A
Protected

Academic year: 2021

シェア "ID HIMALIS HANA * a) System Design and Software Implementation for User-oriented and Network-oriented High-Availability Networking ID/Locator Separati"

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

招待論文

ユーザ主体及びネットワーク主体の高可用ネットワークを実現する

システムの設計とソフトウェア実装

——ID

・ロケータ分離アーキテク

チャ

HIMALIS

とロケータ自動割振プロトコル

HANA——*

藤川

賢治

a)

福島

裕介

System Design and Software Implementation for User-oriented and

Network-oriented High-Availability Networking——ID/Locator Separation

Architecture HIMALIS and Automatic Locator Allocation Protocol HANA——

Kenji FUJIKAWA

†a)

and Yusuke FUKUSHIMA

あらまし 本論文では,ユーザ主体及びネットワーク主体の高可用ネットワークを実現するためのネットワー クシステムの設計と実装を行う.ユーザ主体として,端末が様々なネットワーク環境に適応して接続し,利用する ネットワーク環境を変更しても通信を継続できるHIMALIS アーキテクチャについて説明する.ネットワーク主 体として,ネットワークの耐障害性の向上,設計・設定の自動化を図り人的ミスによる障害を取り除くHANA プ ロトコルを提案する.またHIMALIS 及び HANA のシステム設計とソフトウェア実装を紹介する.HIMALIS システムを実装するに当り,機能と性能を考慮して,ユーザ空間実装とカーネル空間実装の機能分割を行う.ま たHIMALIS ノードの役割に応じてカーネルにモジュールを追加できるようにする.HANA システムの実装に 当り,プロトコルメッセージの変更・追加,及び開発時のデバッグ容易性の実現,また各種ハードウェアへの可 搬性をもたせるための設計を行う.これらのHIMALIS 及び HANA の設計・実装を,様々なネットワーク環境 に適用・応用し,各環境においてネットワークや端末の高可用化が実現できることを示す. キーワード 高可用ネットワーク,ID・ロケータ分離,ロケータ自動割振,システム設計,ソフトウェア実装

1.

ま え が き

我々は,PCやスマートフォンなど一般ユーザがも つ通信用端末が,どこにあっても通信でき,かつ通信 を継続できるネットワークの構築を目指し,ユーザ主 体,及びネットワーク主体の高可用ネットワークの研 究開発を行っている.ユーザ主体とは,端末から見た 通信可用性の向上である.様々な通信環境において, 端末にその環境のネットワークに対応できる機能をも たすことで,相手が接続するネットワーク環境に依存 せず通信と通信の継続を提供する.一方,ネットワー ク主体とは,ネットワーク自身の高可用性の提供であ 情報通信研究機構,小金井市

National Institute of Information and Communications Technology, 4–2–1 Nukui-Kitamachi, Koganei-shi, 184–8795 Japan a) E-mail: hudikaha@nict.go.jp *本論文は,システム開発・ソフトウェア開発論文である. る.ネットワークの通信障害や輻輳に備え,迂回経路 をあらかじめ用意したり,あるいは,ネットワーク設 計・設定の自動化を図り,人的ミスによる障害を取り除 いたりして,ネットワークの稼働率を高くする.例え ば,総務省が公表する事故を分析するとその約2%が 人的ミスであり,重大事故の中にはアドレス設定の誤 りが含まれる[1]. PCやスマートフォンなどの端末は,有線LAN,無 線LAN,3G回線など,複数の通信インタフェースを もち,異なるネットワーク環境に同時に接続したり, それらの環境間を移動することが一般的になっている. しかしこれらの環境をシームレスに活用できていると はいい難い.端末が複数のインタフェースを利用する 場合や,ネットワーク間を移動する場合,IPアドレス の変化により通信相手からの自身への識別が困難とな り,通信が継続できなくなる.これは現在のインター ネットではIPアドレスをホストの位置情報(ロケー

(2)

タ)だけでなくホスト識別子(ID)として利用してい ることが原因である.ここで以下の議論では,位置情 報として用いられるIPアドレスをロケータと呼ぶこ ととする.ロケータがIDとして使われていることに 起因する問題を解決する手法として,ID・ロケータ分 離思想に基づいたネットワーク技術[2], [3]が提案され ている. その中で,我々はID・ロケータ分離ネットワーク

アーキテクチャHIMALIS (Heterogeneity Inclusion Mobility Adaptation through Locator ID Separa-tion) [4]を提案し,研究開発を行っている.HIMALIS では,全てのホストが固有のIDをもち,トランスポー ト層とネットワーク層の間にIDを扱う識別層を新たに 導入することで,ホスト認証やデータセッションのハ ンドオーバを実現する.ネットワーク層として,IPv4 アドレスとIPv6アドレスに対応しており,利用する ネットワーク層のプロトコルが異なる場合でも相互通 信可能な環境を提供する. HIMALISシステムでは,ユーザ主体として, HI-MALISノードがロケータ情報に依存せず互いを識別 しながら通信する.一方で,HIMALISノード間の接 続は,ルータやスイッチ等のネットワーク層までの情 報でルーティングするネットワーク機器を用いる.そ こでネットワーク全体の可用性を高めるため,ネット ワーク主体の高可用実現について考える.

Network Service Provider (NSP)やデータセンタ などのサイト,比較的大きな規模の会社などは,ネッ トワークの耐障害性確保の為マルチホーム構成を取っ ていることがある.マルチホームは複数の上流NSP との接続をもつことで,障害時の迂回経路を確保する ものである.しかし現在のBGPプロトコル[5]をベー スとしたマルチホームでは,サイトに固有のロケータ 空間を必要とし,インターネットコア経路表増大の原 因の一つとなっている.また別のサイトからそのサイ トに向かう経路を同時には一つしか使えず,別の経路 を使うには経路が完全に切替わる必要がある. 複数のロケータ空間を活用するマルチホームを利用 して迂回経路を確保すれば,別のサイトからマルチ ホームしているサイトへの経路を同時に利用するこ とができ,障害時には即座に経路を切替えることがで きる.しかし複数ロケータを利用するマルチホーム は,サイトのグローバルロケータを利用しているネッ トワーク機器への複数のロケータ設定に加えて,上流 NSPを変更したときにそれらの機器のロケータ再割当 が必要であり,ネットワーク管理者のロケータ割振・ 設定の負担を増やすため,現在普及していない. そこで我々は複数ロケータを階層的に自動で割振・割 当する技術としてHANA (Hierarchical/Automatic Number Allocation for locators) [6], [7]を提案する.

一例ではサーバ1000台規模のネットワークにおいて, ロケータ設定の手間が約1/100となる[8].HANAは, 管理者に負担を強いずに,複数ロケータを用いたマル チホームによってネットワークの耐障害性を向上し, また管理者の設定ミスに起因するネットワーク障害 を防ぐことで,ネットワークの可用性を向上できる. 更にHANAを用いることで,ネットワーク追加時の ロケータ割当やNSP変更の際のネットワーク全体の ロケータ再割当も自動で行われ,柔軟性の高いネット ワークが構築できる. 本 論 文 で は 上 述 の 特 長 を も つHIMALISシ ス テ ム 及 び HANA シ ス テ ム を 設 計 し 実 装 す る .ま た HIMALISノードを接続するためのバックボーンネッ トワークにHANA を導入したネットワークを構築 し,HIMALIS/HANA統合ネットワークと呼ぶこと とする. HIMALISシステムの実装には,制御プレーンと データプレーンそれぞれに要求される役割と性能を考 慮する.具体的には,処理が複雑であるが高いスルー プットは要求されない制御プレーン処理部はユーザ空 間に実装し,処理は簡単であるが高いスループットが 要求されるデータプレーン処理部はカーネル空間に実 装する.またデータプレーン処理部をモジュール化し, HIMALISノードの役割に応じてカーネルにモジュー ルを追加できるようにする. HANAシステムの実装には,階層的なネットワーク を扱うことを念頭に,プロトコルメッセージの変更・追 加,及び開発時のデバッグ容易性や,各種ハードウェ アへの可搬性をもたせる設計を行う.具体的には,階 層を扱うためのサブノードと呼ぶ概念の導入や,メッ セージフォーマットをテキストとし,CLIやログと構 文を共通化する手法,プロトコル処理部とそれ以外の 部分とでプロセスを分割する手法を提案する.また, 設計したネットワークの動作検証シミュレーションや, 性能評価のためのエミュレーションを容易にする. 以下,2.では,高可用ネットワーク実現に向けた HIMALISとHANAのアーキテクチャ・プロトコル設 計について述べる.3.では,HIMALISシステムの基 本実装と評価について述べる.4.では,HANAシス

(3)

テムの基本実装について述べる.5.では,HIMALIS とHANAを適用した各種システムについて述べる. 6.はまとめである.

2.

高可用ネットワーク実現に向けたアーキ

テクチャ・プロトコル設計

本節では高可用ネットワーク実現に向けたアーキテ クチャ及びプロトコル設計について述べる.以下,多 様なネットワーク環境へ端末を対応可能とするネット ワークアーキテクチャHIMALISと,ネットワークの 可用性と柔軟性を向上させるHANAの設計概要を説 明する. 2. 1 多様なネットワーク環境へ端末を対応可能と するHIMALISの設計 2. 1. 1 HIMALISアーキテクチャの設計 [9], [10]ではHIMALISアーキテクチャを設計して おり,本節ではその概要を説明する.図1及び図2に HIMALISネットワーク構成並びにプロトコルスタッ クを示す. ネットワークは,ホストが接続するエッジネットワー クと,複数のエッジネットワークを接続するトランジッ トネットワークで構成される.各ネットワークでは, IPv4,IPv6またはその他のネットワーク層プロトコ ルが利用される.図1では,トランジットネットワー クにIPv4が利用され,エッジネットワークではIPv4 とIPv6が利用されている.これらのネットワークは ネットワーク層プロトコル変換機能をもつHIMALIS 図 1 HIMALISネットワーク構成 Fig. 1 Construction of HIMALIS network.

図 2 HIMALISプロトコルスタック Fig. 2 HIMALIS protocol stack.

ゲートウェイ(HG)で相互接続する. 各HIMALIS対応ノード(DNR,HNR,HG,ホ スト)には,ネットワーク初期接続のときに固有のホ スト名と128ビット長のIDを割り当てる仕組みを もつ.ホスト名は,ドメイン名とドメイン内で固有 の名前を「#」で接続した文字列で表現される(例: host#himalis.net).トランジットネットワークには, ホスト情報(ホスト名,ID,ロケータと公開鍵)を管

理するHost Name Registry (HNR)と,ホストのド

メイン名からホストの情報を管理するHNRの検索を

可能とするDomain Name Registry (DNR)がある. ホスト情報は,ホストが初めてネットワークに接続す るときにHNRに登録される.HNRに登録済みのロ ケータ情報は,ホストがネットワークに接続したとき にホストが更新する. 全てのHIMALISノードは,IPアドレスではなく ノード固有のID を用いて通信相手を識別する.ロ ケータの変化に依存しない通信を実現するため,トラ ンスポート層とネットワーク層の間に識別(Identity) 層を導入している.識別層はホストIDとロケータの 対応(IDテーブル)をもち,パケットを送信すると きにIDテーブルを参照して送信元・宛先ロケータを 選択可能な仕組みにしている.IDテーブルのロケー タ情報を更新することで,モビリティやマルチホーム 接続時のロケータ変化に対応する.また識別層では, HNRに登録する公開鍵情報を用いてホスト間で互い を認証する仕組みをもつ.この仕組は,公開鍵で暗号 化したメッセージが対応する秘密鍵でしか正しく復号 できない非対称鍵暗号の原理を用いている.通信開始 前にこの仕組を用いて互いを認証することにより,送 信元を詐称した攻撃を受けにくくなっている.通信前 の相互認証の後,識別層が宛先ホストに対する通信状 態の管理を行う.これをIDセッションと呼び,通信 中の経路障害を検知できる.このような識別層の仕組 みを用いることで,HIMALISで動作する通信プログ ラムに以下の機能が付与される. モビリティ,マルチホーム 異種ネットワーク層プロトコル間の通信 相互のホスト認証,パケット改ざん防止 通信障害検出・代替経路への自動切り替え 上記の機能を実現するHIMALISシステムの基本実 装については3.で述べる. 2. 1. 2 HIMALISパケットの設計 他のID・ロケータ分離技術[3]では,ホストがネッ

(4)

トワークを切替える際のロケータ変更に対応するため, IPトンネリング技術(IPSec,VPN等)を用いるも のが多い.しかしIPネットワークでの使用に限定さ れるため,将来のIP以外で構成されるネットワーク への拡張は困難である. HIMALISでは,ネットワークヘッダとトランスポー トヘッダの間にホスト識別情報を有するIDヘッダを 挟んだパケットフォーマットを用いる(図3).IDヘッ ダは,バージョン情報,制御情報の他に送信元,宛先 のホストIDを有する.IPヘッダで,既存のトランス ポートヘッダと,IDヘッダを区別するため,IANA

(Internet Assigned Numbers Authority)で未割当の

248を用いており,IPヘッダのプロトコルフィールド には,248がセットされる. 識別層でパケット転送制御を行うHGでは,IDヘッ ダの情報を参照して,ネットワークヘッダの送信元, 宛先ロケータを書き換えた上,パケット転送を行う. また,エンドツーエンドのセキュリティを改善するた めの手段として,16オクテットのセキュリティオプ ションヘッダをもつ.オプションヘッダには,シーケ ンス番号とIDヘッダ情報の署名(IDセッション開始 時に交換する共有鍵を利用)が付与される. 上記のとおり,HIMALISでは,識別層を有する HIMALISノードが,互いを識別しながら通信するこ とで,ロケータ情報に依存しない安全な通信を実現す る.一方で,HIMALISノード間の接続は,ルータや スイッチ等のネットワーク層までの情報でルーティン グするネットワーク機器を用いる.このため,ネット ワーク全体の可用性を高めるには,ネットワーク機器 の大部分を占める識別層をもたないノードに対する検 図 3 HIMALISパケットフォーマット

Fig. 3 HIMALIS packet format.

討が重要となる.本論文では,このようなノードで構 築されるネットワークに対し,後述するロケータ自動 割振機構HANAを導入し,ネットワーク全体の更な る可用性向上を図る. 2. 2 ネットワークの可用性と柔軟性を向上させる HANAの提案 以下の項目を目標にしたプロトコルとしてHANA を提案し,設計する. 複数ロケータ割振による迂回経路の確保及び ネットワークの耐障害性の向上 複数ロケータ割振によるインターネットの経路 表の削減,及び経路表削減によるネットワーク障害時 経路収束速度の向上 ロケータ自動割振によるネットワーク管理者負 担の軽減及び,人為ミスによるネットワーク障害の 防止 これらはネットワーク可用性を向上させ,柔軟な ネットワーク構築に貢献する. 以下,HANAで利用するロケータの構造を説明し た後,HANAのロケータ割振・割当方式を提案する. またロケータの動的な変化に対応するために設計した 経路制御プロトコルも併せて説明する. 2. 2. 1 ロケータの構造 HANAではロケータを上位部,中位部,下位部に分

割し,それぞれPrefix, Midfix, Suffixと呼ぶこととし,

図4に示す表記法を用いることとする.ロケータはN ビット長である.Prefix長がnビットであり,Midfix 長がm − nビットであり,Suffix長がN − mビット である.これらはそれぞれ/n, /n-m, and /m-N と 表記することとする. 2. 2. 2 HANAプロトコルの概要 図5を例にHANAプロトコルの基本方針を以下に 述べる.ただし図5は2階層の例であり,3階層以上 の具体例は[7]を参照のこと. • NSPや企業などの組織には,外部接続の有無と は無関係にHANAサーバが設置される.HANAサー バは他のHANAクライアントに対してMidfixを割 振る.Midfixは図4に示したロケータの中間部分で あり,その組織内で他のHANAクライアントがもつ 図 4 ロケータの構造

(5)

ものとは異なる固有の空間である. 最上位のNSPではHANAサーバに対して配 布可能なロケータ空間を手動で設定する.図5では, NSP1とNSP2とにそれぞれ1/8と2/8の空間が設 定されている. 最上位の組織を除くNSPや企業などの組織は Prefixを上位NSPから配布される. • HANAサーバは,上位組織に対してはHANA クライアントとなり,上位組織に要求するロケータ空 間の大きさが管理者により設定される.具体的には 図4に示すmを管理者が設定する.その結果として 上位組織からMidfixの割当を受ける. 最上位の組織を除くNSPや企業などの組織は 配布されたPrefixと割当てられたMidfixとを組合せ 新たなPrefixとし,内部及び下位の組織に配布する. HANAは機能的にはDHCPやRRv6 [11]を含み, かつそれらの機能を統合する.Midfix割振機能はロ ケータを割振るという点でDHCPに似ているが,各 階層に応じたMidfixを自動割振でき,ホストだけで はなくルータにも適用することを初めから考慮してい る点で異なる.またRRv6のようにPrefixを下流に 図 5 HANAプロトコルの概要

Fig. 5 Abstract of HANA protocol.

配布するが,その際HANAではMidfix割振状況に 応じて配布するPrefixを変化させることが異なる. 先の図5はHANAプロトコルの概要とHANAに 基いて構築されたネットワークを示している.NSP1 とNSP2はそれぞれロケータ空間1/8と2/8とを割 振られている.またそれぞれロケータ空間1.1/16と 2.2/16をPrefixとして企業ネットワークに対して割 振っている.このようにPrefix長は下の階層になるに つれて大きくなっていく. 企業ネットワークでは,Midfixが外部接続とは関 係なく割振られる.例えば図5では,一番上のルー タがHANAサーバとなり,自身も含めたルータに対 してそれぞれ0.0.1/16-24,0.0.2/16-24,0.0.3/16-24 を割振っている.末端ホストに対しては,0.0.4/16-24, 0.0.5/16-24,0.0.6/16-24を割振っている. 結果として,例えば末端ホストの一つは,Prefix (1.1/16, 2.2/16)とMidfix (0.0.4/16-24)とホストが 自身で決めるSuffix(0.0.0.1/24-32)とを結合しロケー タを生成する.Prefixが複数あるので,複数のロケー タ(1.1.4.1, 2.2.4.1)が生成されることになる. 2. 2. 3 HANAプロトコルシーケンス HANAサーバが1台,HANAクライアントが2台 で,クライアントのうち1台が中継ノードとなってい るネットワーク構成におけるプロトコルシーケンスを 図6に示す. HANAサーバS1は,自身の存在を示すMidfixoffer メッセージを設定された管理ドメイン内でフラッディ 図 6 HANAプロトコルシーケンス

(6)

ングする(注 1) . クライアントは,Midfixofferメッセージを受信する と,Midfixofferメッセージが来た方向に,Midfixreq メッセージを送信する.Midfixreqメッセージには,要 求するMidfixのビット長をパラメータとして与える. MidfixreqメッセージはMidfixofferが来たのとは逆 向きに転送され,HANAサーバに到着する.どちらが 逆向きかを判断するためには,受取ったメッセージを ノードで記憶する.図6中でR1は,クライアントで あると同時に複数のインタフェースをもつので,自身 がMidfixreqメッセージを出すとともに,Midfixoffer メッセージをHANAクライアントC1にも転送して いる.C1もMidfixofferを受信しMidfixreqメッセー ジを返信する.このMidfixreqメッセージは,R1に より転送される.上記二つのMidfixreqメッセージは パラメータとして含まれるノード名により区別される. なおノード名は管理者が設定する. サーバS1は,受信したMidfixreqメッセージそれ ぞれに対して,ロケータ空間を割振り,その割振情報 をパラメータとしてMidfixackメッセージを送信する. Midfixackメッセージは,Midfixreqメッセージの逆 向きに転送される. このように,HANAプロトコルメッセージを隣接 ノード以外に送信するには,経路上の別のHANAノー ドがいったん受信し,そのノードが転送先を決定し転 送する.つまりHANAメッセージが直接通信する相 手は隣接ノードに限られる.4. 3では通信相手が隣接 ノードに限られることを前提にモジュール設計を行う. 2. 2. 4 HQLIPプロトコルの概要 我々はHANAと協調して動作する経路制御プロ

トコルとして,Hierarchical QoS Link Information Protocol (HQLIP)を設計・実装している[12], [13]. HQLIPはOSPFと同じくリンクステート型の経路制 御プロトコルであるが,HANAによる階層的なロケー タ割当の仕組みを積極的に利用することで,階層関係 を知り,階層的な経路情報を生成するようになってい る.またHANAは容易にリナンバリングが行えるよ うに設計されているので,HQLIPではリナンバリン グ時にも経路情報収束を高速に行えるよう設計されて いる.詳細は[13]参照のこと. (注1):HANAで用いられるフラッディングでは,多くの経路制御プロ トコルで使われているものと同様に,あるインタフェースから受け取っ たメッセージを,まだそのメッセージを転送していないその他のインタ フェースに転送する.

3. HIMALIS

システムの基本実装と評価

本節では,HIMALISの基本実装について述べ,そ の性能を評価する. 3. 1 HIMALISシステムの基本実装 IDベース通信のオーバーヘッドを明らかにし,実 用性の検証を行うため,HIMALISシステムの実装を 行った.制御プレーンの柔軟性を確保しながら,デー タプレーンで高いスループットを出すため,識別層で のパケットヘッダ処理やパケット転送処理に関係する 部分はカーネル空間実装,それらを制御するシグナリ ング機能はユーザ空間実装とした. HIMALISソ フ ト ウェア は ,Ubuntu 12.04 LTS 64bitとLinuxオリジナルカーネル(Vanillaカーネ

ル)バージョン3.4.20をベースに開発した.識別層の

ヘッダ処理機能やIDテーブルの仕組みは,機能別に

三つのカーネルモジュールとして実装した(識別層の 基本機能(himalis.ko),識別層対応UDP (udpidl.ko), 識別層対応TCP (tcpidl.ko)の三つ).これらのカーネ ルモジュールは,既存のTCP/IPプロトコルスタック に干渉しないように実装しており,通常のIPv4,IPv6 によるTCP,UDP通信も同時に利用できる. IDベース通信の制御を担うシグナリング機能は,通 信オーバーヘッドの少ない識別層対応UDPを用いて 実現している.シグナリングパケットを受信したノー ドは,速やかに受信確認応答を行う.これにより,シ グナリングパケット自体の損失と複数のノードを跨る シグナリングシーケンスの遅延の区別を可能とし,応 答性を向上させた. また,識別層対応TCPによるデータ通信が不要な ノード(HG,DNR,HNR)や,組込み機器等のハード ウェア資源の少ないホストでは,tcpidl.koをunload して利用できる作りとした.また,実行速度よりも柔 軟性が求められるIDセッションの管理・制御やID ベース通信対応ユーザアプリケーション開発のインタ フェースを提供するHIMALISソケットライブラリ等 は,ユーザ空間実装とした. HIMALISホスト,HG,DNR,HNRはそれぞれ 異なる機能を提供するが,シグナリング機能や名前解 決アプリケーション,HIMALISソケットライブラリ

のAPI(以下,HIMALISソケットAPI,後述)など, 共通部分が多いため,一種類のソフトウェアとして開

発している(図7).OS起動後に,設定ファイルを指

(7)

図 7 HIMALISの実装 Fig. 7 Implementation of HIMALIS.

う端末として動作する. シグナリングアプリケーションは,識別層における セッションの生成・管理を司り,ホストのネットワー ク接続状態(例:マルチホーム,モビリティ)に基づい てIDテーブルを更新する.ロケータ通知アプリケー ションは,ネットワークインタフェースの状態を監視 し,割り当てられたロケータやハンドオーバイベント をシグナリングアプリケーションに通知する. 名前解決アプリケーションは,ホスト名から,ホス トのID,ロケータ,公開鍵を解決する機能を提供す る.また,DNR,HNRで提供する名前解決の仕組み

は,Domain Name System (DNS)をベースとしてお り,BIND 9.8.2でHIMALISシグナリングを扱える よう拡張することで実現している.DNR,HNRでは, ホストID,公開鍵情報をデータベースに格納するた め,新たにHID,PKリソースレコードを追加した. IDベース通信対応ユーザアプリケーション開発手 段として,HIMALISソケットAPI(表1)をアプリ ケーション開発者に提供している.これらの関数で は,ホストIDとポート番号を渡すために新たに定義 したsockid idl構造体(図8)を扱えるようにした. idlconn conntohost( )は,IDセッション構築を行う HIMALIS独自の機能を呼び出すために新規開発した 関数である.IDセッション構築により,モビリティや マルチホーム接続といったロケータ非依存の通信機能 がアプリケーションに付与される.そして,socket( ) でHIMALIS対応ソケットをオープンし,その他の関 数がソケットタイプに応じた動作をするよう手を加え た.HIMALISソケットAPIで従来のソケットプロ グラミングと共通の関数を提供することで,従来のソ ケットプログラミングの知識でソフトウェア開発が可 表 1 HIMALISソケット API Table 1 HIMALIS socket API. IDベース通信対応システ

ムコール

socket( ), bind( ), connect( ), sendmsg( ), recvmsg( ), getsockname( ), setsockopt( ), getsockopt( ) IDテーブル操作対応 ioctl( ) システムコール IDベース通信対応ライ ブラリ idlconn conntohost( )※新規開発, getaddrinfo( ), getnameinfo( ), inet ntop( ), inet pton( )

図 8 HIMALIS用新規アドレスファミリーの定義

Fig. 8 Definition of new address family for HI-MALIS.

図 9 システム評価環境

Fig. 9 Environment of system evaluation.

能となる. シグナリングアプリケーションは,ヘッダ処理のよ うな高速な処理は不要なため開発・デバッグの容易な ユーザ空間で実装した.パケット送受信はHIMALIS ソケットAPIを用い,シグナリングメッセージの署名 やセッション情報の管理等は可能な限り既存のライブ ラリを用いることで実現している. 3. 2 HIMALISシステムの性能評価 実装したHIMALISシステムを評価するため,図9 に示す実験ネットワークを構築した.従来のIP通信と 比較する目的で,ホスト間に2台のLinuxルータ設置 し,IDベース通信の場合はHGとして,IP通信の場 合はIPルータ,NAT,GREをセットアップし,各端 末をGigabit Ethernetで接続した.NATはiptables

コマンドを,GREはip tunnelコマンドを用いて構 築した.ルータ間は常にIPv4,ルータとホスト間は IPv4またはIPv6で接続した.HGのハードウェア仕 様は,CPUがDual-Core 2.67GHz,メモリが2GB, ネットワークインタフェースがGigabit Ethernet 2 ポートのPCである.ホストはGigabit Ethernet 1 ポートのPCである.

(8)

表 2 TCPスループットの比較 (Mbps) Table 2 Comparison of TCP throuputs (Mbps).

図 10 HG,ルータのパケット転送遅延 (µs)

Fig. 10 Packet forwarding delay in HG and router (µs). 本性能評価では,ルータでのパケット転送遅延並びに TCPスループットの比較を行った.なお,IDセッショ ン構築のシグナリングを動作させるため,DNR/HNR を図の位置に接続しているが,DNR/HNRへの通信 は,データパス構築後に発生しないため,発生する通 信オーバーヘッドは本評価に含まれない. Host1,Host2間のTCPスループットの測定結果 を表2と図10に示す.TCPスループットを評価する ため,ホスト間でiperfプログラムを実行した.このと き,TCPの最大セグメントサイズを1420バイトに設 定し,IPヘッダ,HIMALISのIDヘッダやGREト ンネルのヘッダ追加によるフラグメントが発生しない ようにした.なお,IDベース通信による評価の際は, 通常のiperfプログラムが利用できないため,iperfプ ログラムをHIMALISソケットAPIで書き換えるこ とで実施した. TCPスループットに関しては,他の方式と比べて HIMALISはわずかな低下が認められるが,各ヘッダ のオーバーヘッド(IDヘッダは40バイト)も含める と,ゲートウェイタイプがTCP/IPの場合と遜色な いレートで送受信できることを確認した(表2).一方 で,パケット転送遅延は,従来のIP通信と比べて劣 化がほとんど見られない(図10). 次に,追加実装したHIMALISのプロトコルスタッ クが通信性能に与える影響を明らかにするため,図9 と同様のネットワークでMTUサイズとTCPスルー プットの関係を調べる.Linuxルータ1台と,ホスト2 台の構築には,Quad-Core CPU 3.1 GHz,8GBメモ 図 11 MTUサイズとスループットの関係

Fig. 11 Relationship between MTU size and trouputs.

リ,Gigabit Ethernet 2ポートのPCを用いる.もう 一台のLinuxルータは,Dual-Core CPU 2.66 GHz,

4GBメモリ,Gigabit Ethernet 2ポートのPCを用い る.本実験では,MTUサイズを1500バイトから500 バイトまで,200バイトずつ減少させたときのTCP スループットを測定する.本実験はIPv4のみで実施 した.スループット測定には表3の比較で用いたもの と同じiperfプログラムを用いる. 図11に比較結果を示す.TCP/IP及びHIMALIS (Actual)は,それぞれTCP/IP,HIMALISでのiperf

によるTCPスループットを示している.HIMALIS

(Ideal)は,計測したTCP/IP通信のスループットか ら,HIMALISの通信オーバーヘッド(40バイトの

IDヘッダー)分を引いて計算した理想的な値である.

HIMALIS (Actual)とHIMALIS (Ideal)との差はほ

とんどなく,実装したID層の処理オーバーヘッドは 無視できるほど小さいことが分かる. 以上の結果より,HIMALISは従来のTCP/IP通信 と同程度のパケット処理性能を実現できることを確認 した.モビリティ性能については[10]を参照のこと.

4. HANA

システムの基本実装

以下の点を考慮して,HANAソフトウェアの基本 実装を行う. プロトコルメッセージの変更・追加,及び開発 時のデバッグが容易であること 階層的なネットワークを扱えること 実ネットワークへの展開を容易にするため,様々 なハードウェアに対応可能な構造をもつこと 設計したネットワークの動作検証シミュレーショ ンや,性能評価のためのエミュレーションを容易にす ること 以下の節では各項目について説明する.

(9)

4. 1 HANAプロトコルメッセージの設計 一般にプロトコルメッセージを設計する場合には, 以下のような項目で指針の選択が必要となる. ソフトステート,ハードステートの選択 バイナリ,テキストの選択 コネクション型,コネクションレス(データグ ラム)型の選択

HANAでは,Midfixを割振及びPrefixの配布は,

HANAサーバの役割である.HANAサーバの障害や HANAサーバへの経路の切断によってメッセージが 届かなくなった場合は,HANAクライアントは割振 りを受けたロケータを削除するのが適当と考えた.ま た2. 2. 3で示したように,あるメッセージの逆向き に別のメッセージを送るために,メッセージを一定期 間途中経路のノードが記憶しておく必要がある. 以上の理由によりHANAではソフトステート方式 を選択する.例えばHANAクライアントはMidfixreq メッセージをHANAサーバに向けて送信し,HANA サーバが割振るロケータ空間を確保しMidfixackメッ セージを返信するが,割振った後でも定期的にこのや り取りを繰り返すことで,割振り状況を維持する.ま た途中経路のノードも,Midfixreqメッセージを一定 期間覚えておくことで,Midfixackメッセージの送信 方向を決めることができる.ソフトステート方式によ り,HANAクライアントは,HANAサーバが明示的 にロケータ割振の削除をしなくても,HANAサーバ との通信が跡絶えた段階で保持している割振を削除す る.一般にネットワークプロトコルではプロトコルが 正しく設計されている場合でも,実装の不具合等で削 除すべき情報が残ってしまうことがあるが,HANAで はメッセージ交換をソフトステート方式とすることで 情報が残ってしまう事態を回避できる. HANAの実装にあたっては,メッセージフォーマッ トにテキストを利用する.これはテキストデータでの メッセージ交換は,サイズが大きくなるという欠点が あるが,ログ確認やデバッグが容易という利点がある ためである. コネクションタイプは,フォーマットをテキストに したので,コネクション型,すなわちTCPを利用す る.TCPを利用することでメッセージサイズが大き くなっても,データグラムサイズを意識したフラグメ ント処理等が不要となる. テキストでのパラメータのやり取りでは,各ノード でメッセージ構文解析及び構文に従ったメッセージ作 図 12 HANAメッセージの BNF 表記(一部抜粋)

Fig. 12 BNF expression of HANA messages (ex-cerpt).

図 13 TCPコネクション中に流れるテキストメッセージ

Fig. 13 Text message transmitted in TCP connec-tion. 成が必要となる.構文解析部は,Haskell言語により C言語の構文解析・作成コードを生成させる. 図12は,HANAメッセージのBNF表記である. 純粋なBNFではなく,後にCのコードを生成する たための特殊な意味をもつTagNamingと呼ぶキー

ワードやunsinged intを意味するunitといった型が 記述されている.ここではタグの詳細説明は割愛する. Haskellで書かれたコードは図12のBNFから,C言 語で記述されたメッセージの構文解析・作成コードを 生成する.その結果,HANAプロトコルメッセージ はTCPコネクションの中を図13に示す形式で送受 信される. 4. 2 階層を扱うためのサブノードの設計と実装 HANAは階層を意識したロケータ割振プロトコル であることを意識し,ノード内の動作の最小単位とし て「サブノード」と呼ぶ概念を提案する.ノード内に は複数のサブノードが定義され,各サブノードにはイ ンターフェースが一つ,または複数対応付けられる. サブノードの構成例を図14に示す.図14は図6の ネットワーク構成に,上流HANAノード二つを加え たものである.Sと書かれたサブノードはHANAサー バとして動作し,Cと書かれたサブノードはHANA クライアントとして動作する. HANAサーバは,上流に対してはHANAクライ アントとなる.よって下流インタフェースに対しては サーバの動作をするサブノードが定義され,上流イン タフェースに対してはクライアントの動作をするサブ ノードが定義される.途中のルータはメッセージを中 継するがHANAクライアントでもある.HANAクラ

(10)

図 14 サブノードの接続 Fig. 14 Connection of subnodes.

イントR1とC1には,二つともクライアントの動作 をするサブノードが一つ定義され,そのサブノードが 全てのインタフェースを操作する.R1はHANAプ ロトコルメッセージも中継するが,この機能は全ての HANAクラアントの動作をするサブノードに共通の もので,C1はインタフェースを一つしかもたないの で中継動作をしないだけである. 図14中のHANAサーバの動作を規定するCLI例 を図15 に示す(行末の「\」は次の行にも継続する ことを意味する).serverという名前をもつノードは,

server-upper1とserver-upper2,server-lowerの三つ のサブノードから構成される.そのうち,サブノー ドserver-upper1は10000番のsubnodeclassと呼ぶ 定義を参照している.10000番のsubnodeclassでは, どのようなmidfixreqメッセージを送信するかが,ま たインタフェースはeth0を制御していることが記述 されている.図15のmidfixreq以降の構文は,図13 のmidfixreq以降の構文と同じとなっている.図15 のCLIの構文解析も,メッセージフォーマットの構文 解析と同じく,Haskellで処理されたC言語の構文解 析コードにより実行される. なお実際には,subnodeclassにはmidfixofferメッ セージなど,全てのメッセージの定義が記述される. また図14中のHANAサーバは最上位階層ではない ので,具体的なロケータの値を記述しない. サブノードの定義は複雑に見えるかもしれないが, 同じ階層に属し,上流と下流のインタフェースの接続 関係が同じであれば,ノード名とそのノード名を冠し たサブノード名を除いて,同じ設定でよい.よって典 図 15 サブノードの定義例

Fig. 15 Examples of subnode definition.

型的なネットワーク構築例を用意しておけば,ネット ワーク構築時に毎回新しく用意する必要はない.

以上述べたように,サブノードの概念を導入した ことで,階層的な動作の記述・実現,またデバッグが 容易となる.またHANAのCLIとHANAパケット フォーマット,更にログメッセージも共通のテキスト形 式としBNF表記で記述することで,メッージやCLI, ログの変更・追加を容易なものとしている. 4. 3 HANAソフトウェアのモジュール設計 HANAノードは基本的に隣接ノードとしか通信を しない点と,メッセージフォーマットをテキストとし たことを念頭にHANAソフトウェアのモジュール設 計をする.モジュールとしては以下の三つの機能に切 り分け,それぞれを別々のプロセスとした(図16). プロトコルを処理する中核機能(hanad) 隣接ノードの発見機能(hanapeerd) カーネルの物理インタフェースのロケータ情報 と経路情報を書き込む機能(hanaroute) これらのプロセスをまとめてHANAプロセス群と 呼ぶ.これらのプロセスは,HANAサーバかHANA クライアントかに関係なく,実ネットワーク環境で稼 動するHANAノード全てに基本的に導入される. これらのプロセス群をPC/Linux (Ubuntu 10.04 LTS)上に実装した.PC/Linuxにおいてこれらのプ ロセスを稼動させることでHANAプロトコルによ るロケータの自動設定が可能となる.複数のインタ フェースをもつPCはルータとして動作させる.その さい,リンクステート型の経路制御プロトコルとし て,HANAの階層関係を活用するHQLIPプロトコ ル(2. 2. 4参照)を利用する. ロケータ空間は64bitまで対応できるように設計 してある.これはInterface ID部を除いたIPv6の Prefixと同じビット数である.

(11)

図 16 PC/Linux上の HANA プロセス群 Fig. 16 HANA processes on PC/Linux.

以下,各プロセスについて説明する. 4. 3. 1 hanad hanad は プ ロ セ ス 群 の 中 心 と な る プ ロ セ ス で あ り,HANA プ ロ ト コ ル だ け を 動 か す こ と と , HANA/HQLIPの 両方の プ ロ ト コ ル を 動 か す こ と ができる.hanadは他のノード中のhanadプロセス とコネクションを確立し,HANA及びHQLIPプロ トコルメッセージを交換する.管理者はhanadに tel-net等でコネクションを確立し,hanadに用意された

Command Line Interface (CLI)により操作及び情報

の取得をすることができる.このCLIは他のプロセス も利用しており,それらのプロセスは,hanadにTCP 接続し操作及び情報の取得を行う. hanadのCLIは4. 2で述べたノードやサブノード を定義するコマンドや,ログの形式を定義するコマン ドなどで構成される. 4. 3. 2 hanapeerd hanapeerdはIPv6リンクローカルマルチキャスト を用いて,同じL2ネットワーク上に存在する隣接ノー ドを発見する.続いてhanapeerdはhanadとノード 内でTCP接続し,CLIを用いて,hanadが隣接ノー ドのhanadとTCPコネクションを確立するコマンド を実行する.これにより隣接hanad同士がTCPコ ネクションを確立する.IPv6のリンクローカルアド レスはDHCPや手動設定なしで通信に利用できるた め,HANAによるロケータ割振・割当が行われる前に hanad同士のコネクションを確立できる. 4. 3. 3 hanaroute

hanarouteは,hanadのCLIを用いてhanadのロ ケータや経路に関する情報を受取り,カーネルに反 映させる.具体的には,インタフェースのロケータ設 定や,経路表の次ホップ情報などである.hanadと hanarouteとを分けていることで,HANAの基本的な 機能を実現するhanadの変更なしに,HANAを様々 なOS環境に適応させることが可能となっている.

5. HIMALIS

HANA

の適用

HIMALISとHANAの適用例を,これまで述べて きた設計と基本実装の適用,及び,それらの応用の観 点から紹介する. 5. 1 階層型広域HANAネットワーク環境構築 広域ネットワークテストベッドJGN-X [14]では,市 販のルータを利用して,仮想ルータ(Virtual Router, VR)を提供している.我々は,JGN-X上のVR 10台, 及び実験室のPCやPC内で起動する仮想マシン (Vir-tual Machine, VM)を用いて,200台規模のHANA

広域ネットワークを構築し運用している(図17).PC 及びVMには上述のHANAプロセス群がそのまま導 入され,それぞれ,HANA対応のPCルータや各種 サーバとして稼動している.コアルータとなるVRは, HANAソフトウェアが機能ごとにプロセスで分割さ れていることを利用して,HANAプロトコル処理は, 別PCで行っている(詳しくは後述). JGN-X上にHANAで構築したネットワークのコ ア部分は,HIMALISのトランジットネットワークと しても利用される.エッジに当る拠点ネットワークは HIMALISのエッジネットワークとしても利用され, 全国5箇所に分散配置されている.図17ではそのうち の3拠点を示している.図17中のコアネットワーク, データセンタネットワーク及びHIMALIS/HANA統 合ネットワークについて説明する. 5. 1. 1 コアネットワーク コアネットワークを構成するVRはJGN-Xより10 台提供されており,実際の設置場所は日本中に分散し ている. 我々が直接hanadをVR上に実装して起動するの は,VRの利用制限によりできなかったので,外部の PCでhanadを起動し,VRのCLIを用いて制御する こととした.このために対象となるVRのOSのCLI に対応するようにhanarouteに修正を施した[15]. HANAプロセス群は,利用するポート番号を変更す れば1台のPC上で複数組起動することが可能なので, 全10台のVR用のHANAプロセス群は全て1台の PC上で起動している(図18).各hanadはVR制御 用のVLANを用いてVRに接続し,CLIによりインタ フェースのロケータ設定や経路情報を投入する.図18

(12)

図 17 JGN-Xをバックボーンとした 200 台規模ネットワーク Fig. 17 Network of 200 nodes on JGN-X backbone.

図 18 Virtual Router (VR)の構成 Fig. 18 Construction of Virtual routers (VRs).

中のL2スイッチには下流のHANAノードが接続され

る.下流のHANAノード中のhanadはHANAサー バ内のhanadのうちの一つとHANA/HQLIPメッ セージを交換する.一方,上流とのデータの送受信は, VRに向かうことになる.このようにして,実質的に VRをHANA/HQLIPプロトコルに対応した状態と して運用できるようにした.本実装も,HANAのモ ジュール分割により容易に実現できた. JGN-X上の各VRには図18で示すようにロケー タ空間が設定されている.ロケータに関わる設定はこ れのみであり,下流のロケータ空間及びVRも含む全 てのインタフェースアドレスは,全て階層的に自動で 設定される. 既に述べたようにHANAはロケータのリナンバリ ングも容易に行えるよう設計されている.例えば図17 中のミニデータセンタ上流の東京側VRのロケータ空 間を別の空間に変更した場合,ミニデータセンタの末 端のVMにPrefix変更の情報が5秒程で伝わり,30 秒程で経路情報も含めて安定する.この間,大阪側 VRから割当てられているPrefixは変更されていない ので,そのPrefixから生成されるロケータを利用した 通信は影響を受けない. 5. 1. 2 データセンタネットワーク データセンタは,HTTPサーバとなるVM 200台 で構築されており,二つのPCルータ,GW1とGW2 により外部と接続されている.それぞれの外部接続 ルータは異なるVRと接続されており,異なるロケー タ空間,10.2.1/24と10.3.1/24とを割振られている. 内部の各VMには二つのロケータが割当てられる.例 えば図17中では,1台のVMに10.2.1.6と10.3.1.6 とが割当てられている.このVMには外部からこの 二つのロケータによってアクセスが可能となり,各ロ ケータに対応する経路は,東京のVRとGW1を通る

(13)

経路と大阪のVRとGW2を通る経路とになる. 5. 1. 3 HIMALIS/HANA統合ネットワーク HIMALISノードを接続するためのバックボーンネッ トワークにHANAを導入したHIMALIS/HANA統 合ネットワークにおいては,HANAによりネットワー ク全体のロケータ割当てが階層的に行われ,HIMALIS により端末が利用するロケータを決定する. 図17に示すように,HIMALIS/HANA統合ネット ワークは,異なる二つのルータ,仙台のVRと大阪の VRに接続され,それぞれ10.1.2/24と10.3.2/24とを HANAにより割当てられる.DNR1∼2及びHNR1∼ 2はそれぞれ図17に示されたロケータが割当てられて いる.HIMALISホストが接続されるHIMALISエッ ジネットワークは,HG1∼3により上流とは無関係の ロケータが割振られる.これは,HANAでは,上流 から割振られたロケータの一部,若しくは独自に設定 されたロケータ,若しくはその両方を下流に割振るこ とが可能であることを利用している.HIMALISホス トは,例えば,172.16.1.4と2002:db8:1::4のIPv4と IPv6の二つのロケータを異なるインターフェースに 割当てられる. HIMALIS/HANA統合ネットワークでは上流への 経路の障害が発生すると,HANAにより即座に,そ の上流から割振られたロケータが利用できないことが, 下流に通知される.その情報を契機にHIMALISノー ドが通信に用いるロケータ情報を更新し,即座に通信 障害を回避する. 5. 2 IDベース通信対応ミドルウェア HIMALISソケットAPI(表1)を用いてソースコー ドを書き換えることで,既存の有用なアプリケーショ ンをIDベース通信対応させることが可能である.し かしながら,膨大な数のアプリケーションソースコー ドを書き換え,その一つ一つを保守するのは非常に困 難である.HIMALIS環境に最適なアプリケーション 実装を目的とする場合は,HIMALISソケットAPIを 用いた開発が推奨されるが,最適化が必ずしも必要で ない場合や,手軽にIDベース通信対応させてみたい 場合はより簡単な手段が望まれる.そこで,我々は, ソースコードの書き換えをせず既存アプリケーション のIDベース通信対応を可能とするミドルウェアを開 発した. Linuxでは,アプリケーション起動時にソケットラ イブラリが読み込まれる.この原理を利用して,ミド ルウェアは起動時に読み込まれるソケットライブラリ 図 19 HIMALISミドルウェア Fig. 19 HIMALIS middleware.

をHIMALIS対応版に置き換える(図 19).そして, ミドルウェアが,関数に渡される情報の相互変換(例: 宛先ホストのIPアドレス <=> 宛先ホストのID) を行うことで,既存のアプリケーションがIDベース 通信に対応できるようにしている.我々は,本ミドル ウェアを用いて既存のWebサーバやストリーミング サーバアプリケーションが,ソースコードの書き換え なしにIDベース通信対応できることを実証した[16]. 5. 3 モバイルセンサ収容HIMALISネットワーク ネットワーク層プロトコルに依存しない移動通信と セキュリティを実現するIDベース通信技術は,将来 のモノのインターネット技術,マシンツーマシン通信 を利用した人間中心サービス[17] への利用が期待さ れる. 我々は,センサデバイスをもち,センサネットワーク に接続する組込み無線端末(モバイルセンサ,または MS)と,センサネットワークとエッジネットワークを 接続し,MSの通信を中継する小型無線端末(モバイル ゲートウェイ,またはMG)を開発した.MSとMGは それぞれRaspberry Pi model BとAndroidタブレッ トをベースとし,各OS(MSはRasbian 3.2.27,MG はAndroid OS 4.2.2)に,3. 1で述べたHIMALIS カーネルモジュールのうち,識別層の基本機能 (hi-malis.ko)と識別層対応UDP(udpidl.ko)を組み込ん だ.なお,識別層でTCPを利用しないため,識別層 対応TCP(tcpidl.ko)は組み込まなかった.これらの 実装により,管理者やサービスが,ネットワークを介 してMS,MGを検索,通信することが可能となった (実装の詳細は[18]を参照のこと).図20にMS,MG を用いたアプリケーション例を示す. HIMALISネットワークに,MSとシンク,MGが 接続しており,それぞれにIDベース通信機能が実装さ れている.MSには4種類の環境センサ(温度,湿度, 気圧,照度)があり,センシングデータをシンクへ送信 する.MSは,省電力無線通信方式である6LoWPAN

(14)

図 20 IDベース通信を用いたモバイルセンサの遠隔制御 Fig. 20 Mobile sensor remote control using ID-based

communication. を用いてMGと通信する.MGは,HGと同様のプ ロトコル変換機能をもち,センサデータ送受信を仲 介する.シンクでは,MSから送られるセンサデータ を蓄積する従来の機能の他に,IDベース通信により, MSの検索と直接通信が可能となっている.これによ り,配置後のセンサに対して,アップロードするセン サデータの種類やデータ取得間隔などを必要に応じて 再設定可能になっている. 5. 4 そ の 他 その他のHIMALISシステム及びHANAシステム の応用について簡単に述べる. 5. 4. 1 HANA L3スイッチの実装 我々は,HANAをL3スイッチとしては最も普及し ている規模のハードウェア機器に組み込んだ[8].実験 用PC上でのソフトウェアでは8ポート×各2Gbps の性能だったが,ハードウェア化により48ポート× 各10Gbpsの性能でHANAが利用できる(図21). ハードウェアL3スイッチへのHANAの移植に際し て,前述のhanarouteのソースコードを,ハードウェ アL3スイッチのOSであるZebOS/Linuxに対応す るように修正を施した.hanadやhanapeerdのソー スコードは改変を必要とせず,CPUやOS環境に応 じたコンパイルのみで対応させることができた. 5. 4. 2 HANA/SDN連携システム

Software Defined Networking (SDN)は通信の制

御方法をソフトウェアで定義することで,SDNコント ローラによりネットワーク全体の機器の集中制御を可 能とし,柔軟なネットワークを構築する.SDNネット ワーク構築にHANAを利用することで,ロケータ設 計・割当を自動化し,保全管理表も同時に自動作成す 図 21 実装した HANA 対応 L3 スイッチ Fig. 21 Implementation of HANA-supported L3

switch.

るHANA/SDN連携システムを設計・実装した[19].

HANA/SDN連携システム上において,SDNコント ローラは,hanadのCLIを利用してHANAで自動

割当されたロケータ情報を知り,OpenFlowインタ フェースを利用してフローの制御等を行う. 従来までは,ネットワーク管理者がロケータ割当情 報を設計し,保全管理表を作り,機器に割当てていた が,本システムではHANAがロケータを自動で割当 て,保全管理表を作り管理者に提供する.これにより 管理者の負担が軽減され,またロケータ設定に関わる 人的ミスも防ぐ. 5. 4. 3 インターネット規模HANAエミュレーシ ョン HANAプロトコルはインターネット規模でも動 くことを想定して設計している.[7] では10,000規 模のHANAノードが階層的に接続されている場合 に,HANAプロトコルが正しく動作し,ノード間 で正しくロケータの割振と割当てが行えることを, StarBED [20]と呼ばれる大規模エミュレーション環 境を用いて検証した.トポロジーは実際のASトポロ ジーから1万ASを抜出したものを利用している.AS のトポロジーは,CAIDA [21]で提供される,実際に 計測したものをデータ化したデータを利用している. 現在CAIDAのデータを利用して約46000個(2014 年12月時点での観測ASの総数)のASでのエミュ レーション実験を行っている.トポロジーから上下関 係があるところだけを抜き出し,HANAによるロケー タ割当てが正常に動作することを確認する.このエ ミュレーションでは,HANAが複数プロセスに分割 されていることを利用し,プロトコル検証に必要な hanadだけを起動する.

(15)

表 3 1台で利用するためのハードウェアスペック Table 3 Hardware specs for standalone environment.

最小スペック 推奨スペック

CPU Intel Core2 Duo 2.0GHz 4 cores/8 threads以上 または同等(KVM対応) (KVM対応)

メモリ 8GB 16GB以上

HDD 150GB 300GB以上

NIC GbE x 1 GbE x 3

5. 4. 4 1台のノートPC上でのHIMALISネット ワーク環境の構築 HIMALISのIDベース通信を利用したアプリケー ションの開発・実験には,複数のHIMALIS対応機器 を用意しネットワークに配置する必要がある.これは HIMALIS対応アプリケーションを新規に開発しよう とするユーザにとっては,手間のかかる作業である. そこで,HIMALISネットワークの最小構成をKVM を用いて1台のノートPC上で動作するスタンドアロ ン環境の構築を行い,インストールメディアを用意し た[22].ノートPCでも動作するようネットワーク構成 を最適化している.複数の機器でネットワークを構築 せずとも,手持ちのPC上に構築し,HIMALISソケッ トAPIを用いてアプリケーションの開発やHIMALIS の高度化開発ができるようになる.必要なハードウェ アスペックは,表3である.

6.

む す び

本論文では,高可用ネットワークを実現するため, 端末が様々ネットワーク環境に適応して接続し,利用 するネットワーク環境を変更しても通信を継続できる, ユーザ主体の高可用性を実現するHIMALISアーキテ クチャについて述べた.またネットワークの耐障害性 の向上,設計・設定の自動化を図り人的ミスによる障 害を取り除く,ネットワーク主体の高可用性を実現す るHANAのシステム設計及びソフトウェア実装につ いて述べた. HIMALISシステムを実装するに当り,制御プレー ン処理部はユーザ空間に実装し,データプレーン処理 部はカーネル空間に実装することで,複雑なシグナリ ング処理と高速なデータ転送を実現した.またデータ プレーン処理部をモジュール化し,HIMALISノード の役割に応じてカーネルにモジュールを追加できるよ うにした. HANAシステムの実装に当り,階層を扱うためのサ ブノードの概念の導入した.またプロトコルメッセー ジの変更・追加,及び開発時のデバッグ容易性を実現 するため,メッセージフォーマットとテキストとし, CLIやログと構文を共通化する手法を提案した.更に 各種ハードウェアへの可搬性をもたせるため,プロト コル処理部とそれ以外の部分とでプロセスを分割する 設計とした. これらのHIMALISとHANAの設計・実装を,様々 な環境に適用・応用した.具体的には,HANAによ る広域ネットワーク及びHIMALIS/HANA統合ネッ トワーク,モバイルセンサを収容HIMALISネット ワークの構築,IDベース通信対応ミドルウェアの提 供,HANA L3スイッチの実装,HANA/SDN連携 システムの実装などである.将来の拡張性を考慮し HIMALISシステム及びHANAシステムを設計・実 装したことで,様々な適用・応用例に対してネットワー ク及び端末の高可用化を実現できた. 今後は,これまで設計・実装してきた高可用性ネット ワークシステムの社会展開を推進していく.HIMALIS ソフトウェアは,通信中の端末移動を伴うアプリケー ション開発・運用基盤として,既に幾つかの教育・研 究機関への提供を行っている.これらの機関と連携 し,IDベース通信の特性を活かしたアプリケーショ ン開発を行うとともに,テストベッドを構築し,イン ターネットへの展開を図る.またHANAの各種ネッ トワークにおける運用経験を活かして,HANAによ る構内網や広域網,及びHANA/SDN連携システム を組織ネットワークやNSPの実ネットワークへ展開 していく. 謝辞 本研究を進めるに当り,高可用ネットワーク の研究開発をともに実施し,有益な助言をいただいた 国立研究開発法人情報通信研究機構の原井洋明氏,ベ ドカフレ氏に深く感謝致します.また,本ソフトウェ アの設計・開発に当り,ご助言頂きました同機構の戸 室知二氏と小針康永氏,並びにご協力頂きました株式 会社トランス・ニュー・テクノロジー様,株式会社ビッ トマイスター様に深く感謝致します. 文 献 [1] 総 務 省 ,“電 気 通 信 サ ー ビ ス の 事 故 発 生 状 況( 平 成 25 年 度 ),” http://www.soumu.go.jp/menu news/s-news/01kiban05 02000072.html, Sept. 2014. [2] D. Farinacci, V. Fuller, D. Meyer, and D. Lewis,

“Locator/ID separation protocol (LISP),” RFC 6830, January 2013.

[3] R. Moskowitz, T. Heer, P. Jokela, and T. Henderson, “Host identity protocol version 2 (HIPv2),” RFC

(16)

7401, April 2015.

[4] V.P. Kafle and M. Inoue, “HIMALIS : Heterogeneity inclusion and mobility adaptation through locator ID separation in new generation network,” IEICE Trans. Commun., vol.E93-B, no.3, pp.478–489, March 2010. [5] Y. Rekhter, T. Li, and S. Hores, “A border gateway

protocol 4 (bgp-4),” RFC 4271, Jan. 2006.

[6] K. Fujikawa, H. Harai, and M. Ohta, “The basic procedures of hierarchical automatic locator num-ber allocation protocol HANA,” Asia Workshop on Future Internet Technologies (AWFIT2011), pp.124– 131, Nov. 2011.

[7] K. Fujikawa, H. Tazaki, and H. Harai, “Inter-AS lo-cator allocation of hierarchical automatic number al-location in a 10,000-AS network,” 2012 IEEE/IPSJ 12th International Symposium on Applications and the Internet (SAINT2012), pp.68–73, July 2012.

[8] 藤川賢治,原井洋明,“ロケータ番号自動割振プロトコ

ル HANA の L3 スイッチへの実装,” 信学技報,NS2014-123, Oct. 2014.

[9] V.P. Kafle, R. Li, D. Inoue, and H. Harai, “Design and implementation of security for HIMALIS archi-tecture of future networks,” IEICE Trans. Inf. & Syst., vol.E96-D, no.2, pp.226–237, Feb. 2013. [10] V.P. Kafle, Y. Fukushima, and H. Harai, “ID/Locator

split-based distributed mobility management mecha-nism,” Wirel. Pers. Commun., vol.76, no.4, pp.693– 712, June 2014.

[11] M. Crawford, “Router renumbering for IPv6,” RFC 2894, Aug. 2000.

[12] 藤川賢治,太田昌孝,“階層化経路制御プロトコルの為の

階層的なロケータ番号自動割振プロトコル HANA の拡 張,”信学技報,IA2011-7, June 2011.

[13] K. Fujikawa, M. Ohmori, and H. Harai, “Stable renumbering in link-state routing protocol network,” IEICE Technical Report, IA2014-44, Nov. 2014. [14] JGN–X http://www.jgn.nict.go.jp/ [15] 藤川賢治,小針康永,原井洋明,“階層的なロケータ番号 自動割振プロトコル HANA による広域ネットワーク及 びミニデータセンタの構築,”信学技報,IA2012-1, June 2012. [16] 福島裕介,ベド カフレ,原井洋明,“既存ソケットアプリ ケーションを ID ベース通信可能とするミドルウェアの実 装と評価,”信学技報,IN2013-205, Oct. 2013. [17] M. Srivastava, T. Abdelzaher, and B. Szymanski,

“Human-centric sensing,” Philosophical Transactions of the Royal Society A, no.1958, pp.176–197, 2012. [18] V.P. Kafle, Y. Fukushima, and H. Harai, “Design

and implementation of dynamic mobile sensor net-work platform for ID-based communication,” IEEE Commun. Mag. – Communications Standards Sup-plement, no.3, pp.48–57, March 2015.

[19] 藤川賢治,原井洋明,“アドレス自動割振機構 HANA の

SDNへの適用,”電子情報通信学会 NV 時限研専第 15 回 研究会,July 2015.

[20] T. Miyachi, K. Chinen, and Y. Shinoda, “StarBED and SpringOS: large-scale general purpose network testbed and supporting software,” Proc. 1st In-ternational Conference on Performance Evaluation Methodolgies and Tools, pp.43–58, Oct. 2006. [21] CAIDA http://www.caida.org/home/.

[22] V.P. Kafle, Y. Fukushima, T. Tomuro, H. Abe, and H. Harai, “HIMALIS experiment networks — for re-search on ID-based communication in heterogeneous mobile networks,” IEICE Society Conference, vol.BS-6-20, Sept. 2015. (平成 27 年 10 月 2 日受付,12 月 7 日再受付) 藤川 賢治 (正員) 1995年京都大学大学院工学研究科修士 課程情報工学専攻修了.1997 年同大学院 博士後期課程情報工学専攻退学.博士(情 報学).1997 年同大学院助手,2006 年ルー ト株式会社主任研究員を経て,2008 年,独 立行政法人情報通信研究機構に入所し,新 世代ネットワークアーキテクチャに関する研究に従事.電子情 報通信学会,情報処理学会,IEEE 各会員. 福島 裕介 (正員) 2006年東北大学大学院修士課程修了. 2009年同大学博士課程修了.博士(情報 科学).同大学情報科学研究科助教(2010 年),上智大学理工学部特別研究員(2011∼ 2012年)を経て,2012 年独立行政法人情 報通信研究機構入所し,ネットワークアー キテクチャの設計・開発に従事.電子情報通信学会,ACM 各 会員.

図 2 HIMALIS プロトコルスタック Fig. 2 HIMALIS protocol stack.
図 8 HIMALIS 用新規アドレスファミリーの定義 Fig. 8 Definition of new address family for
表 2 TCP スループットの比較 (Mbps) Table 2 Comparison of TCP throuputs (Mbps).
図 14 サブノードの接続 Fig. 14 Connection of subnodes.
+5

参照

関連したドキュメント

歌雄は、 等曲を国民に普及させるため、 1908年にヴァイオリン合奏用の 箪曲五線譜を刊行し、 自らが役員を務める「当道音楽会」において、

Generative Design for Revit は、Generative Design を実現するために Revit 2021 から搭 載された機能です。このエンジンは、Dynamo for

HDMI 3 eARC/ARC(Enhanced Audio Return Channel/Audio Return Channel). eARC/ARCに対応したオーディオシステムと接続

BC107 は、電源を入れて自動的に GPS 信号を受信します。GPS

As a module itself may be defined as an alias or a composition of other modules using paths, it might happen that module definitions end up being mutually dependent. The question is

Keywords: Traceability Conjecture, Path Partition Conjecture, oriented graph, generalized tournament, traceable, k-traceable, longest path.. ∗ Supported by NRF

(4S) Package ID Vendor ID and packing list number (K) Transit ID Customer's purchase order number (P) Customer Prod ID Customer Part Number. (1P)

本手順書は複数拠点をアグレッシブモードの IPsec-VPN を用いて FortiGate を VPN