EBGP vs IBGP
Både EBGP och IBGP är termer som används med routingprotokollet BGP. I teoretiska termer är den största skillnaden mellan de två att EBGP körs mellan två BGP-routrar i olika autonoma system (AS), men IBGP körs mellan två BGP-routrar i samma AS. Innan vi diskuterar skillnaderna mellan EBGP och IBGP, låt oss ha en grundläggande förståelse för EBGP och IBGP.
Vad är EBGP?
BGP körs mellan routrar i olika autonoma system. Som standard, i EBGP (peering i två olika AS), är IP TTL inställd på 1, vilket innebär att peers antas vara direkt anslutna.
I det här fallet, när paketet passerar en router, blir TTL 0 och då kommer paketet att släppas utöver det. I de fall där de två grannarna inte är direkt anslutna, till exempel peering med loopback-gränssnitt eller peering när enheter är flera hopp bort, måste vi lägga till kommandot "neighbor x.x.x.x ebgp-multihop"
Annars kommer BGP-grannskapet inte att upprättas. Dessutom kommer EBGP-peer att marknadsföra alla de bästa rutter som den känner till eller som den har lärt sig av sina peers (oavsett om den är EBGP-peer eller IBGP-peer), vilket inte är det när det gäller IBGP.
Vad är IBGP?
I IBGP finns det ingen begränsning att grannar måste anslutas direkt; dock kommer en IBGP-peer inte att annonsera prefixet den lärt sig från en IBGP-peer till en annan IBGP-peer. Denna begränsning är till för att undvika loopar inom samma AS. För att förtydliga detta, när en rutt skickas till en EBGP-peer, läggs det lokala AS-numret till prefixet i as-path, så om vi får samma paket tillbaka som anger vårt AS i as-path, vet vi att det är en loop, och det paketet tappas. Men när en rutt annonseras till en IBGP-peer, läggs inte det lokala AS-numret till i as-path, eftersom peers är i samma AS.
För att undvika loopar i samma AS, finns det två metoder som används.
1. Full Meshed Topology: I detta måste alla routrar i samma AS vara anslutna till varandra. Till exempel, om vi har N routrar, måste vi ha N (N-1)/2 IBGP-sessioner. Vi kan undvika detta genom att introducera Route Reflectors.
2. Användning av ruttreflektorer: Det är en alternativ metod för att övervinna full mesh-scenario. I detta fall upprättas IBGP-sessioner med en central punkt. Denna centrala punkt kallas Route Reflector och de andra IBGP-routrarna kallas route reflector-klienter.
Vad är skillnaden mellan eBGP och iBGP?
1. EBGP peering mellan två olika AS, medan IBGP är mellan samma AS (Autonomous System).
2. Rutter som lärts av eBGP-peer kommer att annonseras till andra peers (BGP eller IBGP); rutter som lärts av IBGP-peer kommer dock inte att annonseras för andra IBGP-peers.
3. Som standard är EBGP-peers inställda med TTL=1, vilket innebär att grannar antas vara direkt anslutna, vilket inte är fallet med IBGP. Vi kan ändra detta beteende för EBGP genom att använda kommandot "neighbor x.x.x.x ebgp-multihop". Multihop är termen som används endast i EBGP.
4. EBGP-rutter har administrativt avstånd på 20, medan IBGP har 200.
5. Nästa hopp förblir oförändrat när rutt annonseras till IBGP-peer; den ändras dock när den annonseras till EBGP-peer som standard.
Detta standardbeteende för IBGP kan ändras med kommandot "neighbor x.x.x.x next-hop-self"; detta ändrar nästa hopp, medan du annonserar, som en lokal rutt.