Кіріспе
Pastry - Chord-қа ұқсас бөлінген хэш-кесте (DHT) іске асыру үшін жапсырмалы желі және маршруттау желісі. Кілт-маңыз жұптары қосылған Интернет хосттарының артық пир-пир желісінде сақталады. Протокол желідегі IP-адресті беру арқылы басталады, содан кейін динамикалық түрде құрылған және жөнделген маршруттау кестесі арқылы. Оның артық және орталықтандырылмаған табиғаты бойынша, сәтсіздіктің бірден-бір нүктесі жоқ және кез-келген түйін кез-келген уақытта ескертусіз және деректерді жоғалту мүмкіндігі аз немесе мүлдем жоқ желіден шыға алады. Протокол сонымен қатар сыртқы бағдарламамен қамтамасыз етілген маршрут метрикасын, мысалы, ping немесе traceroute, маршрут кестесіне сақтауға болатын ең жақсы маршруттарды анықтау үшін пайдалана алады.
Шолу
Пастердің таратылған хэш-кестесі басқа DHT-мен бірдей болғанымен, оны ерекшелендіретін нәрсе - DHT тұжырымдамасының үстінде салынған маршруттау жапсырмасы. Бұл Пастерге басқа желілердің масштабталуы мен қатеге төзімділігін іске асыруға мүмкіндік береді, сонымен қатар пакеттерді су басу қажеттілігін болдырмау арқылы пакеттерді бір тораптан екінші торапқа бағыттаудың жалпы құнын азайтады. Маршруттау метрикасы мақсатты тораптың IP-мекенжайына негізделген сыртқы бағдарламамен қамтамасыз етілетіндіктен, метриканы ең қысқа секіру санына, ең төменгі кідіру мерзіміне, ең жоғары жолақты еніне немесе тіпті метрикалардың жалпы комбинациясына оңай ауыстыруға болады. Хаш-таблицаның кілт кеңістігі, Chord жүйесіндегі кілт кеңістігі сияқты, дөңгелек болып саналады, ал түйін ID-лері 128 биттік белгісіз бүтін сандар болып табылады, олар дөңгелек кілт кеңістігіндегі орнын білдіреді. Торап ID-лері кездейсоқ және біркелкі таңдалады, сондықтан торап ID-де көршілес тұрған әріптестер географиялық жағынан әртүрлі. Маршруттау үстінен желісі әр түлегі барлау және алмасу арқылы қалыптасады хаш-кестесі тізіміне сәйкес келетін жай-күй ақпараты, жапырақ торабы, көршілік тізімі және маршруттау кестесі. Жапырақ тораптарының тізімі шеңбердің айналасындағы әрбір бағыттағы торап ID бойынша L/2 ең жақын теңесулерден тұрады. Жапырақ түйіндеріне қоса көршілік тізімі де бар. Бұл маршруттандыру метрикасы бойынша M ең жақын теңдестерді білдіреді. Ол маршрут алгоритміне тікелей қолданылмаса да, көршілік тізімі маршрут кестесінде жергілікті принциптерді сақтау үшін қолданылады. Соңында маршрут кестесі бар. Ол өзіне берілген әрбір адрестік блок үшін бір жазбаны қамтиды. Адрес блоктарын қалыптастыру үшін 128 биттік кілт әр цифрдың ұзындығы b бит болып саналатын цифрларға бөлінеді, бұл 2b негізіндегі нөмірлеу жүйесін береді. Бұл клиенттің көзқарасынан мекенжайларды әртүрлі деңгейлерге бөледі, 0 деңгейі екі мекенжай арасындағы нөлдік цифрлық ортақ префиксті, 1 деңгейі бір цифрлық ортақ префиксті және т.б. білдіреді. Маршруттау кестесі әрбір адрестік деңгейдегі әрбір ықтимал цифр үшін ең жақын белгілі теңдестірушінің мекенжайын қамтиды, тек сол нақты деңгейдегі теңдестірушінің өзіне тиесілі цифрды қоспағанда. Бұл деңгей бойынша байланыстарды сақтауды қамтамасыз етеді, деңгейлер саны типтік желідегі жұмыс мәндерін көрсетеді.
results in the storage of contacts per level, with the number of levels scaling as Values of and represent operating values on a typical network.
Жолдау
Пакет сол тораптың ID-мен теңесуші бар-жоғына қарамастан, кілттер кеңістігіндегі кез келген адреске бағытталуы мүмкін. Пакет шеңберлі сақинадағы тиісті орнына бағытталады және түйін ID-і қажетті орынға ең жақын болатын теңдес пакет алады. Қашанда бір әріптес маршруттандыру үшін пакет алады немесе пакет жібергісі келсе, ол алдымен оның жапырақ жиынтығын тексереді және егер ол табылса, тікелей дұрыс торапқа бағытталады. Егер бұл сәтсіз болса, онда peer өзінің маршрут кестесін peer-дің өзінен ұзақ префиксті мақсат адресімен бөлісетін түйіннің мекенжайын табу мақсатымен қарайды. Егер теңдеспен байланыста ұзақ префикс бар байланыс болмаса немесе байланыс өлген болса, ол сол ұзындығы префиксті байланыс тізімінен таңдап алады, оның торабының ID-і нөмірлік жағынан мақсатқа жақын және сол теңдеске пакет жібереді. Адрестегі дұрыс цифрлардың саны әрқашанда көбейеді немесе бірдей болады және егер ол бірдей болса, пакет пен оның баратын жері арасындағы қашықтық кішірейеді маршруттау протоколы конвергенция.
Pastry-ге негізделген қолданбалар
Пастердің өзі кілттердің түйіндер арасында қалай бөлінгенін және кілтті ұстауға жауапты түйінді қалай табуға болатындығын анықтайды. Мұны жоғары протоколдың субстраты ретінде пайдалану Pastry-ге бөлінген файл жүйесі, жазылу және жариялау жүйесі немесе құндылықтарды сақтау және оларды кейіннен қайтару үшін төмендетуге болатын кез келген басқа жүйе сияқты функционалдылықты іске асыруға мүмкіндік береді.
Өткен
PAST - бұл Pastry-дің үстінде орналастырылған файл жүйесі. Файл файл атауының хэшін есептеу арқылы жүйеге сақталады. Содан кейін Pastry файлдың мазмұнын файл атауынан алынған хэшке ең жақын шеңберлі кілттер кеңістігіндегі түйінге бағыттайды. Бұл түйін файлдың көшірмелерін нақты кілтке жақын k түйіндерге жібереді, олардың көпшілігі осы түйіннің жапырақ түйіндері болуы мүмкін және осылайша тікелей қол жетімді болады. Деректерді алу файл атауын қайталап, Pastry арқылы деректерді сұрауды кілттер кеңістігіндегі тиісті орынға бағыттау арқылы жүзеге асырылады. Сұрауды деректердің көшірмесі бар k түйіндердің кез келгені орындай алады. Бұл деректерді артық пайдалануды және жүктемені бөлуді қамтамасыз етеді. Кілттер кеңістігіндегі көрші түйіндер географиялық жағынан әртүрлі болғандықтан, олардың барлығы k бір уақытта желіден тыс қалуының ықтималдығы өте аз. Ең бастысы, Pastry маршруттау протоколы жолдағы қашықтықты азайтуға тырысады, сондықтан сұранысты жасаған машинаға ең жақын торабы (метрияға сәйкес) деректерге жауап беретін болуы мүмкін.
ЖАЗЫЛЫП алыңыз
SCRIBE - бұл орталықсыздандырылған жариялау / жазылу жүйесі, ол Pastry-ді негізгі бағытты басқару және хост іздеу үшін пайдаланады. Пайдаланушылар басқа пайдаланушылар тіркеле алатын тақырыптар жасайды. Тақырып құрылғаннан кейін, тақырып иесі тақырыпқа жазылып алған барлық SCRIBE түйіндеріне көп тарату ағашында таратылатын тақырып бойынша жаңа жазбаларды жариялай алады. Жүйе тақырыптың аты мен оны иеленетін пайдаланушының атымен байланыстырып, тақырыптың хэшін есептеу арқылы жұмыс істейді. Бұл хэш содан кейін Pastry кілті ретінде қолданылады, содан кейін баспагер Пакеттерді Pastry маршруттау протоколын қолдана отырып, кілтке ең жақын торапқа бағыттап, сол торапта тақырыптың түбір торапын жасайды. Содан кейін адамдар тақырыптың кілтін және жариялаушының атын есептеу арқылы тақырыпқа жазылады, содан кейін Пастерді қолдану арқылы тақырыпқа жазылу хабарламасын тамыр түйініне бағыттайды. Тамыр түйіні басқа түйіннен жазылу хабарламасын алған кезде ол түйіннің идентификаторын өзінің балаларының тізіміне қосады және тақырыптың тасымалдаушысы ретінде әрекет ете бастайды. Децентрализация желідегі барлық түйіндердің тақырыптың түбір түйініне бара жатқан жазылу хабарламаларына көз тастауы арқылы жүзеге асырылады. Егер тақырып қазіргі торап жазылатын болса, ол пакетті тамыр торапқа жіберуді тоқтатады және жазылуға тырысатын торапты өзінің балаларының бірі ретінде қосады. Осылайша ағаштық құрылым қалыптасады, оның үстіндегі тамыр түйіні алғашқы бірнеше абоненттік түйіндерге жібереді, содан кейін осы түйіндердің әрқайсысы хабарламаларды өз балаларына жібереді және т.б. Pastry желісінің кездейсоқ түйіндерінен бір түйінге арналған пакеттер жиі бір жолмен өте тез жүретіндіктен, олар Pastry желісінде ағаштан неғұрлым жақын болса, соған жалғасады. Пастерлік бағыт бойынша әрбір секіру жергілікті жердегі ең жақсы бағытты білдіретіндіктен, абоненттік хабарлама ағаштың ең жақын бөлігін іздеп, сол жерге қосылады. Ақырында, тарату ағашының мүшелері арасындағы қатеге төзімділік уақыт үзілістері мен сақтаушыларды пайдалану арқылы жүзеге асырылады, бұл ретте нақты деректер тасымалы трафикті азайту үшін сақтаушы ретінде екі есеге көбейеді. Егер балалық түйін ата-анасынан біраз уақыт естімесе, ол жаңа жазылу хабарламасын ағаштың тамыр түйініне бағыттап, сол тақырыпқа ағашты кез келген жерде қайта жалғастырады. Егер ата-ана баласынан белгілі бір уақыт бойы хабар алмаса, баласын тізімнен алып тастайды. (Егер бұл әрекет оның бала тізімі бос болса, ата-анасы тасымалдаушы ретінде әрекет етуді мүлдем тоқтатады.) Жалғыз қалған сәтсіздік нүктесі тамыр түйінінің нүктесі болып табылады, және Пастердің өзі автоматты түрде оны жеңеді. Pastry кілттерді кілттің нақты мәніне жақын бірнеше түйін арасында қайталайды, сондықтан тамыр түйінінде айналар орнатылған, ұйықтап жатыр. Егер тамыр түйіні желіден тыс болса, тағы да уақыт үзілісі арқылы анықталса, келесі ең жақын Пастерлік түйіні тамыр түйіні ретінде әрекет ете бастайды. Тақырыпты құрушы жаңа материалды жариялауға тырысқан кезде ескі тамыр торапқа қол жеткізу мүмкін болмайды. Одан кейін жариялаушы "Pastry" желісіне кіріп, оны өзінің жариялау хабарламасын жаңа түбір торапқа бағыттауға пайдаланады. Бұл орындалғаннан кейін, жариялаушы жаңа тамыр түйіннің IP-адресі көшірмесін кешке сақтап, болашақ берілістер үшін Pastry желісін пайдалануды азайтады.
closest to the key using Pastry's routing protocol to create the root node of the topic on that node. People then subscribe to the topic by computing the key from the topic and publisher's name and then using Pastry to route a subscribe message to the topic towards the root node. When the root node receives the subscribe message from another node it adds the node ID to its list of children and begins acting as a forwarder of the topic. Decentralization is accomplished through having all nodes in the network snoop on subscribe messages going past them on their way to the topic's root node. If the topic is one to which the current node subscribes, it will stop forwarding the packet toward the root node and add the node trying to subscribe as one of its children. In this way a treelike structure is formed with the root node at the top sending out to the first few subscriber nodes and then each of these nodes forwarding the messages on to their children, and so on. Because packets from random nodes on the Pastry network destined for the same node often end up traveling along the same path very soon in their journey, they end up attaching to whatever part of the tree is nearest to them in the Pastry network. Since each hop along a pastry route represents what is locally the best route according to the routing metric in use, the subscribe message seeks out the closest portion of the tree and attaches itself there. Finally fault tolerance among members of the distribution tree is accomplished through the use of timeouts and keepalives with actual data transmissions doubling as keepalives to minimize traffic. If a child node does not hear from its parent for a while, it routes a new subscribe message toward the root node of the tree, reattaching itself wherever it bumps into the tree for that topic. If a parent doesn't hear from a child for a timeout period, it drops the child from its list of children. (If this action causes its child list to become empty, the parent stops acting as a forwarder altogether.) The only remaining failure point is that of the root node, and Pastry itself automatically overcomes this. Because Pastry duplicates keys among the few nodes closest to the key's actual value, the root node already has mirrors set up, lying dormant. If the root node goes offline, again detected through timeouts, the next closest Pastry node will begin acting as the root node. When the creator of the topic tries to publish new material the old root node will be unreachable. The publisher will then fall back on the Pastry network and use it to route its publish message to the new root node. Once this has been done, the publisher caches a copy of the new root node's IP address to reduce the use of the Pastry network for future transmissions.