diff --git a/gateway/15_what-is-gateway-component.md b/gateway/15_what-is-gateway-component.md new file mode 100644 index 0000000..5a66035 --- /dev/null +++ b/gateway/15_what-is-gateway-component.md @@ -0,0 +1,19 @@ +# Gatewayコンポーネントとは + +Gatewayコンポーネントは、Suteraネットワークにある各BloomコンポーネントやClocking-Serverの公開鍵とエンドポイントを紐付けて保存する役目を負います。 +ここでいうエンドポイントとは、IPとポート番号のペアを指します。 +クライアントは接続したい任意のコンポーネントの公開鍵をGatewayコンポーネントに渡すことで、接続希望先のエンドポイントを取得できます。 + +## エンドポイントの検索 + +Suteraネットワークが広大になっていくほど検索の対象となるコンポーネントの数は膨大になっていきます。 +そのような状況下であっても常にエンドポイントの検索は迅速であることが期待されるため、以下の手順によって検索します。 + +1. リクエストされた公開鍵のハッシュ値を求める +2. そのハッシュ値と小さい差を持つ公開鍵とエンドンポイントのペアのみを検索の対象とする +3. リクエストされた公開鍵と一致する公開鍵とエンドンポイントのペアを見つける + +## Gatewayコンポーネントの新設 + +Gatewayコンポーネントが新設あるいは停止状態から復帰するとき、そのコンポーネントは一切の情報を持たないか、情報が最新の状態に保たれていない可能性があります。 +Gatewayコンポーネントが正常に役割を果たせないことを避けるため、このような場合には任意の他のGatewayコンポーネントを選択し全てのデータを受信できます。