วิธีออกแบบเครือข่ายคอมพิวเตอร์ แบบ Open Shortest Path First (OSPF) โดยใช้โปรแกรม Cisco Packet Tracer
รายการอุปกรณ์
- อุปกรณ์คอมพิวเตอร์ End Devices ->Generic -> PC-PT PC0,1,2
- อุปกรณ์ Switches -> Switches 0,1,2 (2950T-24)
- อุปกรณ์ Routers -> Router 0,1,2,3 (1841)
Open Shortest Path First (OSPF) เป็น Routing Protocol แบบ Link State, การที่มีอัลกอริทึมในการค้นหาเส้นทางด้วยตัวเอง ซึ่งเปรียบเสมือนว่า ตัวของเราเตอร์ที่รัน OSPF ทุกตัวเป็นรูท (Root) หรือจุดเริ่มต้นของระบบไปยังกิ่งย่อยๆ หรือโหนด (Node) ต่างๆ ซึ่งเป็นเทคนิคในการลดเส้นทางที่วนลูป (Routing Loop) ของการ Routing ได้เป็นอย่างดี รวมถึงความสามารถในการ Convergence หรือการรับรู้ถึงความเปลี่ยนแปลงใน Topology หรือเส้นทางของ Network ได้อย่างรวดเร็วจนกระทั่งพูดได้เลยว่า แทบจะทันทีที่มีการเปลี่ยนแปลง Topology ขึ้นในระบบ และความสามารถในการรองรับการขยายของระบบ (Scalable) ได้อย่างดีเยี่ยม โปรโตคอลนี้เป็นโปรโตคอลแบบ Open Standard ถูกนำไปใช้ในหลายๆผู้ผลิตอุปกรณ์เน็ตเวิร์ค รวมถึงตัวของ Cisco เอง โปรโตคอลนี้รันภายใต้ อัลกอริทึมการหาเส้นทางแบบ Dijkstra ซึ่งข้อดีดังกล่าวนั้น ทำให้บรรดา Network Architect ต่างๆ นั้นนิยมเลือก OSPF มาเป็น Routing Protocol หลัก แทนที่ Routing Protocol แบบ Distance Vector เช่น RIP หรือ IGRP
คุณสมบัติเด่นๆของ OSPF คือ
1) อนุญาตให้สร้าง Area และ Autonomous System ด้วยตัวเอง
2) ช่วยลดการทำ Routing Update
3) รองรับ VLSM/CIDR เป็นการช่วยลด Routing Entry
4) ไม่มีการกำหนดจำนวนสูงสุดของ Hop Count เหมือนอย่างของ RIP
5) เป็นโปรโตคอลแบบ Open ไม่มี Vendor รายไหนเป็นเจ้าของ
และอีกข้อดีคือ การ Design เน็ตเวิร์คของเราสามารถทำเป็นแบบลำดับชั้น (Hierarchical) นั่นหมายถึงว่า เราสามารถแบ่งเน็ตเวิร์คขนาดใหญ่ๆ ให้กลายเป็นเน็ตเวิร์คย่อยๆได้ (Area)
ข้อดีของการออกแบบเป็นลำดับชั้น
1) ลด Routing Overhead
2) ลดเวลาการตอบสนองต่อการเปลี่ยนแปลง
3) ช่วยกำหนดขอบเขตในการเปลี่ยนแปลงของแต่ละ Network
ในการออกแบบ เราจะใช้ Area 0 (ซึ่งต้องมี หากเราออกแบบให้มีหลายๆ Area แต่หากเราใช้แค่ Area เดียวในระบบ เราไม่จำเป็นจะต้องใช้ Area 0) Router ที่เชื่อมระหว่าง Backbone (Area0) กับในแต่ละ Area ย่อยๆจะถูกเรียกว่า
Area Border Router หรือ ABR นอกจาก OSPF สามารถใช้งานภายใต้ Autonomous System เดียวกันได้แล้ว ยังสามารถเชื่อมต่อไปยัง Autonomous ตัวอื่นๆได้ Router ที่ทำหน้าที่นี้ถูกเรียกว่า Autonomous System Boundary Router
ข้อดีของ OSPF
- สนับสนุนการแบ่งเน็ตเวิร์กเป็นลำดับขั้น (Hierarchical Network)
- ใช้อัลกอริทึมของ Dijkstra (Link State) ในการค้นหาเส้นทาง และป้องกันเราติ้งลูป
- สนับสนุน Classless Routing และ CIDR (Classless Interdomain Routing)
- สามารถทำ Route Summarization เพื่อลดขนาดของเราติ้งเทเบิลได้
- เราติ้งอัพเดตสามารถที่จะควบคุมการส่งได้ ไม่เหมือน Routing Protocol แบบ Distance Vector ที่ต้องส่ง
- Routing Table ทั้งตัว ออกไป ตามช่วงเวลาที่กำหนด ทำให้สูญเสีย แบนด์วิดธ์ไปโดยไม่จำเป็น
- ในการส่ง Routing Update จะทำผ่าน มัลติคาสท์แอดเดรส (Multicast Address) ซึ่งมีข้อดี คือลดผลกระทบต่อ Host หรือ Client อื่นๆ จากการบรอดคาสท์ (Broadcast)
- สนับสนุนการทำ Authentication ทั้งแบบ Clear Text และ MD5
การทำงานของ OSPF ประกอบด้วย
1. Router ตรวจสอบการเชื่อมต่อกับเราเตอร์ข้างเคียง โดยส่ง hello packet
2. Router สร้าง Link State Packet (LSP) ซึ่งบรรจุข้อมูล Router เพื่อนบ้าน ที่เชื่อมต่ออยู่ (address, ชนิด interface, bandwidth)
3. Router ส่งกระจาย Link State Packet (LSP) ไปให้เพื่อนบ้านทั้งหมดจนมีข้อมูลเหมือนกัน
4. Router ทำการสร้างแผนที่โครงสร้างเครือข่ายและทำการคำนวณเส้นทางที่ดีที่สุดในแต่ละปลายทาง
เมื่อ OSPF เริ่มต้นการทำงาน Router แต่ละตัว จะเริ่มทำการจองหน่วยความจำใน Router สำหรับการทำงาน และสำหรับการเก็บตารางทั้ง Neighbor และ Topology
Hello Protocol, ถูกนำมาใช้ในการค้นหาเราเตอร์เพื่อนบ้าน การเริ่มต้นสร้างความสัมพันธ์ระหว่างกัน และการรักษาความสัมพันธ์ระหว่างเราเตอร์ที่รัน OSPF แต่ละตัว Hello Protocol จะใช้ Hello Packet (ซึ่งมีรายละเอียดย่อยๆอีก) ในการสำรวจเราเตอร์เพื่อนบ้าน โดยการส่งเป็นระยะเวลา (ส่งแบบ Multicast)
LSA Flooding เป็นวิธีการที่จะทำให้ Router แต่ละตัวแชร์ Routing Information กัน LSA จะประกอบไปด้วยข้อมูลของ link-state ที่แชร์กันทุกๆ Router ภายใน Area เดียวกัน
Network Topology จะสร้างจาก LSA Update และกระจายข้อมูลเหล่านี้ให้กับ Router ตัวอื่นๆ เพื่อให้เกิดการคำนวณเส้นทาง ในการ flood นี้จะใช้ Multicast address 224.0.0.5
ภายในแต่ละ Area แต่ละเราเตอร์ภายในนั้นจะทำการ คำนวณเส้นทางที่สั้นที่สุดในทุกๆ Network โดยการใช้ Algorithm ที่เรียกว่า SPF การคำนวณค่า Metric ของ OSPF เรามี Metric ใน OSPF ที่เรียกว่า Cost เป็นผลรวมของทุกๆขาออก (Outgoing Interface) ของ Router มีสูตรการคำนวณคือ 10^8/bandwidth
OSPF Overview
1. Instances หรือโปรโซสของ OSPF สามารถเริ่มได้ตั้งแต่ 1 - 65,535 แต่ไม่สมควรกระทำการรัน OSPF มากกว่า 1 โปรเซสพร้อมๆ กัน หากไม่จำเป็น
2. AREA ของ OSPF สามารถมีได้ถึง 2^32 หรือประมาณ 4,200,000 AREA
3. ในเราเตอร์ที่รัน OSPF จะต้องมี AREA 0 อยู่เสมอ ถือว่าเป็น Backbone AREA
4. หากกว่าเน็ตเวิร์กนั้นๆ มีหลาย AREA ทุกๆ AREA จะต้องคอนเน็คเข้าหา AREA 0 เสมอ อาจจะเป็นการต่ออินเทอร์เฟซเข้าหา AREA 0 หรือทำ Virtual Links วิ่งเข้าหา AREA 0 ก็ได้
5. Default Administrative Distance ของ OSPF คือ 110
OSPF Areas - ในความหมายของ Area ใน OSPF จะคล้ายๆ กับเป็น Autonomous System (AS) หนึ่งๆ ซึ่งเหมือนกับเป็นกลุ่มของเราเตอร์ที่รัน OSPF ด้วยกัน และมีขอบเขตในการแลกเปลี่ยนเราติ้งเทเบิลกันภายในกลุ่มของตัวเองเท่านั้นโดย Default
OSPF Areas characteristics:
1. Minimizes routing table entries - ลดปริมาณหน่วยความจำที่ใช้ในการจัดเก็บเร้าติ้งเทเบิล เพราะตารางเร้าติ้งเทเบิลที่เกิดขึ้นบนเราเตอร์แต่ละตัวสามารถได้รับการปรับแต่งให้มีขนาดเล็กลงได้ ด้วยการ Configure route summarization บนเราเตอร์ตัวริมที่เชื่อมต่อระหว่าง area หรือเรียกว่า Area Border Router
2. Localizes impact of a topology change within an area - จำกัดความถี่ในการคำนวณอัลกอริทึม SPF ใหม่ เมื่อมีการเปลี่ยนแปลงโทโพโลยีของเราเตอร์แต่ละตัว เพราะเราเตอร์จะคำนวณอัลกอริทึม SPF ใหม่ ก็ต่อเมื่อได้รับ LSA Update จากเราเตอร์ภายใน area เดียวกันเท่านั้น การคำนวณ SPF ใหม่จะมีผลต่อภาระโหลดของ CPU ของเราเตอร์
3. Link State Advertisement (LSA) - เป็นแพคเกตข้อมูลที่ OSPF Process ใช้ในการแลกเปลี่ยนสถานะของอินเทอร์เฟซและลิงค์ในเราเตอร์ที่รัน OSPF ด้วยกัน
Detailed LSA flooding stops at the area boundary - จำกัดปริมาณเน็ตเวิร์กที่เกิดขึ้นอันเนื่องมาจากการส่ง LSA Update ให้อยู่ภายในขอบเขตของ area เดียวกัน (LSA Update จะไม่ถูกส่งข้ามไป area อื่น)
คำศัพท์ที่ควรรู้เกี่ยวกับ OSPF
1) Link คือ Network หรือ Router Interface ที่กำหนดให้แก่แต่ละ Network เมื่อ Interface ได้กำหนดให้รัน OSPF มันจะถูกเรียกว่า “Link” และจะถูกให้สามารถรับส่งข้อมูลได้
2) Router ID คือ IP Address ที่กำหนดให้แก่ Router อุปกรณ์ Cisco เลือก Router ID จาก IP Address ที่สูงที่สุดโดยหาจากขา Interface (ที่ Active) ของมันเอง แต่ขา Interface ที่เป็นแบบ Physical สามารถที่จะ Down ได้ เราจึงควรใช้ Interface แบบ Logical แทน ด้วยการใช้ Loopback Interface ซึ่งจะ Down ก็ต่อเมื่อ Router ทั้งลูก Down ไปเท่านั้น
3) Neighbor คือ การที่ Router 2 ตัวหรือมากกว่าเชื่อมต่อกัน การที่จะเป็นเพื่อนบ้านกันได้ ต้องประกอบด้วย
- Area ID
- Stub area flag
- Authentication password (ถ้าได้รับการ Enable)
- Hello and Dead Intervals (ต้องเท่ากันทั้ง Area)
4) Adjacency คือ ความสัมพันธ์ ระหว่าง Router ที่รัน OSPF และต้อง ”อนุญาต” ให้แลกเปลี่ยนข้อมูลระหว่างกัน (ต่างกับ EIGRP ตรงที่ต้องแชร์ข้อมูลทุกอย่างให้กับเพื่อนบ้าน) OSPF จะเลือกการแชร์ข้อมูล และแลกเปลี่ยนข้อมูลกันกับเพื่อนบ้านที่มีความสัมพันธ์กันเท่านั้น “ไม่ใช่ Router ทั้งหมดจะเป็น Adjacency” ทั้งหมดนี้ขึ้นอยู่กับประเภทของ Network และ Configuration ของเราเตอร์ เราเตอร์จะสร้างความสัมพันธ์กับฝั่งตรงข้ามของการเชื่อมต่อ
5) Designated Router (DR) คือ เราเตอร์ที่ถูกเลือกจาก Broadcast Network เดียวกัน ในการทำหน้าที่เป็นศูนย์กลางในการสร้างความสัมพันธ์ และทำหน้าที่ในการรับข้อมูลการทำ Routing และส่งข้อมูลให้กับสมาชิกใน Broadcast Network เดียวกัน วิธีการเลือก DR คือเลือกจากค่า Priority สูงสุดใน Router (Router ID) Router ทั้งหมดใน Network จะสร้างความสัมพันธ์กับ DR และ BDR เพื่อให้แน่ใจว่าได้ Synchronize ข้อมูลระหว่างกัน
6) Backup designed router เป็นตัว Standby ของ DR
7) Hello protocol เป็นโปรโตคอลเพื่อการค้นหาเพื่อนบ้านและการตรวจสอบสถานะของเพื่อนบ้าน เมื่อใช้ร่วมกับ LSA มันจะสามารถสร้าง Topological database ได้ การทำงานของ Hello Protocol ใช้ Multicast Address 224.0.0.5 ส่งทุก 30 วินาที
8) Neighborship database เก็บรายการข้อมูลของ OSPF Router เพื่อนบ้านไว้ วิธีการเก็บก็คือรับมาจาก LSA Packet ที่รับได้จากใน Area เดียวกัน และใช้ Dijkstra algorithm ในการค้นหาเส้นทางที่สั้นที่สุด
9) Link State Advertisement (LSA) คือ OSPF data packet ที่ใช้ในการตรวจสอบสถานะของ Router มีหลายประเภท และ OSPF จะรับส่ง LSA เฉพาะ Router ที่ทำ adjacencies กันเท่านั้น
10) OSPF Area เป็นกลุ่มของ Router ที่ต่อเนื่องกัน หรือเรียกง่ายๆ ก็คือกลุ่มเดียวกัน มีหมายเลข Area เดียวกัน แต่ใน Router ตัวหนึ่งสามารถเข้าได้หลาย Area ดังนั้น area id จึงขึ้นอยู่กับขา Interface ของ Router เป็นหลัก Router ใน Area เดียวกันจะมี Topology Table เดียวกัน
11) Broadcast (multi-access) Ethernet เปิดให้อุปกรณ์หลายๆตัวใช้ Network เดียวกัน การทำ Broadcast สามารถส่งข้อมูลให้กับทุกโหนดในเน็ตเวิร์ค
12) Nonbroadcast multi-access ตัวอย่างเช่น Frame relay, X.25
สรุป OSPF with multi AREAS
OSPF เป็นจำพวก Link State จะมีการจับ Neighbor ก่อนแลก Route กัน, Config ด้วยระบบ Area, Summary ต้องทำเป็น Per Area, คำนวณ Metric ด้วย Bandwidth, การ Filter มีข้อจำกัดเนื่องจากมีกฏของ Area เข้ามาเกี่ยวข้อง เทียบกับ RIP แล้วถือว่ามีประสิทธิภาพกว่ามาก แต่ก็ Config ยากกว่า ถ้า Design ไม่ดี
ขั้นตอนการออกแบบ
- วางอุปกรณ์ ตามรายการอุปกรณ์ เชื่อมต่อ อุปกรณ์ชนิดเดียวกันด้วยสาย Crossover อุปกรณ์ต่างชนิดด้วยสาย Straight-through
- Configuring IP address
2.1 Config address ให้อุปกรณ์คอมพิวเตอร์
คอมพิวเตอร์ PC0 ( เชื่อมต่อ Switch0 port FastEthernet0/1) (Network Address 192.168.1.0/26)
Config>Global Settings > กำหนดค่าให้ Gateway (192.168.1.1)
Config>FastEthernet0> กำหนดค่าให้ IP address(192.168.1.2) และ Subnet Mask (255.255.255.192)
คอมพิวเตอร์ PC1 ( เชื่อมต่อ Switch0 port FastEthernet0/1) (Network Address 192.168.1.64/26)
Config>Global Settings > กำหนดค่าให้ Gateway (192.168.1.65)
Config>FastEthernet0> กำหนดค่าให้ IP address(192.168.1.66) และ Subnet Mask(255.255.255.192)
คอมพิวเตอร์ PC2 ( เชื่อมต่อ Switch0 port FastEthernet0/1) (Network Address 192.168.1.128/26)
Config>Global Settings > กำหนดค่าให้ Gateway (192.168.1.129)
Config>FastEthernet0> กำหนดค่าให้ IP address(192.168.1.130) และ Subnet Mask(255.255.255.192)
2.2 Config address อุปกรณ์ Router
Router0
Router>en
Router#conf t
Router(config)#interface Fa0/0
Router(config-if)#ip address 10.10.10.6 255.255.255.252
Router(config-if)#no shutdown
Router(config-if)#interface Fa0/1
Router(config-if)#ip address 10.10.10.9 255.255.255.252
Router(config-if)#no shutdown
Router(config)#interface Eth0/1/0
Router(config-if)#ip address 192.168.1.65 255.255.255.192
Router(config-if)#no shutdown
Router1
Router>en
Router#conf t
Router(config)#interface Fa0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.192
Router(config-if)#no shutdown
Router(config-if)#interface Fa0/1
Router(config-if)#ip address 10.10.10.5 255.255.255.252
Router(config-if)#no shutdown
Router(config)#interface Eth0/1/0
Router(config-if)#ip address 10.10.10.17 255.255.255.252
Router(config-if)#no shutdown
Router2
Router>en
Router#conf t
Router(config)#interface Fa0/0
Router(config-if)#ip address 10.10.10.10 255.255.255.252
Router(config-if)#no shutdown
Router(config-if)#interface Fa0/1
Router(config-if)#ip address 10.10.10.13 255.255.255.252
Router(config-if)#no shutdown
Router(config)#interface Eth0/1/0
Router(config-if)#ip address 10.10.10.18 255.255.255.252
Router(config-if)#no shutdown
Router3
Router>en
Router#conf t
Router(config)#interface Fa0/0
Router(config-if)#ip address 10.10.10.14 255.255.255.252
Router(config-if)#no shutdown
Router(config-if)#interface Fa0/1
Router(config-if)#ip address 192.168.1.129 255.255.255.192
Router(config-if)#no shutdown
*Verifying Route Configuration
Router>en
Router#show running-config
Router#show ip route
Router#show ip protocols
2.3 Configuration OSPF Protocol
Router0
Router>en
Router#conf t
Router(config)#router ospf 1
Router(config-router)#network 192.168.1.64 0.0.0.63 area 200
Router(config-router)#network 10.10.10.8 0.0.0.3 area 0
Router(config-router)#network 10.10.10.4 0.0.0.3 area 0
Router1
Router>en
Router#conf t
Router(config)#router ospf 1
Router(config-router)#network 192.168.1.0 0.0.0.63 area 100
Router(config-router)#network 10.10.10.16 0.0.0.3 area 0
Router(config-router)#network 10.10.10.4 0.0.0.3 area 0
Router2
Router>en
Router#conf t
Router(config)#router ospf 1
Router(config-router)#network 10.10.10.16 0.0.0.3 area 0
Router(config-router)#network 10.10.10.8 0.0.0.3 area 0
Router(config-router)#network 10.10.10.12 0.0.0.3 area 300
Router3
Router>en
Router#conf t
Router(config)#router ospf 1
Router(config-router)#network 10.10.10.12 0.0.0.3 area 300
Router(config-router)#network 192.168.1.128 0.0.0.63 area 300
ผลการทดสอบ
ทำการ Ping/ trace route จาก PC0 PC1 and PC2 สามารเชื่อมต่อกันได้ตามที่ได้ config ไว้
ทดสอบ tracert จาก PC0(192.168.1.2) ไปยัง PC1 (192.168.1.66) and PC2 (192.168.1.130)
ทดสอบ tracert จาก PC1 (192.168.1.66) tracert to PC0 (192.168.1.2) and PC2 (192.168.1.130)
ทดสอบ tracert จาก PC2 (192.168.1.130) ไปยัง PC0 (192.168.1.2) and PC1 (192.168.1.66)
ทดสอบ ping จาก PC2 (192.168.1.130) ไปยัง PC0 (192.168.1.2) and PC1 (192.168.1.66)