| すべてのGnutellaクライアントはpingの洪水の罪で有罪だ。毎分ネットワーク上の全てのクライアントはネットワーク上のほかの全てのサーバを発見するためPINGメッセージをブロードキャストする。2000のサーバが存在すると、一分間に4百万の無駄なメッセージが生じる。
実際は、クライアントはネットワークを知ることにそれほど意欲的なわけではない。ネットワークの大部分は他のサーバへ向かうPONGメッセージを聴くことによって発見される。私が理解している範囲では現在のクライアントにすでに実装済みである また既に実装されているものは、好きなときにいつでもネットワークを発見できる機能である。おそらく起動したときにのみ自動的にネットワークを検出しその後に手動での検出をするようにすればもっと良くなるだろう。そうすればネットワークに溢れるPINGのパケットを大幅に削減することになるだろう。
現在クライアントが実装していない機能で思いつくものはPONGキャッチャーだ。それぞれのクライアントは知っているサーバの全リストに容易に応答できるが、まだそうなってはいない。一見するとこの機能は安全でないと思われるかもしれない。でもそうではない。起きうる最悪のことは間違ったホストが報告されるということだ。いくつかの妥当な応答がある限りひどいことにはならない。 クライアントは間違った応答の数が最小になるように捕まえるPONGの情報をタイムアウトするべきだ。もしクライアントが合理的な数の既知のサーバに応答することができれば、PINGを送るべきではない。そうすればネットワーク上のPINGパケットの数を最小限に抑えることができるだろう。 |