ПОЗНАВАЙТЕ INTUIT, Лекция, Протоколи за маршрутизиране RIP, OSPF и BGP
8.3. Протокол за външно маршрутизиране BGP-4
Протоколът BGP (RFC-1267 BGP-3; RFC-1665; RFC-1467 BGP-4; -1771, -1863, -1997, -2439, -2545, -2796, -2858, -2918, -3065, -3107, -3392) е разработен от IBM и CISCO. Основната цел на BGP е да намали транзитния трафик. Местният трафик започва или завършва в автономна система (AS); в противен случай това е транзитен трафик. Но не всеки хост, който използва BGP, е рутер, дори ако обменя информация за маршрутизиране с граничен рутер в съседна AS. АС предава информация само за маршрутите, които използва. BGP рутерите обменят съобщения за промяна на маршрута (съобщения UPDATE). Максималната дължина на такива съобщения е 4096 октета, а минималната дължина е 19 октета. Всяко съобщение има заглавка с фиксиран размер.
Тук е уместно да се отбележи, че Интернет е джентълменски клуб. Много възли пропускат през себе си значителен транзитен трафик, което ограничава възможностите на директните клиенти на възела. По правило този трафик не се заплаща по никакъв начин. Администраторите могат силно да ограничат или дори да изключат такъв транзитен трафик в рамките на BGP, но обикновено не го правят, осъзнавайки, че техните клиенти създават същия транзитен трафик за други възли. Егоистичното поведение на администраторите ще разбие Интернет на поредица от воюващи феодални крепости.
След като връзката на нивото на транспортния протокол е установена, първото съобщение, което трябва да бъде изпратено, е ОТВОРЕНО. При успешно завършване на това съобщение, партньорът трябва да отговори със съобщение KEEPALIVE („Все още жив“). След това са възможни всякакви съобщения.
СледПри получаване на съобщението OPEN, BGP рутерът трябва да избере стойност за време на задържане. Обикновено се избира по-малката стойност от тази, получена в съобщението ОТВОРЕНО и определена по време на конфигурацията на системата (0-3 сек). Времето за запазване определя максималното време в секунди между съобщенията KEEPALIVE и UPDATE или между две съобщения UPDATE. На всеки възел в рамките на BGP се присвоява 4-октетен идентификатор (BGPidentifier, зададен по време на инсталацията и идентичен за всички LAN интерфейси). Ако два възела са установили две връзки един към друг, тогава правилата ще бъдат връзката да започва от възела, чийто BGP ID е по-голям. Осигурен е механизъм за разрешаване на проблема с еднакви идентификатори.
Атрибутите на пътя са „добре познати задължителни“, стандартни незадължителни, незадължителни преходни и незадължителни непреходни. Стандартните атрибути трябва да се разпознават от всички BGP приложения. Незадължителните атрибути може да не бъдат разпознати от някои приложения. Обработката на неразпознатите атрибути се определя от бит 1 на полето за флагове. Пътищата с неразпознати атрибути на преходна опция ТРЯБВА да се третират като валидни. Един и същ атрибут може да се появи само веднъж в списъка с атрибути на пътя. Предоставени са следните разновидности на кодове за типове атрибути.
ORIGIN (тип код = 1) е стандартен задължителен атрибут, който указва произхода на информацията за маршрутизиране. Генерирано от автономната система, която е източник на информация за маршрутизиране. Стойността на атрибута в този случай може да приеме следните стойности (Таблица 8.2):
0 | IGP - информацията за достъпност на мрежовия слой е вътрешна за изходната автономна система |
1 | EGP - информация за достъпност на мрежовия слой, получена с помощта на външен протокол за маршрутизиране |
2 | НЕПЪЛНО - информация за достъпността на мрежовия слой, получена по някакъв друг начин |
AS_PATH (тип код = 2) също е стандартен задължителен атрибут, който се състои от колекция от сегменти на пътя. Атрибутът указва автономните системи, чрез които се доставя информацията за маршрутизиране. Когато BGP рутер изпрати описание на маршрута, което е получил от своя BGP партньор, той променя атрибута AS_PATH, съответстващ на този маршрут, ако информацията се изпраща извън автономната система. Всеки сегмент AS_PATH има три части. Типът сегмент на пътя от своя страна е еднооктетно поле, което може да приема следните стойности (таблица 8.3):
1 | AS_SET: неподреден набор от маршрути в съобщение UPDATE |
2 | AS_SEQUENCE: Подреденият набор от AS маршрути в съобщението UPDATE. |
Дължината на сегмента на пътя е поле от един октет, което съдържа броя на AS, записани в полето за оценка на сегмента на пътя. Последното поле съхранява един или повече кодове на автономна система, по два октета.
MULI_EXIT_DISC (тип код = 4) е незадължителен нетранзитивен атрибут, който обхваща 4 октета и е положително цяло число. Стойността на този атрибут може да се приложи, когато се избира един от няколко пътя към съседна автономна система.
LOCAL_PREF (тип код = 5) е незадължителен атрибут от 4 октета. Използва се от BGP рутер, за да съобщи на своите BGP партньори в собствената си автономна системастепен на предпочитание към обявения маршрут.
Информацията за здравето на съседния рутер се получава от съобщения KEEPALIVE, които трябва да се изпращат достатъчно често, за да отговарят на таймера HOLD. Обикновено това време не трябва да надвишава една трета от времето за запис, но не трябва да бъде по-малко от 1 секунда. Ако избраната стойност на времето за запазване е нула, не се изисква периодично изпращане на съобщения KEEPALIVE.
Когато се открие грешка, се изпращат УВЕДОМИТЕЛНИ съобщения. BGP връзката незабавно се прекъсва.
Цялата информация за маршрутизирането се съхранява в специална база данни RIB (Routing Information Base). Базата данни за маршрутизиране на BGP се състои от три части:
- AdjRIBsIn : Съхранява информация за маршрутизиране, получена от съобщения UPDATE. Това е списък с маршрути, от които можете да избирате (Информационна база с правила - PIB)
- LocRIB : Съдържа локалната информация за маршрутизиране, която BGP рутерът е извлякъл въз основа на своята политика за маршрутизиране от Adj-RIBs-In
- AdjRIBsOut : Съдържа информация, която локалният BGP рутер е избрал да излъчва към съседите чрез UPDATE съобщения
Тъй като различните партньори на BGP може да имат различни политики за маршрутизиране, са възможни осцилации на маршрута. За да избегнете това, е необходимо да следвате следното правило: ако използваният маршрут е обявен за неработещ (по време на процеса на настройка е получено съобщение със съответния атрибут), преди да преминете към нов маршрут, е необходимо да препредадете съобщението за недостъпността на стария до всички съседни възли.
BGP протоколът ви позволява да приложите политика за маршрутизиране, дефинирана от администратора на AS. Политиката е отразена в конфигурационните файлове на BGP. Политиката за маршрута не е част отпротокол, той определя решенията, когато дестинацията е достъпна по няколко начина; политиката отразява съображения за сигурност, икономически интереси и т.н. Броят на мрежите в рамките на една AS не е ограничен. Един рутер за много мрежи ви позволява да минимизирате таблицата за маршрутизиране. BGP използва три таймера:
ConnectRetry (нулиране по време на инициализация и корекция; 120 сек.),
Време на задържане (започва при получаване на команда Update или KeepAlive; 90sec) и
KeepAlive (стартира при изпращане на съобщение KeepAlive; 30 сек).
BGP се различава от RIP и OSPF по това, че използва TCP като транспортен протокол. Две системи, използващи BGP, комуникират помежду си и изпращат пълни таблици за маршрутизиране през TCP.
В бъдеще обменът се извършва само в случай на промени. Хост, използващ BGP, не е непременно рутер. Съобщенията се обработват само след пълното им получаване.
BGP е дистанционен векторно ориентиран протокол. Векторът е описан от AS списък от 16 бита на AS. BGP редовно (на всеки 30 секунди) изпраща TCP съобщения до своите съседи, потвърждаващи, че възелът е активен (това не е същото като функцията за поддържане на активността на TCP). Ако два BGP рутера се опитат да комуникират помежду си по едно и също време, такива две връзки могат да бъдат установени. Тази ситуация се нарича сблъсък, една от връзките трябва да бъде елиминирана. При установяване на връзка към рутер първо се прави опит за прилагане на най-високия протокол (напр. BGP-4); ако една от тях не поддържа тази версия, номерът на версията се понижава.
BGP-4 позволява изпращането на информация за маршрутизиране в рамките на един IP пакет. За да се приспособи към това, семантиката и кодирането на атрибута AS_PASS са променени.Въведен е нов атрибут LOCAL_PREF (предпочитание за маршрут за собствена AS), който опростява процедурата за избор на маршрут. Атрибутът INTER_AS_METRICS е преименуван на MULTI_EXIT_DISC (4 октета; използва се за избор на път към един от съседите). Въведени са нови атрибути ATOMIC_AGGREGATE и AGGREGATOR, за да се позволи групиране на маршрути. Структурата на данните се отразява и в схемата за вземане на решения, която има три фази.
Обикновено се приема, че когато пакетът се изпраща от точка до точка, маршрутите в едната и в другата посока са еднакви. Но не винаги е така. Пример, когато маршрутите на пакети напред и назад не съвпадат, е показан на фиг. 8.14. В предложената схема има "компютър-дестинация" и "компютър-подавател", както и два рутера GW-2 и GW-1.
Предполага се, че операторът се намира в изпращащия компютър. Командата traceroute 192.148.166.33 в този случай ще даде:
Командата traceroute 192.148.165.80 ще отпечата:
Командата traceroute -g 192.148.165.80 ще ви каже:
Тези примери показват полезността на командата traceroute за разбиране на това как пакетите се движат в мрежа. В някои случаи това може да помогне за оптимизиране на маршрутизирането и подобряване на пропускателната способност на мрежата.
Имайте предвид, че външното маршрутизиране е система със забавена обратна връзка и като такава е склонна към колебания на маршрута.
Важно свойство на протокола е възможността за деклариране на резервен маршрут. Ако основният маршрут на AS стане недостъпен, рутерът ще превключи потока към тази резервна връзка. В същото време потребителите на мрежата не трябва да чакат момента, в който мрежовият администратор се върне от ваканция, събуди се или дойде от кафенето и сам направи необходимите настройки.
КонфигурацияBGP изисква добро разбиране на това как работи. За да се улесни спецификацията на политиката за маршрутизиране на различни нива на йерархията, например на ниво автономни системи (AS), беше разработен езикът за описание на политиката за маршрутизиране RPSL (Routing Policy Specification Language). Сега конфигурациите на рутери от ниско ниво могат да бъдат генерирани въз основа на RPSL спецификациите. Езикът RPSL (вижте http://book.itep.ru/4/4/rpsl.htm) е разширим и не възпрепятства въвеждането на нови протоколи за маршрутизиране.
RPSL е предназначен да замени езика за спецификация на правилата за маршрутизиране, използван в момента и описан в RIPE-181 или RFC-1786. RIPE-81 е първият език, използван в Интернет за определяне на политики за маршрутизиране. При използване на RIPE-181 стана ясно, че някои политики не могат да бъдат определени и е необходим по-добър език.
RPSL е проектиран да записва всички описания на правилата за маршрутизиране в една разпределена база данни, подобрявайки целостта на интернет маршрутизирането. RPSL не е език за конфигуриране на рутер. RPSL е проектиран да конфигурира рутер въз основа на описание на политиката за маршрутизиране на автономна система (клас aut-num), комбинирано с описание на рутера (клас inet-rtr), което предоставя идентификатора на рутера, номера на автономната система, описания на интерфейса и описания на равностойни точки на рутера. Тези данни се споделят с глобалната база данни с карти на AS (клас as-set) и информация за първоначалните AS и префикси на маршрути (класове route и routeset).