Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(idea/gateway): 15_what-is-gateway #50

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions gateway/15_what-is-gateway-component.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Gatewayコンポーネントとは

Gatewayコンポーネントは、Suteraネットワークにある各BloomコンポーネントやClocking-Serverの公開鍵とエンドポイントを紐付けて保存する役目を負います。
ここでいうエンドポイントとは、IPとポート番号のペアを指します。
クライアントは接続したい任意のコンポーネントの公開鍵をGatewayコンポーネントに渡すことで、接続希望先のエンドポイントを取得できます。

## エンドポイントの検索

Suteraネットワークが広大になっていくほど検索の対象となるコンポーネントの数は膨大になっていきます。
そのような状況下であっても常にエンドポイントの検索は迅速であることが期待されるため、以下の手順によって検索します。

1. リクエストされた公開鍵のハッシュ値を求める
2. そのハッシュ値と小さい差を持つ公開鍵とエンドンポイントのペアのみを検索の対象とする
3. リクエストされた公開鍵と一致する公開鍵とエンドンポイントのペアを見つける

## Gatewayコンポーネントの新設

Gatewayコンポーネントが新設あるいは停止状態から復帰するとき、そのコンポーネントは一切の情報を持たないか、情報が最新の状態に保たれていない可能性があります。
Gatewayコンポーネントが正常に役割を果たせないことを避けるため、このような場合には任意の他のGatewayコンポーネントを選択し全てのデータを受信できます。