0% found this document useful (0 votes)
57 views38 pages

BGP Path Selection: Selects The Best Path Based On A List of Attributes

Uploaded by

Ranjeet Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views38 pages

BGP Path Selection: Selects The Best Path Based On A List of Attributes

Uploaded by

Ranjeet Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

BGP Path Selection

IGPs, such as EIGRP or OSPF, choose routes based on lowest metric. They attempt to find the
shortest, fastest way to get traffic to its destination. BGP, however, has a different way of route
selection. It assigns various attributes to each path; these attributes can be administratively
manipulated to control the path that is selected.

• RIP selects the path with the lowest hop count.


• OSPF selects the path with the lowest cost.
• EIGRP selects the path with the highest bandwidth and lowest delay (unless you change
the K values)
• BGP – best path depends on the attributes.

BGP selects the best path based on a list of attributes.

Point to be noted-

When BGP has multiple paths to reach the destination they are stored in the BGP table. but only one
gets installed in the routing table.

Path attributes –

Path attributes is one kind of criteria which is used for best path selection in bgp.

BGP chooses a route to a network based on the attributes of its path. Four categories of attributes exist
as follows:
Well-known mandatory –

Must be recognized by all BGP routers, present in all BGP updates, and passed on to other BGP routers.
Such as - Next hop AS path, origin code.

Well-known discretionary –

Must be recognized by all BGP routers and passed on to other BGP routers but need not be present in
an update, such as - local preference.

Optional transitive –

Might or might not be recognized by a BGP router but is passed on to other BGP routers. If not
recognized, it is marked as partial, such as - Aggregator, community.

Optional nontransitive –

Might or might not be recognized by a BGP router and is not passed on to other routers, for such as -
Multi-Exit Discriminator (MED), originator ID.

Best path selection attributes in BGP –


BGP Path Selection Criteria –
BGP uses following attributes for best path selection –

1. Next hop reach ability


2. Weight
3. Local preference
4. Self advertised (originate - 0.0.0.0)
5. As_path length
6. Origin code
7. MED (metric)
8. eBGP path over iBGP path (External over internal)
9. Shortest IGP path to BGP next hop (IGP cost to reach next hop)
10. Lower NBR router ID (in case of IBGP)
11. Oldest Path (in case of EBGP)
12. Lower NBR neighbor IP address

Next hop reach ability –

1. If next hop not reachable then it will not compare other path attribute, if any router is receiving
any prefix from two NBR and next hop is reachable via both router, then BGP will not define
best path based on next hop only.
2. Next hop is a well-known mandatory attribute.
3. Automatically included in update msg.

Note – this attributes’ you can easily verify using two or three routers.
Weight Attribute-
1. It is a Cisco proprietary attribute; it means you won’t find it on other vendor router.
2. With using we can manipulate the path, we can decide which path/route should be more
preferable than other path.
3. For self advertised prefix weight will be always – 32768
4. Weight range (0- 65535), it means we can change weight up to 65535.
5. For receiving prefix weight will be always – 0; it means Weight is not exchanged between BGP
routers.
6. BGP will not carry weight information with bgp updates.
7. It is a locally significant, it means for locally generated routes or it is only locally significant in the
Router where it is configured.
8. Higher weight will be always preferred.
9. This attribute is not advertised to any bgp NBR.
10. It is used to manipulate route-selection to for outbound traffic.
11. You can configure weight per neighbor using the weight command.

Point to be remembered – Weight is applied where routers have two or multiple exit points.

Now let’s grasp these things that we have discussed above. By the simple topology.
So far I didn’t configure weight as you can see R1 router select path via 12.1.1.2, now I’m going to apply
weight on R1 router you will be able to see that traffic will be going through 13.1.1.2 ( R3 router ).
All right everything is okay till now.

Weight configuration –

• R1(config)#router bgp 100


• R1(config-router)#neighbor 13.1.1.2 weight 40000

R1#clear ip bgp * soft in

(Before apply this command you should know what can be potential impact on your network)

Hence using the weight attribute we can manipulate path for outgoing traffic, OR you can say using
weight attribute we can make the decision with path/ route should be more preferable.

When you applies clear ip bgp * soft in what happens in the backhand.
Local Preference attribute in BGP.
1. Local preference is a well known discretionary attribute.
2. Local preference is exchanged within the AS (IBGP) and it only stays within the AS (iBGP).
3. Not exchanged between the AS.
4. Local preference defines how data traffic should be exit from an AS.
5. By default local preference value is – 100
6. Higher local preference will be always preferred.
7. Local Preference is a 32-bit number.
8. Local preference range is - 0 to 4294967295
9. It is configured on a router and exchanged between IBGP routers.
10. local preference attribute is part of the routing update and is exchanged among routers in
The same AS.

Note –

Local Preference is passed on to iBGP peers. If multiple paths exist, Local Preference BGP informs iBGP
routers how to exit the AS. Which path to prefer for outgoing traffic.

➢ Exchanged between IBGP peers only


➢ It is not advertised to EBGP peers

There are many ways to set local preference but here we have described only two methods.

➢ Using the bgp default local-preference command


➢ Using a Route Map to Set Local Preference

BGP Local preferences can be applied in 2 ways

➢ Directly putting default local preference by iBGP router to its neighbors. For an example.
R(config)# router bgp 100.
R(config-router)# bgp default local-preference 200

➢ On per route basis by calling a Route-map and access list/prefix-list through a neighbor. For an
example
R(config)# ip prefix-list Google 8.8.8.0/24
R(config)# route-map PREF permit 10
R(config-route-map)# match ip address prefix-list Google
R(config-route-map)# set local-preference 300
R(config)# router bgp 100
R(config)# neighbour 50.1.1.2 route-map PREF in

Lets understand from the below topology. –

➢ R2(config)#ip prefix-list Google permit 8.8.8.0/24


➢ R2(config)#route-map router5 permit 10
➢ R2(config-route-map)#match ip address prefix-list Google
➢ R2(config-route-map)#set local-preference 200
➢ R2(config-route-map)#router bgp 100
➢ R2(config-router)#neighbor 50.1.1.2 route-map router5 in

➢ R3#show ip bgp 8.8.8.0 bestpath


BGP routing table entry for 8.8.8.0/24, version 8
Paths: (2 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
600 700 500
104.1.1.1 (metric 2) from 104.1.1.1 (104.1.1.1)
Origin IGP, metric 0, localpref 100, valid, internal, best
➢ #Show ip bgp

Another method –
➢ Access-list 10 permit 8.8.8.0 0.0.0.255
➢ route-map loca_pre permit 10
match ip address 10
set local-prefrence 200
route-map local_pre permit 20
exit
➢ router bgp 100
neighbor 50.1.1.2 route-map local_pre in

R1#clear ip bgp * soft in


Point to be noted - All the routers inside the AS, should exit via XYZ routers we generally use local
preference.

Whenever router prefix information with IBGP NBR then local preference will be add and whenever
IBGP router share prefix with EBGP neighbor then local preference will not add.

Self advertised –
1. Prefer route originated by the local router (next hop= 0.0.0.0)
2. Self advertised prefix will be always preferred.
3. If router receiving same prefix from different NBR then it will not compare self advertised.
4. Prefer the path that the local router originated. In the BGP table, you will see next hop 0.0.0.0.
You can get a path in the BGP table through the BGP network command, aggregation, or
redistribution. A BGP router will prefer routes that it installed into BGP itself over a route that
another router installed in BGP.
As you can see above the both router only advertised self advertised route/path.

➢ R1#show run | section bgp ➢ R2#show run | section bgp


➢ router bgp 100 ➢ router bgp 200
no synchronization no synchronization
bgp router-id 1.1.1.1 bgp router-id 2.2.2.2
bgp log-neighbor-changes bgp log-neighbor-changes
network 20.1.1.0 mask network 20.1.1.0 mask
255.255.255.0 255.255.255.0
neighbor 10.1.1.2 remote-as 200 neighbor 10.1.1.1 remote-as 100
no auto-summary no auto-summary
R1# R2#

After that you will check whether bgp route installed in routing or not – there is no route.
AS Path attribute-

➢ In AS Path Attribute mechanism, whenever a route passes an AS (Autonomous System), it adds


the number of AS it passed. So, AS Path Attribute is a list of AS numbers, that the router
traverse. With this mechanism AS Path Attribute is also used for loop detection and loop
avoidance.
➢ Using AS path BGP router will decide which path will be best path.
➢ router will define that path as best which is providing destination network after crossing less
number of AS , For example, AS path 1 2 3 is preferred over AS path 1 2 3 4 5.
➢ A prefix which is having less no of AS available inside its AS-path list.
➢ AS- path list can have maximum 64 AS's.
➢ In case of IBGP router will not add AS number, it adds only in case of EBGP.
➢ Less number of AS path will be always become as best path to reach the destination network.
➢ Suppose if we have to multiple path to reach the destination network and one path is having
lowest AS than second path, then first path will be always preferred due to less no of AS.
➢ You can say that lowest AS shortest path will become as a best path to reach the destination
network.
➢ The AS_PATH attribute is a shortest path determinant. Given multiple routes to the same
destination, the route with an AS_PATH listing the fewest AS numbers is assumed to be the
shortest path.
➢ The AS numbers on the AS_PATH list are used for loop detection; a router receiving a BGP route
with its own AS number in the AS_PATH assumes a loop and discards the route.
➢ If a router has a BGP session to a neighbor with a different AS number, the session is called
external BGP (EBGP); if the neighbor has the same AS number as the router, the session is called
internal BGP (IBGP). The neighbors are called, respectively, external or internal neighbors.
As you can see R1 router has preferred to 10.1.1.2 (R2 path) as a best path to reach the destination
prefix 50.1.1.0/24 is receiving less no of AS that’s the reason.
Note – if you want to verify which path will become a best path just run the debug ip bgp updates

On every router to check bgp updates message after that shut down the loopback of R3 router then you
will see which path will become as a best path, I’m just showing you for an example only here.

Configuration –

R1#show run | section bgp


router bgp 100
no synchronization
bgp router-id 1.1.1.1
bgp log-neighbor-changes
neighbor 10.1.1.2 remote-as 100
neighbor 30.1.1.2 remote-as 400
no auto-summary
===============================
R2#show run | section bgp
router bgp 100
no synchronization
bgp router-id 2.2.2.2
bgp log-neighbor-changes
neighbor 10.1.1.1 remote-as 100
neighbor 10.1.1.1 next-hop-self
neighbor 20.1.1.2 remote-as 200
no auto-summary
R2#
================================
R3#show run | section bgp
router bgp 200
no synchronization
bgp router-id 3.3.3.3
bgp log-neighbor-changes
network 50.1.1.0 mask 255.255.255.0
neighbor 20.1.1.1 remote-as 100
no auto-summary
R3#
===============================

R4#show run | section bgp


router bgp 400
no synchronization
bgp router-id 4.4.4.4
bgp log-neighbor-changes
neighbor 30.1.1.1 remote-as 100
neighbor 40.1.1.2 remote-as 500
no auto-summary
R4#
===============================
R5#show run | section bgp
router bgp 500
no synchronization
bgp router-id 5.5.5.5
bgp log-neighbor-changes
network 50.1.1.0 mask 255.255.255.0
neighbor 40.1.1.1 remote-as 400
no auto-summary
R5#
=================================
Origin Code-

There are three origin codes you could see in the BGP table:-

I = BGP prefix
E= EGP prefix
? = Redistributed prefix

I = it means you have advertised this prefix using network command therefore you are getting this code.

Or you can say that - You will see IGP when you use the network command for BGP. It means you
advertised the network yourself in BGP.

Let’s prove it –
E= EGP prefix:-

EGP is historical and you won’t see it in the BGP table anymore. EGP is an old routing protocol we don’t
use it anymore.

Or you can say it – it is a old version of BGP, before it was using EGP, in legacy IOS were support it.

? = Redistributed prefix:-

Incomplete means you have redistributed something into BGP. Here’s a demonstration:-

?= it means this is bgp prefix, it is coming from any other routing protocol means redistributed prefix.

I is more preferable than E and E is more preferable than ? ----> (i>E>?)


# Whatever configuration I have done so far you can see the below sheet.

R1#show run | section bgp


router bgp 100
no synchronization
bgp router-id 1.1.1.1
bgp log-neighbor-changes
neighbor 10.1.1.2 remote-as 200
no auto-summary
R1#
=================================
R2#show run | section bgp
router bgp 200
no synchronization
bgp router-id 2.2.2.2
bgp log-neighbor-changes
redistribute ospf 300 metric 1
neighbor 10.1.1.1 remote-as 100
no auto-summary
R2#
==================================
R2#show run | section ospf
router ospf 300
router-id 2.2.2.2
log-adjacency-changes
passive-interface GigabitEthernet1/0
network 20.1.1.0 0.0.0.255 area 0
redistribute ospf 300 metric 1
R2#
==================================
R3#show run | section ospf
router ospf 500
router-id 3.3.3.3
log-adjacency-changes
network 20.1.1.0 0.0.0.255 area 0
network 30.1.1.0 0.0.0.255 area 0
R3#
R1#show ip route
Gateway of last resort is not set

20.0.0.0/24 is subnetted, 1 subnets


B 20.1.1.0 [20/0] via 10.1.1.2, 00:16:02
10.0.0.0/24 is subnetted, 1 subnets
C 10.1.1.0 is directly connected, GigabitEthernet0/0
30.0.0.0/32 is subnetted, 1 subnets
B 30.1.1.1 [20/1] via 10.1.1.2, 00:16:02
R1#

1. MED attribute:-

1. MED is an optional non transitive attribute.


2. MED stands for Multiple Exit Discriminator, MED is also called metric.
3. Lower MED value will be always preferred over a higher MED value.
4. By default MED value is – 0 OR lower is better. ( Default MED is 0)
5. Used to manipulate route-selection for inbound traffic.
6. MED is exchanged between autonomous systems.
7. MED can be used to advertise to your neighbors how they should enter your AS.
8. MED is propagated to all routers within the neighbor AS but not passed along any other
autonomous systems.
9. MED type code is = type code 4
10. The MED is sent to EBGP peers and those routers propagate the MED within their AS.
11. The routers within the AS use the MED, but do not pass it on to the next AS.
12. When BGP sends that update to another AS, the MED is reset to 0.
13. By using the MED attribute, BGP is the only protocol that can affect how routes are sent into an
AS.
14. Point to be noted - Local preference is used for outbound traffic and MED is for inbound traffic.
Let’s understand below sample topology –

Configuration –
R1#show run | section bgp
router bgp 65502
no synchronization
bgp router-id 1.1.1.1
bgp log-neighbor-changes
network 192.168.1.0
network 192.168.2.0
neighbor 10.1.1.2 remote-as 65501
neighbor 30.1.1.2 remote-as 65501
no auto-summary
R1#
=================================
R2#show run | section bgp
router bgp 65501
no synchronization
bgp router-id 2.2.2.2
bgp log-neighbor-changes
redistribute ospf 100 metric 2
neighbor 4.4.4.4 remote-as 65501
neighbor 4.4.4.4 update-source Loopback2
neighbor 10.1.1.1 remote-as 65502
neighbor 20.1.1.1 remote-as 65501
neighbor 50.1.1.1 remote-as 65501
no auto-summary
R2#
=====================================
R2#show run | section ospf
router ospf 100
router-id 2.2.2.2
log-adjacency-changes
redistribute connected subnets
passive-interface GigabitEthernet0/0
network 2.2.2.0 0.0.0.255 area 0
network 20.1.1.0 0.0.0.255 area 0
network 50.1.1.0 0.0.0.255 area 0
redistribute ospf 100 metric 2
======================================
R3#show run | section bgp
router bgp 65501
no synchronization
bgp router-id 3.3.3.3
bgp log-neighbor-changes
redistribute ospf 100 metric 3
neighbor 4.4.4.4 remote-as 65501
neighbor 4.4.4.4 update-source Loopback3
neighbor 30.1.1.1 remote-as 65502
neighbor 40.1.1.1 remote-as 65501
neighbor 50.1.1.2 remote-as 65501
no auto-summary
R3#
========================================
R3#show run | section ospf
router ospf 100
router-id 3.3.3.3
log-adjacency-changes
redistribute connected subnets
passive-interface GigabitEthernet1/0
network 3.3.3.0 0.0.0.255 area 0
network 40.1.1.0 0.0.0.255 area 0
network 50.1.1.0 0.0.0.255 area 0
redistribute ospf 100 metric 3
=========================================
R4#show run | section bgp
router bgp 65501
no synchronization
bgp router-id 4.4.4.4
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 65501
neighbor 2.2.2.2 update-source Loopback4
neighbor 3.3.3.3 remote-as 65501
neighbor 3.3.3.3 update-source Loopback4
neighbor 20.1.1.2 remote-as 65501
neighbor 40.1.1.2 remote-as 65501
no auto-summary
R4#
========================================
R4#show run | section ospf
router ospf 100
router-id 4.4.4.4
log-adjacency-changes
network 4.4.4.0 0.0.0.255 area 0
network 20.1.1.0 0.0.0.255 area 0
network 40.1.1.0 0.0.0.255 area 0
R4#

As you can see that we have designed topology for the redundancy in order to network should be
available forever. let me show you one by one .

Just look the trace route from R1 router, what did I do? Simply I have gone on R2 router shut down the
S4/0 interface & gigabitEthernet2/0. Then you get below output.
Traceroute from R1 to 4.4.4.0/24

Now What am I going to do to test MED but before that we have to verify from which path traffic is
going on then we will apply MED according to that.

• R1#traceroute 4.4.4.4 source gigabitEthernet 2/0


Type escape sequence to abort.
Tracing the route to 4.4.4.4
1 30.1.1.2 20 msec 8 msec 8 msec
2 40.1.1.1 [AS 65501] 12 msec 16 msec 36 msec
R1#

Now Im going to apply MED on R2 router.


BGP table & routing table of R1

Now I’m going to configure MED configuration –

➢ R2(config)#access-list 1 permit 4.4.4.0 0.0.0.255


➢ R2(config)#route-map test permit 10
➢ R2(config-route-map)#set metric 100
➢ R2(config-route-map)#exit
➢ R2(config)#route-map test permit 20
➢ R2(config-route-map)#exit
➢ R2(config)#router bgp
➢ R2(config)#router bgp 65501
➢ R2(config-router)#neighbor 10.1.1.1 route-map test out
Lets check using trace route on R1 router –

Check the hit count of ACL –

R2#show access-lists

Standard IP access list 1

10 permit 4.4.4.0, wildcard bits 0.0.0.255 (3 matches)

R2#
2. eBGP path over iBGP path (External over internal)

1. Prefer EBGP path over IBGP path it means if any prefix coming from to different NBR
one is IBGP NBR and another is one EBGP NBR then BGP will prefer external prefix
means EBGP prefixes’.

It can prove using R2#show ip bgp and via routing table


R1#traceroute

Configuration –

R1#show run | section bgp


router bgp 100
no synchronization
bgp router-id 1.1.1.1
bgp log-neighbor-changes
network 192.168.1.0
neighbor 10.1.1.2 remote-as 100
neighbor 20.1.1.2 remote-as 300
no auto-summary
R1#
R2#show run | section bgp
router bgp 100
no synchronization
bgp router-id 2.2.2.2
bgp log-neighbor-changes
neighbor 10.1.1.1 remote-as 100
neighbor 30.1.1.4 remote-as 400
no auto-summary
R2#
R3#show run | section bgp
router bgp 300
no synchronization
bgp router-id 3.3.3.3
bgp log-neighbor-changes
neighbor 20.1.1.1 remote-as 100
neighbor 40.1.1.4 remote-as 400
no auto-summary
R3#
R4#show run | section bgp
router bgp 400
no synchronization
bgp router-id 4.4.4.4
bgp log-neighbor-changes
network 50.1.1.0 mask 255.255.255.0
neighbor 30.1.1.2 remote-as 100
neighbor 40.1.1.3 remote-as 300
no auto-summary
R4#
3. IGP cost to reach next hop (Shortest IGP path to BGP next hop)

1. Prefer the path within the autonomous system with the lowest IGP metric to the BGP next hop.
2. If IGP configured background of bgp then bgp can use IGP cost to reach next hop address.
4. Oldest path (only for EBGP neighbors)
1. Prefer the path that we received first, in other words, the oldest path.
2. If router receiving same prefix coming from two different EBGP NBR then oldest path will be
always preferred.
3. Oldest path only compared is in EBGP Neighborship, not an IBGP.
4. Prefix that will receive first will become as a best path whether lower NBR ip address or not
same.

Point to be noted – Oldest path is compared in case of EBGP NBR.

Now let’s prove it how -

Right now I’m going to shutdown NBR using bgp command on RTR4_ISP –
➢ RTR4_ISP(config)#router bgp 65001
➢ RTR4_ISP(config-router)#neighbor 20.1.1.1 shutdown

Lets see now bgp table of R4 –

Going to disable this command -

➢ RTR4_ISP(config-router)# no neighbor 20.1.1.1 shutdown

Proved now –

➢ Gateway of last resort is not set


➢ 20.0.0.0/24 is subnetted, 1 subnets
➢ C 20.1.1.0 is directly connected, GigabitEthernet1/0
➢ 8.0.0.0/24 is subnetted, 1 subnets
➢ C 8.8.8.0 is directly connected, Loopback4
➢ 40.0.0.0/24 is subnetted, 1 subnets
➢ C 40.1.1.0 is directly connected, GigabitEthernet0/0
➢ B 192.168.1.0/24 [20/0] via 40.1.1.1, 00:05:57
➢ RTR4_ISP#
R1#show run | section bgp
router bgp 100
no synchronization
bgp router-id 1.1.1.1
bgp log-neighbor-changes
network 192.168.1.0
neighbor 10.1.1.2 remote-as 100
neighbor 30.1.1.2 remote-as 100
no auto-summary
R1#
R2#show run | section bgp
router bgp 100
no synchronization
bgp router-id 2.2.2.2
bgp log-neighbor-changes
neighbor 10.1.1.1 remote-as 100
neighbor 10.1.1.1 next-hop-self
neighbor 20.1.1.2 remote-as 65001
no auto-summary
R2#
R3#show run | section bgp
router bgp 100
no synchronization
bgp router-id 3.3.3.3
bgp log-neighbor-changes
neighbor 30.1.1.1 remote-as 100
neighbor 30.1.1.1 next-hop-self
neighbor 40.1.1.2 remote-as 65001
no auto-summary
R3#
RTR4_ISP#show run | section bgp
router bgp 65001
no synchronization
bgp router-id 4.4.4.4
bgp log-neighbor-changes
network 8.8.8.0 mask 255.255.255.0
neighbor 20.1.1.1 remote-as 100
neighbor 40.1.1.1 remote-as 100
no auto-summary
RTR4_ISP#

R1#traceroute 8.8.8.8 source gigabitEthernet 0/0


Type escape sequence to abort.
Tracing the route to 8.8.8.8
1 10.1.1.2 16 msec 32 msec 20 msec
2 20.1.1.2 44 msec 32 msec 44 msec
R1#
5. Lower neighbor router-id – ( Compared only IBGP neighbor case)

1. Prefer the path with the lowest BGP neighbor router ID. The router ID is based on the highest IP
address. If you have a loopback interface, then the IP address on the loopback will be used. The
router ID can also be manually configured.
2. Router-id election criteria same as OSPF protocol
3. Lower router-id will be always preferred.
4. If router is receiving same prefix coming from two different IBGP neighbor then lower router-id
of NBR will be always preferred.

Let’s prove it –
Proved –

Note – you can also verify lower NBR router-id using below command –

R1#show ip bgp neighbors

Point to be noted –

If NBR router-id will be same then it will compare next attribute that is called – Lower neighbor ip
address.
6. Lower neighbor ip address –
1. Prefer the path with the lowest neighbor IP address. If you have two eBGP routers and two links
in between then the router ID will be the same. In this case, the neighbor IP address is the
tiebreaker.
2. If router is receiving same prefix coming from two NBR which router-id has same then lower
NBR router ip address will be preferred.

Proved in the below snapshot –


Note –
BGP support equal cost load balancing but up to IGP cost to reach next hop attribute must be same .

Next hop rule –

1. Whenever any routers give update to its ebgp neighbor, it will advertise update after modifying
their next-hop address.
2. whenever any router give update to its ibgp neighbor, it will advertise update without
Modifying their next-hop address

Note – According to my Skills I have demonstrated BGP attributed and let me


know if there is any single mistake has been done by me, please write here –
[email protected]

In order to I can enhance my skills. BGP full notes will be uploaded soon. One
more things please broadcast this notes with your friends & group, comment as
well.

You might also like