政策・メディア研究科 修士2年 村井研究室 湧川隆次
2000年度森基金報告書
89932465 ryuji@sfc.wide.ad.jp
研究課題 「移動体計算機環境における通信資源制御に関するシステムの研究」研究テーマ モバイルアプリケーション毎に最適な通信資源を割り当てる
研究課題
現在、移動体計算機がインターネットに接続する上での制約として通信帯域、 遅延、課金、不安定等がある。通信アプリケーションは、これら通信の制約の 影響を受ける事になる。しかし、現在の計算機システムでは動的に変わる通信 資源をアプリケーションが要求を行い、最適に再割当するような機構は無い。 本研究では、アプリケーションが最適な通信資源確保のためのAPI及び動的な 通信資源割当機構を設計、実装する。
通信資源割り当て機構であるMIBsocketをFreeBSD上に実装しシステムの有効性 を示した。また、MIBsocketを用いて通信資源をアプリケーションに対して動 的に割り当てることが可能となり、また複数インタフェースを動的に切り替え て通信の継続を行う事により継続的な通信資源の確保を実現した。
1. 活動概要
2. インターネットカーにおける活動 2. 構築したインターネットカー通信インフラ
- システム概要 MIBsocketではネットワークエンティティの状態管理を実現するため以下の5つ の機能を提供する.
- ネットワークエンティティの状態取得機能
- ネットワークエンティティの設定機能
- ネットワークエンティティの状態変化通知機能
- ネットワークエンティティへのアクセス制御機能
- 必要なネットワークエンティティの情報フィルタリング機能
- 特徴 ネットワークソフトウェアは, MIBsocketを用いることによりネットワークエ ンティティの状態を管理でき, 状態変化に対応した動作が可能になる. 例えば, DHCPはネットワークインタフェースのリンク状態が有効になるとIPアドレスの 取得要求を送信し, リンク状態が無効になるとリリース要求でIPアドレスを開 放できる. また, MIBsocketを用いることにより複数のネットワークソフトウェアを統合 して動作させることが可能になる. インタフェース切替え機構が, DHCPのアド レス取得のイベントをトリガーにしてインタフェースの選択, 切替えの動作を することが可能になる. MIBsocketをネットワークエンティティとネットワー クソフトウェアのインタフェースとすることにより, ネットワークソフトウェ アは互いにネットワークエンティティへのアクセス状況を知ることができるか らである.
- 設計 MIBsocketは, ネットワークエンティティの状態を取得, 設定, 状態変化の通 知が行える必要がある. アプローチとしてShared memory, ポーリング, メッセージ交換の3つの方法が考えられる. MIBsocketでは, メッセージ交換を 採用する. メッセージ交換は, ネットワークエンティティの設定を要求メッセー ジの送信で行うため到着順に処理され, 競合が起きにくいなどの特徴がある. 図は, MIBsocketの概念である. ネットワークソフトウェアはネッ トワークエンティティの操作を, MIBsocketへの要求メッセージを用いて行う. MIBsocketは要求に対する回答として応答メッセージをネットワークソフトウェ アに返す. 要求に対する処理が失敗した場合はエラー番号が返る. また, ネッ トワークエンティティの状態変化の通知はトラップメッセージとして MIBsocketからネットワークソフトウェアに通知される. これらの処理を1つの MIBsocketで行うため, 3つのモードACTIVE, PROACTIVE, REACTIVEを定義した. それぞれ設定, 取得, トラップを意味する. その他にも, ネットワークソフト ウェアは必要な情報のみを受け取るため, MIBsocketにフィルタリングを設定 することができる. またネットワークソフトウェアのネットワークエンティティ へのアクセス制御を行うため, MIBsoketにメッセージの許可を設定することが できる. また, MIBsocketで扱うネットワークエンティティの情報は, MIBのデータ構造 に準拠している. 既存のOSでは, ネットワークエンティティの情報はカーネル 内で保持されていることが多い. よって, MIBsocketではあらたにMIBのデータ ベースで保持するのではなく, カーネル内のネットワークエンティティの情報 とMIBのオブジェクト識別子とを対応づけて利用する.
- 実装 MIBsocketでは, UNIX上でメッセージ交換を実現するためにソケットを用いる. ソケットを用いて, メッセージの送受信を行いネットワークエンティティの管 理を行う. MIBsocketは, 新しく追加したプロトコルファミリのPF\_MIBSOCKの Rawソケットを用いる. MIBsocketで扱うメッセージには, オブジェクト識別子, 識別子長, モード, qflag, データのエントリがある. ここでqflagとは, メッセージが複数に跨る 場合用い, 値が0の場合は最後のメッセージである事を示す. 図がMIBsocketのフローチャートである. MIBsocket内部でモード毎に処理されているのが分かる. ネットワークソフト ウェアからの全てのメッセージは, MIBsocketにより許可が与えられているか を調べられる. ACTIVEメッセージを受け取るとMIBsocketは与えられたメッセージから設定の ためのパラメータを調べ次の関数に渡す. 設定が成功すると設定者には0かエ ラー番号が返り,その他のMIBsocketにはトラップメッセージが送信される. REACTIVEメッセージの場合, 要求されたオブジェクト識別子からネットワーク エンティティの実体を調べ応答する. PROACTIVEモードの場合は, カー ネル内でネットワークエンティティの状態変化を検知し, トラップメッセージ を作成し送信する. MIBsocketは, 状態変化検知のためネットワークエンティ ティ毎にデバイスドライバやルーティングソケットrtsockを用い る. デバイスドライバはインタフェースのリンクの状態を通信デバイスからの 割り込みやリンクのポーリングによって検知する. ルーティングソケットは, IPアドレスや経路の状態変化を検知する. MIBsocketにはトラップを送信する ための関数(mib_trap())が用意されているため, 自由にシステム内で 任意のトラップの送信が可能である. MIBsocketのフィルタリングや許可の設定はioctlを用いる. ioctlによって設定された情報はソケットのコントロールブロック( rawcb構造体)に保持される. ioctlのコマンドSIOCMIBFILTERは引数の ネットワークエンティティに対するメッセージをフィルタリングの設定を行う. ioctlのコマンドSIOCMIBMODEは, 引数のMIBsocketのモードに対して操 の許可を与えることができる.
- 評価 測定環境は, OSがFreeBSD-2.2.7 + PAO-0913である. CPUはpentium MMX 200MHzでメインメモリは96MBである. MIBsocketを用いてカーネル内の情報を取得する(REACTIVEモード)のにかかる 時間を測定した. 測定は, オブジェクト識別子から実体を取得する時間, 応答 メッセージの作成, 及びMIBsocketに送信するのにかかる時間である. 送信に かかる時間にはフィルタリングにかかる時間も含まれる. 測定では, インタフェー スのインデックス(ifindex)及び計算機内のIPアドレス(ipAdEntaddr)を取得し た. 以下の表が測定結果である. MIBsocketでは, オブジェクト識別 子からオブジェクトの実体へは線形探索で行っているため, オーバヘッドがあ る. しかし, どのオブジェクトに対しても取得にかかる時間は約100usecであ る. またメッセージの作成にかかる時間は1メッセージ毎に約150usecであ る. 結局, 送信が完了するまでのトータルな時間は約400usec(オブジェクトの 取得は始めだけ行われるので以後のメッセージは約300usec)ある事が分か る. このように, MIBsocketの取得機能のオーバヘッドは無視できる範囲内に 処理できる. ネットワークネットワークソフトウェアはMIBsocketを介してリ アルタイムなネットワークエンティティの状態を取得できる.
REACTIVEモードにおけるMIBsocketのパフォーマンス
操作 ifindex ipadEntaddr
オブジェクトの取得 104 109
メッセージの作成 733 296
メッセージの送信 778 346
計 1615 751
以下がMIBsocketのトラップ(PROACTIVEモード)の性能評価である. 今 回, ネットワークインタフェースのリンクの状態変化のトラップについて評価 する. リンクの状態を検知できるイーサネットの場合, デバイスからの割り込 みがかかるため約10 usecで検知できる. 無線LANでは, 無線の電波強度をデバ イスドライバでポーリングしているため性能が落ちる. 状態検知から MIBsocketにトラップが送信されネットワークソフトウエアが受け取るまでの 時間は約500 usecである. これはネットワークソフトウエアが, ネット ワークエンティティの状態変化にシステムが影響を受ける事なく対応できる時間 である. MIBsocketのトラップ機能は, ネットワークエンティティの状態変化 を検知しネットワークソフトウェアに通知することができた. また, トラップ 機能の性能はデバイスドライバやルーティングソケットなどの状態変化の検知 にかかる時間に依存している事が分かる.
MIBsocketのトラップ機能の性能
MIBsocketのOperation Time (usec)
リンクの変化の検知 ドライバに依存(sn: 9)
mbufの取得 96
メッセージの作成 137
メッセージの送信 182
- まとめMIBsocketを用いることにより, 動的なネットワークエンティティ の変化に対応し資源を動的に割り当てある機構が実現できた. 測定評価の結果, ネットワークエンティティの状態の取得あるいはトラップにかかるMIBsocket のオーバヘッドも最小にすることができた. また, ネットワークエンティティ の状態を介してそれぞれのアプリケーションが協調動作することも確認できた. インタフェース切替え機構はDHCPのIPアドレス取得をトリガーにインタフェー スの選択を行えた. 今後の課題として, 移動体計算機の様々な問題点に対応していくことがあ る. 電力管理などもそれである. 電力が無ければ, システムは動かないので電力 の有効利用や移動体計算機環境では重要である. 本システムを応用して移動体 計算機環境の支援を行っていく.
- 現状
SFCのメビウスリング上で実験を行っている。インターネットカーには、携帯 電話(DoPA 9600bps)と無線デバイス(Breezecom 2Mbps)の二つのデバイスが搭 載されている。メビウスリングを半分に分け通信デバイスを動的に切替えて通 信を行う。インタフェース切替えのため資源動的システムであるMIBsocketを 使った。無線デバイスの時はDHCPにより、携帯電話の時はPPPを用いてアドレ スを取得する。それ以外にも、インターネットカーにおける移動透過性を保証 するためにMobileIPを用いた。Home Agentはsfc.wide.ad.jpドメイン上に設置 した。また、GNSSサーバなども同時に配置しGPSの補正情報を受信できる。
以下が現在のインターネットカーの通信インフラの全体図と内部アーキテクチャ図である。
ネットワーク構成図
内部アーキテクチャ
- 問題点
問題としてはMIBsocket及びPPPにおいてSIC2000(MIPS)上でのalignmentがあっ た。これは、mbufを用いてuserlandとカーネル間でのやりとりを行うと発生す る。今回のORFでは時間の関係上1 wordづつ処理して回避した。
また、無線デバイスではインターフェースを切替えるためのトリガーとして SNR値を計測する。breezecomでは、デバイス内でMIPで管理されておりSNMPで 取得する。そのために、無線デバイスではプライベートなアドレスをSNMP用と してエイリアスしている。インタフェースを切替えた時点でMobileIPは、アド レスが変るためにHome Agentに対して再登録する必要がある。この時誤ってエ イリアスされているプライベートアドレスをCoAと勘違いし登録してしまう。 これは、MobileIPが一つのインタフェースに対して複数のアドレスを想定して いないことにより起きた。これは、アドレスをつけた時にMIBsocketからあがっ て来るメッセージの種類をより詳しくする事により解決できる。この問題のた めインタフェース切替えとMobileIPはうまく動作しなかった。
また、車の移動距離によりインタフェース切替えが影響を受けた。これは、無 線デバイスのリンクの状態のポーリングするタイミング等がある。色々数値を 買えて実験した結果、無線と携帯の切り替えは、時速20kmが限度である事が分 かった。
ORFのデモにおいては、ネットワーク技術の多くを組み合わせて利用すること が難しいということも分かった。技術の結合には、MIBsocketおよびスクリプ トを用いて行った。しかし、これらには限度があった。それぞれの技術が単独 で開発されている事に起因し、それぞれの技術をライブラリなどを用い実装し、 ソフトウェア同士が操作可能なインタフェースが必要である事が分かった。そ のため、テストとしてDHCPをライブラリ化したものを構築した。