โปรโตคอลการกำหนดเส้นทางเวกเตอร์ระยะทาง
โปรโตคอลการกำหนดเส้นทางแบบเวกเตอร์ระยะทางในเครือข่ายข้อมูลจะกำหนดเส้นทางที่ดีที่สุดสำหรับแพ็กเก็ตข้อมูลโดยพิจารณาจากระยะทาง โปรโตคอลการกำหนดเส้นทางแบบเวกเตอร์ระยะทางจะวัดระยะทางโดยจำนวนเราเตอร์ที่แพ็กเก็ตต้องผ่าน โดยหนึ่งเราเตอร์นับเป็นหนึ่งฮอป โปรโตคอลเวกเตอร์ระยะทางบางตัวยังคำนึงถึงความหน่วงของเครือข่ายและปัจจัยอื่นๆ ที่มีผลต่อปริมาณการรับส่งข้อมูลบนเส้นทางที่กำหนดด้วย เพื่อกำหนดเส้นทางที่ดีที่สุดในเครือข่าย เราเตอร์ที่ใช้โปรโตคอลเวกเตอร์ระยะทางจะแลกเปลี่ยนข้อมูลระหว่างกัน โดยปกติจะเป็นตารางการกำหนดเส้นทางรวมถึงจำนวนฮอปสำหรับเครือข่ายปลายทาง และอาจรวมถึงข้อมูลการรับส่งข้อมูลอื่นๆ ด้วย โปรโตคอลการกำหนดเส้นทางแบบเวกเตอร์ระยะทางยังกำหนดให้เราเตอร์ต้องแจ้งให้เราเตอร์ข้างเคียงทราบถึงการเปลี่ยนแปลงโครงสร้างเครือข่าย เป็นระยะๆ ด้วย
โปรโตคอลการกำหนด เส้นทางแบบเวกเตอร์ระยะทางใช้ขั้นตอนวิธีเบลล์แมน-ฟอร์ดในการคำนวณเส้นทางที่ดีที่สุด อีกวิธีหนึ่งในการคำนวณเส้นทางที่ดีที่สุดในเครือข่ายคือการพิจารณาจากต้นทุนของลิงก์ ซึ่งนำไปใช้ผ่านโปรโตคอลการกำหนดเส้นทางแบบสถานะลิงก์
คำว่าเวกเตอร์ระยะทาง หมายถึง โปรโตคอลนี้ใช้เวกเตอร์ ( อาร์เรย์ ) ของระยะทางไปยังโหนดอื่นๆ ในเครือข่าย อัลกอริทึมเวกเตอร์ระยะทางเป็นอัลกอริทึมการกำหนดเส้นทางดั้งเดิมของ ARPANETและถูกนำไปใช้กันอย่างแพร่หลายในเครือข่ายบริเวณท้องถิ่น (LAN) ด้วยโปรโตคอลข้อมูลการกำหนดเส้นทาง (RIP)
ภาพรวม
โปรโตคอลการกำหนดเส้นทางแบบเวกเตอร์ระยะทางใช้ขั้นตอนวิธีเบลล์แมน-ฟอร์ดในโปรโตคอลเหล่านี้ เราเตอร์แต่ละตัวจะไม่มีข้อมูลเกี่ยวกับโครงสร้างเครือข่าย ทั้งหมด มันจะประกาศค่าระยะทาง (DV) ที่คำนวณได้ไปยังเราเตอร์อื่นๆ และรับการประกาศที่คล้ายกันจากเราเตอร์อื่นๆ เว้นแต่จะมีการเปลี่ยนแปลงเกิดขึ้นในเครือข่ายท้องถิ่นหรือโดยเราเตอร์ข้างเคียง โดยใช้การประกาศเส้นทางเหล่านี้ เราเตอร์แต่ละตัวจะสร้างตารางเส้นทางของตนเอง ในรอบการประกาศครั้งถัดไป เราเตอร์จะประกาศข้อมูลที่อัปเดตจากตารางเส้นทางของตน กระบวนการนี้จะดำเนินต่อไปจนกว่าตารางเส้นทางของแต่ละเราเตอร์จะลู่เข้าสู่ค่าที่เสถียร
โปรโตคอลบางอย่างมีข้อเสียคือการบรรจบกันที่ช้า
ตัวอย่างของโปรโตคอลการกำหนดเส้นทางแบบเวกเตอร์ระยะทาง:
- โปรโตคอลข้อมูลเส้นทาง (RIP)
- โปรโตคอลข้อมูลการกำหนดเส้นทางเวอร์ชัน 2 (RIPv2)
- Routing Information Protocol Next Generation (RIPng) เป็นส่วนขยายของ RIP เวอร์ชัน 2 ที่รองรับIPv6
- โปรโตคอลการกำหนดเส้นทางเกตเวย์ภายใน (IGRP)
- โปรโตคอลการกำหนดเส้นทางเกตเวย์ภายในขั้นสูง (EIGRP)
ระเบียบวิธีวิจัย
เราเตอร์ที่ใช้โปรโตคอลเวกเตอร์ระยะทางจะกำหนดระยะทางระหว่างตัวมันเองกับปลายทาง เส้นทางที่ดีที่สุดสำหรับข้อมูลผ่านเครือข่ายข้อมูลจะวัดจากจำนวนเราเตอร์ (ฮอป) ที่แพ็กเก็ตต้องผ่านเพื่อไปถึงเครือข่ายปลายทาง นอกจากนี้ โปรโตคอลเวกเตอร์ระยะทางบางตัวยังคำนึงถึงข้อมูลการจราจรอื่นๆ เช่นความหน่วงของเครือข่ายเพื่อสร้างเส้นทางที่ดีที่สุด เราเตอร์จะแลกเปลี่ยนข้อมูลกับเราเตอร์ข้างเคียงเป็นประจำ โดยปกติจะเป็นตารางการกำหนดเส้นทางจำนวนฮอปสำหรับเครือข่ายปลายทาง และอาจรวมถึงข้อมูลอื่นๆ ที่เกี่ยวข้องกับการจราจร เราเตอร์ที่ใช้โปรโตคอลเวกเตอร์ระยะทางจะอาศัยข้อมูลที่ได้รับจากเราเตอร์อื่นๆ เท่านั้น และจะไม่ประเมิน โทโพโล ยีของเครือข่าย[ 1 ]
โปรโตคอลแบบเวกเตอร์ระยะทางจะอัปเดตตารางเส้นทางของเราเตอร์และกำหนดเส้นทางที่แพ็กเก็ตจะถูกส่งไปโดยฮอปถัดไปซึ่งก็คืออินเทอร์เฟซขาออกของเราเตอร์และที่อยู่ IP ของอินเทอร์เฟซของเราเตอร์ปลายทาง ระยะทางคือการวัดต้นทุนในการเข้าถึงโหนดใดโหนดหนึ่ง เส้นทางที่มีต้นทุนต่ำที่สุดระหว่างสองโหนดใดๆ คือเส้นทางที่มีระยะทางน้อยที่สุด
ในโปรโตคอลการกำหนดเส้นทางแบบเวกเตอร์ระยะทาง การอัปเดตจะดำเนินการเป็นระยะ โดยที่ตารางการกำหนดเส้นทางทั้งหมดหรือบางส่วนของเราเตอร์จะถูกส่งไปยังเราเตอร์ข้างเคียงทั้งหมดที่กำหนดค่าให้ใช้โปรโตคอลการกำหนดเส้นทางแบบเวกเตอร์ระยะทางเดียวกัน เมื่อเราเตอร์ได้รับข้อมูลนี้แล้ว ก็จะสามารถแก้ไขตารางการกำหนดเส้นทางของตนเองเพื่อสะท้อนการเปลี่ยนแปลง และแจ้งให้เราเตอร์ข้างเคียงทราบถึงการเปลี่ยนแปลงนั้น กระบวนการนี้ถูกอธิบายว่าเป็น 'การกำหนดเส้นทางโดยข่าวลือ' เนื่องจากเราเตอร์อาศัยข้อมูลที่ได้รับจากเราเตอร์อื่น และไม่สามารถตรวจสอบได้ว่าข้อมูลนั้นถูกต้องและเป็นจริงหรือไม่ มีคุณสมบัติหลายอย่างที่สามารถใช้เพื่อช่วยแก้ไขปัญหาความไม่เสถียรและข้อมูลการกำหนดเส้นทางที่ไม่ถูกต้อง
การพัฒนาการกำหนดเส้นทางตามเวกเตอร์ระยะทาง
โปรโตคอลการกำหนดเส้นทางที่เก่าแก่ที่สุดและโปรโตคอลเวกเตอร์ระยะทางที่เก่าแก่ที่สุด คือโปรโตคอลข้อมูลการกำหนดเส้นทาง เวอร์ชัน 1 (RIPv1) RIPv1 ได้รับการกำหนดมาตรฐานอย่างเป็นทางการในปี 1988 [ 2 ]โปรโตคอลนี้สร้างเส้นทางที่สั้นที่สุดในเครือข่ายโดยอาศัยจำนวนฮอปเท่านั้น นั่นคือจำนวนเราเตอร์ที่ต้องผ่านเพื่อไปยังเครือข่ายปลายทาง RIP เป็นโปรโตคอลเกตเวย์ภายในดังนั้นจึงสามารถใช้ในเครือข่ายท้องถิ่น (LAN) บนเราเตอร์ภายในหรือเราเตอร์ขอบเขตได้ เราเตอร์ที่ใช้ RIPv1 จะแลกเปลี่ยนตารางการกำหนดเส้นทางกับเราเตอร์ข้างเคียงโดยการออกอากาศแพ็กเก็ต RIPv1 ทุกๆ 30 วินาทีไปยังเครือข่ายที่เชื่อมต่อทั้งหมด RIPv1 ไม่เหมาะสำหรับเครือข่ายขนาดใหญ่เนื่องจากจำกัดจำนวนฮอปไว้ที่ 15 ข้อจำกัดจำนวนฮอปนี้ถูกนำมาใช้เพื่อหลีกเลี่ยงลูปการกำหนดเส้นทาง แต่ก็หมายความว่าเครือข่ายที่เชื่อมต่อผ่านเราเตอร์มากกว่า 15 ตัวจะไม่สามารถเข้าถึงได้[ 3 ]
โปรโตคอลเวกเตอร์ระยะทางที่ออกแบบมาเพื่อใช้ในเครือข่ายบริเวณกว้าง (WAN) คือBorder Gateway Protocol (BGP) BGP เป็นโปรโตคอลเกตเวย์ภายนอกดังนั้นจึงถูกนำไปใช้บนเราเตอร์ขอบเขตและภายนอกบนอินเทอร์เน็ตโดยจะแลกเปลี่ยนข้อมูลระหว่างเราเตอร์ผ่าน เซสชัน Transmission Control Protocol (TCP) เราเตอร์ที่มีการใช้งาน BGP จะกำหนดเส้นทางที่สั้นที่สุดในเครือข่ายโดยพิจารณาจากปัจจัยต่างๆ นอกเหนือจากจำนวนฮอป นอกจากนี้ ผู้ดูแลระบบยังสามารถกำหนดค่า BGP เพื่อให้บางเส้นทางมีความสำคัญหรือหลีกเลี่ยงได้ BGP ถูกใช้โดยผู้ให้บริการอินเทอร์เน็ต (ISP) และบริษัทโทรคมนาคม[ 4 ]
Among the distance-vector protocols that have been described as a hybrid, because it uses routing methods associated with link-state routing protocols, is the proprietary Enhanced Interior Gateway Routing Protocol (EIGRP). It was developed by Cisco in the 1980s and was designed to offer better convergence and cause less network traffic between routers than the link-state routing protocol Open Shortest Path First (OSPF).[5]
Another example of a distance-vector routing protocol is Babel.
Count to infinity problem
The Bellman–Ford algorithm does not prevent routing loops from happening and suffers from the count to infinity problem. The core of the count to infinity problem is that if A tells B that it has a path somewhere, there is no way for B to know if the path has B as a part of it. To see the problem, imagine a subnet connected like A–B–C–D–E–F, and let the metric between the routers be "number of jumps". Now suppose that A is taken offline. In the vector-update-process B notices that the route to A, which was distance 1, is down – B does not receive the vector update from A. The problem is, B also gets an update from C, and C is still not aware of the fact that A is down – so it tells B that A is only two jumps from C (C to B to A). Since B doesn't know that the path from C to A is through itself (B), it updates its table with the new value "B to A = 2 + 1". Later on, B forwards the update to C and due to the fact that A is reachable through B (From C's point of view), C decides to update its table to "C to A = 3 + 1". This slowly propagates through the network until it becomes infinity (in which case the algorithm corrects itself, due to the relaxation property of Bellman-Ford).
Workarounds and solutions
RIP uses the split horizon with poison reverse technique to reduce the chance of forming loops and uses a maximum number of hops to counter the 'count to infinity' problem. These measures avoid the formation of routing loops in some, but not all, cases.[6] The addition of a hold time (refusing route updates for a few minutes after a route retraction) avoids loop formation in virtually all cases, but causes a significant increase in convergence times.
เมื่อไม่นานมานี้ มีการพัฒนาโปรโตคอลเวกเตอร์ระยะทางแบบไร้ลูปจำนวนมาก ตัวอย่างที่โดดเด่น ได้แก่EIGRP , DSDVและBabelโปรโตคอลเหล่านี้หลีกเลี่ยงการเกิดลูปในทุกกรณี แต่มีข้อเสียคือมีความซับซ้อนมากขึ้น และการใช้งานก็ชะลอตัวลงเนื่องจากความสำเร็จของโปรโตคอลการกำหนดเส้นทางแบบสถานะลิงก์เช่นOSPF
ตัวอย่าง
ในเครือข่ายนี้เรามีเราเตอร์ 4 ตัว ได้แก่ A, B, C และ D:
เรากำหนดเวลาปัจจุบัน (หรือรอบการทำงาน) ในอัลกอริทึมด้วย T และเริ่มต้น (ที่เวลา 0 หรือ T=0) โดยการสร้างเมทริกซ์ระยะทางสำหรับแต่ละเราเตอร์ไปยังเพื่อนบ้านที่อยู่ติดกัน เมื่อเราสร้างตารางการกำหนดเส้นทางด้านล่าง เส้นทางที่สั้นที่สุดจะถูกไฮไลต์ด้วยสีเขียว และเส้นทางที่สั้นที่สุดใหม่จะถูกไฮไลต์ด้วยสีเหลือง คอลัมน์สีเทาแสดงถึงโหนดที่ไม่ใช่เพื่อนบ้านของโหนดปัจจุบัน ดังนั้นจึงไม่ถือว่าเป็นทิศทางที่ถูกต้องในตาราง สีแดงแสดงถึงรายการที่ไม่ถูกต้องในตาราง เนื่องจากรายการเหล่านั้นอ้างอิงถึงระยะทางจากโหนดไปยังตัวมันเอง หรือผ่านตัวมันเอง
| ที=0 |
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ณ จุดนี้ เราเตอร์ทั้งหมด (A, B, C, D) มี "เส้นทางที่สั้นที่สุด" ใหม่สำหรับ DV ของตน (รายการระยะทางจากเราเตอร์เหล่านั้นไปยังเราเตอร์อื่นผ่านเราเตอร์ข้างเคียง) เราเตอร์แต่ละตัวจะกระจาย DV ใหม่นี้ไปยังเราเตอร์ข้างเคียงทั้งหมด: A ไปยัง B และ C, B ไปยัง C และ A, C ไปยัง A, B และ D, และ D ไปยัง C เมื่อเราเตอร์ข้างเคียงแต่ละตัวได้รับข้อมูลนี้ พวกมันจะคำนวณเส้นทางที่สั้นที่สุดใหม่โดยใช้ข้อมูลนั้น ตัวอย่างเช่น: A ได้รับข้อมูลระยะทาง (DV) จาก C ที่บอก A ว่ามีเส้นทางผ่าน C ไปยัง D โดยมีระยะทาง (หรือค่าใช้จ่าย) เท่ากับ 5 เนื่องจาก "เส้นทางที่สั้นที่สุด" ปัจจุบันไปยัง C คือ 23 ดังนั้น A จึงรู้ว่ามีเส้นทางไปยัง D ที่มีค่าใช้จ่าย 23+5=28 เนื่องจากไม่มีเส้นทางที่สั้นกว่านี้ที่ A รู้ จึงใส่ค่านี้เป็นค่าประมาณปัจจุบันสำหรับเส้นทางที่สั้นที่สุดจากตัวมันเอง (A) ไปยัง D ผ่าน C | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ที=1 |
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| อีกครั้งหนึ่ง เราเตอร์ทั้งหมดได้รับ "เส้นทางที่สั้นที่สุด" ใหม่ในรอบที่ผ่านมา (ที่ T=1) ดังนั้นพวกมันจึงส่งค่า DV ของตนไปยังเราเตอร์เพื่อนบ้าน ซึ่งจะกระตุ้นให้เราเตอร์เพื่อนบ้านแต่ละตัวคำนวณระยะทางที่สั้นที่สุดของตนใหม่อีกครั้ง ตัวอย่างเช่น: A ได้รับข้อมูลระยะทาง (DV) จาก B ที่บอก A ว่ามีเส้นทางผ่าน B ไปยัง D โดยมีระยะทาง (หรือค่าใช้จ่าย) 7 เนื่องจาก "เส้นทางที่สั้นที่สุด" ปัจจุบันไปยัง B คือ 3 ดังนั้น A จึงรู้ว่ามีเส้นทางไปยัง D ที่มีค่าใช้จ่าย 7+3=10 เส้นทางไปยัง D ที่มีความยาว 10 (ผ่าน B) นี้สั้นกว่า "เส้นทางที่สั้นที่สุด" เดิมไปยัง D ที่มีความยาว 28 (ผ่าน C) ดังนั้นมันจึงกลายเป็น "เส้นทางที่สั้นที่สุด" ใหม่ไปยัง D | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ที=2 |
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| คราวนี้ มีเพียงเราเตอร์ A และ D เท่านั้นที่มีเส้นทางที่สั้นที่สุดใหม่สำหรับ DV ของพวกมัน ดังนั้นพวกมันจึงกระจาย DV ใหม่ไปยังเราเตอร์ข้างเคียง: A กระจายไปยัง B และ C และ D กระจายไปยัง C การทำเช่นนี้ทำให้เราเตอร์ข้างเคียงแต่ละตัวที่ได้รับ DV ใหม่คำนวณเส้นทางที่สั้นที่สุดใหม่ อย่างไรก็ตาม เนื่องจากข้อมูลจาก DV ไม่ได้ให้เส้นทางที่สั้นกว่าที่พวกมันมีอยู่แล้วในตารางการกำหนดเส้นทาง ดังนั้นจึงไม่มีการเปลี่ยนแปลงใดๆ ในตารางการกำหนดเส้นทาง | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ที=3 |
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ไม่มีเราเตอร์ใดมีเส้นทางที่สั้นที่สุดใหม่ที่จะส่งออกไป ดังนั้น เราเตอร์จึงไม่ได้รับข้อมูลใหม่ใด ๆ ที่อาจเปลี่ยนแปลงตารางการกำหนดเส้นทางของพวกมัน อัลกอริทึมจึงหยุดทำงาน | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
อ่านเพิ่มเติม
- ส่วน "Link-State เทียบกับ Distance Vector" ถูกเก็บถาวรเมื่อวันที่ 14 ธันวาคม 2010 ในWayback Machineในบท "พื้นฐานการกำหนดเส้นทาง" ในหนังสือ"Internetworking Technology Handbook" ของ Cisco
- ส่วนที่ 5.2 "อัลกอริธึมการกำหนดเส้นทาง"ในบทที่ "5 ชั้นเครือข่าย" จากหนังสือ "เครือข่ายคอมพิวเตอร์" ฉบับพิมพ์ครั้งที่ 5 โดย Andrew S. Tanenbaum และ David J. Wetherall