Home

Route Policy Language (RPL)

Leave a comment

Prerequisite:

  • BGP Knowledge
  • IOS XR (or XRv, find that IOS yourself)

=========================================

RPL di dalam IOS-XR adalah command pengganti Route Map, tolong cam kan ini baik2 nak…lol

Contoh pentingnya penggunaan RPL dalam IOS-XR adalah sebagai berikut

Scenario:

  • Setiap router jalanin BGP
  • R1 pake AS 11, R3 pake AS 3, dan XR pake AS 1 (1 oruter untuk 1 AS)
  • IOS-XR punya loopback 192.168.1.1/32
  • Semua loopback dari masing2 AS di advertise (keyword network x.x.x.x mask x.x.x.x)

BGP Config di IOS-XR

Aga beda konfig BGP di IOS-XR, yang krusial ada 4:

  • Pertama lo harus aktifin BGP-nya ada di IPv4 ato IPv6 (address-family di bgp global config)
  • Mau unicast atau multicast
  • Di setiap neighbor juga harus dikasi tau mau pake IPv4 BGP atao mau pake IPv6 BGP (address-family di bgp neighbor sub-config)
  • Dan BGP Router-id…ga ada ini kaga jalan BGP Peering-nya

nah, kita liat BGP table-nya di R1:

Kalau dalam normal condition, harusnya R1 punya prefix dari IOS-XRv (harusnya dapet 192.168.1.1)…ini adanya rute dari R3 aja

Note: Prefix 3.3.3.1 dan 3.3.3.2 itu punya AS 3 (router R3)

Why is this happen? Because in IOS-XR has default routing policy that set all prefix dropped, lets take a look at picture below

Now, lets take the basic example of RPL (seeed…kesurupan bahasa inggris gw)

(nanti dibawah gw jelasin detail-nya) trus kita taro di BGP neighbor sub-config

Jgn lupa di commit, nah…kita liat sekarang di R1:

There is 192.168.1.1 route from AS 1 (IOS-XR) showed up!!

================================

RPL, how to make the magic happen *lol*

Seperti yang gw bilang diatas…IOS XR ga ada route-map, penggantinya adalah RPL ini

Kenapa harus route-map diganti? Aga susah dibaca dan ga flexible

Contoh: gw pengen klo AS 1 mau ke 3.3.3.1 lewat AS 11, tapi klo mau ke 3.3.3.2 lewat AS 12, dan klo bukan ke salah satunya ya jangan dilewatin

Klo pake route-map:

Dimana kita buat ACL dengan nama “KE3.3.3.1” dan “KE3.3.3.2” (tentunya permit ke masing2 alamat itu/destination-nya)

Trus setting next-hop nya berdasarkan ACL di match ip address nya

Kelemahannya dari route-map ini adalah override routing table (termasuk BGP table), so susah ngebaca arah tujuan hidup loe *ehm* maksud nya arah tujuan networknya…karena kata Routing Table/BGP Table harusnya lewat A, gara2 PBR (route-map ini termasuk PBR – Policy Based Routing) malah lewat B…

loh kok bisa beda…loh kok malah lewat sini…harusnya lewat situ…di routing table nya ga bilang gitu… (pas dibaca show run-nya)…ohhhh ada Route-Map toooh

Nah, klo Pake RPL:

Lebih mudah dibaca kan?!? Jika source ip dari 192.168.1.1 dan tujuannya ke 3.3.3.3 maka pake next-hop 11.11.11.1 dst, hampir2 ga perlu ACL

Wait…if-then-else, are you telling me we can type of some sort programming here?!? Yes we can lol

Makanya disebut route policy LANGUAGE, easier to understand

Kita bisa pake if-then-else, trus bisa pake and, or, dan not, bisa pake le ge (less than-greater than) dan teman2nya, bisa pass dan drop the packet, dan bisa pake nested if (if dalam if)…lebih flexible dari route-map

Contoh le ge:

Contoh Nested if-Nested Policies:

Route-map bisa begini ga? Ga bisa…

=================================

Nyok kita coba…

Scenario-nya dari gambar diatas:

Dari IOS-XR, gw pengen klo mau ke 3.3.3.1 di R3…weight ke R1 digedein jadi lewat AS 11, tapi klo mau ke 3.3.3.2 di R3…weight ke R2 yang digedein jadi lewat AS 12

(untung gw pernah ikut programming class….ga sia2 hahaha)

Pasang di BGP Neighbor sub-config

Nyok kita cek…

HEY LOOOK…klo mau ke 3.3.3.1 lewat AS 11…nah klo mau ke 3.3.3.2 lewat AS 12, route-map bisa gini ga?? Sulit memang untuk bersaing di dunia persilatan inih… *ngawur*

Eh, klo contoh pertama ada route-policy PASS in dan route-policy PASS out, kok disini ga ada in dan out-nya…trus ga ada statement “pass“nya?

Oh iya…dalam RPL terdapat implicit pass (best you remember that), kebalikan dari implicit deny-nya ACL

Syaratnya adalah: harus ada statement alias kata2 “set” didalamnya…klo ga ya sama kek ACL…implicit deny

Klo ada statement set didalam suatu RPL, sisanya di pass (makanya gw ga setting in dan out trus ga ada statement pass-nya di RPL-to-AS11 dan RPL-to-AS12)

========================

Editing RPL

RPL di IOS-XR punya validity checking, like this:

Begitu kita commit, di cek…bisa engga-nya RPL itu di implementasikan

Klo kita mau edit yang udah jadi gimana? here it is…

Woops….bukan edit ini mah, NIBAN ceritanya ini hahaha

Untuk itu kita harus keluar dari global configuration mode dulu, di privilege mode…ketik edit

Kita ketik edit route-policy [nama RPL]

Nah, begitu kita enter, nanti kek gini tampilannya:

Maap gw ga bisa nyontohin cara delete, Cut Text, dll karena…

CURSOR-NYA GA ADAAAAAA (mungkin karena IOS-XRv), pusing gw ngeraba2 uda sampe mana cursor gw…

Nah, diatas itu adalah GNU Nano RPL Editor, ada 3 cara untuk edit RPL ini:

  • GNU Nano (yang kita liat diatas)
  • Emacs
  • Vim

======================

Reference

BGP IOS-XR Configuration @http://www.fryguy.net/2012/09/24/ios-xr-ibgp-and-ebgp/

Cisco Instructor Guide ebook for CCNP SP Course: (642-883) – Deploying Cisco Service Provider Network Routing (SPROUTE)

Sekilas tentang IOS XR configuration

Leave a comment

Mumpung gw dikasih “sit-in” kelas CCNP-SP Edge course…

I’m taking a brief look on this Cisco Router with IOS XR (kebetulan yang dikasih adalah XR 12000)

Yang ini bukan yah…haha..ga pernah megang…Cuma telnet doang…

Kenapa bisa muncul IOS XR tuh kira2 kisahnya seperti ini:

semua proses router dalam 1 CPU proses…alias 1 kernel (orang linux pasti tau ini), nah…klo ini kernel kenapa2…mampus lah

ya sudah…bikin separate kernel…jadi routing process, memory, process lain2 ga dalam 1 kernel…ketika routing protocol fail…ga harus restart router

klo misalnya kurang (router PE di ISP pasti kerja berat maintain RIB, CEF, dan lain2)…tinggal tambahin route-processor/cpu untuk bikin CEF/RIB/routing process biar CEF/RIB nya bisa nampung lebih banyak

Cuma itu?!? Engga…nanti dibawah surprise-nya (sebenernya klo lo pernah konfig juniper ga surprise lagi sih T_T )

Wokeh…Lets take alook at the first one…a brief look at priviledge mode

Disini pake IOS XR versi 3.9 (klo ga sala yang baru uda 4.3 de)

RP/0/7/CPU0:R4#…apaan nih..beda banget ama yang dulu…Router# haha

  • RP = Route Processor
  • 0 = di rack nomor 0
  • 7 = di slot nomor 7
  • CPU0 = nomor CPU (biasanya CPU0 ato CPU1)
  • R4 = nama hostname

Jadi…gw konfig ini router di CPU0 router processor-nya IOS XR di rack nomor 0 slot ke-7 dengan nama/hostname R4

Overall mirip2 dengan IOS biasa…

Tapi suprisenya adalah ketika lo mau keluar (biasanya CTRL + Z)…lo akan ditanyain, mau di-apply ga konfigurasi2 tadi

Ini yang bedain IOS XR dengan IOS biasa…ada “commit“…dan ada “rollback

Disini kita bisa rollback sampai ‘N’ kali rollback (N = jumlah commit)

Rollback configuration last 10 force (berarti rollback sampe 10x commit kebelakang)

MPLS command-nya juga beda…klo IOS biasa harus mpls label protocol ldp, klo di XR Cuma “mpls ldp

Trus BGP-nya:

Command BGP-nya jadi lebih bertingkat2…trus abis neighbor [ip] dan enter..kita bisa ketik command yang berkaitan dengan neighbor itu (jadi ga ngulang2 command lagi…meminimalisir peer-group)

Kita liat routing-nya…

Hmm…uda bisa vrrp/hsrp (wiiiih), ospfv3 (IPv6), pim (multicast) langsung…

hsrp/vrrp nya ga perlu masuk ke interface lagi…tapi GLBP-nya kemana yaks…

Trus kita bisa pake “show configuration failed” atau “show configuration commit” untuk liat konfig2 mana aja yang gagal di eksekusi

Ato mo liat yang terakhir kali di commit itu apa sih…”show config commit change last 1

Contoh klo lo lupa commit


tuh kan…ampe kakek nenek juga klo blum di commit pasti “no such configuration item”

dan liat deh…kita bisa ketik ip add 10.10.10.10/32…”/32″ !! ga cape2 255.255.255.255

Lo bisa bikin label buat memudahkan lo track kebelakang changes yang lo bikin apa aja

Bahkan lo bisa bikin…klo dalam sekian detik ga di-commit..bakal di rollback

Enaknya lagi…kadang lo lupa “gw lagi ada di sub-konfig mana ya

Lo bisa ketik pwd untuk liat lo lagi di sub-command/konfig mana

Dan satu lagi…fitur pipe command-nya kurang lengkap..(itu tu..yang tanda “|”), mungkin karena masi IOS 3.9 kali ya

Tapi lo bisa bikin asterisk – “*” untuk seclude…contoh dibawah, gw mo liat hanya interface yang berawalan “lo

Yaks…segitu aja “liat2” dan “tamasya” kita ke IOS XR…belum nemu yang baru lagi sih gw hahaha