Border Gateway Protocol (BGP) е протокол којшто ги поддржува основните насочувачки одлуки на Интернет. Тој во него содржи табела од IP(Internet Protocol) мрежи или претставки коишто ја одредуваат мрежната достапност помеѓу автономните системи. Често се опишува како протокол на векторска патека. BGP не користи метрики на традиционален Interior Gateway Protocol(IGP), туку донесува насочувачки одлуки засновани на патеки, мрежни правила и политики. Поради оваа причина, тој посоодветно се декларира како проткол за достапност наместо протокол за насочување.
BGP е создаден за да го замени Exterior Gateway Protocol(EGP) насочувачкиот протокол за да овозможи целосно децентрализирано насочување со цел за да се овозможи отстранување на NFSNet Internet Backbone мрежата. Ова му овозможи на интернетот да стане вистиски децентрализиран систем. Од 1994 до ден денеска интернетот ја користи четвртата верзија на BGP. Сите претходни верзии се сметаат за застарени. Главното подобрување во четвртата верзија е поддршката на Classless Inter-Domain Routing и употребата на route aggregation за да се намали големината на routing tables. Од Јануари 2006, четвртата верзија е кодифицирана во RFC 4271, која што помина низ 20 нацрти засновани на преходните RFC 1771 верзија 4. RFC 4271 верзијата поправи голем број на грешки и го приближи RFC многу поблиску во индустриската примена.
Повеќето од интернет корисниците не го гористат BGP директно. Бидејќи сите интернет сервис услужници мора фа го користат BGP со цел за да воспостават врска едни со други, BGP го прави еден од позначајните протоколи на интернетот. Ако се спореди ова со Signalin System 7(SS7), ќе видиме дека голем број на приватни IP мрежи го користат BGP интерно.
Операции Кај BGP соседите, врската се воспоставува со мануелна конфигурација помеѓу насочувачите за да се создава TCP сесија на портата 179. BGP емитер периодично ќе испраќа 19-бајтна порака со цела за да се одржи врската (стандардно на секои 60 секунди). Помеѓу протоколите, BGP е уникатен во користењето на TCP како негов транспортен протокол.
Кога BGP работи внатре во Автономни Системи, тој е именуван како Internal BGP (IBGP или Interior Border Gateway Protocol). Кога работи помеѓу автономни системи е именуван како External BGP (EBGP или Exterior Border Gateway Protocol). Во Cisco оперативните системи, IBGP рутите имаат административна должина од 200, што е помалку претпочитано од EBGP или било кој друг внатрешно насочувачки протокол. Исто така и многу други имплементации на насочувачи префериираат EBGP.
Користи 20 бајти за секој хедер.
Преговори за екстензии За време на OPEN BGP може да се преговара заCapabilities Advertisement with BGP-4, RFC 2842, R. Chandra & J. Scudder,May 2000 опционалните можности на сесијата, вклучувајќи ги повеќепротоколните додатоци како и различни модови за обновување. Ако мултипротоколните екстензии на BGPMultiprotocol Extensions for BGP-4, RFC 2858, T. Bates et al.,June 2000 се преговараат за време на создавањето, емитерот на BGP може да стави претставка на Network Layer Reachability Information (NLRI) којшто го претставува со адресно семејна претставка. Овие семејства вклучуваат IPv4(стандардно), IPv6, IPv4/IPv6 Виртуелни приватни мрежи како и multicast BGP. Значително растечки, BGP се користи како генерализиран сигнален протокол за носење на информации за рутите кои и што не мора да бидат дел глобалната мрежа(Интернет), како што се Виртуелните Приватни Мрежи.BGP/MPLS VPNs., RFC 2547, E. Rosen and Y. Rekhter,April 2004
Конечни автомати
Со цел за да се донесе одлука во неговие операции со други BGP врски, BGP врската користи едноставни Finite State Machine(FSM) или таканарелени конечни автомати, коишто се состојат од шест состојби: Idle; Connect; Active; OpenSent; OpenConfirm; и Established; За секоја peer-to-peer сесија, BGP имплементацијата чува променлива за состојбата која кажува во која од овие шест состојби се наоѓа сесијата. BGP протоколот дефинира порака која што секоја врска треба да ја размени со цел за да премине сесијата од една состојба во друга. Првата состојба е “Idle”. Во “Idle” состојбата BGP ги иницијализира сите ресурси, ги одбива сите обиди за влезни BGP врски и иницира TCP врска со врската. Втората состојба е “Connect”. Во Connect состојбата насочувачот чека TCP поврзувањето да заврши и доколку е успешно преоѓа во состојбата “OpenSent”, доколку е неуспешно го ресетира ConnectRetry бројачот, и по истекување на времето преоѓа во состојбата “Active”. Во “Active” состојбата, насочувачот го ресетира ConnectRetry бројачот и се враќа во “Connect” состојбата. Во “OpenSent” состојбата, насочувачот испраќа порака Open и чека одговор. Се разменуваат Keepalive пораки и доколку е успешен приемот, насочувачот преоѓа во состојбата “Established”. Во “Established” состојбата, насочувачот може да испраќа/прима Keepalive, Update и Notification пораки до/од неговата врска. Idle состојба: Ги одбива сите влезни BGP врски. Иницира TCP врска со неговата конфигурирана BGP врска. Наслушува TCP врска од неговата BGP врска. Ја менува состојбата во Connect. Ако се појави грешка во сотојбата на FSM процесот, BGP сесијата веднаш се прекинува и се враќа во состојбата Idle. Некои од причините поради кои насочувачот не проаѓа од состојбата Idle во некоја друга состојба се: TCP портата 179 не е отворена. Случајна TCP порта преку 1023 не е отворена. Адресата на врската не е соодветно конфигурирана во некој од насочувачите. Connect состојба: Чека на успешни TCP преговори со врската. BGP не поминува многу време во оваа состојба доколку TCP сесијата е успешно воспоставена. Испраќа Open порака на врската и преминува во состојбата OpenSent. Доколку се појави грешка, BGP преминува во Active состојбата. Некои од причините за настанување на грешки се: TCP портата 179 не е отворена. Случајна TCP порта преку 1023 не е отворена. Адресата на врската не е соодветно конфигурирана во некој од насочувачите. Active состојба: Доколку насочувачот не воспоставил успешна TCP сесија, тогаш тој завршува во Active состојбата. BGP FSM ќе проба да ресетира друга TCP сесија со врската,и ако е успешно, тогаш ќе испрати Open порака до врската. Ако е повторно неуспешно, FSM се враќа во Idle состојбата. Континуирани неуспеси можат да резултираат со циклично преминува на ритерот од Active во Idle состојбата. Некои од причините за ова се: TCP портата 179 не е отворена. Случајна TCP порта преку 1023 не е отворена. Конфигурациска грешка на BGP. Мрежна конгестија. OpenSent состојба: BGP FSM слуша Open порака од неговата врска. Откако пораката ќе биде примена, насочувачот ја проверува валидноста на Open пораката. Доколку постои некаква грешка тоа е поради тоа што некои од полињата на пораката Open не се поклопуваат со соодветната врска, пр. несоодветна BGP верзија, несоодветена MD5 лозинка, насочувачот од другата страна на врската очекува друга My AS. Тогаш насочувачот ќе испрати Notification порака потенцирајки зошто настанала грешката. Доколку не постои грешка, ќе биде испратена Keepalive порака, ќе бидат поставени различни бројачи и ќе се премине во состојбата OpenConfirm.. OpenConfirm состојба: Врската од едната страна наслушува Keepalive порака од врската од спротивната страна. Доколку е примена Keepalive порака и ниту еден бројач не е истечен пред некзиното примање, BGP преминува во состојбата Established. Доколку пројачот истече пред примањето на Keepalive пораката, или доколку се појави некаква грешка, насочувачот повторно премунува во состојбата Idle. Established состојба: Во оваа состојба, врските си праќаат Update пораки за да си разменат информации за секоја рута која што е опфатена во BGP врската. Доколку постои каква било грешка во Update пораката тогаш се испраќа Notification порака до врската, и BGP повторно преминува во Idle состојбата.
Основни BGP ажурирања Откако BGP сесијата ќе почне да работи, BGP емитерите ќе разменат UPDATE пораки за одредиштате за коишто нудат можност за поврзување. Во протоколот, основниот опис за CIDR рутата се нарекува Network Layer Reachability Information (NLRI). NLRI ги вклучува претставките на очекуваните одредишта, должината на претставките, патеката на автономните системи до соодветното одредиште и атрибутите на наредниот hop, коишто можат да носат широк спектар на додатни информации коишто влијаат на политиката на прифаќање на насочувачот којшто е примач. BGP емитерите постојано најавуваат нови NLRI коишто нудат поврзување, но исто така и најавуваат и повлекувања на претставки за коишто емитерите не нудат повеќе можност за поврзување.
Можноста на BGP насочувачот за поврзување и учење на рути. Во наједноставен случај сите насочувачи со единствен AS коишто учевтвуваат во BGP насочувањето, мора да бидат конфигурирани во full mesh: секој насочувач мора да биде конфигуриран со статична рута до секој друг насочувач. Ова предизвикува проблем за скалирање, поради раснењето на бројот на потребни врски со бројот на потребните рути за вклучување. За олеснување на проблемот, BGP имплементира две опции: route reflectors (RFC 4456) и confederations (RFC 5065). Следнава дискусија за основно UPDATE обработка се однесува на целосна IBGP mesh.
Основна обработка на ажурирања Дадена BGP рута може да прими NLRI како ажурирања од повеќе соседни насочувачи и може да испрати NLRI до истите. Концептуално, BGP си содржи своја “master” насочувачка табела, наречена Loc-RIB(Local Routing Information Base), одвоена од главната routing table на насочувачот.За секој соседен насочувач BGP процесот содржи концептуална Adj-RIB-In (Adjacent Routing Information Base, Incoming) која што содржи NLRI примен од соседот, и концептуален Adj-RIB-Out (Outgoing) за NLRI којшто треба да биде испратен до тој сосед.
Концептуално, во претходниот параграф, наведено е дека физичкото складирање на овие табели e одлученос од страна на имплементацијата на BGP кодот. Нивната структура не е видлива од страна на другите BGP насочувачи, иако тие можат да бидат увидени од страна на локалниот насочувач со команди за управување. Многу чест случај е Adj-RIBs и Loc-RIB да се сочуваат во една иста податочна структура, со додатни информации прикачени на RIB записите. Додатните информации му кажуваат на BGP процесот работи како што се: дали поединечните записи припаѓаат на Adj-RIB за конкретен сосед и дали Loc-RIB записите ги исполнуваат условите да бидат запишани во насочувачката табела на процесот за управување на локалниот насочувач.
Под eligible to be submitted, BGP ќе ги достави оние рути за коишто смета дека се најдобри за процесот на насочувачката табела. Во зависност од имлементацијата на тој процес, BGP рутата немора да значи дека ќе биде изберена. На пример, директно поврзана претставка којашто е откриена од страна на сопствениот хардвер на насочувачот, најчесто се смета за најпретпочитан. Сè додека интерфејсот на директно поврзаната рута е активен, BGP рутата на одредиштето нема да биде сместена во насочувачката табела. До неодамна, честа грешка беше да се каже дека BGP ги носи политиките. BGP всушност носи информации спред кои насочувачот ќе може да донесе одлука во однос на политиката. Некои од информациите коишто се носат коишто се експлицитно наменети за бидат искористени во донесување на одлука врз основа на политиката се communities(заедници) и multi-exit discriminators(MED) познати како (повеќе-излезни дискриминатори).
Избирање на рута(пат) BGP стандардот дефинира неколку фактори коишто влијаат врз одлучувањето, поголемиот дел од нив се користат кај послични насочувачки процеси, за избирање на NLRI(Network Layer Reachability Information) за да одат до Loc-RIB(Routing Information Base). Првата одлука се однесува на проценувањето на NLRI дали неговиот нареден hop мора да биде достапен(или разрешлив). Со други зборови, наредниот hop мора да биде достапен со тоа што ќе постои активна рута или пат до него, коишто веќе се наоѓаат во главната routing table на насочувачот.