4.まとめ

4−1.終わりに

今回私が研究した内容は、環境が変動するネットワークを利用しても、複数のコンピュータが公平に動作させることができるか、という内容でした。Windows95(Plus)の発売以降、徐々に一般家庭にもインターネットが取り入れられるようになり、それにつれ様々な種類のプロバイダが登場しました。各々のプロバイダにより、基本の速度が違うのはもちろんですが、安定して速度が出る場合もあれば、不安定な場合もあります。このような環境の中で、リアルタイム性の高いサービスを行う場合、サービスが公平に実施できない可能性があると考えました。

そこで私は、リアルタイム性の高いソフトウェアを作成し、シミュレーションしました。ソフトウェアは、面白みを持たせるためにトランプゲームの「スピード」にして、作成を進めてきましたが、実際に通信を行ってみると、研究室内・家庭内はローカルエリアネットワークのため、非常に早い速度で通信を行っていました。よって、通信を任意に遅延させることのできるプロクシサーバを作成し、スピードはこのプロクシサーバを経由して通信するようにしました。

では実際どのように通信を行い、公平性を持たせているかというと、各々のコンピュータが更新できる時間帯を設け、一定の周期で更新させるようにしました。例えば、パケットを数回往復させ、その往復時間が最大1秒だったとします。このとき、パケットを送信してから相手に届くまでの時間を、1秒と考えます。そして2台のコンピュータのうち、片方は1、3、5,7,9秒・・・のタイミングで更新し、もう片方は2,4,6,8,10秒・・・のタイミングで更新させます。しかしこれでは、更新を要求した時間と、実際に更新をした時間に誤差が出てしまうので、パケットの中に要求した詳細な時間を組み込みます。そして、その要求が相手に受け入れられるかどうかを判断してもらい、受け入れられれば情報を更新し、そうでなければ更新は行いません。基本的に受け入れられないという状況というのは、自分がパケットの中に組み込んだ時間より前に、相手の更新があったが、相手の更新周期が来なかったため待っていた場合です。実験では、1秒の遅延が生じている中で、同時出し(片方を若干早く)をしたところ、正常に動作していることが確認できました。なおプログラム中のタイマーは、SNTPというネットワークでの時刻同期プロトコルを利用することで、同期させています。

最後に、このプログラムは結果としては公平にできていますが、場合によっては時間がかかりすぎる事が難点です。パケットを往復させたときにかかる最大時間を周期とするので、ネットワークの揺らぎの中で、たまたま送信に多くの時間がかかってしまった場合、周期の時間が適当でない値をとり、異様に時間がかかってしまいます。また、メッセージごとに応答を出し、了承をもらうまで更新を待機するので、2倍の時間がかかってしまいます。ローカルエリアネットワークでは快適に動きますが、距離が遠いコンピュータで通信を行った場合は、リアルタイム性が失われることもあるかもしれません。

top top next