EIGRP นั้นถือได้ว่าเป็น เราติ้งโปรโตคอลที่มีความรวดเร็วสูงสุดของซิสโก้ในการค้นหาเส้นทางภายใน Intra-AS (Interior Routing Protocol: เราติ้งโปรโตคอลภายใน Autonomous System) ซึ่ง ในเราติ้งโปรโตคอลแบบ EIGRP นี้ จะเป็นการนำเอาข้อดีของการเราติ้งแบบ Distance Vector และ Link State มาผสมผสานกัน (ในหนังสือบางเล่มจะเรียก เราติ้งโปรโตคอลแบบนี้ว่า “Hybrid” (ลูกผสม) หรือ Advanced Distance Vector) โดยที่เราติ้งโปรโตคอลแบบ EIGRP นี้จะใช้เทคนิคที่เรียกว่า “Diffusing Computations (DUAL)” ซึ่งจะได้กล่าวต่อไปในบทความนี้ ในการค้นหาเส้นทาง และการอัพเดตเราติ้งเทเบิลที่รวดเร็ว รวมถึงการรับรู้ต่อเส้นทางที่ไม่สามารถใช้งานได้อย่างรวดเร็วอีกด้วย และ ที่สำคัญคือ เราติ้งโปรโตคอลแบบ EIGRP นี้ เป็นเราติ้งโปรโตคอลเฉพาะของทางซิสโก้ (Cisco’s Proprietary) ดังนั้น เราจึงไม่อาจที่จะรันเราติ้งโปรโตคอลแบบ EIGRP ร่วมกับเราเตอร์จากเวนเดอร์อื่นๆ ที่ไม่ใช่ซิสโก้ได้
*** ใน เราติ้งโปรโตคอล EIGRP นี้ มีค่า Administrative Distance คือ 90 ในแบบ Intra-AS และ 170 เมื่อมีการเราท์ออกนอก AS ของตน
กระบวนการทำงานของ EIGRP
ในเราติ้งโปรโตคอลแบบ EIGRP นี้ จะมีส่วนประกอบหลักๆ ในการทำงานอยู่ 4 ส่วน ได้แก่
- Protocol-Dependent Modules
- Reliable Transport Protocol (RTP)
- Neighbor Discovery/Recovery
- Diffusing Update Algorithms (DUAL)
Protocol-Dependent Modules
ในเราติ้งโปรโตคอลแบบ EIGRP นี้ จะมีการรองรับโมดูลของ Routed Protocols (เช่น IP, IPX, AppleTalk) มาโดยเฉพาะ เช่น ใน โมดูลของ IPX EIGRP ก็จะสามารถที่จะแลกเปลี่ยนข้อมูลการเราติ้งกับ IPX RIP ได้ทันที โดยที่ โปรโตคอลของ EIGRP จะทำการ “Route Distribution” ให้เองโดยอัตโนมัติ หากว่าทั้งสองโปรเซสนี้อยู่ภายใต้ Autonomous System เดียวกัน ซึ่งจะนำไปสู่การคำนวณเส้นทางแบบ DUAL ในโปรเซสของ EIGRP
โดยใน โมดูลของ EIGRP นี้จะทำการ Encapsulation ลงไปใน Network Layer Protocol เช่น โมดูลของ EIGRP IPX ก็จะทำการ Encapsulation ลงไปในแพคเกตของ IPX ในชั้นเลเยอร์ที่ 3 ของ OSI 7 Layer Model
Reliable Transport Protocol
RTP ในเราติ้งโปรโตคอลแบบ EIGRP นี้ จะเป็นการการันตีในการส่งแพคเกต EIGRP ไปถึงกลุ่มของเราเตอร์ที่รัน EIGRP นี้ โดยการใช้อัลกอรึทึมเฉพาะของทางซิสโก้ ก็คือ “Reliable Multicast” โดยแพคเกตของ EIGRP ที่รับส่งกันในหมู่ของเราเตอร์ที่รันเราติ้งโปรโตคอลนี้ จะส่งไปยังแอดเดรส 224.0.0.10 ซึ่งเป็นมัลติคาส์กแอดเดรสเฉพาะของ EIGRP โดยที่ เราเตอร์ที่รัน EIGRP นี้ โดยที่ แพคเกตที่เราเตอร์ต้นทางส่งไปนั้น จะมีการบันทึกหมายเลข Sequences Number ลงไปในแพคเกต โดยที่ หมายเลข Sequences No. นี้จะเพิ่มขึ้นทุกครั้งที่เราเตอร์ต้นทางมีการส่งแพคเกต ด้วยเทคนิคของ Sequences No. นี้เองที่ทำให้มันรู้ว่าแพคเกตนั้นๆ เป็นแพคเกตที่ซ้ำ (Duplicate) หรือ เป็นแพคเกตที่เก่ากว่าที่มันได้รับหรือไม่
หากว่าเราเตอร์ต้นทางไม่ได้รับการตอบรับกลับมาจากเราเตอร์เพื่อนบ้าน มันจะทำการสลับไปส่งแพคเกต EIGRP ในแบบ Unicast แทน ซึ่งจะทำการส่งซ้ำ (Retransmission) ถึง 16 ครั้ง ก่อนที่มันจะแน่ใจว่า เราเตอร์เพื่อนบ้านนั้นได้ตายลงไปแล้ว ดังนั้น เราจึงเรียกพฤติกรรมในการส่งแพคเกตของ EIGRP นี้ว่าเป็น “Reliable Multicast” โดยที่ แพคเกตของ EIGRP จะมีโปรโตคอลฟิลด์ หมายเลข 88 ใน IP Header และมีประเภทของแพคเกตดังนี้
- Hello ใช้ในการค้นหาเราเตอร์เพื่อนบ้านและเช็คสถานะ Hello Packet นี้จะส่งแบบมัลติคาส์ก ไม่จำเป็นต้องมีการการันตีของข้อมูล
- Acknowledgement (ACKs) เป็น การตอบกลับ Packet ที่ส่งแบบ Unicast โดยที่ต้องการการันตีในการส่งถึงเราเตอร์ต้นทาง
- Update เป็นการส่งอัพเดตของเราติ้งเทเบิลให้แก่เราเตอร์เพื่อนบ้าน มันไม่เหมือนกันกับเราติ้งโปรโตคอลแบบ RIP ก็คือ มันจะทำการส่งเราติ้งเทเบิลออกไปเมื่อเราเตอร์เพื่อนบ้านนั้นมีการเปลี่ยนแปลงเท่านั้น หรือ เมื่อมันได้ทำการฟอร์มความสัมพันธ์กับเราเตอร์เพื่อนบ้านเป็นครั้งแรกเท่านั้น มันจะทำการส่งแบบ Unicast หากว่าเราเตอร์เพื่อนบ้านเพียงตัวเดียวต้องการข้อมูลเราติ้งเทเบิลของมัน แต่ มันจะทำการส่งเราติ้งเทเบิลแบบมัลติคาส์ก หากว่าเราเตอร์เพื่อนบ้านหลายๆ ตัวต้องการข้อมูลเหมือนๆกัน เป็นการลดทราฟฟิกที่เกิดขึ้นในระบบ โดยที่ แพคเกต Update นี้ต้องการการันตีการส่งของข้อมูล
- Query and Reply ถูกใช้โดยโปรเซสของ DUAL อัลกอริทึมในการขอข้อมูลที่จำเป็นในการคำนวณของมัน โดยที่ Query Packet สามารถที่จะเป็น Unicast หรือ Multicast ก็ได้ แต่ Packet Reply นั้น จำเป็นที่จะต้องเป็น Unicast เสมอ โดยที่ทั้ง Query และ Reply Packet นี้จำเป็นที่จะต้องมีการการันตีการส่งของข้อมูล
*** เวลาในการรอการตอบกลับก่อนที่ โปรเซสของ EIGRP จะตัดสินใจว่า จะใช้การส่งแบบมัลติคาส์กหรือยูนิคาส์ก มันจะคำนวณออกมาจากค่าของ Smooth Round Trip Time (SRTT) ของโปรโตคอล TCP
Neighbor Discovery/Recovery
เราเตอร์ที่รัน EIGRP จะใช้วิธีการส่งแพคเกตแบบมัลติคาส์กไปที่แอดเดรส 224.0.0.10 ซึ่งเป็นแอดเดรสเฉพาะของ EIGRP หากตัวอย่างของเรามี เราเตอร์ A และ เราเตอร์ B สมมติว่าเราเตอร์ A ได้รับแพคเกตมาจากเราเตอร์ B แล้ว มันจะทำการเพิ่ม IP Address ของเราเตอร์ B ลงไปในตารางเพื่อนบ้านของตนเอง (จะได้กล่าวถึงตารางเพื่อนบ้านในหัวข้อถัดไป) และเราเตอร์ B ก็จะทำการเพิ่ม IP Address ของเราเตอร์ A ลงไปในตารางเพื่อนบ้านของตนเองเช่นเดียวกัน หลังจากนั้น มันก็จะทำการแลกเปลี่ยนเราติ้งเทเบิลกันด้วยแพคเกต Update ซึ่งเมื่อเน็ตเวิร์กอยู่ในสภาวะคงที่ (Converged) แล้ว มันจะทำการส่ง Hello Packet เพื่อคอยถามกันอยู่ตลอดว่า เราเตอร์อีกฝั่งยังมีชีวิตอยู่หรือไม่ ซึ่งหากว่าเราเตอร์นั้นไม่ได้รับแพคเกต Hello ตามเวลาที่กำหนดแล้ว มันจะประกาศไปยังเราเตอร์ตัวอื่นๆว่า ไม่สามารถไปถึงเส้นทางนั้นๆ ผ่านเราเตอร์ที่ดาวน์ลงไปได้ ทำให้ข้อมูลของเราเตอร์ตัวดังกล่าวถูกลบออกจากตารางเพื่อนบ้านออกไป ซึ่ง ระยะเวลาของ Hello Packet (Hello Interval) นี้ จะอยู่ที่ 5 วินาที ในเนตเวิร์กแบบ Ethernet หรือเนตเวิร์กที่มีสปีดสูงกว่า T1 (ค่าดีฟอลท์) แต่หากมีความเร็วต่ำกว่านี้ Hello Interval จะเท่ากับ 60 วินาที ซึ่ง แพคเกต Hello นี้ จะประกอบไปด้วย
EIGRP Version Number – เวอร์ชันของ EIGRP
AS Number – หมายเลขของ Autonomous System
Hold Value – ระยะเวลาที่ เราเตอร์ EIGRP จะรอดูสถานะของเพื่อนบ้านว่ายังมีชีวิตอยู่หรือไม่
K-Values – กลไกการถ่วงน้ำหนักของเราติ้งโปรโตคอล EIGRP (จะนำเสนอในหัวข้อถัดๆไป)
เราสามารถที่จะเปลี่ยนเวลาในการรอคอย Hello Packet นี้ได้ด้วยคำสั่ง ip hold-time eigrp ซึ่ง ระยะของการ Hold Time นี้ โดยดีฟอลท์จะเป็น 3 เท่าของ Hello Interval ซึ่งนั่นหมายถึง เราเตอร์ที่รัน EIGRP จะรับรู้ถึงการเปลี่ยนแปลงในลิงก์ได้ภายใน 15 วินาที ซึ่งถือว่าเร็วมากเมื่อเทียบกับ 180 วินาทีใน RIP หรือ 270 วินาทีใน IGRP
Diffusing Update Algorithms (DUAL)
DUAL เป็น อัลกอริทึมในการคำนวณหาเส้นทางที่ดีที่สุดของ EIGRP มันมีจุดเด่นทีสุดอยู่ที่ สปีดในการเข้าสู่สภาวะคงที่ (Convergence) ของเราเตอร์ที่รัน EIGRP ด้วยกัน ก่อนที่จะเข้าสู่เทคนิคในการคำนวณของ DUAL ก็จะมีการกล่าวถึงโปรเซสในการฟอร์มความสัมพันธ์ระหว่างเราเตอร์ EIGRP กันก่อนดังนี้
- เมื่อเราเตอร์สตาร์ทขึ้นมา เราเตอร์จะใช้ Hello Packet ในการค้นหาเราเตอร์เพื่อนบ้านที่รัน EIGRP ในมัลติคาส์กแอดเดรส 224.0.0.10
- เมื่อทำการฟอร์มความสัมพันธ์ได้แล้ว จะเรียกเราเตอร์เพื่อนบ้านนี้ว่า “Adjacency Router” และทำการแลกเปลี่ยนเราติ้งเทเบิลกัน และเก็บรายชื่อและ IP Address ของเราเตอร์เพื่อนบ้านนี้ ลงไปใน ตาราง Neighbor Table ของตนเอง
- ในเส้นทางแต่ละเส้นที่เราเตอร์แต่ละตัวได้รับมา จะถูกคำนวณด้วยผลลัพธ์ของระยะทางจากตัวมันเองไปยังอินเทอร์เฟซที่ติดต่อกับเพื่อนบ้าน บวกด้วยระยะทางรวมของเราเตอร์เพื่อนบ้านไปยังปลายทาง
- เส้นทางที่มีค่า Cost ที่ต่ำที่สุดจากตัวมันเองไปยังซับเน็ตปลายทาง จะถูกเรียกว่า Feasible Distance (FD)
- หากมีเส้นทางที่ดีกว่า FD ในการไปถึงปลายทาง โดยการประกาศมาจากทางเราเตอร์เพื่อนบ้าน จะเรียกว่า Advertise Distance (AD) ซึ่ง AD นี้ จะทำการเทียบว่า มีค่ามากกว่า FD หรือไม่ หากว่า AD น้อยกว่า FD นั่นอาจถือได้ว่า เส้นทางนั้นไม่มีการบวกค่าวนกลับมายัง FD ซึ่งเป็นสาเหตุที่ทำให้เกิดเราติ้งลูปได้ และ เส้นทางนั้นๆ จะถูกนำไปใส่ใน ตารางโทโปโลยี (Topology Table)
- EIGRP จะเลือกเส้นทางหลัก และเส้นทางสำรองไว้ใน Topology Table (สูงสุด 6 ซับเน็ตต่อปลายทาง) และ เส้นทางที่ดีที่สุดในการที่จะไปถึงปลายทางจากทั้งหมด จะนำมาจากการคำนวณดังต่อไปนี้
*** EIGRP จะมี Composite ทั้ง 5 ตัวในการคำนวณได้แก่
K1 = Bandwidth
K2 = Load
K3 = Delay
K4 = Reliability
K5 = MTU
(ความหมายทั้ง 5 ตัวนี้ สามารถหาอ่านได้ในเรื่อง Distance Vector ที่ได้เขียนไปก่อนหน้านี้แล้ว)
โดยมีการถ่วงน้ำหนักดังต่อไปนี้ คือ
K1=K3=1 และ K2=K4=K5=0 และ นำมาเข้าสมการได้ดังนี้คือ
Metric=256x[K1xBW+(K2xBW)/(256-Load)+K3xDelay]+[K5/(Rel+K4)]
Delay คือ ค่าของการดีเลย์โดยรวมจากอินเทอร์เฟซไปยังเส้นทาง
BW คือ ค่าแบนด์วิดธ์ของลิงก์ไปยังเส้นทางนั้นๆ
โดยดีฟอลท์แล้ว ค่าของ metric จะเท่ากับ BW+Delay
*** หากว่า ค่า K ของเราเตอร์สองตัวไม่เท่ากัน จะไม่สามารถฟอร์มความสัมพันธ์กันได้
เส้นทางที่มี Cost ที่ต่ำที่สุดในการไปถึงปลายทางแต่ละเส้น จะถูกบันทึกลงใน Routing Table และถูกเรียกว่า “Successor” ในขณะที่เส้นทางอื่นๆ ที่อยู่ภายใน Topology Table จะถูกเรียกว่า “Feasible Successor” ซึ่ง เมื่อเราเตอร์ที่รัน EIGRP ได้คำนวณเส้นทางทั้งหมดแล้ว จะเข้าสู่สภาวะคงที่ (Converged) และ หากมีการเปลี่ยนแปลงใดๆ ในโทโปโลยีนั้น (เช่น ลิงก์ได้ดาวน์ลงไป) เราเตอร์จะทำการนำเอา Feasible Successor ขึ้นมาเป็น Successor ทันที โดยไม่มีการคำนวณใหม่ และจะทำการส่งอัพเดตแบบ “Partial Update” หรือ อัพเดตตารางเราติ้งเทเบิลแค่ส่วนที่มีการเปลี่ยนแปลงไปยังเราเตอร์ Adjacency เท่านั้น ซึ่งเป็นการลดทราฟฟิกและเพิ่มความเร็วในการเข้าสู่สภาวะคงที่ (Converged) ได้เป็นอย่างดี แต่อย่างไรก็ตาม เหตุการณ์ที่ต้องทำให้ DUAL ต้องทำการคำนวณใหม่ก็ยังคงมีอยู่ ดังต่อไปนี้
- ไม่มีเส้นทางสำรองอื่นๆ ที่ไปยังปลายทาง
- เส้นทางที่ดีที่สุด เป็นเส้นทางที่ต้องวิ่งผ่านลิงก์ที่เป็น Successor เดิม
- มีเส้นทางใหม่ที่ดีกว่าเข้ามาแทนที่
- Cost ของ Successor เดิมนั้น มีการเพิ่มขึ้น หรือ Cost ของ Feasible Successor นั้นลดลงจนต่ำกว่า Successor เดิม
เมื่อทำการคำนวณ DUAL ใหม่ มันจะทำการส่ง Query Message ไปยังเราเตอร์ Adjacency ทั้งหมด เพื่อค้นหา Feasible Successor ก่อน และจึงใช้ DUAL คำนวณหา Successor ออกมาอีกที โดยที่เราเตอร์เพื่อนบ้านนั้น มีโอกาสที่จะตอบ Reply Messages ออกมาได้ ทั้งหมด 4 แบบ ดังนี้
- เราเตอร์ Adjacency ตอบกลับด้วย Infinity Metric หากมันไม่มีข้อมูลในเราติ้งเทเบิลเกี่ยวกับเส้นทางปลายทางนั้นๆ
- เราเตอร์ Adjacency ตอบกลับด้วยเส้นทางเดิม หากว่าเส้นทางนั้นยังคง Active อยู่
- เราเตอร์นั้นๆ ไม่มีเราเตอร์เพื่อนบ้านใดๆ ต่ออยู่เลย (เป็น ปลายทาง) มันจะส่ง Infinity Metric กลับมา
- เราเตอร์จะส่งเส้นทางที่ดีที่สุดมาใหม่ หากว่ามันมีเส้นทางหลายเส้นทางที่ไปถึงปลายทาง
ความหมายของ Hybrid Routing Protocol ของ EIGRP
เราติ้งโปรโตคอลแบบ EIGRP นั้น ที่ถูกเรียกว่าเป็น Hybrid (ลูกผสม) ระหว่าง Distance Vector และ Link State นั้น เนื่องมาจาก พฤติกรรมในการรับส่งข้อมูลกันในเราติ้ง EIGRP นั้น คล้ายคลึงกันกับ เราติ้งโปรโตคอลทั้งสองแบบดังต่อไปนี้
- EIGRP จะใช้เทคนิคของ Link State ในการใช้ Hello Packet ในการเช็คสถานะของเราเตอร์เพื่อนบ้านที่มันเชื่อมต่ออยู่ และมีลักษณะในการคำนวณหาเส้นทางที่ไม่มีลูปโดยไม่พึ่งฟีเจอร์ Split Horizon หรือ Poison Reverse (ใช้ DUAL ในการคำนวณแทนทั้งหมด) และมีการอัพเดตโทโปโลยีอย่างรวดเร็ว (Fast Trigger Update)
- EIGRP จะใช้เทคนิคของ Distance Vector ในการอัพเดตเราติ้งเทเบิลแบบ “Routing by Rumor” โดยการนำเอา Cost จากอินเทอร์เฟซตัวเอง บวกด้วย Cost ที่จะไปถึงเส้นทางปลายทางโดยรวมมาจากเราเตอร์เพื่อนบ้าน ไม่ได้เป็นการมองภาพรวมเหมือน Link State
คำสั่งอื่นๆ ของ EIGRP (คำสั่งหลักในการเซตเราติ้ง EIGRP จะนำเสนอในโอกาสถัดไป)
1. หากใน Network ของเรามี Network Address ที่ “Discontingous” หรือ มีแอดเดรสที่ไม่สอดคล้องกัน เช่น ลิงก์หนึ่งมี Network Address เป็น 192.168.100.0/24 และอีกลิงก์หนึ่งมีแอดเดรสเป็น 10.10.0.0/8 หากให้เราเตอร์ทำฟีเจอร์ Auto-Route Summarization (เป็นฟีเจอร์ที่ถูกเปิดใช้โดย default) บางทีอาจจะเกิดความผิดพลาดในการเราติ้งเกิดขึ้นมาก็เป็นได้ ซึ่ง คำสั่งที่จะมาหยุดการทำ Auto-Summarization นี้ได้แก่
Router(config)#router eigrp 100
Router(config-router)#no auto-summary
2. คำสั่งในการกระจายโหลดไปยังเส้นทางที่มี Cost ไม่เท่ากัน
Router(config)#router eigrp 100
Router(config-router)#network 192.168.100.0
Router(config)#variance <จำนวนเส้นทางที่ได้จากการคำนวณ DELAY+SUM Bandwdith (ไม่ได้กล่าวถึงในบทความนี้)>
3. คำสั่งในการหยุดการแพร่กระจายของ EIGRP Process ไม่ให้เข้าไปในอินเทอร์เฟซที่เจาะจง
Router(config)#router eigrp 100
Router(config-router)#passive-interface <อินเทอร์เฟซที่ต้องการเซต>
4. คำสั่งในการเลือกจำนวนเส้นทางสูงสุดในการกระจายโหลดออกไป
Router(config)#router eigrp 100
Router(config-router)#network 192.168.100.0
Router(config)#variance <จำนวนเส้นทางที่ได้จากการคำนวณ DELAY+SUM Bandwdith (ไม่ได้กล่าวถึงในบทความนี้)>
Router(config)#maximum-paths <จำนวนเส้นทาง>
5. คำสั่งในการทำ Manual Summarization
Router(config)#interface FastEthernet0/0
Router(config-if)#ip address <ip address> <subnet masks>
Router(config-if)#ip summary-address eigrp <หมายเลข AS> <sum IP> <sum subnet>
คำสั่งที่ใช้ในการตรวจสอบการทำงานของเราติ้งโปรโตคอล EIGRP
show ip route - ใช้ในการดูตารางเราติ้งเทเบิล
show ip route * - เคลียร์เราติ้งเทเบิล
show protocols – ใช้ในการดู Routed Protocol (เช่น IP, IPX) และดูสถานะของอินเทอร์เฟซที่รัน Routed Protocol นั้นๆ
show ip protocols – ใช้ในการดู สถานะของเราติ้งโปรโตคอล เวลาในการทำอัพเดตต่างๆ ของ EIGRP และ เราติ้งโปรโตคอลอื่นๆที่ได้รันไว้ รวมถึงการดูค่าของ Administrative Distance (AD)
show ip eigrp topology – ใช้ในการดูตารางโทโปโลยีของเราเตอร์ EIGRP
show ip eigrp neighbor detail – ใช้ในการดูตารางเราเตอร์เพื่อนบ้านที่รัน EIGRP
debug ip eigrp packet – ใช้ในการดูกระบวนการในการส่ง Packet กันในระหว่างอัพเดตระหว่างกลุ่มเราเตอร์ที่รัน EIGRP ด้วยกัน
debug ip eigrp neighbors – ใช้ในการดูกระบวนการค้นหาเราเตอร์เพื่อนบ้านระหว่างกลุ่มเราเตอร์ที่รัน EIGRP ด้วยกัน
undebug all – เป็นการยกเลิกการ Debug Process
ที่มา http://www.msit.mut.ac.th




ไม่มีความคิดเห็น:
แสดงความคิดเห็น