Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
 Re: С пятницей всех.  [new]
mayton
Member

Откуда: loopback
Сообщений: 51018
Подсобирал еще сведений.

Пока от Кассандры не избавился но уже написал адаптеры этой-же логики персистенса под Postgres.

Сведенья по нодам и хостам
cqlsh:dhtspace> select * from nodes_hosts;
 node_id                                  | last_city      | last_country | last_ip_port          | last_update_time
------------------------------------------+----------------+--------------+-----------------------+---------------------------------
 784b44b6206e95b8b94c1693a10cc676d874dd5f |     Athis-mons |           FR |                  null |                            null
 3c39806347e45e6990352a0fbf84e61f068d70ce |           null |         null |  222.178.154.4*:51413 | 2021-03-23 19:46:12.317000+0000
 a1ecaa49f1f1bbe9ebb3a6db3c870c3e99245e52 |       Budapest |           HU |    94.45.212.6*:51413 | 2021-03-23 21:03:34.206000+0000
 70924b98bdf323e17a9d0b6870fee6e5130ee382 |     Warrington |           GB |                  null |                            null
 ca83e509f1b2b7c18500eef88937bd6adb8e1396 |            Ise |           JP |    61.239.33.2*:51413 | 2021-03-23 19:45:57.443000+0000
 1276e9861ddeb801736c2ea9966b9a75b825f57d |      Bucharest |           RO |                  null |                            null
 8b2a3e41c730d40abeb5641722eb7ad36bdcbc87 |                |           CN |                  null |                            null
 f8a497f239b28f9075fbfabaf3cfd17b1d41edcc |           null |         null |   195.191.58.2*:51413 | 2021-03-23 19:45:51.018000+0000
 c1e9734240f8e83b8caf344acbeec3f6f8138d2d |       Bistrita |           RO |   83.209.166.1*:51413 | 2021-03-23 19:46:54.263000+0000
 855276e6ab5dbd05f4cee47eb591391b0e1817bb |           null |           US | 178.122.233.23*:51413 | 2021-03-23 19:39:38.585000+0000

Счетчики
cqlsh:dhtspace> select * from nodes_stats;

 node_id                                  | announce_requests | find_nodes_requests | get_peeers_requests | pings_requests
------------------------------------------+-------------------+---------------------+---------------------+----------------
 3dbc6b46b16c7df14c05aea98772504762ff9012 |              null |                   1 |                null |           null
 357d8d96ffa9a99e0f3de34f22cf0a89a8e22096 |              null |                   1 |                null |           null
 c3c6729110e3a259bef55abbc6fbe8517659bae5 |              null |                  86 |                null |           null
 784b44b6206e95b8b94c1693a10cc676d874dd5f |              null |                null |                null |              2
 7f3063c9966f1828b4bef0ac1cb479c38228e206 |              null |                null |                null |              3
 caea8d4917db7895520d7815924ef12ef947bfdd |              null |                   1 |                null |           null
 2b92d5599b2149b105fe3f652014d7f3172c6c62 |              null |                null |                null |              5
 c3c67ad6ae529049f1f1bbe9ebb3a6db3c870ce1 |              null |                   4 |                null |           null
 c3feeac409ae93d7de42e01cd54f1a7eb8cc7732 |              null |                   1 |                null |           null


Сведенья по поисковым операциям я еще не обрабатываю

Наблюдения.

1) События класса announce_peer - самые редкие.
2) По прежнему примерно четверть всего трафика не поддается дешифровке хотя очевидно что это bencode
проткол только с offset-ом. Это всё таки Distributed Hash только формируется другим приложением я так думаю.

 $ /dht-observer/out$ du -h
11M	./decoded
3.9M	./non-decoded
15M	


3) Я не могу себя проверить. Как убедится что на реквест get_peers я вернул корректный результат?
Тоесть как другие участники сети могут сообщить мне что я - флудер или формирую ответы не по протоколу?

4)Как понять в каком формате ожидаются ответы о peers? Nodes?

Вот семпл из документации.

get_peers Query = {"t":"aa", "y":"q", "q":"get_peers", "a": {"id":"abcdefghij0123456789", "info_hash":"mnopqrstuvwxyz123456"}}
bencoded = d1:ad2:id20:abcdefghij01234567899:info_hash20:mnopqrstuvwxyz123456e1:q9:get_peers1:t2:aa1:y1:qe

Response with peers = {"t":"aa", "y":"r", "r": {"id":"abcdefghij0123456789", "token":"aoeusnth", "values": ["axje.u", "idhtnm"]}}
bencoded = d1:rd2:id20:abcdefghij01234567895:token8:aoeusnth6:valuesl6:axje.u6:idhtnmee1:t2:aa1:y1:re


5) Что это? "values": ["axje.u", "idhtnm"] ? Имена в формате domain-names? Если у меня их нет. Можно ли толкать IPv4 адреса?

6) Что мне делать с токеном? Я его сам генерю? Или возвращаю как кукис?

7) Как работает роутинг в DHT? Они пишут

In Kademlia, the distance metric is XOR and the result is interpreted as an unsigned 
integer. distance(A,B) = |A xor B| Smaller values are closer.

Тоесть я должен вычислять сложение по модулю 2 и искать соседей у которых id по метрике ближе к моему искомому?

8) Как лимитировать свой трафик? Сколько раз я могу долбануть UDP пакетом по соседу? Так чтобы не попасть во временный
троттл или бан. Из опыта знаю что если не ставить ограничители на send_udp то можно даже свою сеть повалить.
Это конечно маловероятно но если я буду просто циклиться или ошибаться в алгоритме роута то я буду эдаким
UDP-флудером.
24 мар 21, 00:21    [22299182]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
Все форумы / C++ Ответить