Showing posts with label BGP. Show all posts
Showing posts with label BGP. Show all posts

Wednesday, 20 August 2014

BGP Route Aggreagation

BGP Route Aggreagation helps to reduce the size of the routing table. A summary route is announced to the peer. The component routes, that make up the aggregate, can be suppressed or announced additionally to the aggregate. At least one component route has to be in the BGP table for the aggregate to be announced.
The BGP setup is as follows. R1 and R2 are in AS 100, R3 is in AS200.
3 Routers for BGP, IPv4
The component routes are announced on R1. As BGP needs valid routes in the routing table before announcing networks to peers, interface Loopback 1 is configured with 5 addresses.
R1#show running-config inter loopback 1
Building configuration...

Monday, 13 January 2014

BGPFLAP: a simple tcl script to flap an interface

Hi all,
today I was trying the bgp dampening feature, and I wrote this simple tclsh script to flap an interface during my lab tests:

first, configure an interface with the route to flap:

R3#sh run int lo 10 | beg int
interface Loopback10
ip address 10.10.10.10 255.255.255.0
end

then configure the network statement for that route under the bgp process: 

R3#sh run | sec router bgp
router bgp 300
no synchronization
bgp log-neighbor-changes
bgp dampening
network 10.10.10.0 mask 255.255.255.0
neighbor 192.168.2.1 remote-as 200
neighbor 192.168.2.1 ebgp-multihop 2
neighbor 192.168.2.1 update-source Loopback0
no auto-summary
R3#


and here is the tclsh script, I reccomend a wait time of 40-50 sec with the default bgp timers


##################################################################################
## Tclsh BGPFLAP SCRIPT v0.1 Beta: a tclsh script to flap a bgp route
## By Marco Rizzi ( http://rizzitech.blogspot.com ) marco.rizzi.com[A_T]gmail.com
## Date Feb 28, 2010
## licensed under a Creative Commons Attribution 3.0 United States License
## ( http://creativecommons.org/licenses/by/3.0/us/ ) ;-)
##################################################################################
### USAGE: BGPFLAP [interface_to_flap] [number_of_flaps] [wait_secs]

## DON'T USE ON PRODUCTION SYSTEMS, IT'S ONLY FOR LAB TESTING
## No warranty, provided "AS IS"

## Main procedure
proc BGPFLAP {interface n_flaps wait} {

## Before you start, be shure you have a bgp process up and running
## and the interface you will flap declared under the bgp process
## BGP DAMPENING would be nice to have on neighbors too :-)

## calculates msecs to wait: 1 flap = 1 down + 1 up so wait/2
set wait [ expr {$wait/2 * 1000}]

## produces n flaps of the desired route shutting down the interface at wait/2 rate
for {set i 0} {$i <= $n_flaps} {incr i} {

ios_config "interface $interface" "shutdown"

#wait, let bgp withdraw the route
after $wait

ios_config "interface $interface" "no shutdown"

#wait, let bgp announce the route
after $wait
}
}


################################# END OF SCRIPT ###################################
##
##
### USAGE: BGPFLAP [interface_to_flap] [number_of_flaps] [wait_secs]
#### enjoy ;-)



Let's try with

R3(tcl)#
R3(tcl)#BGPFLAP loopback10 6 45

*Feb 28 16:08:43.443: %LINK-5-CHANGED: Interface Loopback10, changed state to administratively down
*Feb 28 16:08:44.447: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback10, changed state to down
*Feb 28 16:09:05.467: %LINK-3-UPDOWN: Interface Loopback10, changed state to up
*Feb 28 16:09:06.467: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback10, changed state to up
!-- ...and so on


on the other side you can see:

R2#debug ip bgp dampening
BGP dampening debugging is on for address family: IPv4 Unicast
R2#
*Feb 28 16:08:41.639: EvD: charge penalty 1000, new accum. penalty 1000, flap count 1
*Feb 28 16:08:41.643: BGP(0): charge penalty for 10.10.10.0/24 path 300 with halflife-time 15 reuse/suppress 750/2000
*Feb 28 16:08:41.647: BGP(0): flapped 1 times since 00:00:00. New penalty is 1000
R2#
*Feb 28 16:09:12.671: EvD: accum. penalty 977, not suppressed
R2#
*Feb 28 16:09:21.083: EvD: accum. penalty decayed to 973 after 8 second(s)
R2#
*Feb 28 16:09:42.759: EvD: accum. penalty decayed to 958 after 22 second(s)
*Feb 28 16:09:42.763: EvD: charge penalty 1000, new accum. penalty 1958, flap count 2
*Feb 28 16:09:42.767: BGP(0): charge penalty for 10.10.10.0/24 path 300 with halflife-time 15 reuse/suppress 750/2000
*Feb 28 16:09:42.767: BGP(0): flapped 2 times since 00:01:01. New penalty is 1958
R2#

R2#sh ip bgp 10.10.10.0
BGP routing table entry for 10.10.10.0/24, version 24
Paths: (1 available, no best path)
Flag: 0x820
Not advertised to any peer
300, (suppressed due to dampening)
192.168.3.1 (metric 65) from 192.168.3.1 (192.168.3.1)
Origin IGP, metric 0, localpref 100, valid, external
Dampinfo: penalty 3521, flapped 4 times in 00:05:19, reuse in 00:00:43
R2#

As you can see, 45 secs of flapping time is barely enough to let bgp announce/withdraw the route, here R2 has noticed only 4 flaps, with a penality of 3521 points...


hope this helps someone to play with bgp :-)

Sunday, 29 December 2013

Thursday, 10 January 2013