« 2009年3月 | トップページ | 2009年5月 »

2009年4月の3件の投稿

2009.04.27

Genkidamaに対する大きな期待と課題

ニコニコ動画をキャッシュで共有し、検索をDHTで行うGenkidamaがリリースされ、非常に大きな反響を得ているようだ。もしこのソフトウェアが大きなユーザ数を得るとすれば、特にOpenChordの実装がどの程度実ネットワーク上できちんと動くか検証できる。

ニコニコ動画のキャッシュを皆で共有するソフト「Genkidama」をリリースしまふ。

ここで、P2PとNATの専門家としての関心のある点を挙げていきたい。

□P2Pとしての興味の点

(1)DHTは部分一致検索が不得意だが、これをどう解決するか?ひとつの案としてSkipgraphのようなものを実装することが考えられる。

(2)OpenChordが実ネットワーク上でどの程度スケールするか?果たして数万レベルまでスケールするか?

(3)ユーザの参加・離脱が多いコンシューマサービスでOpenChordがきちんと動くか?具体的に言うとデータを複製するレプリケーションやChurn耐性(頻繁な参加/離脱に対する対策)がうまく動くか?

□NAT越えとしての興味の点

(1)UPnPを使えないユーザをポートフォワーディングなどをしないでケアするのか?例えばSkypeのようにリレーノードのような中継ノードを設けるようにするか?

(2)1つのルータに複数ユーザがいる場合にどのようにケアするか?

(3)DHT(Chord)のように数10本~数100本のTCPセッションを常時形成するようなサービスに対してUPnPの実装が本当に安定であるか?

とりあえず以上です。是非今後も開発をがんばって欲しい。

| | コメント (4) | トラックバック (0)

2009.04.25

音楽という名の情報学

4歳からピアノを始め、中高校のときには吹奏楽でユーフォニウムトとホルンを吹いていた。大学は音楽から離れていただけども、どうしても音楽がやりたくて入社前からバイオリンを始めて今に至る。。。それが私の音楽人生。

ただ、大学と大学院の時には正式にいうと音楽から離れていたのではなく、演奏から離れていたんだ、と今ブログを書きながら思う。大学時代にはバイトで働いたお金でせっせとクラシックと現代音楽のCD、そして音楽史の本ばっかり買っていた。大学4年には現代音楽のWEBページを解説して、それが自分の今のWEBページのベースとなっている。CDは今800枚ぐらいあると思う。そして子供がいつかレアなCDを壊さないか?とひやひやしながら過ごしている毎日である。

ところで、大学時代趣味で統計の授業を取ったことがある。もしかすると教職をとるために単位を取ろうとしたのかもしれない。レポートは「なんからのデータをパソコンで統計分析してレポートすること」。とても漠然として迷った覚えがある。

そのときに自分が出したレポートはクラシック音楽と現代音楽に関わるものだった。
通常音楽は1オクターブに12音存在する。クラシック音楽ではその音の発生頻度に偏りがあるはずだ、それを統計分析しようとした。もう少し言うと、音楽には調という概念がある。もしハ長調であれば、ドの音を軸にメロディーが構成される。だから一番発生頻度が高いのはドだろう、と推測していたのだ。結果は後ほど。

これからが本題。音楽というのは情報屋から見るとどのようなパラメーターが含まれているのだろか?多分このような研究はとっくのとうに行われていると思うけども、自分の勉強のために考察して整理してみよう。

☆1音としての基本パラメーター
音高-音の高さ(ド、レとか)
音強-音の強さ(フォルテとか)
音価-音の長さ(四分音符とか)
アタック-音の表情(スタッカート、テヌートとか)
音色-音の音色(ピアノ、バイオリンとか)

サブパラメーターとしてビブラート(ビブラートの周波数の幅、ビブラートの中心ピッチ)、ピッチ(平均律からのずれ)なども挙げられるだろう。

☆1音の時間経緯としての集合状態
1音としての基本パラメーターが時間系列毎にある状態。
ただし、パラメーターによっては次の用語がある。
メロディー、旋律(基本的に音高の時間的経歴)
リズム(基本的に音価の時間的経緯)
音色旋律(基本的にメロディーにおける音色の変化)
強弱記号の一要素(クレッシェンド、デクレッシェンド等、音強の時間的変移)

発想記号は上記に対する補足だろう。

☆1時点における集合音の集合状態
1音としての基本パラメーターが同時に複数音毎にある状態。
ただし、音の高さの組み合わせは特別で
和音(ドミソの三和音など)
といわれる。

☆集合音の時間的変化としての集合状態
1時点における集合音の集合状態が時間変移における特徴量。
パラメーターによっては以下のような定義がある。
テンポ(モデラート、アレグロ等)
テンポの時間的変移(リタルランド等)
対旋律(複数メロディーの時間的対比)
和音進行(和音の時間的変移)

ざっと挙げただけでもこれだけの情報量が必要である。つまり、
同時に鳴らす音の数(休符も含める)×時間
というパラメーターがクラシック音楽では必要である。そしてこの直積空間を音楽用語では表現できない部分もありそうなことがわかった。

このように整理すると、このような多数のパラメーターを研究する音楽情報学というのはすごいものだ。いつの日か人間を超える作曲能力を持つアルゴリズムはできるのだろうか?

ちなみにパソコンを使って作曲をするという試みは随分前から行われている。現代音楽で有名なクセナキスはアルゴリズムや統計学を使って作曲を試みた作品を作っている。弦楽四重奏作品で有名なST-4とかなかなか刺激的である。クセナキスの作品はとても面白いのでそのうち特集を組みたい。

最後にレポートの件。
レポートの対象にしたのはバッハの平均律第1巻の第1曲ハ長調。グノーのアベマリアのベースの曲としてとても有名。この曲における最頻度の音は残念ながらドの音ではなかった。これは私の予想と全然違っていた。どうしてこのようなことが起こったのかは長くなるので、また次の機会に書いてみよう。

ちなみに現代音楽で調を使わない12音音楽というのがあって、こちらも統計を取ってみた。(対象はシェーンベルクのピアノ組曲第一曲)こちらはどの音も均等な頻度で音が出現していた。

| | コメント (0) | トラックバック (0)

2009.04.11

[NAT]NAT越え入門1-NATとは何か?

今日から私が一番得意とする研究開発分野である、NAT越えとNATに対するレクチャーを連載したい。もちろん、NAT越えやNATはP2Pにも大いに関連がある分野である。期待して欲しい。

そもそもNAT越えに関わったのは、現在の会社に異動後企画書を作り、VoIP(IP電話)のNAT越えの研究を自ら始めたからである。開発コードは「シームレスコネクション」と呼び、研究開発成果は信学会のNS研究会や全国大会で投稿しているので、関心のある方は図書館等で見て欲しい。またそれが縁でキャリアグレードNATのインターネットドラフト作成にも携わっている。

この連載の目標はNATとNAT越えの基本的な部分をレクチャーすることであるが、最終的には一番技術的に困難で複雑なVoIPのNAT越えまで話を進めたい。(体力と時間があれば)

またコメントや質問は基本的にはてブでお願いしたい。適宜連載途中で回答します。

さて、NAT越えを解説するまえにNATについて説明しよう。いつものように定義等は厳密でない。わかりやすさ優先であるので、そこはご容赦願いたい。

□NATとはなにか?

NATとは、Network Address Translatorの略で、文字通り訳するとネットワークアドレス変換装置となる。実際には、NATは家庭用のネットワーク領域(LAN)とインターネット用接続用のネットワーク領域(WAN)の境界に存在し、NATがLAN⇔WAN間の通信において、LANに存在する端末のIPアドレスをNATのWAN側に割り当てられたIPアドレスに変換する役割をする。ここでWANの規定は曖昧なのだが、あくまでもNAT解説ということでお許し頂きたい。

そもそもNATはIPアドレスの枯渇を解消する目的で作られた。インターネット上で使用できるIPアドレスは一意的で、通常グローバルIPアドレスと呼ぶ。これをみんなが使ってしまうとIPアドレスがなくなってしまい、結果的にインターネットを使えるユーザに制限がでてしまう。このグローバルIPアドレスは組織的に管理されていて、通常はISPから払い出されることになる。逆にインターネット上でない場所で使えるIPアドレスはプライベートIPアドレスと呼び、これはLAN等のネットワーク管理者が独自に管理することになる。

「みなさん、端末はグローバルIPアドレスを使う代わりにプライベートIPアドレスを使いましょう。ただインターネット上もつなぎたい場合があるでしょうから、そのときにはNATがLAN内の端末プライベートIPアドレスをNATに割り当てられているグローバルIPアドレスに変換してから接続してあげるよ。」というのがNATの「本来」の利用目的なのである。

ネットワーク図をざっくり書くとこんな感じである。
端末(プライベートIPアドレス)-LAN--NAT(グローバルIPアドレス)-WAN-インターネット

ところでNATは副次的に次の効果を生み出す。というか、むしろ以下に書いてあるNATの便利さがNATの存在意義を非常に複雑にしている。

1.セキュリティの確保

後日の連載にて説明するが、NATはWAN側からLAN側への通信をブロックすることが原則である。NATは多様なネットワーク攻撃を「結果的に」防御することになる。ここで注意することは、NATとファイアウォールを混同しないこと。NATはあくまでもIPアドレスの変換装置であり、後日書くNATタイマーやフィルタリングの効果によりWAN側からLAN側への通信を「結果的に」ブロックすることになる。特にブロードバンドルータはNATとファイアウォール機能を両方具備していることがあるので、多くのネットワーク技術者(ネットワーク管理者や研究者ですら!)を混乱させる原因となっている。

もうひとつのNATのセキュリティ効果は、実際にLANに存在してる端末のIPアドレスをインターネットで通信しているサーバor端末側から隠蔽できることである。このことはNAT66と呼ばれるIPv6のNATの提案でも議論されている事項である。NAT66については時間があれば解説したい。

2.ネットワーク設計の容易さ

NATのLAN側はプライベートIPアドレスを使うことができる。このことによって、管理者が簡単にLAN内のネットワーク設計を行うことができる。なぜならWAN側はグローバルIPアドレスが必要なので、ISPにIPアドレス利用申請等をしなければならなからだ。NAT66のインターネットドラフトでもネットワーク設計を容易にするために、IPv6でもNATが必要なんだ、と書かれている。

□NAPTとは何か?

NAPTはNATと違い、IPアドレスだけでなくポート番号までNAPTが変換してしまう。ポート番号まで変換することで、グローバルIPアドレスの利用効率を更に加速させることを意味する。

利用効率についてもう少し考えてみよう。

例えば、LAN内に4つの端末があるとする。この端末がすべてインターネット上のサーバと通信するとする。NATであれば、IPアドレスを変換するだけの機能なので、NATに割り当てられているWAN側のグローバルIPアドレスが4つ必要である。ところが、NAPTの場合は、ポート番号まで変換するので(ほとんどの場合)実はグローバルIPアドレスが1つで十分である。

例えば、{IPアドレス:ポート番号}という表記においてLANのネットワーク情報が端末1={192.168.1.1:1000},端末2={192.168.1.2:2000},端末3={192.168.1.3:3000},端末4={192.168.1.4:3000}の場合、NATのWAN側では端末1={1.1.1.1:1000}、端末2={1.1.1.1:2000}、端末3={1.1.1.1:3000},端末4={1.1.1.1:3001}と対応する。つまりLAN内に端末が4つあっても、WAN側のグローバルIPアドレスは1個しか消費しない。これはNAPTの変換例である。

このようにポート番号を変換することにより、グローバルIPアドレスの消費を大幅に減少させることに成功した。しかしながらネットワーク管理者はもはやNATのIPアドレスだけでなく、ポート番号まで管理する必要がでてくる。ここがNAPTの難しいところである。

通常、ブロードバンドルータで使われているのはNAPTであるので、今後は断りがなければNAPTをNATと呼ぶことにする。

そして、NATが一番ややこしいのは、つい最近までNATの詳細仕様が決まってなかったのである。これがNAT越えの問題を非常に面倒なものにしている。

以下簡単にまとめておこう。
[1]通常NATと呼ばれるのはNAPTのことである。
[2]NATはIPアドレスとポート番号の変換をするのがメインであるが、セキュリティの確保とネットワーク設計の容易さを提供する。
[3]NATの詳細仕様は最近まで決まってないため、NAT越えの仕様が複雑となっている。

NATについて興味のある方は、以下の2冊が大きな参考になるため、是非お読みください。なお、P2P教科書はNATに関わる情報の一部を私が執筆しています。


NAT越えについては、私のサイト(P2P入門)にも解説していますので、併せてご覧ください。
  http://homepage3.nifty.com/toremoro/p2p/firewall.html

| | コメント (0) | トラックバック (0)

« 2009年3月 | トップページ | 2009年5月 »