RUBY 9章 練習問題
Posted On 2008年9月27日土曜日 at 時刻: 15:24 by ゆーりループから抜けるのに「return」を使う
これを使うと、メソッドから完全に抜け出すが、同時に実行中のループからも抜ける
■無限ループ
while(true) : trueの限りまわり続ける
P2P SIPでよく引用される論文を読みました
Posted On 2008年9月26日金曜日 at 時刻: 18:16 by ゆーり下記のレポートを読みました。
「Peer-to-peer internet telephony using SIP」
著者:K Singh, H Schulzrinne
出展:Proceedings of the international workshop on Network and operating systems support for digital audio and video table of contents, 2005,ACM
アブストラクト
P2Pシステムは、中央集中型ではなく、また自己でネットワークを組織化するので、高いスケーラビリティ・構造安定性・耐障害性(フォールトレランス)な本質を持つ。
これは、P2Pオーバレイネットワークで、interestなリソースの場所を見つけるように、cost of higher latencyで達成される。
インターネット電話のP2Pアーキテクチャのアプリケーションでは、参加者は、自己を見つけることがP2Pのオーバーレイネットワークを組織フォームと他の参加者とのコミュニケーションを見ることができる。????
(Internet telephony can be viewed as an application of P2P architecture where the participants form a self-organizing P2P overlay network to locate and communicate with other participants.)
私たちはSession Initiation Protocol(SIP)ベースのIP電話技術システムのためにpure P2Pアーキテクチャを提案します。
私たちのP2PSIPアーキテクチャは、オフラインメッセージ配送や、voice/videoメールやマルチパーティ会議などの高度なサービスと同様に、基本的なユーザ登録と呼び出しセットアップをサポートします。
また、私たちはファイアウォールや、Network Address Translator(NAT)travesalやセキュリティ
などのP2P-SIPに実用的な課題の概要を提案します。
【目次】
1.イントロ
2.背景と関連働き
2.1.P2Pシステム:不統一vs構造化
2.2.スカイプと関連したシステム
2.3.SIPをベースとするtelephony
2.4.IP telephonyとファイルシェアの違い
3.目標デザイン
4.基本デザイン
4.1.複製登録 vs serch on call set up
4.2.どんなノードがDHTを形成するか
4.3.なぜREGISTER?
4.4.P2Pの基本
5.アーキテクチャ
5.1.ノードのセットアップとPeerの発見
5.2.ユーザ登録
5.3.Node shutdown or failure
5.4.ユーザ位置と呼び出しセットアップ
6.応用したサービス
6.1.NATとファイアウォールtraversal
--------------------------------------------------
以下、最初と最後の文だけちょこちょこ訳しました。
1.イントロダクション
既存のインターネット電話クライアント/サーバアーキテクチャはIETFのSIP(Session Initation)か、またはITU-T recommendation H.323が基礎となっており、あらゆるドメインに登録サーバを使う。
提案の背景となる、P2PとSIPの関係した働きをセクション2に示す。
セクション3ではIP電話技術のためにP2Pアーキテクチャの目標を記載。
セクション4では、応用デザインを示す。
セクション5では、P2P-SIPアーキテクチャ、ユーザ登録、およびcall set upを示す。
セクション6では、P2P SIPの高度なサービスについて説明する。
セクション7では、さまざまな脅威とその提示された答えを分析する。
セクション8では、スケーラビリティ、信頼性、及びcall set upのシステムの性能を予測する。
セクション9では、結論とその後についてのべる。
階層的なP2PSIP提案するレポート
Posted On 2008年9月17日水曜日 at 時刻: 17:09 by ゆーり下記のレポートを読みました。
「A Hierarchical Peer-to-Peer SIP System for Heterogenerous Overlays Interwoeking」
著者:Juwei Shi, Yao Wang, Lanzhi Gu, Lichun Li, Wenjie Lin, Yinong Li, Yang Ji, Ping Zhang
出展:****
アブストラクト
P2PSIPの問題点である、接続性・オーバーヘッドの問題を解決するため、階層的P2PSIPシステムを提案する。階層的P2PSIPの実装には、Linuxを用いる。
これにより、提案する階層的P2PSIPは、不均一なオーバレイによって生じる接続性の問題を解決する。また、上位層のノードの割合が10%以下(未満?)のとき、Flat Overlayと比較して効率的であるということが分かった。
本文
1.序論と動機
P2PSIPは、スケーラビリティ・構造安定性などをもつDHTの固有利点を利用したP2PとSIP組み合わせたもので、分散を可能にしたマルチメディアセッションです。P2PSIPにはP2PoverSIPとP2PusingSIPがあります。
両方の試みは、全てのホストが等しく1つのオーバレイに参加します。このレポートでは、この2つの試みが提案するHierarchical Approachと区別するのにFlat Approachとして扱われます。
P2PoverSIPはSIPメッセージを用いてP2P overlay networkを実装する。
このアプローチの長所は、ICEに代表されるようなSIPと親和性が高いいくつかのNAT技術を、P2PSIPにおいて再利用できることである。
しかしながら、一番不都合な点は、overlay control procedureの間SIPメッセージにより多くのSIP dialog-statesとtransaction-statesを運ぶ必要がある。
統計によると、SIPメッセージがDHTにユーザノードとして登録し終えるまで10以上のSIPメッセージを交換する必要があります。そしてそれぞれのSIPメッセージはUAに自分のdialog statesを持っています。
他に、P2PusingSIPと呼ばれるP2P overlayを利用してSIP request targetを解決する試みがあります。
Chord,Bamboo,Pastry,TapestryなどのDHTプロトコルはSIPにピアのロケーションを提供します。
言い換えれば、位地のサービスは従来の集中型SIP trapezoidの代わりに、分散型P2P overlay netwoeksで位地サービスを提供されるということである。
従って、SIPの配置するコストは削減されて、networkの構造安定性は高まります。
そのうえ、この試みは、SIPメッセージよりもP2PメッセージによりP2P overlayは保たれます。
なぜなら、SIPはCall-IDやContact情報などを含むヘッダーを持ち、必ずしもP2Pプロトコルを必要としない。
しかしながら、接続の問題はP2PオーバレイがSIPのターゲットロケーションメカニズムとして採用されるのを解決しなければならない。
DNSサーバがP2Pオーバレイに置き換えられるときには、異種(heterogeneous)のP2Pオーバレイがアプリケーションレイヤ結合問題につながるであろう。
たとえば、コードを使うP2Pオーバレイについて少し考えてみるとSIpメッセージを異なったP2Pプロトコルを含むことにより、
Pastryを用いたもうひとつのオーバレイにおけるPeerに対するSIPメッセージを定めることは不可能ではないが、困難である
われわれは、P2PSIPレタラチャーにおいて、焦点をあてられなかった2つの研究について
大意をのべる。
コネクティビティ、、異種のP2pオーバレイがP2PSIPオーバレイ間の連結問題につながる
オーバヘッド、、SIPがP2Pオーバレイを維持するために、使われる時に特別のSIPメッセージとステータスが存在する。
上記にのべたことにより、われわれはH-P2PSIPシステムを提案する気分になった。
まず、HILOはさまざまなLOLOと相互に繋げるために提案されている。
HILOにおけるPeerはゲートウェイのような行動とInter-domain(相互ドメイン)のSIPメッセージを通信する特別の対策に基づいた
LOLOSから決定されている。
第二に、P2Pを使うSIPはLOLOとP2PoverSIPがinteroverlaydomainの中で採用されている範囲内で適用される。
ゆえにSIPオーバヘッドは明らかにP2PoverSIPのときと比べて軽減されている。
この論文の主な、貢献は3つの要素にある。
第一に、H-p2psipシステムは異質のオーバレイからなる連結の問題について述べるために提案されている。
一般的なDHTapiは開発者たちがH-p2psipをとりつけることを簡単にするためにとりだすためにまとめられており、ネットワークの要素がデザインされている。
第二に、H-P2PSIPシステムは提案されているH-p2pSIPシステムの実行可能性をしめすためにLINAXにいれられている。
第三に、違ったp2pとSIPの組み合わせ方法のパフォーマンスを評価するためにシミュレーションが行われている
この論文はこれ以降以下のように構成されている。
H-p2pSIPシステムの概観は、セクション2にしめされている。
次のセクション3では、詳細なデザインとその実行が示されている。
セクション4では、さまざまなP2PとSIPの組み合わせのパフォーマンスを評価するためのシミュレーションを行っている。
結論はセクション5だよん。
2.システムの全体像
このセクションにおいてわれわれが提案することはh-p2psipシステムの全体像である。
12番で定義した専門用語とコンセプトにしたがっている。
h-P2psipノードはDHTサービスノード、SIPUA、SIPプロキシなどの作用を形成している。
h-p2psipノードはHILO-peerあるいはLOLO-peerとして動く。
図1が示しているのはh-p2psipネットワークの構造である。
LOLOはコードやpastryなどの特定のDHTアルゴリズムに基づいている。
同じDHT内のoverlayはセッションのセットアップレーテンシー(セットアップ時間)を減らすためのlocaation情報に基づくLOLOに分裂されることが可能である。
HILOに対する普遍的なDHTアルゴリズムが必要がありBambooがこの論文でその役割をはたすことが提案されている。
そうすれば、LOLODHTスタックとHILODHTスタックというマルチなスタックとHILOPeerは、ゲートウェイのような反応をして異種のLOLOを連結させる。
P2PoverSIPのアプローチの問題を含んだSIPについて述べるために同じLOLO内におけるPeerがDHT操作のためのプライベートP2Pプロトコルについて語る。
HILO内のPeerとHILOとLOLOの間のpeerがSIPプロトコルについて語る。
すなはち、SIPusingP2Pはそれぞれのオーバレイドメインに適用されP2PoverSIPはインターオーバレイドメインの中で採用される。よって、HILOPeerはSIPサーバのコントロール機能を行うことができる。
たとえば、ICEのようなNATtraversalメカニズムは再利用可能である。
LOLO内のPeerはP2Pプロトコルを語るのでSIPメッセージのオーバヘッドは軽減される。
このデザインのもっとも大事なことはP2PoverSIPアプローチが記憶?されたときにはSIPメッセージオーバヘッドを減らすことである。
H-p2pSIPノードの論理的構造は図2に示される。ノードが開始されるとICEモジュールがNATとファイヤーウォールリテクションを
イニシャルすることを可能にする?。
そしてそれが、ブートストラップを調べてLOLOに加えさせLOLOPeerとして使われる。
ノード上のユーザはSIPUAとして機能し、DHTサービスをほかのユーザを特定するために用いる。
その後、より高いキャパシティ(CPUやバンド幅)が
その後、より高いキャパシティ(CPUやバンド幅)がHILOPeerになるように選ばれる。HILOPeerには二つの主な機能がある。
まず、SIPPloxyとしてHILOopeerはローカルおよび上位レベルのDHTサービスを引き起こしさまざまなP2PSIPoverlayと相互につながる。
第二に、これはまたステートフルSIPサーバのオペレーションを行う。
SIPUAやSIPPloxyのようなSIPの要素はDHTブロックをIPアドレスやポートや次のホップエレメントのトランスポートプロトコルを決定する解決者として用いる。
このLOCATION機能はRFC3263で特定されており、われわれはそれを実行するのにDNSよりもむしろDHTを用いる。
異種のオーバレイの問題に対処するためにHILOpeerはBambooスタックとLOCALDHTスタックの両方を通りゲートウェイノードとして作用する。すなわち、トップレベルのBambooオーバレイはHILOpeerを通じてさまざまなLOLOと作用する。LOLOはまたHILOのDHTプロトコルを用い、この2つのオーバレイはオーバレイIDにより識別されることを特記されるべきである。開発者が複数のDHTスタックをh-p2pSIPノードにポートすることを容易にするためにわれわれはさまざまなDHTのプラグゲージ?を作るためにリテラチャー(14)において要約された一般的なAPIを利用する。
4.パフォーマンス評価
A.相互通信能力
我々が想定することは、1~Kまでに示されたKオーバレイがありそれぞれのオーバレイにNkのオーバレイがいるということである。すべてのオーバレイがSIPによって上のレベルのオーバレイなしにサービス発見メカニズムとして用いられたときオーバレイKにおける一人のユーザがオーバレイの異種によってもたらされるセッションを作ることに失敗する可能性は以下の式である
Pk=*********
(以下、略)
B.シミュレーション結果
事象に影響をうけた?p2pSIPのシミュレータがさまざまなp2pSIPのスキームのパフォーマンスを評価するために、作られた。シミュレータは主にコードとSIPのモジュールで作られている。我々はそれぞれが4000ノードで多数のweighted-edges?を持つ5つのトポロジーを作るためにinet3.0(21)を用いる。2つの直接的に連結されたノードの相対的なリンクのコストがinettoolによって割り当てられたedge-weight?によりあらわされている。最終結果は5つのトポロジの平均である。
コード(Chord)内のノードを認識するものが160ビットの長さに設定されている。するとコードアルゴリズムによりそれぞれのノード上のfinger(指数?)の最大の数は160である。シミュレーションのメトリックは以下のとおりである。
・
・
・
(略)
我々は5つのLOLOと1つのHILOを作った。すべての階層がコードに基づいておりそれらはそれぞれのオーバレイIDにより識別される。それぞれのオーバレイのホストはランダムに作られたトポロジから選択されている。
それぞれのトポロジの結果は平均して50のシミュレーションであり2000のcallPeerがランダムに選ばれてそれぞれのシミュレーションにおいてセッションを構成している。
我々はそれぞれのスキームのユーザNoの衝撃?を評価する。HILOPeerとして選ばれるPeerの%テージは2%に設定される。図5のa~cが示すことは、階層的スキームのCallsetupLatencyとOverlayhopCountとSIPmassageoverヘッドはフラットスキームのそれ以下である。この理由はH-p2pSIPにおいてネットワーク全体が小さなオーバレイに分割されPeerはしばしばHILOPeersのアドレスをショートカットとして蓄えるからである。図5のcが示しているのはさまざまなスキームにおけるSIPメッセージオーバヘッドである。Proxy間に中継されているメッセージによると階層的スキームにおけるSIPメッセージオーバヘッドの全体がSIPを用いたp2pスキームのそれをこえている。
図5dが示すことはHILOPeerのパーセンテージの与える衝撃(影響?)である。我々がオーバレイの数の衝撃を提示しないのはHilopeerのパーセンテージがすでにその衝撃をあらわしているからである。図5dで示されるようにパーセンテージが10%以下の場合階層的アプローチのパフォーマンスはオーバレイホップカウントの観点からフラットアプローチのそれより良好である。
次の理論的分析が結論をしめしている。
*****図5*******
我々が提案することはユーザNOがNでHILOpeerの%がPである
(以下略)
5.結論と更なる研究
この論文において我々が提案するのは、階層的P2PSIPシステムでありこれは異種間のオーバレイを分散させた方法でつなげるものであるが、これは中央サーバを配置することなしにマルチメディアセッションを開始するためである。基本形を配置することは提案されているH-p2pSIPが実行可能であるということをあらわしている。シミュレーションの結果が示すことは決定されたHiLOPeerが10%以下のときフラットと比較して、階層的アプローチはまたコミュニケーションオーバーヘッドを減らし、セットアップレイテンシーを呼び出すことである。
我々の研究がしめすことは階層的p2pSIPシステムの初期研究である。基本形を配置することと、そのシミュレーションの結果は有望なものであるが、さらに述べねばならない問題が多くある。我々はセキュリティーと認証に関する問題に関しては考慮していない。
セントラルサーバが取り除かれたときにこういったことは非常に重要であるが、これに関しては将来的に述べるつもりである。また我々の組み込まれたプロトタイプを用いて公的に入手可能なオープンDHTサービスから得た実験結果を提供するである。
8.3 練習問題 解答
Posted On 2008年9月11日木曜日 at 時刻: 14:58 by ゆーり先日のプログラムで悩んだ部分が解決しました。
8.3 練習問題
「好きな数だけ単語の入力をし、(1行に1単語で、最後は空行でEnterのみで終了とする)」
それをアルファベット順に並び替えて出力するプログラム。
(空行だけでEnterを押しても、きちんと動くようにする)」
puts '単語を入力してね。空行で終了します。'
tango=[]
suuti = ''
suuti = gets.chomp //最初に文字入力を取る(最初が空だったら終了へ)
while suuti != '' //空かどうか調べる
tango.push suuti
suuti = gets.chomp
end
puts '終了します'
tango_suuti = tango.sort
puts tango_suuti
9章はメソッドの作り方。
初めてのプログラミング(Ruby)
Posted On 2008年9月9日火曜日 at 時刻: 19:03 by ゆーりプログラム力がやばいということで、
先輩のすすめにより、
1週間前ほどから大学に来たら
「初めてのプログラミング」(Ruby)
を1日1章しています。
最近、練習問題につまづいてきたのでまとめておこうと思います。
8.3 練習問題
「好きな数だけ単語の入力をし、(1行に1単語で、最後は空行でEnterのみで終了とする)」
それをアルファベット順に並び替えて出力するプログラム。
(空行だけでEnterを押しても、きちんと動くようにする)」
ヒントとして、配列を順番に並び替えるsortメソッドというのがあるらしいけど、
ググッても
「配列を扱うためにはArrayメソッドを使います」
と出てきて読んで見てもよくわからん・・・・。
とりあえず、プログラムに行わなければならないことを考えて見た。
1.単語を入れる配列を作成
2.入力される単語getし改行
3.空の改行で終了
4.配列にたまった単語をA~Zでsort
(sortメソッドを使うと書いてあるけど、
puts '単語' < '単語'
を利用し、false or trueでなんとなく、A~Zに並べることできそうやけど?ω?
このままの手順でプログラムを組むと、
最初に空行が入力されたときに、ちゃんと終了できるようにできないよなぁ・・・
※解決したら解答を書く。

