часть 1. РЕШЕНИЯ INTERLAYER DISCOVERY

Thank you for reading this post, don't forget to subscribe!

В мно­го­уров­не­вой и/или модуль­ной систе­ме дол­жен быть какой-то спо­соб свя­зать услу­ги или объ­ек­ты на одном уровне с услу­га­ми и объ­ек­та­ми на дру­гом. Рису­нок 1 иллю­стри­ру­ет проблему.

  • Как A, D и E могут опре­де­лить IP-адрес, кото­рый они долж­ны исполь­зо­вать для сво­их интерфейсов?
  • Как D может обна­ру­жить Media Access Control адрес (MAC), физи­че­ский адрес или адрес про­то­ко­ла ниж­не­го уров­ня, кото­рый он дол­жен исполь­зо­вать для отправ­ки паке­тов на E?
  • Как может client1.example, рабо­та­ю­щий на D, обна­ру­жить IP-адрес, кото­рый он дол­жен исполь­зо­вать для досту­па к www.service1.example?
  • Как D и E могут узнать, на какой адрес они долж­ны отправ­лять тра­фик, если они не на одном и том же кана­ле или в одном и том же сегменте?

Каж­дая из этих про­блем пред­став­ля­ет собой отдель­ную часть interlayer discovery. Хотя эти про­бле­мы могут пока­зать­ся не свя­зан­ны­ми друг с дру­гом, на самом деле они пред­став­ля­ют собой один и тот же набор про­блем с узким набо­ром доступ­ных реше­ний на раз­ных уров­нях сети или сте­ках про­то­ко­лов. В лек­ции будет рас­смот­рен ряд воз­мож­ных реше­ний этих про­блем, вклю­чая при­ме­ры каж­до­го решения.

Основ­ная при­чи­на, по кото­рой про­блем­ное про­стран­ство interlayer discovery кажет­ся боль­шим набо­ром не свя­зан­ных меж­ду собой про­блем, а не одной про­бле­мой, состо­ит в том, что оно рас­пре­де­ле­но по мно­же­ству раз­лич­ных уров­ней; каж­дый набор уров­ней в сте­ке сете­вых про­то­ко­лов дол­жен иметь воз­мож­ность обна­ру­жи­вать, какая услу­га или объ­ект на «этом» уровне отно­сит­ся к какой услу­ге или объ­ек­ту на каком-либо более низ­ком уровне. Дру­гой спо­соб опи­сать этот набор про­блем - это воз­мож­ность сопо­ста­вить иден­ти­фи­ка­тор на одном уровне с иден­ти­фи­ка­то­ром на дру­гом уровне - сопо­став­ле­ние иден­ти­фи­ка­то­ров. Посколь­ку в наи­бо­лее широ­ко при­ме­ня­е­мых сте­ках про­то­ко­лов есть по край­ней мере три пары про­то­ко­лов , необ­хо­ди­мо раз­вер­нуть широ­кий спектр реше­ний для реше­ния одно­го и того же набо­ра про­блем меж­уров­не­во­го обна­ру­же­ния в раз­ных местах. Два опре­де­ле­ния будут полез­ны для пони­ма­ния диа­па­зо­на реше­ний и фак­ти­че­ски раз­вер­ну­тых про­то­ко­лов и систем в этой области:

  • Иден­ти­фи­ка­тор - это набор цифр или букв (напри­мер, стро­ка), кото­рые одно­знач­но иден­ти­фи­ци­ру­ют объект.
  • Устрой­ство, реаль­ное или вир­ту­аль­ное, кото­рое с точ­ки зре­ния сети кажет­ся еди­ным местом назна­че­ния, будет назы­вать­ся объ­ек­том при рас­смот­ре­нии общих про­блем и реше­ний, а так­же хоста­ми или услу­га­ми при рас­смот­ре­нии кон­крет­ных решений.

Есть четы­ре раз­лич­ных спо­со­ба решить про­бле­мы обна­ру­же­ния interlayer discovery и адресации:

  • Исполь­зо­ва­ние извест­ных и/или настро­ен­ных вруч­ную идентификаторов
  • Хра­не­ние инфор­ма­ции в базе дан­ных сопо­став­ле­ния, к кото­рой служ­бы могут полу­чить доступ для сопо­став­ле­ния раз­лич­ных типов идентификаторов.
  • Объ­яв­ле­ние сопо­став­ле­ния меж­ду дву­мя иден­ти­фи­ка­то­ра­ми в протоколе
  • Вычис­ле­ние одно­го вида иден­ти­фи­ка­то­ра из другого

Эти реше­ния отно­сят­ся не толь­ко к обна­ру­же­нию, но и к при­сво­е­нию иден­ти­фи­ка­то­ра. Когда хост под­клю­ча­ет­ся к сети или служ­ба запус­ка­ет­ся, он дол­жен каким-то обра­зом опре­де­лить, как он дол­жен иден­ти­фи­ци­ро­вать себя - напри­мер, какой адрес Интер­нет-про­то­ко­ла вер­сии 6 (IPv6) он дол­жен исполь­зо­вать при под­клю­че­нии к локаль­ной сети. Доступ­ные реше­ния этой про­бле­мы - это те же четы­ре решения.


ХОРОШО ИЗВЕСТНЫЕ И/ИЛИ НАСТРАИВАЕМЫЕ ВРУЧНУЮ ИДЕНТИФИКАТОРЫ

Выбор реше­ния часто зави­сит от объ­е­ма иден­ти­фи­ка­то­ров, коли­че­ства иден­ти­фи­ка­то­ров, кото­рые необ­хо­ди­мо назна­чить, и ско­ро­сти изме­не­ния иден­ти­фи­ка­то­ров. Если:

  • Иден­ти­фи­ка­то­ры широ­ко исполь­зу­ют­ся, осо­бен­но в реа­ли­за­ци­ях про­то­ко­лов, и сеть про­сто не будет рабо­тать без согла­со­ва­ния меж­уров­не­вых сопо­став­ле­ний и …
  • Коли­че­ство сопо­став­ле­ний меж­ду иден­ти­фи­ка­то­ра­ми отно­си­тель­но неве­ли­ко, и …
  • Иден­ти­фи­ка­то­ры, как пра­ви­ло, ста­биль­ны - в част­но­сти, они нико­гда не изме­ня­ют­ся таким обра­зом, что­бы суще­ству­ю­щие раз­вер­ну­тые реа­ли­за­ции были изме­не­ны, что­бы сеть мог­ла про­дол­жать функ­ци­о­ни­ро­вать, а затем …

Самым про­стым реше­ни­ем явля­ет­ся веде­ние какой-либо таб­ли­цы сопо­став­ле­ния вручную.

Напри­мер, про­то­кол управ­ле­ния пере­да­чей (TCP) под­дер­жи­ва­ет ряд транс­порт­ных про­то­ко­лов более высо­ко­го уров­ня. Про­бле­ма соот­не­се­ния отдель­ных пере­но­си­мых про­то­ко­лов с номе­ра­ми пор­тов явля­ет­ся гло­баль­ной про­бле­мой меж­уров­не­во­го обна­ру­же­ния: каж­дая реа­ли­за­ция TCP, раз­вер­ну­тая в реаль­ной сети, долж­на иметь воз­мож­ность согла­со­вать, какие служ­бы доступ­ны на опре­де­лен­ных номе­рах пор­тов, что­бы сеть мог­ла «рабо­тать». Одна­ко диа­па­зон меж­уров­не­вых сопо­став­ле­ний очень неве­лик, несколь­ко тысяч номе­ров пор­тов необ­хо­ди­мо сопо­ста­вить служ­бам, и доволь­но ста­ти­чен (новые про­то­ко­лы или служ­бы добав­ля­ют­ся не часто). Таким обра­зом, эту кон­крет­ную про­бле­му лег­ко решить с помо­щью таб­ли­цы сопо­став­ле­ния, управ­ля­е­мой вручную.

Таб­ли­ца сопо­став­ле­ния для номе­ров пор­тов TCP под­дер­жи­ва­ет­ся Internet Assigned Numbers Authority (IANA) по ука­за­нию Engineering Task Force (IETF); Часть этой таб­ли­цы пока­за­на на рисун­ке 2. На рисун­ке 2 служ­бе echo назна­чен порт 7; эта служ­ба исполь­зу­ет­ся для обес­пе­че­ния функ­ци­о­наль­но­сти ping.

БАЗА ДАННЫХ И ПРОТОКОЛ СОПОСТАВЛЕНИЯ

Если чис­ло запи­сей в таб­ли­це ста­но­вит­ся доста­точ­но боль­шим, чис­ло людей, участ­ву­ю­щих в обслу­жи­ва­нии таб­ли­цы, ста­но­вит­ся доста­точ­но боль­шим или инфор­ма­ция доста­точ­но дина­мич­на, что­бы ее нуж­но было изу­чать во вре­мя сопо­став­ле­ния, а не при раз­вер­ты­ва­нии про­грамм­но­го обес­пе­че­ния, име­ет смысл созда­вать и рас­про­стра­нять базу дан­ных дина­ми­че­ски. Такая систе­ма долж­на вклю­чать про­то­ко­лы син­хро­ни­за­ции раз­де­лов базы дан­ных для пред­став­ле­ния согла­со­ван­но­го пред­став­ле­ния внеш­ним запро­сам, а так­же про­то­ко­лы, кото­рые хосты и служ­бы могут исполь­зо­вать для запро­са базы дан­ных с одним иден­ти­фи­ка­то­ром, что­бы обна­ру­жить соот­вет­ству­ю­щий иден­ти­фи­ка­тор из дру­го­го уров­ня сети.

Базы дан­ных дина­ми­че­ско­го сопо­став­ле­ния могут при­ни­мать вход­ные дан­ные с помо­щью руч­ной настрой­ки или авто­ма­ти­зи­ро­ван­ных про­цес­сов (таких как про­цесс обна­ру­же­ния, кото­рый соби­ра­ет инфор­ма­цию о состо­я­нии сети и сохра­ня­ет полу­чен­ную инфор­ма­цию в дина­ми­че­ской базе дан­ных). Они так­же могут быть рас­пре­де­лен­ны­ми, что озна­ча­ет, что копии или части базы дан­ных хра­нят­ся на несколь­ких раз­лич­ных хостах или сер­ве­рах, или цен­тра­ли­зо­ван­ны­ми, что озна­ча­ет, что база дан­ных хра­нит­ся на неболь­шом коли­че­стве хостов или серверов.

Систе­ма домен­ных имен (DNS) опи­сы­ва­ет­ся как при­мер служ­бы сопо­став­ле­ния иден­ти­фи­ка­то­ров, осно­ван­ной на дина­ми­че­ской рас­пре­де­лен­ной базе дан­ных. Про­то­кол дина­ми­че­ской кон­фи­гу­ра­ции хоста (DHCP) опи­сан в каче­стве при­ме­ра ана­ло­гич­ной систе­мы, исполь­зу­е­мой в основ­ном для назна­че­ния адресов.


СОПОСТАВЛЕНИЯ ИДЕНТИФИКАТОРОВ ОБЪЯВЛЕНИЯ В ПРОТОКОЛЕ

Если объ­ем про­бле­мы сопо­став­ле­ния может быть огра­ни­чен, но коли­че­ство пар иден­ти­фи­ка­то­ров вели­ко или может быст­ро менять­ся, то созда­ние еди­но­го про­то­ко­ла, кото­рый поз­во­ля­ет объ­ек­там запра­ши­вать инфор­ма­цию сопо­став­ле­ния напря­мую от устрой­ства, может быть опти­маль­ным реше­ни­ем. Напри­мер, на рисун­ке 1 D может напря­мую спро­сить E, какой у него локаль­ный MAC-адрес (или физический).

Интер­нет про­то­кол IPv4 Address Resolution Protocol (ARP) явля­ет­ся хоро­шим при­ме­ром тако­го рода реше­ний, как и про­то­кол IPv6 Neighbor Discovery (ND).


ВЫЧИСЛЕНИЕ ОДНОГО ИДЕНТИФИКАТОРА ИЗ ДРУГОГО

В неко­то­рых слу­ча­ях мож­но вычис­лить адрес или иден­ти­фи­ка­тор на одном уровне из адре­са или иден­ти­фи­ка­то­ра на дру­гом уровне. Немно­гие систе­мы исполь­зу­ют этот метод для сопо­став­ле­ния адре­сов; боль­шин­ство систем, исполь­зу­ю­щих этот метод, дела­ют это для того, что­бы назна­чить адрес. Одним из при­ме­ров тако­го типа систем явля­ет­ся Stateless Address Autoconfiguration (SLAAC), про­то­кол IPv6, кото­рый хосты могут исполь­зо­вать для опре­де­ле­ния того, какой IPv6-адрес дол­жен быть назна­чен интерфейсу.

Дру­гим при­ме­ром исполь­зо­ва­ния адре­са ниж­не­го уров­ня для вычис­ле­ния адре­са верх­не­го уров­ня явля­ет­ся фор­ми­ро­ва­ние адре­сов конеч­ных систем в набо­ре про­то­ко­лов International Organization for Standardization (ISO), таких как Intermediate System to Intermediate System (IS-IS).