bn302.12:40:24#show int phy | egrep '^Eth' | awk '{print $3, $1}' | sort -rn | head -10
479 Ethernet9/25/2
23 Ethernet9/11/1
5 Ethernet9/34/1
5 Ethernet3/34/1
Disclaimer: The information contained in this blog is for informational purposes only and should not be considered as official documentation on any subject matter. The postings on this blog are my own and do not necessarily represent the opinions of my current and previous employers.
10/28/2019
BGP Oscillation (RFC 3345)
BGP Oscillation (RFC 3345)
- BGP Oscillation is common in the context of MED + RR, because,
- BGP only advertise the best path and hide the full list.
- Similar to RR, it is also with BGP confederation
- RFC 3345 has a very good depiction of how it happens
- And I converted it to a google slides for a better view
- in RFC, there lists a couple of design options to avoid this kind of churn
- In RFC 7964, advertises all available paths by using ADD-PATH
- Always compare MED even from different AS;
- Don't accept MED
- Utilize other BGP attributes higher in the decision process. (a little risky, because if any prefix leaked w/o higher attribute and tied)
- Assign a high IGP cost to inter-cluster-link
10/15/2019
AS_PATH and Community regexp tips
1. match certain # of as_path
ip as-path access-list SixAS permit ^._._._._._.$ any
2. community list for some specific ending number, like ending 123. Because there is a space at the end of comm list, so need an underscore _, like
ip community-list regexp Ending123 permit ^.*:.*123_$
ip as-path access-list SixAS permit ^._._._._._.$ any
2. community list for some specific ending number, like ending 123. Because there is a space at the end of comm list, so need an underscore _, like
ip community-list regexp Ending123 permit ^.*:.*123_$
10/08/2019
Router Server
References:
Router Server = Internet Exchange (IX) Route Server = eBGP RR
- https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_bgp/configuration/xe-3s/irg-xe-3s-book/irg-route-server.pdf
- https://tools.ietf.org/html/rfc7947
Router Server = Internet Exchange (IX) Route Server = eBGP RR
- Used in internet exchange
- eBGP RR, so no need a full mesh eBGP peering among all parties
- Reduces configuration complexity and CPU/memory overhead on border routers
Requirements:
- AS_PATH transparency:
- RS doesn't append its own AS# in the AS_PATH
- RS-client doesn't enforce first AS
- Nexthop transparency:
- doesn't change NRLI's NH
- MED transparency:
- doesn't change path MED
- Path hiding:
- Per RFC 4271, BGP only advertises the best path, and a later update will be considered as an implicit withdrawal of the existing path.
- In RFC 7947, it does mention the "path hiding". So the RS only advertises the best path, which could slow down the convergence time
EOS configurations:
service routing protocols model multi-agent << must multi-agent
!
route-map rtmap-no-change-med permit 10
set metric +0 << keep metric unchanged
!
router bgp 10
router-id 10.255.255.251
neighbor RS-Client peer group
neighbor RS-Client next-hop-unchanged << NH unchanged
neighbor RS-Client as-path prepend-own disabled << no own as#
neighbor RS-Client route-map rtmap-not-change-med out << rtmap
neighbor RS-Client password 7 xLcnzAMGHkI=
neighbor RS-Client send-community
neighbor RS-Client maximum-routes 12000
neighbor 10.10.10.11 peer group RS-Client
neighbor 10.10.10.11 remote-as 11
!
How many prefixes received? Considering the following scenario:
- 3 peers advertising ONE prefix
- 2 route servers
- And all 3 peers also have bilateral peering
- Then should be 5
Router1.15:19:15#sh ip bgp 11.111.1.1
BGP routing table information for VRF default
Router identifier 180.255.255.1, local AS number 65100
BGP routing table entry for 11.111.1.1/32
Paths: 5 available
12 111
10.10.10.12 from 10.10.10.12 (10.255.255.12) << from R2
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:19 ago, valid, external, ECMP head, ECMP, best, ECMP contributor
Rx SAFI: Unicast
11 111
10.10.10.11 from 10.10.10.11 (10.255.255.11) << from R1
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:19 ago, valid, external, ECMP, ECMP contributor
Rx SAFI: Unicast
11 111
10.10.10.11 from 10.10.10.251 (10.255.255.251) << R1 vis RS1
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:19 ago, valid, external, ECMP, ECMP contributor
Rx SAFI: Unicast
11 111
10.10.10.11 from 10.10.10.252 (10.255.255.252) << R1 via RS2
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:19 ago, valid, external, ECMP, ECMP contributor
Rx SAFI: Unicast
13 333 111
10.10.10.13 from 10.10.10.13 (10.255.255.13) << R3
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:19 ago, valid, external
Rx SAFI: Unicast
Let's shut down the private peering to R2. So you can see the RS1 and RS2 don't advertise R2's path.
Router.15:26:31(config-router-bgp)#sh ip bgp 11.111.1.1
BGP routing table information for VRF default
Router identifier 180.255.255.1, local AS number 65100
BGP routing table entry for 11.111.1.1/32
Paths: 4 available
11 111
10.10.10.11 from 10.10.10.252 (10.255.255.252) << RS2
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:02 ago, valid, external, best
Rx SAFI: Unicast
11 111
10.10.10.11 from 10.10.10.251 (10.255.255.251) << RS1
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:02 ago, valid, external
Rx SAFI: Unicast
11 111
10.10.10.11 from 10.10.10.11 (10.255.255.11) << R1
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:02 ago, valid, external
Rx SAFI: Unicast
12 111
10.10.10.12 from 10.10.10.12 (10.255.255.12) << R2
Origin IGP, metric 100, localpref 100, weight 0, received 00:00:02 ago, valid, external
Rx SAFI: Unicast
10/03/2019
EOS: A quick alias to show the interfaces with most util%
bn302#bash Cli -p15 -c 'srnz' | awk '{print $5, $8, $1}' | sort -r | more
Mbps Kpps Port
1.6% 4.5% Et9/36/1
1.5% 4.3% Et3/36/1
0.7% 0.5% Et13/33/1
0.7% 0.4% Et12/36/2
or set it as an alias
srnzsort bash Cli -p15 -c 'srnz' | awk '{print $5, $8, $1}' | sort -r | head -n 6
Updated note: The above command works with interface names/description defined. If not, have to change awk '{print $5, $8, $1}' to awk '{print $4, $7, $1}'
hs486.11:32:15#srnz
Port Name Intvl In Mbps % In Kpps Out Mbps % Out Kpps
Et49/1 0:05 9870.4 100.0% 812 9860.3 99.9% 811
hs486.12:14:45#bash Cli -p15 -c 'srnz' | awk '{print $4, $7, $1}' | sort -r | more
In In Port
100.0% 99.9% Et50/1
100.0% 99.9% Et49/4
How about some interfaces with description, some don't? hm.... Let me think about it..... :-)
Mbps Kpps Port
1.6% 4.5% Et9/36/1
1.5% 4.3% Et3/36/1
0.7% 0.5% Et13/33/1
0.7% 0.4% Et12/36/2
or set it as an alias
srnzsort bash Cli -p15 -c 'srnz' | awk '{print $5, $8, $1}' | sort -r | head -n 6
Updated note: The above command works with interface names/description defined. If not, have to change awk '{print $5, $8, $1}' to awk '{print $4, $7, $1}'
hs486.11:32:15#srnz
Port Name Intvl In Mbps % In Kpps Out Mbps % Out Kpps
Et49/1 0:05 9870.4 100.0% 812 9860.3 99.9% 811
hs486.12:14:45#bash Cli -p15 -c 'srnz' | awk '{print $4, $7, $1}' | sort -r | more
In In Port
100.0% 99.9% Et50/1
100.0% 99.9% Et49/4
How about some interfaces with description, some don't? hm.... Let me think about it..... :-)
Subscribe to:
Posts (Atom)