Skip to content

Commit

Permalink
Update documentation, added new docs about Chord project
Browse files Browse the repository at this point in the history
Updated binary files of Chord was also added
  • Loading branch information
oberon5962 committed Jan 31, 2022
1 parent 87484aa commit 7c60894
Show file tree
Hide file tree
Showing 37 changed files with 533 additions and 42,336 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,4 @@
/Sample4/.user/*
/Sample4/.db/*
/Sample4/.suo/*
/Sample4/doc/materials
/Sample4/chord/*
Binary file modified Sample4/bin/CHORD_10bit.exe
Binary file not shown.
Binary file modified Sample4/bin/CHORD_20bit.exe
Binary file not shown.
Binary file modified Sample4/bin/CHORD_4bit.exe
Binary file not shown.
4 changes: 2 additions & 2 deletions Sample4/bin/config.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"arrayID": [ 56, 607, 896, 563, 62, 134, 45, 163, 438, 374, 500, 678, 1, 1000, 516, 787, 583, 113, 289, 581],
"gen_random": true,
"arrayID": [1, 7, 3, 10, 9, 4, 12, 0, 2, 15],
"gen_random": false,
"log_chord_debug": false,
"nodes": 10,
"shuffle": false,
Expand Down
42 changes: 20 additions & 22 deletions Sample4/bin/log/app.txt
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
0 app939183 TxRx create
0 app380391 TxRx create
0 app438703 TxRx create
0 app927189 TxRx create
0 app467873 TxRx create
0 app731447 TxRx create
0 app295442 TxRx create
0 app398555 TxRx create
0 app50360 TxRx create
0 app764434 TxRx create
0 app939183 Tx > > > generateMess 1(1) HARD_RESET
560 app859288 Tx > > > generateMess 1(1) HARD_RESET
70 app380391 Tx > > > generateMess 1(1) HARD_RESET
140 app438703 Tx > > > generateMess 1(1) HARD_RESET
210 app927189 Tx > > > generateMess 1(1) HARD_RESET
280 app467873 Tx > > > generateMess 1(1) HARD_RESET
630 app51229 Tx > > > generateMess 1(1) HARD_RESET
350 app731447 Tx > > > generateMess 1(1) HARD_RESET
420 app295442 Tx > > > generateMess 1(1) HARD_RESET
490 app398555 Tx > > > generateMess 1(1) HARD_RESET
560 app50360 Tx > > > generateMess 1(1) HARD_RESET
630 app764434 Tx > > > generateMess 1(1) HARD_RESET
0 app820 TxRx create
0 app635 TxRx create
0 app422 TxRx create
0 app342 TxRx create
0 app512 TxRx create
0 app765 TxRx create
0 app992 TxRx create
0 app845 TxRx create
0 app445 TxRx create
0 app730 TxRx create
0 app820 Tx > > > generateMess 1(1) HARD_RESET
70 app635 Tx > > > generateMess 1(1) HARD_RESET
140 app422 Tx > > > generateMess 1(1) HARD_RESET
210 app342 Tx > > > generateMess 1(1) HARD_RESET
280 app512 Tx > > > generateMess 1(1) HARD_RESET
350 app765 Tx > > > generateMess 1(1) HARD_RESET
420 app992 Tx > > > generateMess 1(1) HARD_RESET
490 app845 Tx > > > generateMess 1(1) HARD_RESET
560 app445 Tx > > > generateMess 1(1) HARD_RESET
630 app730 Tx > > > generateMess 1(1) HARD_RESET
1,169 changes: 149 additions & 1,020 deletions Sample4/bin/log/snapshot.txt

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Sample4/config.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"arrayID": [ 56, 607, 896, 563, 62, 134, 45, 163, 438, 374, 500, 678, 1, 1000, 516, 787, 583, 113, 289, 581],
"arrayID": [1, 7, 3, 10, 9, 4, 12, 0, 2, 15],
"gen_random": false,
"log_chord_debug": false,
"nodes": 10,
Expand Down
Binary file added Sample4/doc/chord_enecuum_algo.pdf
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added Sample4/doc/materials/broadcast_chord_2010.pdf
Binary file not shown.
Binary file added Sample4/doc/materials/chord_classic_paper_1.pdf
Binary file not shown.
Binary file added Sample4/doc/materials/chord_classic_paper_2.pdf
Binary file not shown.
Binary file added Sample4/doc/materials/chord_enecuum_algo.docx
Binary file not shown.
Binary file added Sample4/doc/materials/chord_low_latency_2006.pdf
Binary file not shown.
Binary file added Sample4/doc/materials/chord_problems.pdf
Binary file not shown.
Binary file added Sample4/doc/materials/chord_problems.pptx
Binary file not shown.
Binary file added Sample4/doc/materials/chord_slides.pdf
Binary file not shown.
Binary file added Sample4/doc/materials/overview_p2p_book.pdf
Binary file not shown.
Binary file added Sample4/doc/materials/overview_p2p_paper.pdf
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
166 changes: 145 additions & 21 deletions Sample4/doc/transport_plus.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# Над-транспортный уровень Transport+ Хорда
# Над-транспортный уровень Transport+

# уровень Хорда

Draft document. Черновой рабочий документ.

Содержание

Expand Down Expand Up @@ -116,6 +120,26 @@

При корректном заполнении successor и таблицы fingers и latency не менее, чем на 2 записи, взводится таймер t_update на длительность, указанную в конфигурационном параметре Tupdate.



Таймеры, используемые в этом состоянии:

CHORD_TIMER_RX_ACK , CHORD_TIMER_RX_SUCCESSOR_ON_JOIN , CHORD_TIMER_RX_SUCCESSOR.



Разрешено принимать и обрабатывать следующие сообщения:

CHORD_RX_ACK , CHORD_RX_SUCCESSOR.



Разршено отправлять следующие сообщения:

CHORD_TX_JOIN , CHORD_TX_FIND_SUCCESSOR.



#### IDLE

В данном состоянии уровень Transport+ ожидает поступления данных или истечения таймера проверки актуальности (доступности) узлов t_update. Данными являются: 1) входящие сообщения, поступающие из сети; 2) запросы, приходящие от вышерасположенного уровня приложения (далее - приложения).
Expand All @@ -124,13 +148,51 @@

Также проверяется поступало ли такое сообщение ранее. Для этого каждое сообщение идентифицируется по временной метке и **подсчитывается количество получений** такого сообщения. Если количество превышает допустимое, определенное в конфигурационном параметре Crxduple в течение времени Trxduple, то сообщение отбрасывается.



Таймеры, используемые в этом состоянии:

все.



Разрешено принимать и обрабатывать следующие сообщения:

все.



Разршено отправлять следующие сообщения:

все.



#### IN_DATA

Состояние обработки информационного сообщения `single` или `broadcast`, принятого из p2p сети. Выполняются следующие действия:

1. Отправка подтверждения получения `ack`;
3. Передать данных из сообщения в приложению, если адресат сообщения соответствует собственному адресу узла;
4. При необходимости переслать сообщение далее по сети по логике LLChord или Broadcast с ожиданием подтверждения `ack` в течение таймаута Trxack.
2. Передать данных из сообщения в приложению, если адресат сообщения соответствует собственному адресу узла;
3. При необходимости переслать сообщение далее по сети по логике LLChord или Broadcast с ожиданием подтверждения `ack` в течение таймаута Trxack.

Таймеры, используемые в этом состоянии:

CHORD_TIMER_RX_ACK.



Разрешено принимать и обрабатывать следующие сообщения:

CHORD_RX_ACK , CHORD_RX_BROADCAST , CHORD_RX_MULTICAST , CHORD_RX_SINGLE.



Разршено отправлять следующие сообщения:

CHORD_TX_ACK , CHORD_TX_FWD_BROADCAST , CHORD_TX_FWD_MULTICAST , CHORD_TX_FWD_SINGLE.



#### SERVICE

Expand All @@ -139,10 +201,27 @@
Обрабатываются следующие сообщения:

- `join`

- `find_successor`
- `find_predecessor`
- `ack`

Таймеры, используемые в этом состоянии:

CHORD_TIMER_RX_ACK.



Разрешено принимать и обрабатывать следующие сообщения:

CHORD_RX_ACK , CHORD_RX_JOIN , CHORD_RX_FIND_SUCCESSOR , CHORD_RX_FIND_PREDECESSOR.



Разршено отправлять следующие сообщения:

CHORD_TX_SUCCESSOR , CHORD_TX_FIND_SUCCESSOR , CHORD_TX_ACK , CHORD_TX_PREDECESSOR.




#### APP_REQUEST

Expand All @@ -154,6 +233,22 @@
- **req_single** - формируется и отправляется сообщение `single_message`с ожиданием прихода подтверждения ack в течение таймаута Trxack;
- **req_broadcast** - формируется и отправляется сообщение `broadcast_message` с ожиданием прихода подтверждения ack в течение таймаута Trxack.

Таймеры, используемые в этом состоянии:

CHORD_TIMER_RX_ACK.



Разрешено принимать и обрабатывать следующие сообщения:

CHORD_RX_ACK.



Разршено отправлять следующие сообщения:

CHORD_TX_BROADCAST , CHORD_TX_MULTICAST , CHORD_TX_SINGLE.



#### UPDATE
Expand All @@ -163,10 +258,25 @@
Обрабатываются следующие сообщения:

- `notify`

- `successor`




Таймеры, используемые в этом состоянии:

CHORD_TIMER_RX_ACK , CHORD_TIMER_RX_SUCCESSOR , CHORD_TIMER_RX_PREDECESSOR , CHORD_TIMER_UPDATE.



Разрешено принимать и обрабатывать следующие сообщения:

CHORD_RX_SUCCESSOR , CHORD_RX_PREDECESSOR , CHORD_RX_ACK , CHORD_RX_NOTIFY.



Разршено отправлять следующие сообщения:

CHORD_TX_FIND_SUCCESSOR , CHORD_TX_ACK , CHORD_TX_FIND_PREDECESSOR , CHORD_TX_NOTIFY.



Expand All @@ -178,24 +288,27 @@

| Параметр | Назначение | Значение по умолчанию |
| -------------------- | ------------------------------------------------------------ | ------------------------------------------------------- |
| netw_addr | собственный сетевой адрес узла, состоящий из IP, номера входящего и выходящего сокетов | Задается сторонним приложением |
| netw_addr | собственный сетевой адрес узла, состоящий из IP, номера входящего и выходящего сокетов | Задается администратором сети |
| seed | список над-транспортных адресов узлов, корректно функционирующих в p2p сети | Требуется указать минимум 1 над-транспортный адрес узла |
| Trx_succ_on_join | Таймаут ожидания прихода сообщения successor в ответ на отправленное сообщение join | 14 сек |
| Trx_succ | Таймаут ожидания прихода сообщения succesor в ответ на отправленное сообщение find_successor | Trx_succ_on_join / 2 |
| Trx_succ_on_join | Таймаут ожидания прихода сообщения successor в ответ на отправленное сообщение join | 15 сек |
| Trx_succ | Таймаут ожидания прихода сообщения succesor в ответ на отправленное сообщение find_successor | 5 сек |
| Trx_pred | Таймаут ожидания прихода сообщения predecessor в ответ на отправленное сообщение find_predecessor | 5 сек |
| Tupdate | Таймаут проверки fingers, successor, predecessor | 1 сек |
| Trx_ack | Таймаут ожидания прихода сообщения подтверждения ack | 0,5 сек |
| Trx_ack | Таймаут ожидания прихода сообщения подтверждения ack | 5 сек |
| Trx_duple | Таймаут в течение, которого разрешено получать и обрабатывать дублированное сообщение | 2х Trx_succ_on_join |
| Ctx_join | Количество повторных отправок сообщений join перед тем, как перейти к отправке join к следующему узлу из списка seed | 1 |
| Ctx_find_succ | Количество повторных отправок сообщений find_successor перед тем, как признать, что узел недоступен и установить fingers[i] = fingers[i-1] | 1 |
| Ctx_retry | Количество повторных отправок сообщений, если не было получено подтверждение ack до истечения таймера Trx_ack | 3 |
| Ctx_find_succ | Количество повторных отправок сообщений find_successor перед тем, как признать, что узел недоступен и установить fingers[i] = fingers[i-1] | 0 |
| Ctx_retry | Количество повторных отправок сообщений, если не было получено подтверждение ack до истечения таймера Trx_ack | 0 |
| Crx_duple | Количество разрешенных получений дублированных сообщений | 1 |
| fingers_size | Размер таблицы fingers в классической Chord | 32 |
| fill_fingers_min_qty | Минимальное количество заполнения таблицы fingers на этапе подсоединения узла к сети в состоянии Join | 3 |
| fingers_size | Размер таблицы fingers в классической Chord | 11 |
| fill_fingers_min_qty | Минимальное количество заполнения таблицы fingers на этапе подсоединения узла к сети в состоянии Join | 0 |
| needs_ack | Гарантированная доставка:<br />0 - при передаче сообщений не требуется получение сообщений подтверждений;<br />1 - требуется получение сообщений подтверждений | 1 |
| | | |





### Типы сообщений

В Transport+ уровне определены и используются следующие типы сообщений: служебные и информационные сообщения.
Expand Down Expand Up @@ -225,23 +338,32 @@
Состоит из следующих полей:

- dest - Transport+ адрес узла назначения;

- source - адрес узла отправителя;

- initiator - адрес узла, первоначально запустившего по сети запрос;

- type - тип запроса. Принимает значение "find_successor";
- данные - поле данных. Содержит искомый id узла;
- issued time - время создания запроса.

- searchedID - cодержит искомый id узла.





Сообщение **reply_find_successor** служит для ...
Сообщение **successor** служит для ...

Состоит из следующих полей:

- dest - адрес узла назначения;

- source - адрес узла отправителя;

- type - тип запроса. Принимает значение "reply_find_successor".
- данные - поле данных. Содержит адрес искомого узла в виде структуры под названием successor_address с полями: {ip, socket, id}
- issued time - время создания запроса

- searchedID - cодержит адрес искомого узла в виде структуры под названием successor_address с полями: {ip, socket, id}.





Expand All @@ -255,7 +377,9 @@

Рис. 3 - Укрупненная структурная схема модели p2p

За функциональность Transport+ уровня отвечает модуль `Transport_plus` c подмодулем `low_latency_chord`, реализующего функциональность алгоритма Low Latency Chord.
За функциональность Transport+ уровня отвечает **модуль Transport_plus** c подмодулем `low_latency_chord`, реализующего функциональность алгоритма Low Latency Chord и классической Chord.

Поскольку в интернете неизвестно количество коммутаторов на маршруте и их характеристики, то **модуль IP сети** представляет собой упрощенную среду передачи в виде "гигантского" коммутатора, в котором к каждому порту подключен только один узел. В порту перед узлом имеется очередь для хранения входящих сообщений.

Архитектура внутренних взаимосвязей Transport+ уровня в виде цепочки вызовов программных функций проиллюстрирована на рис. 4.

Expand Down
Empty file removed Sample4/inc/broadcast.h
Empty file.
Loading

0 comments on commit 7c60894

Please sign in to comment.