BGP4 е най-разпространената версия на BGP протокола и на практика се е превърнала в де-факто стандарта за рутиращ протокол между автономни системи. А за тези, които се чудят - под автономна система разбираме всички рутери, които са под единен административен контрол - тоест са на 1 ISP, казано по просто. Например SPNET си имат автономна система, Мегалан и изобщо всяко по-голямо ISP.
Ролята на BGP е да анонсира кое адресно пространство, през коя автономна система е достъпно. Всеки рутер, който "говори" BGP и анонсира пътища (routes) към peer-ите (съседите), също така анонсира и няколко path атрибута, един от които е AS_PATH.
Как точно действа AS_PATH - Лесно! Всеки рутер, който анонсира някакъв път към свой съсед добавя номера на собствената си автономна система (ASN) в AS_PATH атрибута. И тъй, като един route е много вероятно да мине през 3-4 автономни системи докато стигне до вас, примерно, този AS_PATH се напълва с 3-4 entry-та. На практика колкото по-малко entry-та има в AS_PATH, толкова по-наблизо се предполага, че е даден път и той би могъл да бъде предпочетен, в случай че дадена мрежа бива анонсирана от 2 места. Само да кажа, че това изобщо не е правило, освен AS_PATH в BGP има много други атрибути - Origin, Next Hop, MED, Local preference, Community.
Другото важно свойсто на ASN е че те предотвратяват route loop (това нещо не знам как би звучало добре на .бг). При всеки update всеки рутер, който анонсира ъпдейти слага собствения си ASN в update пакета. По този начин ако поради някаква причина друг рутер, анонсира същият път обратно към първоначалният рутер, то той би могъл да погледне дали неговият ASN го има в AS_PATH и съответно да discard-не ъпдейта (ако ASN му присъства) или да го приеме (ако ASN го няма).
ASN се използва и при Aggregator атрибута - на практика ако някой рутер трябва да агрегира (от 4 поредни /24 мрежи да анонсира една /22, примерно), то той сетва Aggregator атрибута, съдържащ Router ID и ASN на рутера, извършил агрегация - по този начин се улеснява евентуалното дебъгване ако възникне проблем.
ASN също се използва и при Community атрибута - накратко - това е начин да се групират дестинации и да се прилага някаква единна политика. Примерно групирате всички Корейски ISP-та в едно community и после на това community прилагате политика да не анонсирате нищо (Нищо лично към Корейците, просто пример).
ASN се използва и в open съобщенията - на практика това става след като вече има установена TCP сесия между 2 BGP съседа, то те използват open съобщения, за да установят параметрите на връзката ( router id, ASN, bgp версия, hold time).
Идеята тук е, че има достатъчно много места където се използват старите 2 байтови номера на автономна с-ма и съответно трябва да се измисли някакъв начин без много "болка" да стане миграцията към новия начин на представяне на автономните системи.
В някоя следваща публикация ще опиша самата имплементация, за това как реално е изменена BGP имплементацията, за да се поддържа и новия и стария стандарти за номера на автономните системи, без много клизми :)
Ролята на BGP е да анонсира кое адресно пространство, през коя автономна система е достъпно. Всеки рутер, който "говори" BGP и анонсира пътища (routes) към peer-ите (съседите), също така анонсира и няколко path атрибута, един от които е AS_PATH.
Как точно действа AS_PATH - Лесно! Всеки рутер, който анонсира някакъв път към свой съсед добавя номера на собствената си автономна система (ASN) в AS_PATH атрибута. И тъй, като един route е много вероятно да мине през 3-4 автономни системи докато стигне до вас, примерно, този AS_PATH се напълва с 3-4 entry-та. На практика колкото по-малко entry-та има в AS_PATH, толкова по-наблизо се предполага, че е даден път и той би могъл да бъде предпочетен, в случай че дадена мрежа бива анонсирана от 2 места. Само да кажа, че това изобщо не е правило, освен AS_PATH в BGP има много други атрибути - Origin, Next Hop, MED, Local preference, Community.
Другото важно свойсто на ASN е че те предотвратяват route loop (това нещо не знам как би звучало добре на .бг). При всеки update всеки рутер, който анонсира ъпдейти слага собствения си ASN в update пакета. По този начин ако поради някаква причина друг рутер, анонсира същият път обратно към първоначалният рутер, то той би могъл да погледне дали неговият ASN го има в AS_PATH и съответно да discard-не ъпдейта (ако ASN му присъства) или да го приеме (ако ASN го няма).
ASN се използва и при Aggregator атрибута - на практика ако някой рутер трябва да агрегира (от 4 поредни /24 мрежи да анонсира една /22, примерно), то той сетва Aggregator атрибута, съдържащ Router ID и ASN на рутера, извършил агрегация - по този начин се улеснява евентуалното дебъгване ако възникне проблем.
ASN също се използва и при Community атрибута - накратко - това е начин да се групират дестинации и да се прилага някаква единна политика. Примерно групирате всички Корейски ISP-та в едно community и после на това community прилагате политика да не анонсирате нищо (Нищо лично към Корейците, просто пример).
ASN се използва и в open съобщенията - на практика това става след като вече има установена TCP сесия между 2 BGP съседа, то те използват open съобщения, за да установят параметрите на връзката ( router id, ASN, bgp версия, hold time).
Идеята тук е, че има достатъчно много места където се използват старите 2 байтови номера на автономна с-ма и съответно трябва да се измисли някакъв начин без много "болка" да стане миграцията към новия начин на представяне на автономните системи.
В някоя следваща публикация ще опиша самата имплементация, за това как реално е изменена BGP имплементацията, за да се поддържа и новия и стария стандарти за номера на автономните системи, без много клизми :)
LordDoskias, 2008

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Bulgaria License.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Bulgaria License.

0 коментара:
Публикуване на коментар