SEN2008 · 6. hafta · Network Layer Concepts (II): Routing Protocols OSPF, BGP, multicasting

Yönlendirme algoritmaları: Dijkstra ve Bellman-Ford

Link-state (Dijkstra) tablosunu adım adım doldurmak, distance-vector (Bellman-Ford) vektörlerini tur tur güncellemek, count-to-infinity ve poisoned reverse. Vizede tablo doldurma sorusu buradan gelir.

routing algorithmlink-stateDijkstra's algorithmdistance vectorBellman-Ford equationleast-cost pathforwarding tablenext hopcount-to-infinitypoisoned reversecontrol plane

Bir önceki haftada router’ın iletim tablosuna bakıp paketi ilettiğini gördük. Peki o tabloyu kim dolduruyor? Yönlendirme algoritmaları (routing algorithms). Bu, ağ katmanının kontrol düzlemi (control plane): ağı bir çizge (graph) gibi görüp her hedefe en düşük maliyetli yolu (least-cost path) bulmak. Sınavda iki tablo doldurma sorusu çıkar: Dijkstra tablosu ve distance-vector güncellemesi. Altın kurallar:

  1. Dijkstra her adımda N’ dışındaki en küçük mesafeli düğümü ekler. Komşu olup olmadığı önemsiz.
  2. Eklenen düğümün komşularını güncelle: D(v)=min⁡(D(v), D(w)+c(w,v))D(v) = \min(D(v),\ D(w) + c(w,v)).
  3. İletim tablosu sadece ilk atlamayı (next hop) tutar.
  4. Bellman-Ford: Dx(y)=min⁡v{c(x,v)+Dv(y)}D_x(y) = \min_v \{c(x,v) + D_v(y)\}, vv komşular.
  5. DV’de kötü haber yavaş yayılır (count-to-infinity).

Ağ çizge olarak

Router’lar düğüm, bağlantılar kenar. Her kenarın bir maliyeti (cost) var: gecikme, ters bant genişliği ya da yönetici kararı. Bir yolun maliyeti kenar maliyetlerinin toplamıdır.

Link-state (LS)Distance-vector (DV)
BilgiHer router tüm topolojiyi bilirSadece komşularının vektörlerini
AlgoritmaDijkstraBellman-Ford
MesajHerkese floodingSadece komşulara
HesapMerkezi (her router kendi içinde)Dağıtık, yinelemeli, asenkron
SorunYüke bağlı maliyetlerde salınımCount-to-infinity, yavaş yakınsama
Örnek protokolOSPF, IS-ISRIP

Her router bağlantı durumlarını (link-state packets) bütün ağa yayar. Herkes aynı haritaya sahip olur ve Dijkstra’yı kendisi koşar.

Gösterim: D(v)D(v) kaynaktan vv‘ye şu ana kadar bilinen en düşük maliyet, p(v)p(v) o yoldaki öncül düğüm, N′N' kesinleşmiş düğümler.

Başla: N' = {kaynak}; her v için D(v) = c(kaynak,v) (komşu değilse sonsuz)
Döngü: N' dışındaki en küçük D(w)'yi seç, N'ye ekle
       w'nin N' dışındaki her komşusu v için:
           D(v) = min( D(v), D(w) + c(w,v) )
Bitiş: bütün düğümler N' içinde

Örnek: kaynak A. Kenarlar:

A-B 4   A-C 1   B-C 2   B-D 5   C-D 8
C-E 10  D-E 2   D-F 6   E-F 3

Tabloda her hücre D,p biçiminde. * o düğümün kesinleştiğini gösterir.

adım  N'       B      C      D      E      F
0     A        4,A    1,A    inf    inf    inf
1     AC       3,C    *      9,C    11,C   inf
2     ACB      *      *      8,B    11,C   inf
3     ACBD     *      *      *      10,D   14,D
4     ACBDE    *      *      *      *      13,E
5     ACBDEF   *      *      *      *      *

Adım 1’de C (1) eklendi: B için 1+2=3<41 + 2 = 3 < 4, öncül C oldu. Adım 2’de B (3) eklendi: D için 3+5=8<93 + 5 = 8 < 9. Adım 3’te D (8): E için 8+2=10<118 + 2 = 10 < 11. Adım 4’te E (10): F için 10+3=13<1410 + 3 = 13 < 14.

Sonuç ve A’nın iletim tablosu:

HedefMaliyetYolNext hop
B3A-C-BC
C1A-CC
D8A-C-B-DC
E10A-C-B-D-EC
F13A-C-B-D-E-FC

TUZAK · doğrudan bağlantı her zaman en kısa değil. A-B doğrudan 4, ama A-C-B 3. Tabloyu doldururken ilk satırdaki değerleri “kesin” sanma; düğüm ancak N’ye eklendiğinde kesinleşir.

İPUCU · next hop’u bulmak. Öncül zincirini geri izle: F’nin öncülü E, E’nin D, D’nin B, B’nin C, C’nin A. Kaynağa varmadan önceki son düğüm (C) next hop’tur.

Karmaşıklık. n düğüm için n - 1 tur, her turda en küçüğü bulmak için tarama: O(n2)O(n^2). Salınım (oscillation): maliyet trafik yüküne bağlıysa herkes aynı anda ucuz yola geçer, o yol pahalanır, herkes geri döner. Çözüm: router’ların hesap zamanlarını rastgele kaydırmak.

İPUCU · sınavda tabloyu hızlı doldurmak. Her satırda üç iş yap: (1) N’ dışındaki en küçük değeri daire içine al, (2) o düğümü N’ kümesine yaz, (3) sadece onun komşularının hücrelerini güncelle, diğer hücreleri aynen kopyala. Eşitlik olursa hangisini seçtiğin sonucu değiştirmez, ama tutarlı ol (genelde alfabetik). Değişmeyen hücreyi yeniden hesaplamaya çalışmak zaman kaybıdır.

Mesaj karmaşıklığı. LS’de her router kendi bağlantı durumunu bütün ağa yayar; n router ve E bağlantı için O(nE)O(nE) mesaj. DV’de mesajlar sadece komşular arasında gider, ama yakınsama süresi değişkendir ve döngüler oluşabilir. Sağlamlık açısından LS daha iyidir: her router kendi hesabını yaptığı için bir router’ın hatası sınırlı kalır.

Distance-vector: Bellman-Ford

Her router sadece mesafe vektörünü (distance vector) tutar: her hedefe tahmini maliyet. Komşularından vektör alınca kendi vektörünü Bellman-Ford denklemiyle yeniler:

Dx(y)=min⁡v∈koms¸ular(x){ c(x,v)+Dv(y) }D_x(y) = \min_{v \in \text{komşular}(x)} \{\, c(x,v) + D_v(y) \,\}

Vektör değiştiyse komşulara yollar. Değişmezse susar. Bu yüzden algoritma yinelemeli, asenkron ve dağıtıktır.

Örnek: dört düğüm, senkron turlar. Kenarlar: W-X 1, X-Y 3, W-Y 6, Y-Z 2, X-Z 9. Satırlar düğümün vektörü, sütunlar hedef W X Y Z.

t=0 (sadece doğrudan bağlantılar)
  D_W   0  1  6  inf
  D_X   1  0  3  9
  D_Y   6  3  0  2
  D_Z   inf 9 2  0
t=1
  D_W   0  1  4  8       Y: min(6, 1+3)=4   Z: min(inf, 1+9, 6+2)=8
  D_X   1  0  3  5       Z: min(9, 3+2)=5
  D_Y   4  3  0  2
  D_Z   8  5  2  0
t=2
  D_W   0  1  4  6       Z: min(1+5, 6+2)=6   (X'in yeni vektörü)
  D_X   1  0  3  5
  D_Y   4  3  0  2
  D_Z   6  5  2  0
t=3: hiçbir vektör değişmedi, yakınsadı

W’nin Z’ye en iyi yolu W-X-Y-Z, maliyet 1+3+2=61 + 3 + 2 = 6. Bu bilgi iki turda geldi, çünkü üç atlamalık bir yol.

Count-to-infinity ve poisoned reverse

Maliyet düşerse haber hızla yayılır. Artarsa sorun çıkar. Örnek: A-B 2, B-C 1, A-C 30. Yakınsamış durumda DB(A)=2D_B(A) = 2, DC(A)=3D_C(A) = 3 (C, A’ya B üzerinden gidiyor). Şimdi A-B maliyeti 40 oldu.

B: min(40, 1 + D_C(A)=3) = 4     B, C'nin yolunun kendisinden geçtiğini bilmiyor
C: min(30, 1 + 4) = 5
B: min(40, 1 + 5) = 6
C: 7, B: 8, ...                  her turda 2 artış
...
B: 30, C: min(30, 31) = 30       C sonunda doğrudan bağlantıya geçti
B: min(40, 1 + 30) = 31          kararlı

Kararlı duruma 15 turda ulaşıldı (her turda önce B, sonra C güncelliyor). Bu sürenin neredeyse tamamında B ile C birbirini gösteren bir döngüdeydi. A-C bağlantısı olmasaydı sayılar sonsuza kadar tırmanırdı; adı oradan geliyor.

Poisoned reverse: C’nin A’ya yolu B’den geçiyorsa C, B’ye DC(A)=∞D_C(A) = \infty der. B hemen min⁡(40,1+∞)=40\min(40, 1 + \infty) = 40 alır ve döngü oluşmaz. Ancak üç ya da daha çok düğümlü döngülerde bu hile yetmez. RIP bu yüzden sonsuzu 16 hop olarak tanımlar.

Hiyerarşik yönlendirme

Gerçek İnternette yüz milyonlarca router var; hepsi tek bir Dijkstra çalıştıramaz. Ayrıca her kurum kendi ağını kendi yönetmek ister. Çözüm: özerk sistemler (autonomous systems, AS). AS içinde intra-AS protokolü (OSPF, RIP), AS’ler arasında inter-AS protokolü (BGP) çalışır. Bunu bir sonraki sayfada işliyoruz.

Sık yapılan hatalar

Yanlış düşünceDoğrusu
Dijkstra’da komşuyu önce eklemekEn küçük D değerli düğüm eklenir
İlk satırdaki doğrudan maliyet kesindirDüğüm N’ye girince kesinleşir
Next hop = hedefin öncülüZinciri kaynağın komşusuna kadar geri izle
Bellman-Ford’da en ucuz bağlantıyı seçmekc(x,v)+Dv(y)c(x,v) + D_v(y) toplamının en küçüğü
DV’de her router topolojiyi bilirSadece komşu vektörlerini bilir
DV tek turda yakınsark atlamalık yol için k tur gerekebilir
Count-to-infinity LS’de olurDV sorunudur; LS’nin sorunu salınım
Poisoned reverse her döngüyü çözerSadece iki düğümlü döngüleri

Kendini test et

Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.

Soru 1orta

Run Dijkstra's algorithm from node S on the network below. What is the least-cost path cost from S to W?

S-T 3   S-U 7   T-U 2   T-V 6
U-V 1   U-W 8   V-W 2
Cevabı göster
8

Başlangıç: T 3, U 7, V ve W sonsuz.
Adım 1: en küçük T (3) eklenir. U = min(7, 3+2) = 5, V = 3+6 = 9.
Adım 2: U (5) eklenir. V = min(9, 5+1) = 6, W = 5+8 = 13.
Adım 3: V (6) eklenir. W = min(13, 6+2) = 8.
Adım 4: W (8) eklenir. Yol S-T-U-V-W, maliyet 3+2+1+2 = 8.

Soru 2orta

In the same network, in what order are the nodes added to the set N' by Dijkstra's algorithm (starting from S)?

  1. S, T, U, V, W
  2. S, T, V, U, W
  3. S, U, T, V, W
  4. S, T, U, W, V
Cevabı göster
A) S, T, U, V, W

Her adımda N' dışındaki en küçük DD değerli düğüm eklenir: T (3), U (5), V (6), W (8). Doğrudan komşu olmak sıraya etki etmez; sadece o anki mesafe belirler.

Soru 3orta

In the same network, what is the next hop in S's forwarding table for destination W?

  1. T
  2. U
  3. V
  4. W
Cevabı göster
A) T

Öncül zinciri: p(W) = V, p(V) = U, p(U) = T, p(T) = S. Geriye doğru S'nin hemen yanındaki düğüme kadar git: T. İletim tablosu sadece ilk adımı tutar; T, U ve V'nin hepsine giden yol T'den başlar.

Soru 4kolay

Node x has neighbors a, b, c with link costs c(x,a) = 2, c(x,b) = 5, c(x,c) = 1. They advertise D_a(y) = 6, D_b(y) = 2, D_c(y) = 9. Using the Bellman-Ford equation, what is D_x(y)?

Cevabı göster
7

Dx(y)=min⁡v{c(x,v)+Dv(y)}D_x(y) = \min_v \{c(x,v) + D_v(y)\}.
a üzerinden 2 + 6 = 8, b üzerinden 5 + 2 = 7, c üzerinden 1 + 9 = 10. En küçük 7, sonraki atlama b. En ucuz bağlantı (c) kazanmaz; toplam önemli.

Soru 5zor

In the network below every node starts with only its direct link costs and all nodes exchange vectors synchronously. What is D_P(T) after the first exchange, and after convergence?

P-Q 2   P-R 7   Q-R 1   R-T 3   Q-T 8
Cevabı göster
10 after one exchange, 6 after convergence

t = 0'da P'nin T'ye yolu yok (sonsuz). Komşu vektörleri: DQ(T)=8D_Q(T) = 8, DR(T)=3D_R(T) = 3.
t = 1: DP(T)=min⁡(2+8,7+3)=10D_P(T) = \min(2 + 8, 7 + 3) = 10. Aynı turda Q de güncellendi: DQ(T)=min⁡(8,1+3)=4D_Q(T) = \min(8, 1 + 3) = 4.
t = 2: P yeni vektörü alır: min⁡(2+4,7+3)=6\min(2 + 4, 7 + 3) = 6. Sonraki turda değişiklik yok. Yol P-Q-R-T, maliyet 6.

Soru 6kolay

What is the worst-case time complexity of the basic (array-based) Dijkstra's algorithm on a network of n nodes?

  1. O(n)
  2. O(n log n)
  3. O(n^2)
  4. O(2^n)
Cevabı göster
C) O(n^2)

n - 1 tur var, her turda N' dışındaki bütün düğümler taranıyor: n+(n−1)+⋯≈n(n+1)/2n + (n-1) + \dots \approx n(n+1)/2, yani O(n2)O(n^2). Yığın (heap) ile O((n+m)log⁡n)O((n + m) \log n) olur.

Soru 7orta

Which statement about link-state (LS) and distance-vector (DV) algorithms is TRUE?

  1. In DV, every node knows the full topology
  2. In LS, each node computes its own table, so an incorrect link cost advertised by one router has limited effect
  3. LS can suffer from count-to-infinity
  4. DV requires flooding link-state packets to all routers
Cevabı göster
B) In LS, each node computes its own table, so an incorrect link cost advertised by one router has limited effect

LS'de her router bütün topolojiyi bilir ve yolunu kendisi hesaplar. Bozuk bir router sadece kendi bağlantı maliyetini yanlış duyurabilir. DV'de bir router yanlış "her yere ucuz giderim" derse hata komşudan komşuya yayılır. Count-to-infinity DV sorunudur; flooding LS'nin yöntemidir.

Soru 8kolay

Which problem is the distance-vector algorithm known for when a link cost increases?

  1. Routing oscillation due to load-sensitive costs
  2. Count-to-infinity
  3. Fragmentation
  4. Broadcast storm
Cevabı göster
B) Count-to-infinity

İyi haber (maliyet düşüşü) hızlı yayılır, kötü haber (artış) yavaş. İki router birbirini eski yol sanıp maliyeti her turda biraz artırır. Load-sensitive salınım LS'nin sorunudur.

Soru 9zor

Links: A-B = 2, B-C = 1, A-C = 30. All tables have converged. Then the cost of A-B rises to 40. Without poisoned reverse, what value does D_B(A) finally settle at?

Cevabı göster
31

Değişiklikten önce DB(A)=2D_B(A) = 2 ve DC(A)=3D_C(A) = 3 (C, A'ya B üzerinden gider). Bağlantı 40 olunca B, C'nin eski 3 değerine güvenir: min⁡(40,1+3)=4\min(40, 1 + 3) = 4. C buna bakıp 5 der, B 6, C 7... Her turda 2 artar. C'nin değeri doğrudan bağlantıya (30) ulaşınca durur. Son durum: DC(A)=30D_C(A) = 30, DB(A)=min⁡(40,1+30)=31D_B(A) = \min(40, 1 + 30) = 31. Bizim tur modelinde (önce B, sonra C) 15 tur sürer.

Soru 10orta

With poisoned reverse, if C's least-cost path to A goes through B, what does C advertise to B as D_C(A)?

  1. Its real cost D_C(A)
  2. 0
  3. Infinity
  4. The cost of link B-C
Cevabı göster
C) Infinity

C, A'ya B üzerinden gidiyorsa B'ye "A'ya mesafem sonsuz" der. B artık C'ye geri dönen bir döngü yolu seçemez. Yukarıdaki örnekte B hemen min⁡(40,∞)=40\min(40, \infty) = 40 alır. Üç ya da daha fazla düğümlü döngülerde poisoned reverse yetmeyebilir.

Soru 11zor

Why does Dijkstra's algorithm require non-negative link costs?

  1. Because routers cannot store negative numbers
  2. Because once a node is added to N' its cost is assumed final, and a negative edge found later could make a cheaper path
  3. Because Bellman-Ford also fails on negative costs
  4. Because negative costs create count-to-infinity
Cevabı göster
B) Because once a node is added to N' its cost is assumed final, and a negative edge found later could make a cheaper path

Dijkstra'nın açgözlü (greedy) adımı "N' içindeki mesafe kesindir" varsayımına dayanır. Negatif bir kenar bu varsayımı bozar. Ağlarda maliyetler zaten pozitif olduğu için pratikte sorun değildir.

Doğrulama: Bütün Dijkstra tabloları ve DV vektörleri node ile yazılmış Dijkstra ve senkron Bellman-Ford uygulamalarının çıktısından alındı (verify/SEN2008/06.mjs).

Deftere not kartı

Kontrol düzlemi: yönlendirme tablosunu HESAPLAR; veri düzlemi: iletir LS (Dijkstra): herkes tüm topolojiyi bilir (flooding), O(n^2) Dijkstra adım: N' dışındaki EN KÜÇÜK D'yi ekle, komşuları güncelle D(v) = min(D(v), D(w) + c(w,v)); p(v) değişirse yaz next hop: öncül zincirini kaynağın komşusuna kadar geri izle DV (Bellman-Ford): D_x(y) = min_v { c(x,v) + D_v(y) } sadece komşularla konuşur, dağıtık, asenkron iyi haber hızlı, KÖTÜ haber yavaş → count-to-infinity poisoned reverse: yolum senden geçiyorsa sana "sonsuz" derim LS mesaj O(nE), DV sadece komşular; LS sağlam, DV hatayı yayar negatif maliyet: Dijkstra çalışmaz