BGP Version 4 Overview
BGP adalah interdomain routing protocol, di design untuk mencegah loop-free routing. BGP di design untuk lebih reliable transport protocol. Dia menggunakan TCP port 179 sebagai transport protocol karena TCP adalah connection-oriented protocol. TCP port 179 di gunakan sebagi destination port, sedang kan source nya menggunakan random port number.
BGP juga di design sebagai multiprotocol extension, hal ini memungkinkan BGP untuk meng-carry Multiple layer 3 protocol (IPv4, IPv6, VPNv4, CLNS), VPLS, dan MPLS. oleh karena itu BGP lebih reliable dalam hal transport protocol.
BGP termasuk sebagi Exterior Gateway Protocol (EGP) dan satu-satu nya EGP sampai saat ini. BGP menggunakan path-vector routing algorithm untuk bertukar network layer reachability information kepada BGP-Speaking. Network reachability information akan di tukar di antara BGP peers sebagin routing update. Network reachability information itu include Network, path attribute, dan list autonomous system number. BGP path-vector routing algorithm adalah kombinasi dari distance-vector dan AS-Path loop detection.
BGP dibagi dalam 2 model, internal BGP (iBGP) dan external BGP(eBGP). iBGP session akan di gunakan ketika dalam sebuah domain network masih menggunakan autonomous system (AS) number yang sama. untuk network yang sudah berbada domain(interdomain) atau berbeda autonomous system (AS) number akan menggunakan eBGP.
BGP di sebut sebagai routing yang mecegah loop karena ketika ada routing update yang ter advertise ke BGP, dia akan melakukan listening, apakah paket tersebut sudah pernah dia terima atau belum dalam 1 autonomous system nya.
By default BGP akan memilih single path sebagai best path nya. Best path di pilih berdasarkan analisis dari path attribute. Setiap path akan meng-carry well-known mandatory, well-known discretionary, dan optional transitive attribute. Ini akan digunakan sebagai best path analisis. BGP best path selection di set untuk mencari route mana yang lebih bagus.
BGP akan lebih banyak membutuhkan configuration di bandingkan dengan routing protocol lainnya. Oleh karena itu setiap configurasi harus benar-benar di pahami.
BGP Router ID
Router ID adalah unique number yang digunakan BGP untuk mengidentifikasi BGP-Speaking peers. BGP router-id memiliki value 32-Bit dan biasa digunakan dengan IPv4. By default, router-id akan dipilih berdasarkan interface loopback yang ada di router. Jika router tidak ada loopback interface, router-id akan dipilih berdasarkan IPv4 dengan value tertinggi yand ada di physical interface.
BGP Speaker and Peer Relationship
Tidak seperti routing protocol lain nya, BGP tidak akan mengirim Hello Packet secara otomatis untuk establishment nya, Oleh karena itu di butuhkanlah BGP peers. Sesaat telah melakukan BGP peers, ada sebuah proses yang di namakan BGP-Speaker. Pada saat BGP-Speaker ini akan meng-aktif TCP connection untuk peer device lainnya. saat proses inilah BGP mulai mengirim Hello packet, tetapi tidak secara otomatis, hanya yang sudah melakukan BGP peers saja yang akan mengirim packet sampai akhirnya BGP established. Saat TCP connection established, BGP akan bertukar route dan memenuhi routing table pada BGP peers lainya. Setelah proses ini selesai, hanya update penting saja yang akan di kirim setelah nya seperti perubahan topolgy atau ada nya routing policy yang di pasang atau di perbarui. Dalam beberapa periodic, BGP akan tetap mengirim keepalive message untuk menjaga BGP tetap established.
BGP peer session establishment
Ketika BGP sedang melakukan proses establishes saat peering session, BGP akan melalui beberapa state ini
:
State ini terjadi ketika BGP pertama kali enabled atau setelah BGP di reset. Saat state ini BGP akan menunggu peering configuration. Setelah device menerima TCP connection request / receive dari BGP peers lainnya. Ketika BGP di reset, state akan kembali ke idle dan akan menunggu sampai timer Hello Packet memulai untuk melakukan TCP connection kepada BGP peers lainnya.
BGP sudah mendeteksi BGP peers lainnya, dan memulai establish TCP session dengan local BGP-Speaker.
Saat state ini, BGP akan mencoba establish TCP session dengan BGP peers menggunakan Connect Timer. Jika ada kesalahan configurasi, BGP akan ke idle state.
Setelah TCP connection established, BGP akan mengirim Open message kepada remote peers. BGP routing proses akan menerima Open message lainnya pada state ini. Jika state ini gagal, maka akan kembali ke Active state.
Pada state ini BGP sudah menerima Open message dari remote peers, dan sudah mengirim packet balasan. BGP akan menunggu sampai mendapat insial untuk mengirim keepalive message. Ketika keepalive message sudah terkirim/diterima BGP akan menuju Established. Ketika BG menerima notification message, BGP akan kembali ke idle state.
BGP sudah saling mengirim keepalive message, dan sekarang BGP sudah berada pada Established state. BGP akan memulai mengirim update message jika ada dan akan terus mengirim keepalive message sesuai timernya. Holdtime akan restart sendirinya jika sudah menerima keepalive message. Jika keepalive message tidak terkirim sampai batas Holdtime, maka BGP akan kembali ke Active state. Dan jika BGP menerima notification message, BGP akan kembali ke idle state