回線遅延シミュレータ
今日は技術ネタです(製品の宣伝という噂もありますが)。ネットワークの帯域を制限することなどを目的に、回線遅延シミュレータが存在します。用途としてはモバイル環境などの細くて不安定な回線で通信システムの挙動を調べることや、あるいは特定の通信が回線全体を占有しないように制限をかける場合などに使います。
帯域制限の方法には2種類あり、リーキーバケツ方式とトークンバケツ方式があります。
リーキーバケツ方式は、指定した帯域をあふれそうになると転送を遅延させ、バッファがあふれたら捨てるというような動きです。細い回線のシミュレーションにはこの方式が適しています。一定の帯域以上では決して転送されない方式です。
トークンバケツ方式は、一定時間に帯域を超えるかどうかで判断します。とりあえず順番に通過させてみて、一定時間で指定した帯域以上になる場合に捨てる、という動きです。こちらは瞬間的には大量の通信(バースト)を許しますが、長期的に見れば一定の帯域に収まるというような方式です。回線の占有を防ぐような用途に向きます。
他に回線シミュレータとして使われる機能で、遅延機能もあります。わざと転送を送らせる仕組みです。他にも指定した割合で通信をわざと捨てるパケットロスという機能も使われます。
普段は少しでも高速な回線を欲しいと考えるものですが、わざと制限をしたいこともあるのです。
私は以前仕事でVOIP(Voice over IP)の仕組みを作ったことがあります。基本的には、通話先を指定でき、つながった後は音声データをUDPで転送すれば良いのですが、問題になるのは回線状況の変化です。わざわざネットワークを使って通話したいということは、距離がそれなりに離れているということで、ローカルな通信とは異なり、複雑な経路や様々な通信機器を介して通信することになります。
通信に遅延が発生したり、一時的に不通になったりすることが、かなり発生します。多少データが抜けてもそれなりに会話が成り立つようにするために、ソフトウェアで工夫をするのですが、それがきちんと使えるものかどうかを確認するのが大変です。そんなときに回線遅延シミュレータがあれば、手元で様々な制限をかけることでシステムの動作を確認できます。そのときに作った回線遅延シミュレータを一応会社のホームページでソフトウェア製品として紹介していました。
ほとんど問い合わせは無かったのですが、たまたま問い合わせいただいた際に、貸しだして使ってみてください、と言ったのですが、あまりに使ってなかったのでソースが行方不明になってしまい、慌てて2時間くらいで作り直したりしました。
それでも、ハードウェアやOSなどを自分で用意して、ソフトウェアをインストールしてもらうような販売方法はなかなか敷居が高いようで、何回か無料で試していただいて役に立ったと言われたことはあったのですが、販売実績はゼロでした。
組み込み用Linuxを見つけてから、そのソフトにユーザインターフェースをセットにして、専用機(アプライアンス)として作ったのが、回線遅延シミュレータ「Ethdelay」です。不正接続検知の「IntraGuardian」と同じ価格でいこうということで、この手の技術系製品としてはあり得ない、59,800円で販売してみたところ、ほとんど宣伝をしていないにもかかわらず半期で20台くらい売れました。
売れてみると、お客様は、安いからそこそこで良い、とは考えてくれず、結局もう少しこうならないのか、というご要望をいただき、ソフトウェア本体の機能追加と、ハードウェアももう少し高性能なものを使ったバージョンも検討しているところです。
説明した帯域制限の2種類の方法も、次のバージョンで選択可能になる機能です。現バージョンはトークンバケツ方式しか対応していませんでした。
今日はそのあたりの最終調整を行い、大体本体プログラムは完成したところです。
今週はDHCPサーバ製品の「ProDHCP」の納品に向けてカスタマイズ対応を行ったり、プログラマーとしてもかなり忙しい状態で、さらに年度末の様々なミーティングなどで、ついにメタボ対策の水泳には行けませんでした。週末に体を動かさないと・・・。まあ、不景気な中、仕事がたくさんあるのは幸せと考えなければなりませんね。
忙しすぎて今週のブログは内容が薄いのも反省点です。。