大木先生の行われている研究の概要を教えて下さい。また、どの様な意識で取り組まれていますか?
通信におけるネットワークの研究を行っています。ネットワーク研究といいましても、様々なエリアがありまして、光ファイバのネットワーク、IPパケットのネットワーク、トラフィック制御、スイッチングなどがあります。そのIPパケットのネットワークで、転送されるアプリケーションを意識して研究を行っています。ネットワーク技術では、帯域によって変化する経路というのを、トラフィックや品質を見ながら制御します。それぞれのルーターで、高速にスイッチしたり制御したりするなど、そのルーターの中を私自身は意識していますね。
例えば、あるアプリケーションがあるとします。品質に応じた画質、或いは良い画質を見たければ大きいパイプ、電子メールであれば、細いパイプで遠回りする。そのような事を基本にしていますが、実際どういう約束で行うか、というプロトコルや、どのような装置であるべきかというシステムも開発しています。実際ツールとして、コンピューターでシュミレーションしたり、解析的にモデルをたてて、数学的なアプローチで解析します。また、「どの経路を選択すべきか?」という問題に対して、最適化制御を行い、実際、実機で検証もしています。
通信ネットワーク環境からみる、研究室のテーマとは何ですか?
通信ネットワークをうまく賢く制御してあげれば、コストを減らせる事が出来ます。また、同じリソースを使って、混んでるものと混んでないものを作る事も出来ます。「この数字をどう決めたら良いか?」という、アルゴリズムを考えたり、数学的には式で書くと出来る場合もあるので式で書いて解きます。
一般論ですが、リソースが同じでも、トラフィックを使うか使わないかで変わってくると思うんですよ。実際にそうしたものが、紙と鉛筆の上で出来る話を、実際のアプリケーションにのせて作成し、動かしたり、見たりしています。これは、シュミレーション技術で、実験しなくても、ある程度シュミレーターを使って行います。
また、今の通信ネットワークは、ルーターがあって、ルーターの下位レイヤに光スイッチがあって、それらを利用するという事になっているのですが、クラウドサービス同様で、ネットワークも仮想的で、ネットワークを使用するという時は、仮想化するようなことが今は進んでいます。それぞれ仮想化されるネットワークで、ネットワーク装置の設定は、ソフトウェアデファインドネットワーク(SDN)というのですが、それがソフトウェア的に設定されます。現在、通信業界では、SDNをどの様に作るのか、どう制御するのか、というのが研究のトピックの一つになっています。これについて、理論的なものから、実践的なものも行うようにしています。したがって、その理論的なアプローチを勉強してもらって両方行うのが、研究室のテーマです。
シュミレーターでどのように評価を行っているのですか?
シミュレータをつくる際は、できるだけシミュレータを共同で使えるようにすることと、評価の目的を効率良く達成できること、研究者の能力を発揮できることなどのバランスを考慮して、使用する言語を判断します。
例えば、CやC++という言語をベースに使っているのと、他にはMatlabというのを使っています。また、最適化ツールのソフトウェアではGLPKやCPLEXのソフトウェアを使っています。あとは、SDNのフレームワークというのをいくつか使ってますが、基本的には、SDNのプロトコルであるOpenFlowをサポートするオープンソースがあります。
所属されている学生さんに教えてらっしゃる事、理解して欲しいこと、また、先生のネットワーク研究においての経験談があれば、お聞かせ下さい。
コンピュータネットワークに関する講義では、基本的なインターネットのプロトコルを解説して、それを実際に自分で見れるようにしたり、パケットをキャプチャーして解析します。これにより、プロトコルやレイヤー構造の基本概念を理解してもらえるように教えています。
私は、まず、自動的にパケットを解析するツールであるWiresharkを使う前に、ありきたりな16進で書かれた構造を学生に渡して、そのIPパケットのフォーマットやイーサーフレームのフォーマットを教科書と同じように解説します。「どこがIPアドレスですか?」や「どこが、TTLですか?」といった疑問を、学生に紙と鉛筆で作成してもらい、イーサネットのフレームやIPパケットのヘッダーの形、TCPセグメントの形などをプロトコル仕様で一度見ながら、「ここが、TTLです」や「ここは、TCPのポート番号が入ってるところです」など自分で理解してもらいます。そして、Wiresharkを使って、自分で理解した内容を確認してもらいます。
また、自分が作った独自プロトコルのフォーマットをWiresharkで確認したい場合は、そのWiresharkのコードを書き換えればよい、ということを理解してもらいます。私は、Wiresharkのコードを書き換えることまでは要求しませんが、RFCで記述されているパケットフォーマットの約束事が、Wiresharkでプログラムされているんだよ、というところまで理解してもらえると良いかと思います。
最後に、大木先生からご覧のみなさんに一言お願いします。
開発に関して、目先の事で忙しくなったり、プログラムで忙しくなったりして、時間が掛かるかもしれませんが、後々、教科書に書いてあるような、基本的なことがよく理解できることがあるので、理論的なことも理解しつつ開発も行う、という両立が出来ると良いと思います。一歩一歩でも良いので、両方を理解し経験しながら行う姿勢が大事だと思います。