Nədən danışacağıq?
Qısa nəzəriyyə
Heç netadmin.az saytına daxil olan zaman sorğunun necə gəlib sayta çatdığını bilirsinizmi? Yox, DNS sorğular və digər xırdalıqlardan danışmayacağam. Router sizin sorğunuzu qəbul etdikdən sonra ünvanın sizin şəbəkənin xaricində olduğunu müəyyən edir. Daha sonra sorğu varsayılan marşrut (default route) ilə provayderə gedir. Provayderlər də öz növbələrində marşrutları necəsə öyrənməlidir. Məhz bu yerdə BGP ortaya çıxır. BGP Border Gateway Protocol kimi açıqlanır.
Ümumiyyətlə dinamik marşrutlama protokolları iki hissəyə bölünür. IGP və EGP. IGP Interior Gateway Protocol – daha çox lokal şəbəkələrdə yəni bir muxtar sisterm çərçivəsində istifadə olunur. Bura EIGRP, OSPF, IS-IS, RIP aiddir. EGP – Exterior Gateway Protocol qlobal İnternet şəbəkəsində yəni muxtar sistemlər arasında marşrutların mübadiləsi üçün istifadə olunur. Yeganə EGP protokolu hələ ki, BGP-dir.
BGP protokolu 1989-cu ildə yaradılıb və Muxtar Sistemlər (Autonomous System – AS) arasında marşrutların mübadiləsi üçün istifadə olunur. Protokol IBM-də çalışan Yakov Rekhter və Cisco-nun mühəndisi Kirk Lougheed tərəfindən icad olunub. BGP-nin ilkin dizaynı iki salfet üzərində çəkilib. Buna görə də ona həm də İki Salfet protokolu (Two Napkins Protocol) deyilir.
AS nömrələr
Muxtar Sistem dedikdə bir domenə və ya quruma məxsus olan IP prefikslər siyahısı başa düşülür. Hər bir muxtar sistemin unikal nömrəsi var – ASN və ya AS Number. Bu nömrələr IANA (Internet Assigned Numbers Authority) kimi tanınan qurum tərəfindən verilir.
2007-ci ilə qədər AS nömrələri 16-bitlik (2-byte ASN) idi və bu da cəmi 65536 AS nömrə əldə etməyə imkan verirdi (2^16 = 65536). 2007-ci ildə bu sayın kifayət olmadığı üçün 32-bitlik (4-byte ASN) AS nömrələr təqdim olunur ki, bu da 4 milyarddan çox AS nömrə edir – 0-dan 4294967295-dək.
AS nömrələr iki hissəyə bölünür – publik və privat. Publik AS nömrələr bütün Internetdə görünür, privat AS nömrələri isə lokal şəbəkədə, test mühitlərində və ya tədris məqsədləri üçün istifadə olunur. Publik AS nömrələrin bir qismi müxtəlif məqsdələr üçün rezerv edilib. 0 ASN nömrəsi marşrutlanmayan prefiksləri işarələmək üçün istifadə olunur. 112 AS nömrəsi səhv DNS sorğuların cavablandırılması üçün olan sistemlərə ayrılıb (RFC 7534). 23456 AS nömrəsi AS_TRANS adlanır və 2-byte AS nömrələri ilə çalışan şəbəkələrlə 4-byte AS nömrələri ilə çalışan şəbəkələr arasında qarşılıqlı əlaqədə istifadə edilir. ASN 64496-64511 sənədləşmədə istifadə etmək üçün ayrılıb, bu səbəbdən də İnternetdə istifadə oluna bilməz. 64512-65534 (4200000000-4294967294 32-bitlik AS nömrələr) privat AS nömrələrdir. 65535 və 4294967295 AS nömrələri sonuncu nömrələri olaraq rezerv olunublar.
32-bit ASN
32-bitlik AS nömrələri iki formatda yazıla bilər. AS-Plain – AS nömrəsi olduğu kimi yazılır məsələn: 4294967294. Eyni nömrə AS Dot notation kimi bilinən nöqtə ilə ayrılan iki hissədən ibarət fortmatda da yazıla bilər. Bir az əvvəlki AS nömrəsi AS Dot formatında belə yazılır: 65535.65534. AS Plain formatının AS-Dot formatına konvertasiyası sadədir. Bunun üçün:
- AS Plain formatında olan nömrəni binar sistemə çeviririk: 4294967294 = 11111111111111111111111111111110
- Alınan ədədi hərəsində 16 rəqəm olmaqla iki hissəyə ayırırıq: 1111111111111111.1111111111111110.
- Hər bir hissəni yenidən 10-luq sistemə çeviririk: 1111111111111111 = 65535; 1111111111111110=65534.
eBGP və iBGP
BGP qonşuluq əlaqələri də iki hissəyə bölünür: iBGP və eBGP. iBGP bir muxtar sistem daxilində BGP sessiyanın qurulması üçün istifadə olunur. Bu əlaqəyə provayderlərdə daha çox rast gəlmək olar. eBGP isə müxtəlif muxtar sistemlər arasında əlaqə yaratmaq üçündür.
iBGP bir az mürəkkəb olduğu üçün bu haqda növbəti yazılarımda danışacağam. Bu yazıda isə eBGP yəni müxtəlif muxtar sistemlər arasında BGP əlaqəsi yaradacağıq.
BGP konfiqurasiyası
BGP-ni IGP-dən fərqləndirən xüsusiyyətlərdən biri onun dinamik olaraq qonşuluq qura bilməməsidir. Səbəbi BGP-nin müxtəlif altşəbəkələrə məxsus IP-lər arasında qurula bilməsidir. IGP protokolları üçün əsas tələb isə vahid altşəbəkəyə məxsus olmalarıdır. İkinci səbəb təhlükəsizlikdir. BGP protokolunda hər bir qonşu üçün bağlantı ayrı-ayrlıqda qurulur.
BGP qlobal şəbəkədə istifadə olunduğu üçün onun dayanıqlı olması vacibdir. Bu səbəbdən BGP TCP protokolu üzərindən çalışır. BGP TCP sessiyanın qurulması üçün sorğuları 179 portuna göndərir və lokalda da məhz 179 portunu dinləyir. Bəzən sessiyasının qurula bilməməsinə səbəb 179 portunun bağlı olmasıdır.
BGP-nin ilkin konfiqurasiyası olduqca sadədir. Bunun üçün iki routerin bir-birini görməyi kifayət edir. Yazı boyu aşağıdakı topologiyaya istinad edəcəyik. İstifadə etdiyimiz avadanlıqlar virtual Cisco routerləridir.

Şəbəkəmiz üç routerdən ibarətdir. Hər bir routerin arxasında bir qrup şəbəkə var. BGP sazlamasından sonra bütün routerlər qonşu routerin şəbəkələrini öz marşrutlama cədvəlində görə biləcək.
Sazlanmanı təkcə OSLO routerində göstərəcəyəm, digərləri üçün konfiqurasiya eynidir:
OSLO(config)#router bgp 64496
OSLO(config-router)#bgp router-id 1.1.1.1
OSLO(config-router)#neighbor 1.2.1.2 remote-as 64497
OSLO(config-router)#
Burada:
- router bgp ASN yazmaqla BGP prosesini başlatmış oluruq. ASN hissəsində routerin məxsus olduğu muxtar sistemin nömrəsini yazırıq.
- router-id: routerin İD nömrəsini qeyd edir. Əgər routerdə hər hansı loopback intefeys yaradılıbsa interfeysdə olan ən böyük İP-ni alır. Loopback intefeys yoxdursa router-id fiziki interfeyslərdə olan ən böyük İP-ni alır. Yaxşı olar ki, router-id-ni statik olaraq özünüz verəsiniz. Belə olan halda problemin araşdırılması daha rahat olacaq.
- neighbor IP remote-as RASN: Bu komandada IP hissəsinə BGP əlaqəsi yaratmaq istədiyimiz qonşunun İP ünvanını, RASN yerinə isə qonşunun muxtar sisteminin nömrəsini qeyd edirik.
Yuxarıdakı komandaları hər iki tərəfdə müvafiq məlumatlarla birlikdə yazdıqdan sonra BGP qonşuluq qalxır. Bu haqda terminalda sistem mesajı çıxır:
OSLO(config-router)#
*Feb 18 16:14:27.626: %BGP-5-ADJCHANGE: neighbor 1.2.1.2 Up
BGP- qonşuluq cədvəli
Qonşuluğun vəziyyətini yoxlamaq üçün show bgp ipv4 unicast summary komandasından istifadə edirik. Gəlin BERLİN routerində bunu yoxlayaq:
BERLIN#sh bgp ipv4 unicast summary
BGP router identifier 172.16.3.1, local AS number 64497
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.2.1.1 4 64496 4 4 1 0 0 00:00:45 0
1.2.2.2 4 64498 0 0 1 0 0 never Idle
BERLIN#
Yuxarıdakı məlumatların mənasına baxaq. Birinci sətrdə lokal routering İD-si və AS nömrəsi əks olunub. BERLIN routerində router-id bilərəkdən yazılmayıb. Bu səbəbdən BGP prosesi ən loopback intefeysə məxsus IP-ni alıb.
İkinci sətrdə BGP marşrut cədvəlinin və əsas marşrut cədvəlinin versiyası əks olunub. Hər yeni marşrut öyrənilən və ya silinən zaman bu rəqəm artır. Xırdalıqlara getmədən qeyd edim ki, BGP-nin bir neçə cədvəli var. Marşrut əsas marşrutlama cədvəlinə düşməzdən əvvəl BGP marşrut cədvəlində bir sıra mərhələlərdən keçir. BGP marşrut cədvəlində olan hər marşrut əsas cədvələ düşməyə bilər.
Üçüncü sətrdə birinci sütündə qonşunun İP-si, dəstəklədiyi BGP versiyanın nömrəsi (bu adətən 4 olur), muxtar sisteminin nömrəsi, qəbul edilən və göndərilən mesajların sayı (bu mesajlar haqda növbəti yazılarda danışacağam), BGP cədvəlinin versiyası (lokal ilə eyni olmalıdır), gələn və gedən növbələrində gözləyən prefiksləri sayı (normalda bu sıfır olur), UP/Down qonşuluğun qurulması/düşməsi müddəti (State-dən asılı olaraq), qonşuluq vəziyyəti/alınan prefikslərin sayı. Qonşuluq vəziyyəti Idle, Connect, Active, OpenSent, OpenConfirm, Established ola bilər. Established-dən başqa bütün vəziyyətlər problemin olduğunu göstərir. Cisco İOS-da Established əvəzinə prefiksləri sayı görünür. Gördüyümüz kimi, BERLIN routeri DUBLIN routeri ilə əlaqəni qura bilməyib. Bizim halda səbəb sadədir – hələ DUBLIN routeri sazlanmayıb.
Marşrutların elanı
IGP-dən fərqli olaraq BGP-də marşrutlar avtomatik olaraq elan edilmir. Marşrutun elan edilməsi üçün həmin marşrut mütləq əsas marşrutlama cədvəlində olmalıdır. Marşrutun prefiks uzunluğu BGP sazlamasında və marşrutlama cədvəlində eyni olmalıdır. Marşrutun elan edilməsi üçün network IP-SUBNET mask MASK komandasında istifadə edilir. Növbəti addımda OSLO routerində olan hər üç loopback interfeysin altşəbəkələrini qonşuya ötürəcəyik. Bir şəbəkənin elanında bilərəkdən səhvə yol veriləcək:
OSLO(config)#router bgp 64496
OSLO(config-router)#network 192.168.1.0 mask 255.255.255.0
OSLO(config-router)#network 192.168.2.0 mask 255.255.255.0
OSLO(config-router)#network 192.168.3.0 mask 255.255.255.128
OSLO(config-router)#
BGP marşrut cədvəli
BERLIN routerində BGP-dən gələn marşrutlara baxaq. Bunun üçün show bgp ipv4 unicast komandasından istifadə olunur:
BERLIN#show bgp ipv4 unicast
BGP table version is 5, local router ID is 172.16.3.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 192.168.1.0 1.2.1.1 0 0 64496 i
*> 192.168.2.0 1.2.1.1 0 0 64496 i
BERLIN#
Yuxarıda yazılanları izah edim.
- İlk sətrdə lokal routerin BGP cədvəlinin versiyası və router-id-si görünür.
- Status codes marşrutun statusu əks etidir. Məsələn, * marşrutun doğru olduğunu, > isə marşrutun ən yaxşı marşrut olmasını göstərir. Məhz ən yaxşı marşrut routerin əsas marşrutlama cədvəlinə düşür.
- Origin-codes qonşu routerin marşrutu hansı yolla öyrəndiyini göstərir. network komandası ilə elan edilən marşrutlar i-İGP olaraq bilinir. ? işarəsi ilə işarələnən marşrutlar redistribute komdansı ilə öyrlənilib deməkdir. e hərf ilə işarələnən marşrutlara EGP (BGP-nin əjdadı) ilə öyrənilən marşrutlardır. Günümüzdə bu protokol artıq istifadə olunmur və Cisco IOS-da e hərfli marşrut görməyəcəksiniz.
- RPKİ validation codes təhlükəsilik məqsədi ilə istifadə olunur. Bu ayrı yazının mövzusudur.
- Network sütununda qonşudan aldığımız alt şəbəkəni görürük.
- Next-hop BGP-nin atributlarından biridir. Marşruta çatmaq üçün gedəcəyimiz növbəti routeri göstərir. Məsələn, BERLİN routeri üçün bu OSLO routerinin İP-sidir.
- Metric Multi Exit Discriminator kimi bilinən BGP atributudur. Altşəbəkəyə bir neçə marşrut olarsa daha aşağı metric-ə sahib olan marşrut qalib gəlir. Adətən bu 0 olur və nadir hallarda istifadə edilir.
- LocPrf routerin marşruta təyin etdiyi üstünlük göstəricisidir. Bu göstərici eyni alt-şəbəkəyə bir neçə marşrut olduğu halda lokal routerin seçəcəyi yola təsir etmək üçün istifadə olunur. Bunlar haqqında növbəti yazılarda danışılacaq.
- Weight Cisco məhsullarında olan attributdur. Daha yuxarı göstəriciyə malik olan yola üstünlük verilir. Routerin özü tərəfindən elan edilən marşrutlarda bu göstərici 32768 olur. Bu atributun göstəricisi qarşı tərəfə ötürülmür.
- Path BGP-nin əsas atributudur. Məhz path sayəsində altşəbəkəyə gedən yolun hansı muxtar sistemlərdən keçdiyini göstərir. Məsələn, BERLİN routeri görür ki, 192.168.1.0 şəbəkəsi 64496 AS-dən gəlib, həmin AS-də isə bu şəbəkə network komandası ilə elan edilib. DUBLİN routerinə baxsaq görəcəyik ki, eyni marşrut artıq iki müxtəlif muxtar sistemdən keçir. Eyni zamanda DUBLIN routerində 192.168.1.0 şəbəkəsinə iki yol oldğunu görürük. Belə halda daha az muxtar sistemdən keçən marşruta üstünlük verilir (> best olaraq da OSLO yolu seçilib). Yəni əsas marşrut cədvəlinə OSLO-dan gələn marşrut düşəcək. Yoxlayaq:
Network Next Hop Metric LocPrf Weight Path
*> 192.168.1.0 1.3.1.1 0 0 64496 i
* 1.2.2.1 0 64497 64496 i
DUBLIN#show ip route bgp | b Gateway
Gateway of last resort is not set
B 192.168.1.0/24 [20/0] via 1.3.1.1, 00:06:26
Verifikasiya
Əvvəldə dediyim kimi, OSLO routerində marşrutların elanında səhvə yol vermişdik. Bunun nəticəsidir ki, 192.168.3.0 şəbəkəsi qonşu routerlərdə görünmür:
BERLIN#show bgp ipv4 uni
Network Next Hop Metric LocPrf Weight Path
* 192.168.1.0 1.2.2.2 0 64498 64496 i
*> 1.2.1.1 0 0 64496 i
* 192.168.2.0 1.2.2.2 0 64498 64496 i
*> 1.2.1.1 0 0 64496 i
BERLIN#
OSLO routerində marşrut cədvəlinə baxsaq görərik ki, /25 altşəbəkəsi yoxdur.
OSLO#sho ip route | b Gateway
Gateway of last resort is not set
1.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C 1.2.1.0/30 is directly connected, GigabitEthernet0/0
L 1.2.1.1/32 is directly connected, GigabitEthernet0/0
C 1.3.1.0/30 is directly connected, GigabitEthernet0/1
L 1.3.1.1/32 is directly connected, GigabitEthernet0/1
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.1.0/24 is directly connected, Loopback1
L 192.168.1.1/32 is directly connected, Loopback1
192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.2.0/24 is directly connected, Loopback2
L 192.168.2.1/32 is directly connected, Loopback2
192.168.3.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.3.0/24 is directly connected, Loopback3
L 192.168.3.1/32 is directly connected, Loopback3
Məhz buna görə BGP 192.168.1.1/32 marşrutunu qonşulara göndərmir. Səhvi aradan qaldırsaq bu altşəbəkəni də qonşularda görəcəyik. Eyni zamanda bütün routerlarda loopback interfeyslərin altşəbəkələrini elan edək və yekun nəticəyə baxaq.
OSLO#show bgp ipv4 unicast | beg Network
Network Next Hop Metric LocPrf Weight Path
* 10.10.1.0/24 1.2.1.2 0 64497 64498 i
*> 1.3.1.2 0 0 64498 i
* 10.10.2.0/24 1.2.1.2 0 64497 64498 i
*> 1.3.1.2 0 0 64498 i
* 10.10.3.0/24 1.2.1.2 0 64497 64498 i
*> 1.3.1.2 0 0 64498 i
* 172.16.1.0/24 1.3.1.2 0 64498 64497 i
*> 1.2.1.2 0 0 64497 i
* 172.16.2.0/24 1.3.1.2 0 64498 64497 i
*> 1.2.1.2 0 0 64497 i
* 172.16.3.0/24 1.3.1.2 0 64498 64497 i
*> 1.2.1.2 0 0 64497 i
*> 192.168.1.0 0.0.0.0 0 32768 i
*> 192.168.2.0 0.0.0.0 0 32768 i
*> 192.168.3.0 0.0.0.0 0 32768 i
BERLIN#show bgp ipv4 unicast | beg Netw
Network Next Hop Metric LocPrf Weight Path
* 10.10.1.0/24 1.2.1.1 0 64496 64498 i
*> 1.2.2.2 0 0 64498 i
* 10.10.2.0/24 1.2.1.1 0 64496 64498 i
*> 1.2.2.2 0 0 64498 i
* 10.10.3.0/24 1.2.1.1 0 64496 64498 i
*> 1.2.2.2 0 0 64498 i
*> 172.16.1.0/24 0.0.0.0 0 32768 i
*> 172.16.2.0/24 0.0.0.0 0 32768 i
*> 172.16.3.0/24 0.0.0.0 0 32768 i
* 192.168.1.0 1.2.2.2 0 64498 64496 i
*> 1.2.1.1 0 0 64496 i
* 192.168.2.0 1.2.2.2 0 64498 64496 i
*> 1.2.1.1 0 0 64496 i
* 192.168.3.0 1.2.2.2 0 64498 64496 i
*> 1.2.1.1 0 0 64496 i
DUBLIN#show bgp ipv4 unicast | beg Netw
Network Next Hop Metric LocPrf Weight Path
*> 10.10.1.0/24 0.0.0.0 0 32768 i
*> 10.10.2.0/24 0.0.0.0 0 32768 i
*> 10.10.3.0/24 0.0.0.0 0 32768 i
* 172.16.1.0/24 1.3.1.1 0 64496 64497 i
*> 1.2.2.1 0 0 64497 i
* 172.16.2.0/24 1.3.1.1 0 64496 64497 i
*> 1.2.2.1 0 0 64497 i
* 172.16.3.0/24 1.3.1.1 0 64496 64497 i
*> 1.2.2.1 0 0 64497 i
*> 192.168.1.0 1.3.1.1 0 0 64496 i
* 1.2.2.1 0 64497 64496 i
*> 192.168.2.0 1.3.1.1 0 0 64496 i
* 1.2.2.1 0 64497 64496 i
* 192.168.3.0 1.2.2.1 0 64497 64496 i
*> 1.3.1.1 0 0 64496 i
Marşrut cədvəllərinə baxaq:
OSLO#show ip route bgp | beg Gate
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
B 10.10.1.0 [20/0] via 1.3.1.2, 00:02:25
B 10.10.2.0 [20/0] via 1.3.1.2, 00:02:25
B 10.10.3.0 [20/0] via 1.3.1.2, 00:02:25
172.16.0.0/24 is subnetted, 3 subnets
B 172.16.1.0 [20/0] via 1.2.1.2, 00:03:26
B 172.16.2.0 [20/0] via 1.2.1.2, 00:02:56
B 172.16.3.0 [20/0] via 1.2.1.2, 00:02:56
OSLO#
BERLIN# show ip route bgp | beg Gat
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
B 10.10.1.0 [20/0] via 1.2.2.2, 00:02:44
B 10.10.2.0 [20/0] via 1.2.2.2, 00:02:44
B 10.10.3.0 [20/0] via 1.2.2.2, 00:02:44
B 192.168.1.0/24 [20/0] via 1.2.1.1, 01:50:24
B 192.168.2.0/24 [20/0] via 1.2.1.1, 01:49:53
B 192.168.3.0/24 [20/0] via 1.2.1.1, 00:04:24
BERLIN#
DUBLIN#show ip route bgp | begin Gat
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 3 subnets
B 172.16.1.0 [20/0] via 1.2.2.1, 00:04:06
B 172.16.2.0 [20/0] via 1.2.2.1, 00:03:36
B 172.16.3.0 [20/0] via 1.2.2.1, 00:03:36
B 192.168.1.0/24 [20/0] via 1.3.1.1, 00:27:57
B 192.168.2.0/24 [20/0] via 1.3.1.1, 00:27:57
B 192.168.3.0/24 [20/0] via 1.3.1.1, 00:04:45
DUBLIN#
Xülasə
BGP mövzusu çox genişdir. Bir məqalədə bütün nüanslarını əhatə etmək çətindir. Hələ BGP atributlarından, ən yaxşı yol seçimi (Best Path Selection) alqoritmindən, qonşuların vəziyyətindən, marşrutların filtrlənməsindən, BGP qonşuluğun təhlükəsizliyinin təmin olunmasından danışmadım. Gələn yazılarda mütləq bu mövzulara toxunulacaq.
netadmin.az IT haqqında Azərbaycan dilində
One comment
Pingback: BGP: attributlar və yol seçimi • netadmin.az