NETWORK COMPUTING · DISTANCE-VECTOR ROUTING · MESSAGE PASSING

ห้องทดลองเครือข่าย
Distributed Bellman–Ford

ให้ router แต่ละตัวรู้เฉพาะ link ที่ต่อถึงตน แลกเปลี่ยน distance vector กับเพื่อนบ้าน แล้วค้นพบเส้นทางสั้นที่สุดด้วยตนเอง กดดูทีละ synchronous round เพื่อตรวจ message, routing table ที่เปลี่ยน และการลู่เข้า

Dₓ(y) = minᵥ{c(x,v)+Dᵥ(y)}distance vectorneighbour-to-neighbour messagesnext-hop routingdistributed convergencelink-cost change
Synchronous round0
Messages รอบนี้0
ช่องที่เปลี่ยน0
สถานะเครือข่ายINIT

Router และ vector message

SELECT A ROUTER TO INSPECT

Router A

LOCAL KNOWLEDGE

Routing table

ปลายทางCostNext hop

Inbox ที่รับล่าสุด

ประวัติการลู่เข้า

GLOBAL BARRIER AFTER EACH ROUND
RoundVectors sentEntries changedRouters updatedMax finite costStatus
พร้อม เริ่มต้น router แต่ละตัวรู้ cost 0 ไปตนเอง รู้ cost ของ direct link และมองปลายทางอื่นเป็น infinity

1. Local knowledge

Router x ไม่ได้รับ topology ทั้งกราฟ แต่เก็บ vector Dₓ และ cost ของ link ที่ติดกัน เริ่มแรกจึง route ได้เพียงตนเองและเพื่อนบ้าน โครงสร้างนี้ทำให้อัลกอริทึมทำงานแบบกระจายศูนย์ได้

D[x][x] = 0
D[x][neighbor] = linkCost
D[x][other] = infinity

2. Exchange and relax

เมื่อถึงขอบรอบ router ส่ง vector รอบก่อนให้เพื่อนบ้าน Router x ทดลองไปทุกปลายทาง y ผ่านเพื่อนบ้าน v ทุกตัว การอัปเดตใช้ message จากรอบเดียวกันทั้งหมด จึงเห็น causality ชัดเจน

candidate = cost(x,v) + Dv[y]
if candidate < Dx[y]:
    Dx[y] = candidate
    nextHop[x][y] = v

3. Routing convergence

เมื่อครบหนึ่งรอบแล้วไม่มีช่องใดเปลี่ยน router ทั้งหมดลู่เข้าสำหรับ topology ปัจจุบัน การเพิ่ม link cost ทำให้ความรู้เดิมใช้ไม่ได้และเริ่มแลกเปลี่ยนใหม่ Lab นี้ตั้งต้นใหม่จาก direct links เพื่อให้ตรวจ reconvergence ได้โดยไม่ซ่อน stale route

repeat synchronousRound()
until changedEntries == 0

message complexity per round:
O(|E| · |V|)