Difference between revisions of "Cisco BGP"
Helikopter (talk | contribs) |
Helikopter (talk | contribs) |
||
Line 1: | Line 1: | ||
Border Gateway Protocol (RFC 4271) är ett path vector routing protokoll. Det kommunicerar på TCP port 179 så routing måste vara på plats, man kan nästan se det som ett L4-protokoll. TCP står för acknowledgement, retransmission, sequencing och update fragmentation. BGP kan få många vägar till samma destination. Bästa vägen väljs utifrån en [http://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/13753-25.html algoritm]. Den bästa pathen markeras valid/best och blir en kandidat till routingtabellen. Om next hop inte är reachable så blir aldrig en route valid. | Border Gateway Protocol (RFC 4271) är ett path vector routing protokoll. Det kommunicerar på TCP port 179 så routing måste vara på plats, man kan nästan se det som ett L4-protokoll. TCP står för acknowledgement, retransmission, sequencing och update fragmentation. BGP kan få många vägar till samma destination. Bästa vägen väljs utifrån en [http://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/13753-25.html algoritm]. Den bästa pathen markeras valid/best och blir en kandidat till routingtabellen. Om next hop inte är reachable så blir aldrig en route valid. | ||
+ | |||
+ | ===Pakettyper=== | ||
+ | OPEN: Första paketet som skickas av varje sida används för att upprätta grannskap, innehåller grundläggande parametrar. <br/> | ||
+ | UPDATE: En update innehåller routinginformation. Varje NLRI skickas endast en gång. <br/> | ||
+ | NOTIFICATION: Errormeddelanden, kan skickas för att starta om ett grannskap. <br/> | ||
+ | KEEPALIVE: Skickas regelbundet för att säkerställa att grannen lever. <br/> | ||
==Neighbor== | ==Neighbor== | ||
Line 5: | Line 11: | ||
===States=== | ===States=== | ||
− | Grannskap kan | + | Grannskap kan befinna sig i olika tillstånd. <br/> |
'''TCP''' <br/> | '''TCP''' <br/> | ||
Idle State: ConnectRetry timer 120 sekunder <br/> | Idle State: ConnectRetry timer 120 sekunder <br/> | ||
Line 16: | Line 22: | ||
Established State: Skicka uppdateringar. Neighbor up <br/> | Established State: Skicka uppdateringar. Neighbor up <br/> | ||
− | === | + | ===Konfiguration=== |
− | |||
− | |||
− | |||
− | |||
− | |||
Om ett grannskap är iBGP eller eBGP (ttl 1) avgörs med remote-as som antingen är samma AS som en själv eller ett annat. | Om ett grannskap är iBGP eller eBGP (ttl 1) avgörs med remote-as som antingen är samma AS som en själv eller ett annat. | ||
router bgp 65000 | router bgp 65000 | ||
Line 94: | Line 95: | ||
* Redistribution: | * Redistribution: | ||
− | + | ==Diverse== | |
För att byta från NLRI-format till AFI-format i konfigurationen | För att byta från NLRI-format till AFI-format i konfigurationen | ||
bgp upgrade-cli | bgp upgrade-cli | ||
− | + | Router ID | |
− | |||
router-id [loopback-adress] | router-id [loopback-adress] | ||
(bgp router-id vrf auto-assign) | (bgp router-id vrf auto-assign) | ||
Line 123: | Line 123: | ||
Synchronization is enabled by default in Cisco IOS Software Release prior to 12.2(8)T. | Synchronization is enabled by default in Cisco IOS Software Release prior to 12.2(8)T. | ||
no synchronization | no synchronization | ||
+ | |||
+ | Origin | ||
+ | Kan vara incomplete eller IGP (EGP finns inte längre) | ||
+ | show ip bgp 13.3.7.0 | b Origin | ||
+ | |||
+ | BFD | ||
+ | neighbor 1.1.1.1 fall-over bfd | ||
+ | show bfd neighbor | ||
AS | AS | ||
Line 130: | Line 138: | ||
tim bg 10 30 20 | tim bg 10 30 20 | ||
− | + | ==Next Hop== | |
Ändra så att annonserade uppdateringar har den egna IP-adressen istället för det som står i uppdateringen från den granne man har lärt sig nätverket av. | Ändra så att annonserade uppdateringar har den egna IP-adressen istället för det som står i uppdateringen från den granne man har lärt sig nätverket av. | ||
− | neighbor 10.0.0.10 | + | neighbor 10.0.0.10 next-hop-self |
Alternativt | Alternativt | ||
neighbor 10.0.0.10 route-map OUT | neighbor 10.0.0.10 route-map OUT | ||
Line 146: | Line 154: | ||
bgp nexthop trigger delay 10 | bgp nexthop trigger delay 10 | ||
− | + | ==Summarization== | |
aggregate-address, null route automatically installed | aggregate-address, null route automatically installed | ||
aggregate-address 10.0.0.0 255.0.0.0 [summary-only] | aggregate-address 10.0.0.0 255.0.0.0 [summary-only] | ||
Line 156: | Line 164: | ||
network 10.0.0.0 255.0.0.0 | network 10.0.0.0 255.0.0.0 | ||
− | + | ==Route Reflector== | |
Routes lärda av iBGP skickas ej vidare till iBGP-grannar per default. En route reflector bryter denna regel.<br/> | Routes lärda av iBGP skickas ej vidare till iBGP-grannar per default. En route reflector bryter denna regel.<br/> | ||
Route Reflector: | Route Reflector: | ||
address-family ipv4 | address-family ipv4 | ||
− | + | neighbor [ip-address] route-reflector-client | |
+ | |||
+ | ==Confederations== | ||
+ | BGP confederations (RFC 5065) delar upp ett AS i flera sub-AS. Routrar inom samma sub-AS är confederation iBGP-grannar medans mellan sub-AS är confederation eBGP-grannar. iBGP fungerar precis likadant, dvs routes lärda från iBGP annonseras ej vidare till iBGP-grannar och det behövs således full mesh grannskap alternativt en route reflector. För att undvika loopar används path attributet AS_PATH. Istället för de vanliga AS_SEQ och AS_SET används AS_CONFED_SEQ och AS_CONFED_SET. Finns en grannes sub-AS redan med i AS_CONFED_SEQ så kommer prefixet inte att annonseras till den. När det gäller confederation eBGP används TTL 1 precis som vanlig eBGP däremot ändras inte NEXT_HOP default mellan sub-AS. Om ett prefix ska annonseras ut från en confederation tas confederation ASN bort från AS_PATH så utsidan ser endast ett AS. | ||
+ | router bgp 65000 | ||
+ | bgp confederation identifier 123 | ||
+ | |||
+ | För att routern ska veta att det är ett confederation eBGP-grannskap och inte ett vanligt konfa med ''bgp confederation peers'' | ||
+ | bgp confederation peers 65001 | ||
+ | neighbor 10.0.0.20 remote-as 65001 | ||
+ | |||
+ | ==Communities== | ||
+ | Communities är 32-bitars nummer som används för att tagga prefix. Då kan man använda taggen för att matcha på och sedan manipulera path eller filtrera. | ||
+ | ip bgp new-format | ||
+ | AA:NN | ||
− | |||
Några kända | Några kända | ||
* Internet | * Internet | ||
Line 176: | Line 197: | ||
show ip bgp community | show ip bgp community | ||
− | + | ==Filtering== | |
'''AS''' | '''AS''' | ||
Line 182: | Line 203: | ||
* .* = Any | * .* = Any | ||
* ^$ = Local AS | * ^$ = Local AS | ||
− | ACL | + | * _200$ = Originated in AS 200 |
+ | * _200_ = Transited AS 200 | ||
+ | * ^200_ = Learned from 200 | ||
+ | * [0-9]+ = Any AS | ||
+ | |||
+ | AS-path ACL | ||
+ | ip as-path access-list 100 deny _120$ | ||
ip as-path access-list 100 permit .* | ip as-path access-list 100 permit .* | ||
neighbor 1.1.1.1 filter-list 100 in | neighbor 1.1.1.1 filter-list 100 in | ||
Line 198: | Line 225: | ||
show ip bgp neighbors 1.1.1.1 received prefix-filter | show ip bgp neighbors 1.1.1.1 received prefix-filter | ||
− | == | + | ==MED== |
+ | Multi-exit discriminator. Jämförs bara om flera olika paths kommer från samma AS, ändras med bgp ''always-compare-med''. | ||
+ | ip access-list standard MED | ||
+ | permit 1.1.1.0 0.0.0.255 | ||
+ | route-map MED_50 permit 10 | ||
+ | match ip address MED | ||
+ | set metric 50 | ||
− | ===AS-path manipulation=== | + | ==Local Preference== |
+ | Preference | ||
+ | bgp default local-preference 100 | ||
+ | |||
+ | Högst preference vinner | ||
+ | route-map LOCALPREF permit 10 | ||
+ | set local-preference 500 | ||
+ | neighbor 1.1.1.1 route-map LOCALPREF in | ||
+ | |||
+ | ==Conditional Route Injection== | ||
+ | |||
+ | ==AS-path manipulation== | ||
+ | Se alla routes från ett visst AS. | ||
+ | show ip bgp regex 65000$ | ||
+ | |||
+ | ==Route Manipulation== | ||
+ | '''Outbound:''' | ||
+ | * Weight | ||
+ | * Local preference | ||
+ | * Communities | ||
+ | |||
+ | '''Inbound:''' | ||
+ | * AS-prepend | ||
+ | * MED | ||
===eBGP multipath=== | ===eBGP multipath=== | ||
Line 213: | Line 269: | ||
bgp bestpath med confed | bgp bestpath med confed | ||
− | + | ==Convergence== | |
Don't wait for the hold-down timer (180 sec) to expire (this is default). | Don't wait for the hold-down timer (180 sec) to expire (this is default). | ||
bgp fast-external-fallover #Global | bgp fast-external-fallover #Global | ||
ip bgp fast-external-fallover #Per interface | ip bgp fast-external-fallover #Per interface | ||
− | + | ==Dampening== | |
route-map selective_dampening permit 10 | route-map selective_dampening permit 10 | ||
set dampening 5 1900 2000 10 | set dampening 5 1900 2000 10 | ||
Line 228: | Line 284: | ||
show ip bgp dampening parameters | show ip bgp dampening parameters | ||
− | '''Backdoor''' | + | '''Backdoor''' <br/> |
Sätter AD till 200 på routen så IGPs används i första hand. | Sätter AD till 200 på routen så IGPs används i första hand. | ||
Line 245: | Line 301: | ||
===Debug=== | ===Debug=== | ||
debug ip bgp events | debug ip bgp events | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=BMP= | =BMP= |
Revision as of 21:11, 27 March 2016
Border Gateway Protocol (RFC 4271) är ett path vector routing protokoll. Det kommunicerar på TCP port 179 så routing måste vara på plats, man kan nästan se det som ett L4-protokoll. TCP står för acknowledgement, retransmission, sequencing och update fragmentation. BGP kan få många vägar till samma destination. Bästa vägen väljs utifrån en algoritm. Den bästa pathen markeras valid/best och blir en kandidat till routingtabellen. Om next hop inte är reachable så blir aldrig en route valid.
Contents
- 1 Pakettyper
- 2 Neighbor
- 3 Path attribute
- 4 Diverse
- 5 Next Hop
- 6 Summarization
- 7 Route Reflector
- 8 Confederations
- 9 Communities
- 10 Filtering
- 11 MED
- 12 Local Preference
- 13 Conditional Route Injection
- 14 AS-path manipulation
- 15 Route Manipulation
- 16 Convergence
- 17 Dampening
- 18 Show
- 19 BMP
- 20 Resource Public Key Infrastructure
Pakettyper
OPEN: Första paketet som skickas av varje sida används för att upprätta grannskap, innehåller grundläggande parametrar.
UPDATE: En update innehåller routinginformation. Varje NLRI skickas endast en gång.
NOTIFICATION: Errormeddelanden, kan skickas för att starta om ett grannskap.
KEEPALIVE: Skickas regelbundet för att säkerställa att grannen lever.
Neighbor
För att kunna utbyta routinginformation måste grannskap upprättas, detta görs med en TCP-anslutning som det skickas BGP-meddelanden över.
States
Grannskap kan befinna sig i olika tillstånd.
TCP
Idle State: ConnectRetry timer 120 sekunder
Active State: BGP speaker försöker nå peer med TCP
Connect State: TCP session established
BGP
OpenSent State: BGP version, AS number, hold time, BGP ID. Börja skicka keepalives
OpenConfirm State: Response recieved
Established State: Skicka uppdateringar. Neighbor up
Konfiguration
Om ett grannskap är iBGP eller eBGP (ttl 1) avgörs med remote-as som antingen är samma AS som en själv eller ett annat.
router bgp 65000 neighbor 1.1.1.1 remote-as 65001 neighbor 1.1.1.1 description Other side
Loopback. When configuring iBGP always use loopbacks (advertised by your IGP) for peering.
neighbor 1.1.1.1 update-source [interface]
eBGP om det ej är directly connected, t.ex. loopback
neighbor 1.1.1.1 ebgp-multihop 2
Soft
neighbor 1.1.1.1 soft-reconfiguration inbound
Verify
show ip bgp neighbor show ip bgp summary show tcp brief
Peer Group
För att förenkla konfen kan man gruppera flera grannar i så kallade peer groups. Det blir även lite effektivare processing eftersom identiska Updates skickas till alla peers i gruppen.
neighbor GROUP01 peer-group neighbor 1.1.1.1 peer-group GROUP01
Passive Peer
bgp neighbor transport connection-mode active/passive
Dynamic Peering
router bgp 100 bgp listen limit bgp listen range 10.0.0.0/24 peer-group GROUP neighbor GROUP ebgp-multihop TTL neighbor GROUP remote-as 102 alternative-as 105 show ip bgp peer-group GROUP debug ip bgp range
Addess family
address-family ipv4 network 10.0.0.0 neighbor 1.1.1.1 activate neighbor 1.1.1.1 send-community both exit-address-family
Path attribute
Till skillnad från IGPer används inte metric för att avgöra vilken som är bästa routen, istället används ett gäng Path Attributes för att komma fram till vad som ska installeras i routingtabellen.
Well Known
Mandatory attributes
- AS Path
- Next Hop
- Origin
Descretionary attributes
- Local Preference
- Atomic Aggregate
Optional
Transitive attributes
- Aggregator
- Community
Non transitive attributes
- MED (Multi Exit Discriminator)
- Originator
- Cluster ID
BGP table
Källor till BGP table:
- Network command: lägger prefix i bgp table men kan inte annonseras ut om det inte finns i routingtabellen
- BGP updates:
- Redistribution:
Diverse
För att byta från NLRI-format till AFI-format i konfigurationen
bgp upgrade-cli
Router ID
router-id [loopback-adress] (bgp router-id vrf auto-assign)
md5 authentication görs med tcp option 19
neighbor 1.1.1.1 password cisco
Nätverk som ska annonseras
network [ip-address] mask [subnet-mask] show ip bgp 10.10.10.0/24
Maximum Prefix
neighbor 10.0.0.10 maximum-prefix 30 100
Send default route
network 0.0.0.0
Måste finnas i routingtabellen
default-information originate
Requires redistribution och måste finnas i routingtabellen
neighbor default-originate
Skickar default route villkorslöst
Synchronization is enabled by default in Cisco IOS Software Release prior to 12.2(8)T.
no synchronization
Origin Kan vara incomplete eller IGP (EGP finns inte längre)
show ip bgp 13.3.7.0 | b Origin
BFD
neighbor 1.1.1.1 fall-over bfd show bfd neighbor
AS
bgp asnotation dot
Timers
tim bg 10 30 20
Next Hop
Ändra så att annonserade uppdateringar har den egna IP-adressen istället för det som står i uppdateringen från den granne man har lärt sig nätverket av.
neighbor 10.0.0.10 next-hop-self
Alternativt
neighbor 10.0.0.10 route-map OUT route-map OUT permit 10 set ip next-hop-self
Alternativt
route-map 10.0.0.10 permit 10 set ip next-hop peer-address
Om något händer med en befintlig nexthop, meddela BGP-processen.
bgp nexthop trigger enable
När ska nästa scan köras
bgp nexthop trigger delay 10
Summarization
aggregate-address, null route automatically installed
aggregate-address 10.0.0.0 255.0.0.0 [summary-only]
summary-only, suppress detailed routes
Alternativt
ip route 10.0.0.0 255.0.0.0 null 0 router bgp 100 network 10.0.0.0 255.0.0.0
Route Reflector
Routes lärda av iBGP skickas ej vidare till iBGP-grannar per default. En route reflector bryter denna regel.
Route Reflector:
address-family ipv4 neighbor [ip-address] route-reflector-client
Confederations
BGP confederations (RFC 5065) delar upp ett AS i flera sub-AS. Routrar inom samma sub-AS är confederation iBGP-grannar medans mellan sub-AS är confederation eBGP-grannar. iBGP fungerar precis likadant, dvs routes lärda från iBGP annonseras ej vidare till iBGP-grannar och det behövs således full mesh grannskap alternativt en route reflector. För att undvika loopar används path attributet AS_PATH. Istället för de vanliga AS_SEQ och AS_SET används AS_CONFED_SEQ och AS_CONFED_SET. Finns en grannes sub-AS redan med i AS_CONFED_SEQ så kommer prefixet inte att annonseras till den. När det gäller confederation eBGP används TTL 1 precis som vanlig eBGP däremot ändras inte NEXT_HOP default mellan sub-AS. Om ett prefix ska annonseras ut från en confederation tas confederation ASN bort från AS_PATH så utsidan ser endast ett AS.
router bgp 65000 bgp confederation identifier 123
För att routern ska veta att det är ett confederation eBGP-grannskap och inte ett vanligt konfa med bgp confederation peers
bgp confederation peers 65001 neighbor 10.0.0.20 remote-as 65001
Communities
Communities är 32-bitars nummer som används för att tagga prefix. Då kan man använda taggen för att matcha på och sedan manipulera path eller filtrera.
ip bgp new-format AA:NN
Några kända
- Internet
- no-export
- no-advertise
- local-as
Best practice
ip bgp community new-format
Skicka standard och extended
neighbor [ip-address] send-community both
Show
show ip bgp community
Filtering
AS
Regular Expressions
- .* = Any
- ^$ = Local AS
- _200$ = Originated in AS 200
- _200_ = Transited AS 200
- ^200_ = Learned from 200
- [0-9]+ = Any AS
AS-path ACL
ip as-path access-list 100 deny _120$ ip as-path access-list 100 permit .* neighbor 1.1.1.1 filter-list 100 in
Network
Distribute-list, standard ACL
access-list 1 permit 10.10.10.0 0.0.0.255 neighbor 1.1.1.1 distribute-list 1 in
Prefix-list, det rekommenderade sättet.
ip prefix-list ACCEPT seq 10 permit 10.10.10.0/24 le 24 neighbor 1.1.1.1 prefix-list ACCEPT in
Verify
show ip bgp prefix-list ACCEPT show ip bgp neighbors 1.1.1.1 received prefix-filter
MED
Multi-exit discriminator. Jämförs bara om flera olika paths kommer från samma AS, ändras med bgp always-compare-med.
ip access-list standard MED permit 1.1.1.0 0.0.0.255 route-map MED_50 permit 10 match ip address MED set metric 50
Local Preference
Preference
bgp default local-preference 100
Högst preference vinner
route-map LOCALPREF permit 10 set local-preference 500 neighbor 1.1.1.1 route-map LOCALPREF in
Conditional Route Injection
AS-path manipulation
Se alla routes från ett visst AS.
show ip bgp regex 65000$
Route Manipulation
Outbound:
- Weight
- Local preference
- Communities
Inbound:
- AS-prepend
- MED
eBGP multipath
Flera paths kan hamna i routingtabelllen men endast best path kan annonseras vidare.
router bgp 100 bgp bestpath as-path multipath-relax maximum-paths 2
Best path
bgp always-compare-med bgp bestpath as-path ignore bgp bestpath med missing-worst bgp bestpath med confed
Convergence
Don't wait for the hold-down timer (180 sec) to expire (this is default).
bgp fast-external-fallover #Global ip bgp fast-external-fallover #Per interface
Dampening
route-map selective_dampening permit 10 set dampening 5 1900 2000 10
5=half-life, 1900=reuse-limit, 2000=suppress-limit, 10 max-suppress-limit
router bgp [ASN] bgp dampening route-map selective_dampening
Route flap
show ip bgp flap-statistics show ip bgp dampening parameters
Backdoor
Sätter AD till 200 på routen så IGPs används i första hand.
Show
show ip bgp summary show bgp ipv4 unicast show ip bgp paths show ip bgp rib-failure
Routes som skickas
sh ip bgp vrf Name neighbors 10.10.10.10 advertised-routes
Reset
clear ip bgp * clear ip bgp <address> soft
Debug
debug ip bgp events
BMP
The BGP Monitoring Protocol (BMP) feature supports the following functionality to monitor Border Gateway Protocol (BGP) neighbors
router bgp 65000 neighbor 30.1.1.1 bmp-activate server 1 bmp server 1 activate
Show
show ip bgp bmp server 1 show ip bgp bmp server summary
Resource Public Key Infrastructure
RPKI is used to secure the Border Gateway Protocol (BGP)
router bgp 100 bgp rpki server tcp 10.0.10.10 port 1333 refresh 600 show ip bgp rpki servers show ip bgp rpki table clear ip bgp rpki server