Monday, December 18, 2017

Contoh Sederhana Konfigurasi BGP Conditional Advertisement

Pada catetan ke 100 ane kali ini akan membahas salah satu teknik BGP yang pernah ane dan tim ane pake dalam mendesain routing antar lokasi DC dan DRC, teknik ini bisa juga digunakan untuk menentukan primary/backup link pada BGP Multihoming.

Dalam beberapa kasus dan kondisi dibutuhkan teknik manipulasi routing seperti ini, meskipun sebenernya ada banyak teknik utk mencapai objective tersebut namun menurut ane ini teknik ini terbukti efisien ketika diterapkan di lapangan meskipun contoh yang ane tulis ini terlalu sederhana, tapi tujuan utamanya agar mudah dipahami, pada kenyataanya implementasi di lapangan sedikit lebih rumit sih.

Langsung saja contoh sederhana topologinya ialah seperti dibawah ini.
















Jadi dari gambar diatas objective dari conditional advertisement adalah melakukan tracking terhadap sebuah prefix. Ceritanya ialah R1 (AS100) melakukan peering multihoming ke R2 (AS200) dan R3 (AS300), dalam kondisi normal prefix yang muncul di R2 adalah 172.16.2.0/24 sedangkan prefix 172.16.1.0/24 tidak akan di advertise ke R2.

Tujuan utama dari teknik ini ialah apabila link dari R1 (AS100) dan R3 (AS300) putus, maka R1 akan melakukan advertise prefix 172.16.1.0/24 ke R2 (AS200).

Untuk melakukan hal diatas konfigurasi yang dilakukan di R2 dan R3 hanyalah konfigurasi BGP peering standard saja seperti dibawah ini

Konfigurasi R2
R2#show running-config
Building configuration...

Current configuration : 1269 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface FastEthernet0/0
 ip address 192.168.12.2 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 200
 no synchronization
 bgp log-neighbor-changes
 neighbor 192.168.12.1 remote-as 100
 neighbor 192.168.12.1 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
ip bgp-community new-format
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end

Konfigurasi R3
R3#show running-config
Building configuration...

Current configuration : 1367 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R3
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 172.16.2.1 255.255.255.0
!
interface FastEthernet0/0
 ip address 192.168.13.3 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 300
 no synchronization
 bgp log-neighbor-changes
 network 172.16.2.0 mask 255.255.255.0
 neighbor 192.168.13.1 remote-as 100
 neighbor 192.168.13.1 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
ip bgp-community new-format
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end


Nah konfigurasi pentingnya dilakukan di R1 yaitu seperti dibawah ini.

Konfigurasi R1
R1#show run
Building configuration...

Current configuration : 1954 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 172.16.1.1 255.255.255.0
!
interface FastEthernet0/0
 ip address 192.168.12.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.13.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 network 172.16.1.0 mask 255.255.255.0
 neighbor 192.168.12.2 remote-as 200
 neighbor 192.168.12.2 soft-reconfiguration inbound
 neighbor 192.168.12.2 advertise-map AS200-out non-exist-map AS300-in
 neighbor 192.168.13.3 remote-as 300
 neighbor 192.168.13.3 soft-reconfiguration inbound
 neighbor 192.168.13.3 route-map Set-comm in
 no auto-summary
!
ip forward-protocol nd
!
ip bgp-community new-format
ip community-list 1 permit 100:300
!
no ip http server
no ip http secure-server
!
!
ip prefix-list AS300-track seq 5 permit 172.16.2.0/24
!
ip prefix-list Local-prefix seq 5 permit 172.16.1.0/24
no cdp log mismatch duplex
!
!
!
route-map AS300-in permit 10
 match ip address prefix-list AS300-track
 match community 1
!
route-map Set-comm permit 10
 set community 100:300
!
route-map AS200-out permit 10
 match ip address prefix-list Local-prefix
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end


VERIFIKASI
Untuk memastikan apakah konfigurasi diatas berjalan atau tidak maka kita harus melakukan verifikasi, ikuti langkah-langkah dibawah ini.

1) Status R1 dalam kondisi normal


2) Status R2 dalam kondisi normal







Perhatikan langkah No.1 dari hasil output diatas dalam kondisi normal prefix 172.16.2.0/24 diterima dari R3 (AS300), status conditional-map juga dalam keadaan Withdraw. Sedangkan pada langkah No.2 kita bisa liat dalam kondisi normal maka R2 (AS200) tidak menerima prefix 172.16.1.0/24.

3) Testing dan Pembuktian
Untuk membuktikan apakah konfigurasi conditional advertisement kita jalan atau tidak coba matikan salah satu interface yang ke R3 (AS300) dari R1 (AS100) atau interface yg mengarah ke R1 (AS100) di R3 (AS300), pada contoh ini ane matikan interface yang mengarah ke R1 (AS100) di R3 (AS300).

Apa yang akan terjadi? Mari kita coba....






Setelah down mari kita cek di R1, tunggu beberapa saat maka seharusnya R1 akan menerima informasi bahwa BGP ke arah R3 (AS300) statusnya down.





4) Cek dan Verifikasi di R1 dan R2 Apakah Conditional Advertisement Running?





Berhasil.....!!! 

Pada kondisi ini session BGP antara R1 dan R3 dalam kondisi down dan prefix 172.16.2.0/24 di removed dari BGP RIB si R1. Nah apabila dilihat dari gambar output diatas status Condition-map saat ini ialah Advertise yang artinya prefix 172.16.1.0/24 saat ini ada di R2.


Semoga contoh sederhana ini bermanfaat yah.

Friday, December 8, 2017

Konfigurasi Per-VRF Assignment BGP Router-ID pada Topologi Router On The Stick

Catetan ini ane buat karna kebetulan lagi nyusun environment untuk POC SD-WAN, tapi karna keterbatasan jumlah router makanya diakalin dengan menggunakan konfigurasi VRF assignment pada topologi router on the stick. 

Pain point kenapa teknik ini digunakan karna dalam kondisi normal satu router hanya bisa menggunakan satu AS Number ketika menggunakan BGP, sehingga ada teknik lain agar satu router seolah-olah bisa membawa informasi routing dari 2 AS Number dan 2 lokasi berbeda.

Topologi pada GNS3 yang digunakan kira-kira seperti dibawah ini.

NOTES
  • Switch yang ditengah ialah router image 3725 yang difungsikan sebagai switch dengan menggunakan modul switch NM-16ESW.
  • Tips paling penting selalu cek VLAN Database di Router yang dijadikan SWITCH tersebut karna apabila VLAN nya menghilang maka interkoneksi akan putus, BGP tidak UP, dsb.

Skenarionya kira-kira ialah HQ akan terhubung dengan BR1 & BR2 melewati MPLS dengan logical topologinya kira-kira seperti dibawah ini.

Apabila dilihat dari fisikal topologi yang dibuat di GNS3 pada gambar pertama maka Router ISP-PE akan berfungsi sebagai Router-On-Stick dan Router yang ditengah akan berfungsi sebagai switch. 

Langsung saja untuk konfigurasinya ialah seperti dibawah ini.

SWITCH ROUTER
CENTRAL-SWITCH#terminal length 0
CENTRAL-SWITCH#sh run
Building configuration...

Current configuration : 1586 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname CENTRAL-SWITCH
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface FastEthernet0/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet1/0
 switchport mode trunk
!
interface FastEthernet1/1
 switchport access vlan 11
!
interface FastEthernet1/2
 switchport access vlan 12
!
interface FastEthernet1/3
 switchport access vlan 21
!
interface FastEthernet1/4
 switchport access vlan 22
!
interface FastEthernet1/5
 switchport access vlan 31
!
interface FastEthernet1/6
 switchport access vlan 32
!
interface FastEthernet1/7
!
interface FastEthernet1/8
!
interface FastEthernet1/9
!
interface FastEthernet1/10
!
interface FastEthernet1/11
!
interface FastEthernet1/12
!
interface FastEthernet1/13
!
interface FastEthernet1/14
!
interface FastEthernet1/15
!
interface Vlan1
 no ip address
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end


ISP-PE ROUTER
ISP-PE#show run
Building configuration...

Current configuration : 3078 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname ISP-PE
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
ip vrf MPLS1
 rd 100:1
!
ip vrf MPLS2
 rd 200:2
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0/0
 no ip address
 duplex auto
 speed auto
!
interface FastEthernet0/0.11
 description HQ-TO-MPLS1
 encapsulation dot1Q 11
 ip vrf forwarding MPLS1
 ip address 172.16.1.1 255.255.255.252
!
interface FastEthernet0/0.12
 description HQ-TO-MPLS2
 encapsulation dot1Q 12
 ip vrf forwarding MPLS2
 ip address 172.16.2.1 255.255.255.252
!
interface FastEthernet0/0.21
 description MPLS1-TO-BISP-PE
 encapsulation dot1Q 21
 ip address 172.16.21.1 255.255.255.252
!
interface FastEthernet0/0.22
 description MPLS2-TO-BISP-PE
 encapsulation dot1Q 22
 ip vrf forwarding MPLS2
 ip address 172.16.22.1 255.255.255.252
!
interface FastEthernet0/0.31
 description MPLS1-TO-BR2
 encapsulation dot1Q 31
 ip vrf forwarding MPLS1
 ip address 172.16.31.1 255.255.255.252
!
interface FastEthernet0/0.32
 description MPLS2-TO-BR2
 encapsulation dot1Q 32
 ip vrf forwarding MPLS2
 ip address 172.16.32.1 255.255.255.252
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 1
 bgp router-id 1.1.1.1
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 !
 address-family ipv4 vrf MPLS2
  redistribute connected
  neighbor 172.16.2.2 remote-as 65001
  neighbor 172.16.2.2 local-as 200 no-prepend replace-as
  neighbor 172.16.2.2 activate
  neighbor 172.16.22.2 remote-as 65002
  neighbor 172.16.22.2 local-as 200 no-prepend replace-as
  neighbor 172.16.22.2 activate
  neighbor 172.16.32.2 remote-as 65003
  neighbor 172.16.32.2 local-as 200 no-prepend replace-as
  neighbor 172.16.32.2 activate
  no synchronization
 exit-address-family
 !
 address-family ipv4 vrf MPLS1
  redistribute connected
  neighbor 172.16.1.2 remote-as 65001
  neighbor 172.16.1.2 local-as 100 no-prepend replace-as
  neighbor 172.16.1.2 activate
  neighbor 172.16.21.2 remote-as 65002
  neighbor 172.16.21.2 local-as 100 no-prepend replace-as
  neighbor 172.16.21.2 activate
  neighbor 172.16.31.2 remote-as 65003
  neighbor 172.16.31.2 local-as 100 no-prepend replace-as
  neighbor 172.16.31.2 activate
  no synchronization
 exit-address-family
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end


HQ-ROUTER
HQ#sh run
Building configuration...

Current configuration : 1544 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname HQ
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 192.168.1.1 255.255.255.0
!
interface Loopback1
 ip address 192.168.2.1 255.255.255.0
!
interface FastEthernet0/0
 description TO-MPLS1
 ip address 172.16.1.2 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 description TO-MPLS2
 ip address 172.16.2.2 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 65001
 no synchronization
 bgp log-neighbor-changes
 network 192.168.1.0
 network 192.168.2.0
 neighbor 172.16.1.1 remote-as 100
 neighbor 172.16.1.1 soft-reconfiguration inbound
 neighbor 172.16.2.1 remote-as 200
 neighbor 172.16.2.1 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end


BR1-ROUTER
BR1#sh run
Building configuration...

Current configuration : 1474 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname BR1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 192.168.210.1 255.255.255.0
!
interface FastEthernet0/0
 description TO-MPLS1
 ip address 172.16.21.2 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 description TO-MPLS2
 ip address 172.16.22.2 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 65002
 no synchronization
 bgp log-neighbor-changes
 network 192.168.210.0
 neighbor 172.16.21.1 remote-as 100
 neighbor 172.16.21.1 soft-reconfiguration inbound
 neighbor 172.16.22.1 remote-as 200
 neighbor 172.16.22.1 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end


BR2-ROUTER
BR2#show run
Building configuration...

Current configuration : 1474 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname BR2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 192.168.220.1 255.255.255.0
!
interface FastEthernet0/0
 description TO-MPLS1
 ip address 172.16.31.2 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 description TO-MPLS2
 ip address 172.16.32.2 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 65003
 no synchronization
 bgp log-neighbor-changes
 network 192.168.220.0
 neighbor 172.16.31.1 remote-as 100
 neighbor 172.16.31.1 soft-reconfiguration inbound
 neighbor 172.16.32.1 remote-as 200
 neighbor 172.16.32.1 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end



VERIFIKASI















































Dari hasil verifikasi dengan menggunakan command show ip bgp, show ip bgp summary, dan show ip route diatas, kita bisa lihat bahwa seluruh bagian corporate HQ, BR1 dan BR2 sudah mendapatkan routing sesuai topologi yang direncakan.

Sekarang kita liat di Router ISP-PE.













Wew gak ada apa-apa disana, kenapa?

Karna untuk melihat routing vrf verifikasi yang digunakan ialah command dibawah ini.
  • show ip vrf
  • show ip vrf detail
  • show ip bgp vpn4 unicast vrf <nama-vrf>
  • show ip bgp vpn4 all






















Dari hasil command show vrf dan show vrf detail diatas kita bisa mengetahui informasi bahwa di dalam Router ISP-PE ada vrf apa saja dan dipasang di interface mana.

Lalu untuk verifikasi routing gunakan command seperti gambar dibawah ini.












Lalu bisa juga memverifikasi routing per-vrf spesifik ke nama vrf nya.















Selesai semoga bermanfaat..

Sunday, October 22, 2017

Manipulasi BGP Routing Menggunakan Community List di Cisco Router

Untuk melakukan filtering di BGP ada banyak cara bisa menggunakan Prefix-List, AS-Path List dengan kombinasi regular expression, dan Community List. Community list dalam BGP biasanya digunakan untuk mengidentifikasi dan memfilter route bedasarkan community tag mereka, konsepnya sama dengan Route Tag. Hampir sama pula dengan access list, community list memiliki format dan range, ada standard format (1 - 99) dan ada extended format (100 - 199), ada juga bedasarkan name dan ini unlimited. Format konfigurasi paling umum ialah seperti dibawah ini.
  • Standard numbered list:
         ip community-list list-number {permit | deny} community-number
  • Expanded numbered list:
         ip community-list list-number {permit | deny} regular-expression
  • Standard named list:
        
    ip community-list standard list-name {permit | denycommunity-number
  • Expanded named list:
       
    ip community-list expanded list-name {permit | denyregular-expression
Di dalam Cisco Router by default community number value itu 32-bit yaitu 1 - 4294967295, sedangkan format yang paling sering digunakan ialah new format number dengan format aa:nn (the new format), format baru ini adalah format yang paling sering digunakan, namun harus mengenable dulu di global config menggunakan command ip bgp-community new-format

Sekarang mari ke contoh penggunaan beserta contoh konfigurasinya, dalam lab ini topologi yang digunakan ialah topologi sederhana seperti dibawah ini agar mudah dipahami.


Pada skenario ini ceritanya pada kondisi default apabila trafik dari R1 ingin ke segmen yang ada di R2 maka akan melewati 10.10.10.2.














Nah tujuan utama dari lab kali ini ialah memanipulasi trafik dari R1 apabila ingin menuju ke segmen 2.2.2.2/32 di R2 maka best path nya harus melalui 10.10.10.6, sedangkan yang lainnya menuju ke 22.22.22.22/32 tetap melewati 10.10.10.2. Manipulasi yang dilakukan ialah menggunakan community-list, dibawah ini ialah langkah-langkahnya.

1) Langkah Pertama Mentagging Segmen 2.2.2.2/32 dengan Community List 2:200 di R2
R2(config)# ip bgp-community new-format
R2(config)# access-list 1 permit 2.2.2.2
R2(config)# route-map R1peer permit 10
R2(config-route-map)# match ip address 1
R2(config-route-map)# set community 2:200
R2(config-route-map)# exit 
R2(config)# route-map R1peer permit 20
R2(config-route-map)# exit 
R2(config)# router bgp 2
R2(config-router)# neighbor 10.10.10.1 send-community
R2(config-router)# neighbor 10.10.10.5 send-community
R2(config-router)# neighbor 10.10.10.5 route-map R1peer out

Notes
  • Command send-community dibutuhkan agar R1 dapat menerima informasi community yang telah dibuat di R2.
  • Command neighbor 10.10.10.5 route-map R1peer out dibuat agar R2 mengirim informasi community tag 2:200 melalui link point-to-point 10.10.10.4/30.

2) Verifikasi Apakah Segmen 2.2.2.2/32 di R1 Sudah ada Tag Community nya?


















Perhatikan dari informasi diatas bahwa kita menerima informasi bahwa network segmen 2.2.2.2/32 dari R2 dari 10.10.10.6 merupakan community 2:200. Secara logik maka sekarang apabila digambarkan jadi seperti dibawah ini.









3) Membuat Policy di R1 Agar Menuju 2.2.2.2/32 Melalui 10.10.10.6
R1(config)# ip bgp-community new-format
R1(config)# ip community-list 1 permit 2:200
R1(config)# route-map R2peer permit 10
R1(config-route-map)# match community 1

R1(config-route-map)# set local-preference 120
R1(config-route-map)# exit
R1(config)# route-map R2peer permit 20
R1(config-route-map)# exit
R1(config)# router bgp 1
R1(config-router)# neighbor 10.10.10.6 route-map R2peer in

Notes
  • Dalam Route-Map R2peer dibutuhkan command set local-preference 120, agar BGP atribut dapat berubah dari defaultnya 100 menjadi 120, sehingga ketika dipasang di BGP nya maka jalur itu yang akan dipilih karna value local preferencenya lebih tinggi.
  • Route-Map R2peer dipasang di neighbor yang 10.10.10.6.

4) Verifikasi Apakah Menuju Segmen 2.2.2.2/32 di R1 Sudah Melalui 10.10.10.6?
































Apabila kita lihat hasil verifikasi diatas menggunakan command show ip route dan show ip bgp x.x.x.x maka sudah terlihat bahwa apabila R1 ingin menuju ke segmen 2.2.2.2/32 di R2 maka akan melalui 10.10.10.6, sedangkan apabila ingin menuju 22.22.22.22/32 di R2 tetap melalui 10.10.10.2.

Berhasil kan? Perlu di notes sih penggunaan community di dunia real ini sangat sering terutama ketika network sudah growing begitu besar, seperti manipulasi routing ke cabang, atau manipulasi routing antara data center dan masih banyak lagi contoh use cases lainnya.

Untuk full konfigurasi dari simulasi diatas seperti dibawah ini yah.

R1
R1#show run
Building configuration...

Current configuration : 1531 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0/0
 ip address 10.10.10.1 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 10.10.10.5 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 1
 no synchronization
 bgp log-neighbor-changes
 network 1.1.1.1 mask 255.255.255.255
 neighbor 10.10.10.2 remote-as 2
 neighbor 10.10.10.6 remote-as 2
 neighbor 10.10.10.6 route-map R2peer in
 no auto-summary
!
ip forward-protocol nd
!
ip bgp-community new-format
ip community-list 1 permit 2:200
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
route-map R2peer permit 10
 match community 1
 set local-preference 120
!
route-map R2peer permit 20
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end

R2
R2#show run
Building configuration...

Current configuration : 1700 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
!
interface Loopback1
 ip address 22.22.22.22 255.255.255.255
!
interface FastEthernet0/0
 ip address 10.10.10.2 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 10.10.10.6 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 2
 no synchronization
 bgp log-neighbor-changes
 network 2.2.2.2 mask 255.255.255.255
 network 22.22.22.22 mask 255.255.255.255
 neighbor 10.10.10.1 remote-as 1
 neighbor 10.10.10.1 send-community
 neighbor 10.10.10.5 remote-as 1
 neighbor 10.10.10.5 send-community
 neighbor 10.10.10.5 route-map R1peer out
 no auto-summary
!
ip forward-protocol nd
!
ip bgp-community new-format
!
no ip http server
no ip http secure-server
!
access-list 1 permit 2.2.2.2
no cdp log mismatch duplex
!
!
!
route-map R1peer permit 10
 match ip address 1
 set community 2:200
!
route-map R1peer permit 20
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!

end


Semoga bermanfaat...

Saturday, October 21, 2017

Manipulasi BGP Routing Menggunakan AS-PATH Prepend di Cisco Router

BGP merupakan routing protocol unik dan cara kerjanya sangat berbeda dengan protokol IGP lainnya, karna BGP akan melihat berbagai macam atributnya terlebih dahulu sebelum menentukan best path. Di catetan kali ini kita gak akan membahas cara kerja BGP ataupun atributenya, tapi akan langsung membahas manipulasi routingnya menggunakan salah satu atribut BGP yaitu AS-PATH.

Topologi yang digunakan seperti dibawah ini.


  • Point to Point Branch to Provider 1 : 10.10.10.8/30 
  • Point to Point Branch to Provider 2 : 10.10.10.12/30 

Dari skenario diatas apabila dari perspektif Branch apabila network 192.168.4.0/24 ingin menuju ke network destination 192.168.1.0/24, 192.168.10.0/24, ataupun 192.168.100.0/24 di HQ maka secara bestpath yang dipilih akan melalui Provider-1 via 10.10.10.9














Kenapa melalui 10.10.10.9? Singkatnya behaviour E-BGP ketika memilih best-path ialah akan melihat AS-Path terpendek, namun apabila jumlah AS-Path nya sama maka ia akan melihat router-id terendah. Di topologi diatas Provider-1 memiliki IP Address terendah yg kemudian menjadi router-id router Provider-1 sehingga bestpath yang dipilih ialah melalui Provider-1.

Bagaimana apabila kita ingin memanipulasi segmen diatas agar best-path nya melalui 10.10.10.13? Ya kita bisa memanipulasi total AS-Path atau melakukan prepend AS-Path dari router HQ. Kenapa dari router HQ? Cara ini biasanya dilakukan untuk organisasi yang memiliki branch yang banyak sehingga melakukan manipulasi routing dari HQ adalah cara paling mudah.

Gunakan command dibawah ini dibawah ini di Router-HQ dan Router-Branch (agar trafik simetrik) dengan contoh sintaks sbb.

1. Buat Route Map dengan Sintaks Dibawah ini.
route-map <route-map-name> permit 10
 set as-path prepend <local-as-path> <local-as-path> <local-as-path> <local-as-path>
route-map <route-map-name>  permit 20

2. Masukan Route Map kedalam BGP Neighbor yang ingin di Prepend AS-PATH nya.
router bgp <our-as-path>
neighbor x.x.x.x route-map <route-map-name> out

Apabila dicermati lagi langkah yang kita lakukan diatas ialah memberi tahu Provider-1 dari HQ bahwa AS-PATH melalui link Provider-1 itu lebih jauh daripada melalui Provider-2. Logikanya ialah dengan melakukan prepend AS-Path

Sekarang coba verifikasi dengan command sh ip route dan sh ip bgp.






































Dari hasil verifikasi diatas bisa dilihat apabila dari branch ingin menuju ke prefix 192.168.1.0/24. 192.168.10.0/24 dan 192.168.100.0/24 di HQ maka best pathnya melalui provider-2 (10.10.10.13 kotak merah), dan jika dilihat dikotak hijau apabila dari cabang ingin menuju prefix 192.168.1.0/24. 192.168.10.0/24 dan 192.168.100.0/24 di HQ apabila melalui provider-1 akan lebih jauh karna AS-PATHnya lebih banyak (65512 65511 65511 65511 65511 65511).

Untuk konfigurasi lebih lengkapnya seperti dibawah ini yah.

HQ-Router
HQ#show run
Building configuration...

Current configuration : 1936 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname HQ
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 192.168.1.1 255.255.255.0
!
interface Loopback1
 ip address 192.168.10.1 255.255.255.0
!
interface Loopback2
 ip address 192.168.100.1 255.255.255.0
!
interface FastEthernet0/0
 description to-R2
 ip address 10.10.10.1 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 description to-R3
 ip address 10.10.10.5 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 description to-R5
 ip address 10.10.10.17 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 65511
 no synchronization
 bgp log-neighbor-changes
 network 192.168.1.0
 network 192.168.10.0
 network 192.168.100.0
 neighbor 10.10.10.2 remote-as 65512
 neighbor 10.10.10.2 soft-reconfiguration inbound
 neighbor 10.10.10.2 route-map ADVERTISE-TO-BRANCH out
 neighbor 10.10.10.6 remote-as 65513
 neighbor 10.10.10.6 soft-reconfiguration inbound
 neighbor 10.10.10.18 remote-as 65515
 neighbor 10.10.10.18 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
route-map ADVERTISE-TO-BRANCH permit 10
 set as-path prepend 65511 65511 65511 65511
!
route-map ADVERTISE-TO-BRANCH permit 20
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end


Provider-1
Provider-1#show run
Building configuration...

Current configuration : 1471 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Provider-1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 192.168.2.1 255.255.255.0
!
interface FastEthernet0/0
 description to-R1
 ip address 10.10.10.2 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 description to-R4
 ip address 10.10.10.9 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 65512
 no synchronization
 bgp log-neighbor-changes
 network 192.168.2.0
 neighbor 10.10.10.1 remote-as 65511
 neighbor 10.10.10.1 soft-reconfiguration inbound
 neighbor 10.10.10.10 remote-as 65514
 neighbor 10.10.10.10 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end

Provider-2
Provider-2#show run
Building configuration...

Current configuration : 1472 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Provider-2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 192.168.3.1 255.255.255.0
!
interface FastEthernet0/0
 description to-R1
 ip address 10.10.10.6 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 description to-R4
 ip address 10.10.10.13 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 65513
 no synchronization
 bgp log-neighbor-changes
 network 192.168.3.0
 neighbor 10.10.10.5 remote-as 65511
 neighbor 10.10.10.5 soft-reconfiguration inbound
 neighbor 10.10.10.14 remote-as 65514
 neighbor 10.10.10.14 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end



Branch Router
Branch#show run
Building configuration...

Current configuration : 1469 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Branch
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
 log config
  hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface Loopback0
 ip address 192.168.4.1 255.255.255.0
!
interface FastEthernet0/0
 description to-R2
 ip address 10.10.10.10 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 description to-R3
 ip address 10.10.10.14 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router bgp 65514
 no synchronization
 bgp log-neighbor-changes
 network 192.168.4.0
 neighbor 10.10.10.9 remote-as 65512
 neighbor 10.10.10.9 soft-reconfiguration inbound
 neighbor 10.10.10.9 route-map ADVERTISE-TO-HQ out
 neighbor 10.10.10.13 remote-as 65513
 neighbor 10.10.10.13 soft-reconfiguration inbound
 no auto-summary
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
no cdp log mismatch duplex
!
!
!
route-map ADVERTISE-TO-HQ permit 10
 set as-path prepend 65514 65514 65514 65514
!
route-map ADVERTISE-TO-HQ permit 20
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
!
end


Bagaimana apabila hanya segmen tertentu saja yang ingin dibelokan? Misal dari topologi diatas segment 192.168.1.0/24 lewat provider 1, sedangkat segmen 192.168.10.0/24 & 192.168.100.0/24 lewat provider 2? Ya jawabannya kita masih tetap bisa memanipulasi traffiknya menggunakan AS-Path prepend hanya saja di filter menggunakan Prefix-List

Contohnya dengan tambahan command seperti dibawah ini.

1. Buat route-map baru dengan tambahan prefix-list segmen di router HQ
ip prefix-list VIA-PROVIDER1 seq 1 permit 192.168.1.0/24
route-map VIA-PE-1 permit 30
 match ip address prefix-list VIA-PROVIDER1
 set as-path prepend 65511 65511 65511 65511
route-map VIA-PE-1 permit 40

2. Lalu hapus route-map yang ke arah 10.10.10.2, ganti dengan ke arah 10.10.10.6
no neighbor 10.10.10.2 route-map ADVERTISE-TO-BRANCH out
neighbor 10.10.10.6 route-map VIA-PROVIDER1 out

3. Jangan lupa hapus juga route-map di cabang
no neighbor 10.10.10.9 route-map ADVERTISE-TO-HQ out

4. Jangan lupa verifikasi
Gunakan command show ip bgp summary, show ip bgp x.x.x.x, dsb

NOTES

  • Langkah diatas akan sangat efektif apabila dilakukan di network dengan desain E-BGP karna sifat-sifatnya tersebut yang melihat AS-Path sebagai best path
  • Apabila di I-BGP biasanya manipulasi akan dilakukan dengan memanipulasi metrik IGP nya atau bisa juga dengan menggunakan atribut BGP lainnya seperti MED, dsb.
  • Sebenarnya langkah prepend AS-Path bisa dilakukan di HQ saja tapi kenapa ditambahkan di Branch ialah agar traffiknya simetrik. Pergi lewat Provider-2 pulang pun lewat Provider-2.
  • Dalam case terakhir, apabila kita ingin membelokan traffik dari prefix tertentu maka biasanya akan terjadi simetrik routing, solusinya biasa bisa menggunakan Source NAT pada interface yang keluar melalui link tersebut sehingga trafik bisa menjadi simetrik.

Sekian catatan kali ini, apabila ada yang salah menurut pembaca yang lebih paham mungkin bisa dikoreksi. Semoga bermanfaat...