Interior Gateway Protocols (IGPs)
IGPs are used for routing within an autonomous system (AS) or an internal network. They help routers exchange routing information and make routing decisions within the boundaries of the AS. Some common IGPs include Routing Information Protocol (RIP), Open Shortest Path First (OSPF), and Intermediate System to Intermediate System (IS-IS). IGPs are typically used to facilitate communication and routing between routers within a single organization or network.
Key characteristics of IGPs:
Exterior Gateway Protocols (EGPs):
EGPs, on the other hand, are used for routing between autonomous systems (ASes) or different networks operated by separate organizations. Their primary purpose is to exchange routing information between different ASes on the internet. The most widely used EGP is the Border Gateway Protocol (BGP), which enables routers to exchange routing information across multiple networks and make routing decisions that span across AS boundaries.
Key characteristics of EGPs:
In summary, IGPs are employed for internal routing within a network or autonomous system, while EGPs are used for routing between autonomous systems or different networks. The scope, routing decision factors, and the protocols used are the primary distinctions between these two types of gateway protocols.
]]>Remember the split horizon rule in iBGP? Route Reflector (RFC 4456) is one of the three solutions and often use as an alternative to Full Mesh topology. Route Reflectors allows iBGP speaker to have partial mesh topology while still propagating iBGP routes to another iBGP speaker. It modifies the iBGP split horizon rule by allowing the router to forward incoming iBGP updates to an outgoing iBGP session under. With Route Reflector, it lowers CPU and memory requirements by reducing the number of TCP sessions to be maintained.
Route Reflector has two iBGP peers: Client peers and Non-Client peers. Route-Reflector clients behave like normal iBGP routers. They are not required to form full mesh, can have any number of eBGP sessions and they can have only one iBGP session and that is the connection to Route-Reflector. When Route Reflector fails, they can no longer receive or send updates to the rest of the AS. In this kind of design, Route Reflector represents a single point of failure. In order to solve this, we need redundant Route Reflectors. Each Clients needs to connect to redundant Route Reflectors. Route Reflectors receive the same iBGP update from its Clients and reflect it all other Clients and Route Reflectors send same routes to each Clients.
The use of redundancy in Route Reflectors may introduce routing loops in the network. However, no need to worry as Route Reflector has Cluster_List and Originator_ID attributes.
Route Reflector and its Clients formed a cluster. Each cluster must have a unique Cluster ID. The Cluster ID is being prepended to the “Cluster_List” each time the route is being reflected. Cluster_List is an Optional Non-Transitive BGP attribute. Remember the BGP Path selection process? It is the 12th criteria of BGP selection attribute. Like AS Path, the minimum cluster list length is more preferred. Also like AS Path, it shows the path the route has passed. It also serves as a loop avoidance mechanism as it discarded routes with the same local Cluster ID. Take note that Cluster ID is configured in Route Reflector. When a Route Reflector receives a routing update from another Route Reflector in the same cluster, it rejects the update.
There is another loop avoidance mechanism of Route Reflector and that is the Originator_ID. It is another Optional Non-Transitive BGP Attribute and as the name suggests, it identifies the originator of the route. The router ID is added as the Originator_ID to the route when received from eBGP peer and when there is already one exists, a router needs not to add another Originator_ID. When a routing update is received from the same local Originator_ID, then the update is discarded.
All other that are not part of the cluster are non-clients. Non Clients do not support Route Reflector functionalities. Unlike with Clients, Non-Clients need to fully mesh.
Route Reflector Forwarding of Prefixes Rules
Route Reflector propagates eBGP learnt prefixes and iBGP prefixes learnt prefixes from Clients and Non-Clients to Clients. Route reflector propagates eBGP learnt prefixes and iBGP learnt prefixes from Clients to Non-Clients. It will not forward learnt iBGP prefixes from Non-Clients to Non-Clients.
Before we end this discussion, there is one more important thing to remember. A Route Reflector can reflect route only within a single cluster. It can participate in multiple clusters but only as a client. A client can only function as a client only to Route Reflector belonging to the same cluster.
]]>BGP Neighbor Adjacency States:
1. IDLE – This is normally can be seen if BGP is down / administratively down or just waiting for the next attempt. At this stage, no BGP incoming sessions are permitted.
My BGP is established between Culloden and Stirling sites and Culloden and Fyvie sites. But when I shut down s2/2 link between Culloden and Fyvie, my BGP went to IDLE state.
Culloden(config)#int s2/2 Culloden(config-if)#shut Culloden(config-if)#end
2. CONNECT – This is when BGP starts to do the TCP connection (TCP three-way handshake). Either of the BGP neighbors will initiate the BGP session. Once completed, it jumps towards the OPENSENT state. However, if there is a problem, it goes to ACTIVE state.
3. ACTIVE – At this stage, TCP connection is completed but no BGP messages have been sent to the BGP neighbor yet. There are many reasons why BGP is stuck in ACTIVE state. Usually, there are configuration issues that stop the BGP connection from getting established. It can be a wrong AS, misconfigured local IP / peer IP address, authentication issues, and others.
. OPENSENT – BGP Open message is already been sent to the peer but not yet received to the other end. You won’t usually see BGP stuck in OPENSENT state. It will immediately toggle to OPENCONFIRM state and ESTABLISHED states.
5. OPENCONFIRM – BGP Open message and keepalive has been sent and received. It won’t take long until it goes to the ESTABLISHED state.
6. ESTABLISHED – Once all the BGP requirements of establishing neighbor adjacency are met, it goes to the ESTABLISHED state. You will see prefixes Once adjacency is established between BGP neighbors, they are going to start exchanging routing information.
Putting back my s2/2 link up, makes my BGP back to ESTABLISHED state:
Culloden(config)#int s2/2 Culloden(config-if)#no shut Culloden(config-if)#end Culloden#
Let’s take this scenario.
Colletidae, a blellum lady living in the outskirt of Edinburgh, told her neighbor Apidae that Dasypoda is having an illegal affair with somebody else. Colletidae told Apidae that she can spread that in town. And, because Colletidae wants so much attention, she told her to tell everybody that she is the one who told her about it. Colletidae knows that everybody will believe Apidae as she is known to be an honest quine. Apidae cannot believe it and she told Andrena, sister of Andrenidae, about this.
“Don’t be such a wee clipe!”, said Andrena. “Are you the one spreading that rumor?”
“No, it’s not me. It’s Colletidae who told me about that.” Apidae replied.
When Andrena told her sister about this rumor,
“Who told you that?” Andrenidae asked
“Colletidae knows everything about Dasypoda’s affair,” Andrena whispered.
“Who is Colletidae?” Andrenidae asked.
Andrenidae, who is one of Dasypoda’s best friend, knows that it was her sister who told her about the affair rumor. What she didn’t know is that it was Apidae who told her sister about this and that Apidae knows where Colletidae lives.
This is true with partial mesh topology in iBGP. There is no route back to Colletidae.
With the use of next-hop-self command, it would force the iBGP speakers to advertise the route with the next hop address of its own.
Let’s do a simple lab about this scenario.
Let’s see what will happen after Dasypoda advertised its loopback address.
Enter configuration commands, one per line. End with CNTL/Z. Dasypoda(config)#router bgp 600 Dasypoda(config-router)#network 6.6.6.0 mask 255.255.255.0 Dasypoda(config-router)#end
After Dasypoda advertised its loopback address, Colletidae learned it and install it in its routing table:
BGP has many attributes in choosing the best path. It is like an ice cream. It has many flavors. I bought Gianduia flavor from Gelato Messina while I was preparing this topic. I think I need loads of sugar to feed my brain as this BGP topic is robust and every attribute can be well-explained if we are going to lab it.
BGP’s attributes are mainly for path manipulation and these can influence either outbound or inbound traffic. It has a systematic process that it uses to choose the best path in the network.
The first thing that BGP checks is whether the WEIGHT is configured or not. WEIGHT is Cisco Proprietary so it is obvious that it prioritizes Cisco devices which has BGP WEIGHT configured. In short, if you are using Cisco devices, WEIGHT is the first thing it checks before it goes on with the series of standard BGP attributes. Keep in mind that WEIGHT is local to the router and doesn’t pass to other routers. The higher the value is more preferred.
Next in line is the LOCAL PREFERENCE. This attribute influences the outbound routing. The higher value is preferred. Unlike WEIGHT, which has a default value of 0, LOCAL PREFERENCE has a default value of 100.
If LOCAL PREFERENCE is not configured, BGP looks for locally originated routes. As the name suggests, it is a route originated by the local router via network statement, redistribution, or aggregate statement. If you do “show ip bgp” routes with weight set to “32768” is considered as local routes. When weight is configured check for routes with next hop of “0.0.0.0.” You can also use “route-map localonly” command to get locally originated routes. It is also local to the router an not pass to other peers.
The most commonly used BGP attribute is the AS PATH. Unlike, LOCAL PREFERENCE, AS Path is a Well-Known Mandatory attribute and this attribute influences inbound routing. It should be present in every update and should be recognized by all BGP speakers. When a router running BGP session sends an update to its peer, it appends its own AS number. The shorter the AS path length is more preferred. To manipulate the incoming traffic to our preferred route, we can use the “as-path prepend” command.
Like, AS PATH, ORIGIN is also a Well-Known Mandatory attribute. In this attribute, the lowest is preferred route. IGP is lower than Exterior Gateway Protocol (EGP), and EGP is lower than INCOMPLETE. If you do “show ip bgp” you will see ORIGIN codes at the far right portion: i – IGP, e – EGP, and ? – incomplete. You will no longer see “e” in the “show ip bgp” output as it is already obsolete. The question mark “?” indicates redistribution and “i” means the network command is used to advertise the route.
Multi-exit Discriminator (MED) is an optional non-transitive BGP attribute. It is usually not used as the first five attributes are often utilized before this one. MED can influence routers in the same AS (iBGP) but not on different AS (eBGP). When a router learns a route from a peer, the MED’s value is kept and retain to its iBGP peers, but the value will be peeled off once it passed to eBGP peers. You can use the “set metric” command under the BGP router process if you are using a route-map or use the “default-metric” command. Take note that the lowest MED value is preferred over the higher MED value.
If MED is not configured, it checks whether the route is learned via iBGP or eBGP. Routes learned via eBGP is more preferred than routes learned via iBGP. If both routes are learned via eBGP then it chooses the lowest IGP value (administrative distance) to the next hop.
BGP Multipath is not considered as a tie-breaker but a determination if it can allow multiple installation of path in the routing table. The WEIGHT, LOCAL PREFERENCE, AS PATH, ORIGIN, MED value, same neighbor type (eBGP / iBGP) and IGP metric should match with the best path for it to be considered as an additional path to the destination. Be aware that if multipath is not enabled the default value is 1 which means it goes back to the BGP’s golden rule that it only chooses one best path to the destination.
The next step that BGP considers is the oldest route received. The oldest route in the routing table is preferred over the new ones. This step can be skipped if router ID is used for tie breaker and that the “bgp bestpath compare-routerid” command is used. If the command is used, the lowest router ID will be selected as the best path. If there is no manually configured router ID, the highest loopback IP is chosen and if still there is none, then the highest configured physical IP address. By the way, before you considered the highest physical IP address, it is necessary to check the route with minimum cluster list length configured. This is present in a route reflector environment. There’s more about this when we get to the route reflector topic.
Before we end this topic, let me remind you that before it goes to these 13 procedures, the first thing that BGP check is whether the next hop is reachable or not. What’s the use of all of these if the route is not reachable anyway?
Your email address will not be published. Required fields are marked *
Comment
Name *
Email *
Website Search
As of now, the 2 bytes AS that we used to know are already depleted so that’s why IETF introduced 4 bytes (0-4294967295) AS. In the router implementation, an ASdot notation or ASplain format will be used to identify a 32-bit AS number. The ASplain format is just writing the whole 0-4294967295 numbers. The problem with this is that it is prone to typo errors. The ASdot format will use this number: <upper 16 bits>.<lower 16 bits>. The first set of 65,536 numbers will be written as 0.0 to 0.65535 and the second set from 1.0 through to 1.65535, and so on.
AS 23456 will play a major part as it is reserved as interface between 16-bit and 32-bit AS. The 32-bit AS numbers will appear as AS 23456 in the new BGP attribute AS4 Path (AS Path on 16-bit). The 32-bit AS number is backward compatible with the 16-bit so one thing that is required is making sure the router supports 32-bit AS under the BGP command process.
0 | Reserved |
1-64495 | Public AS Numbers |
64496-64511 | Reserved for documentation |
64512-65534 | Private AS Numbers |
65535 | Reserved |
If you are having a problem converting the ASplain format to ASdot format, you may try this conversion tool provided by APNIC: 32-Bit Conversion Tool. This tool converts Autonomous System numbers from dot notation to decimal or from decimal to dot notation.
For example: 100500 ASplain is equivalent to 1.34964 ASdot notation.
Below is the IANA assignment for the 32-bit notation:
0.0 – 0.65535 | 16-bit AS Number block |
2.0 – 2.1023 | APNIC |
3.0 – 3.1023 | RIPE NCC |
4.0 – 4.1023 | LACNIC |
5.0 – 5.1023 | AfriNIC |
6.0 – 6.1023 | ARIN |
BGP attributes are classified into 4 types:
Well-known Mandatory attributes, as the name suggests, it is a must in every BGP update to have it included. It should exist in every BGP update and must be recognized by all BGP speakers. Well-known mandatory attributes are AS Path, Next Hop address, and Origin.
Well-known Discretionary must be recognized by all BGP speakers but not necessarily included in every BGP update. It includes Local Preference and Atomic Aggregate.
Optional Transitive and Optional Non-Transitive are attributes that don’t need to be understood and supported by all BGP speakers. The main difference between these two is that if it is set as transitive, it means it has to advertise to all peers and if is set as non-transitive then it can be ignored and not passed to other peers. Optional Transitive attributes are Aggregator and Community. Optional Non-Transitive attributes are Originator ID and Cluster List.
Type Code Value | Attribute | Attribute Type |
1 | Origin | Well-Known Mandatory |
2 | AS_Path | Well-Known Mandatory |
3 | Next_Hop | Well-Known Mandatory |
4 | Multi-Exit Discriminator (MED) | Optional Non-Transitive |
5 | Local_Preference | Well-Known Discretionary |
6 | Atomic_Aggregate | Well-Known Discretionary |
7 | Aggregator | Optional Transitive |
8 | Community | Optional Transitive |
9 | Originator_ID | Optional Non-Transitive |
10 | Cluster_List | Optional Non-Transitive |
BGP path attributes types don’t seem to be of importance for now. However, as we go further our BGP studies, we will realize the essence of it.
]]>Unlike other IGPs (OSPF, EIGRP, or RIP), BGP has many metrics or attributes in choosing the best path in the network. These attributes are for path manipulation. We will check it one by one as those attributes influence either inbound or outbound traffic.
BGP is further classified into two: eBGP and iBGP. When peers that run BGP within the same AS, it is called iBGP (Internal Border Gateway Protocol) and peers that run BGP session in different AS, it is called eBGP (External Border Gateway Protocol). The iBGP and eBGP differ on how routes are propagated in other peers. Routes learned from an iBGP peer will never be learned or advertised to another iBGP peer because of a “Split Horizon Rule.” In order for a route to be learned from an iBGP neighbor, it must be first known via IGP. This is called the “Synchronization Rule.” This will be later explained as we progress to Split Horizon Rule solutions.
BGP is the slowest routing protocol but being the slowest makes it a perfect routing protocol on the internet. The 3 minute convergence time is designed that way in order to prevent constant link flap. Now, you might be thinking why do we have to use BGP. Aside from the fact that it is a slow protocol, EIGRP and OSPF can also do the routing of the traffic to the internet. I think the better question here is when to use BGP. It doesn’t make sense if we are going to use BGP if we have only one or a single connection to the ISP. There is only one exit path so a default route can do the job. This is called a single-homed connection. But what if we have a dual multihomed design, which means dual connections (dual links) to two different ISPs, then BGP is far more useful than IGP. BGP attributes can be configured to better manipulate the path to the destination.
BGP RELATED TOPICS:
BGP CONFIGURATION / LABS
So what are IGP and EGP?
IGP is composed of routing protocols that are used within the autonomous system while EGP is used between different autonomous system. IGP usually runs within the LAN while EGP mostly used in WAN. EGP is the protocol run by ISPs to connect to customer’s edge device and protocol used by the internet. It is used to interconnect different autonomous system.
Interior Gateway Protocols:
Exterior Gateway Protocol:
Believe me, if you missed it, you’ll get to know it on the other day.
]]>