
บทนำ: ทำไม OSPF ถึงเป็น Routing Protocol ที่สำคัญที่สุดในโลก Enterprise Network
ในโลกของ Network Engineering การเลือก Routing Protocol ที่เหมาะสมเป็นหนึ่งในการตัดสินใจที่สำคัญที่สุด เพราะ Routing Protocol คือหัวใจที่ทำให้ Router ทุกตัวในเครือข่ายรู้เส้นทางไปยังปลายทางทุกจุด และสามารถส่ง Packet ไปถูกทิศทาง OSPF หรือ Open Shortest Path First เป็น Routing Protocol ที่ได้รับความนิยมสูงสุดในระดับ Enterprise Network ทั่วโลก ไม่ว่าจะเป็นองค์กรขนาดเล็ก ขนาดกลาง หรือขนาดใหญ่ที่มี Router นับร้อยตัว OSPF เป็นตัวเลือกแรกที่ Network Engineer นึกถึง
OSPF ถูกพัฒนาครั้งแรกในปี 1989 โดย Internet Engineering Task Force (IETF) ภายใต้ RFC 2328 สำหรับ OSPFv2 (IPv4) และ RFC 5340 สำหรับ OSPFv3 (IPv6) OSPF เป็น Open Standard ไม่ผูกกับ Vendor ใด Vendor ใดก็ตามไม่ว่าจะเป็น Cisco, Juniper, MikroTik, Huawei, Arista หรือ Fortinet ล้วน Support OSPF ทำให้ OSPF เป็น Routing Protocol ที่ Interoperable ที่สุด ต่างจาก EIGRP ที่เป็น Cisco Proprietary (แม้จะเปิดบางส่วนแล้ว แต่ Support จาก Vendor อื่นยังจำกัด)
ในบทความนี้จะอธิบาย OSPF อย่างละเอียดตั้งแต่พื้นฐานไปจนถึงระดับ Advanced ครอบคลุม OSPF Area Design, Packet Types, Neighbor States, DR/BDR Election, LSA Types, Configuration บน Cisco Router, OSPFv3 สำหรับ IPv6, Authentication, Summarization, Virtual Links, Timer Tuning, Network Types, Troubleshooting และการเปรียบเทียบกับ EIGRP และ IS-IS เพื่อให้ Network Engineer ไทยสามารถนำไปใช้งานจริงได้ในปี 2026
Link-State vs Distance-Vector: ทำไม OSPF ถึงเหนือกว่า
Distance-Vector Routing Protocol
Distance-Vector Protocol เช่น RIP (Routing Information Protocol) ทำงานโดย Router แต่ละตัวจะส่ง Routing Table ทั้งหมดของตัวเองให้ Neighbor Router เป็นระยะ (ทุก 30 วินาทีสำหรับ RIP) และ Router จะเลือก Best Route จาก Distance (Hop Count) ที่สั้นที่สุด ปัญหาของ Distance-Vector คือ Convergence Time ช้ามาก เพราะต้องรอให้ Update กระจายไปทุก Router ทีละ Hop (Routing by Rumor) อาจเกิด Routing Loop ได้ (แม้จะมี Split Horizon, Route Poisoning แก้ไข แต่ก็ยังไม่ 100%) ไม่เห็นภาพ Topology ทั้งหมด รู้แค่ว่า Neighbor บอกว่าไปทางไหน ไม่เหมาะกับ Network ขนาดใหญ่ เพราะ RIP มี Hop Count Limit ที่ 15 และ Bandwidth Usage สูงเพราะส่ง Full Routing Table ทุก 30 วินาที
Link-State Routing Protocol
Link-State Protocol เช่น OSPF ทำงานแตกต่างจาก Distance-Vector โดยสิ้นเชิง Router แต่ละตัวจะส่ง Link-State Advertisement (LSA) ที่บอกเฉพาะ State ของ Link ที่ตัวเอง Connected อยู่ LSA จะถูก Flood ไปทั่ว Area ทำให้ Router ทุกตัวมี Link-State Database (LSDB) ที่เหมือนกัน ซึ่งเปรียบเสมือนแผนที่ Topology ของทั้ง Network จากนั้น Router แต่ละตัวจะ Run Dijkstra SPF Algorithm (Shortest Path First) เพื่อคำนวณ Shortest Path Tree จาก LSDB ได้ Best Route ไปทุกปลายทาง
ข้อดีของ Link-State ได้แก่ Convergence Time เร็วมาก เพราะ LSA ถูก Flood ทันทีเมื่อมีการเปลี่ยนแปลง ไม่ต้องรอ Timer ไม่เกิด Routing Loop เพราะทุก Router มี LSDB เดียวกัน เห็น Topology ทั้งหมด สามารถ Make Intelligent Decision ได้ รองรับ Network ขนาดใหญ่ได้ด้วยการแบ่ง Area ใช้ Bandwidth น้อยกว่า Distance-Vector เพราะส่งเฉพาะ Change ไม่ส่ง Full Table
Hybrid: EIGRP
EIGRP (Enhanced Interior Gateway Routing Protocol) ถูกเรียกว่า Advanced Distance-Vector หรือ Hybrid Protocol เพราะใช้ Concept ของทั้ง Distance-Vector (ส่ง Update ให้ Neighbor) และ Link-State (ส่งเฉพาะ Change ไม่ส่ง Full Table) EIGRP มี Convergence Time เร็วมากเพราะใช้ DUAL Algorithm ที่มี Feasible Successor พร้อมใช้ทันที อย่างไรก็ตาม EIGRP เป็น Cisco Proprietary ทำให้ใช้ได้เฉพาะ Cisco หรือ Vendor ที่ License จาก Cisco เท่านั้น ในโลกจริงที่ Network มักมี Multi-vendor OSPF จึงเป็นตัวเลือกที่ปลอดภัยกว่า
OSPF Fundamentals: หลักการทำงานของ OSPF
OSPF เป็น Interior Gateway Protocol (IGP)
OSPF เป็น IGP ที่ใช้ภายใน Autonomous System (AS) เดียว ไม่ได้ใช้ระหว่าง AS (ต่างจาก BGP ที่เป็น Exterior Gateway Protocol) OSPF ใช้ IP Protocol Number 89 (ไม่ใช้ TCP หรือ UDP) ส่ง Packet ผ่าน Multicast Address 224.0.0.5 (AllSPFRouters สำหรับ Router ทุกตัวที่ Run OSPF) และ 224.0.0.6 (AllDRouters สำหรับ DR และ BDR เท่านั้น) OSPF ใช้ Administrative Distance 110 (ต่ำกว่า RIP ที่ 120 แต่สูงกว่า EIGRP ที่ 90)
OSPF Area Concept
OSPF แบ่ง Network ออกเป็น Area เพื่อลด LSDB Size และจำกัด LSA Flooding ทำให้ SPF Calculation เร็วขึ้นและใช้ Resource น้อยลง Area แต่ละ Area มี LSDB ของตัวเอง Router ภายใน Area เดียวกันจะมี LSDB เหมือนกัน แต่ Router ใน Area ต่างกันจะมี LSDB ต่างกัน
Area 0 หรือ Backbone Area เป็น Area ที่สำคัญที่สุดใน OSPF ทุก Area ต้อง Connect กับ Area 0 โดยตรง (หรือผ่าน Virtual Link) การออกแบบ OSPF ที่ดีคือทุก Traffic ระหว่าง Area ต้องผ่าน Area 0 เสมอ ถ้า Area ไม่ได้ Connect กับ Area 0 โดยตรง จะไม่สามารถ Route Traffic ข้าม Area ได้ (ต้องใช้ Virtual Link แก้ไข)
ประเภทของ OSPF Router
ใน Multi-area OSPF Router จะถูกแบ่งเป็นประเภทต่างๆ ตาม Role ได้แก่ Internal Router คือ Router ที่ Interface ทั้งหมดอยู่ใน Area เดียว มี LSDB เดียว ABR (Area Border Router) คือ Router ที่ Interface อยู่ในหลาย Area (อย่างน้อย 1 Interface อยู่ใน Area 0) ABR ทำหน้าที่ Summarize Route ระหว่าง Area และส่ง Summary LSA (Type 3) ข้าม Area ASBR (Autonomous System Boundary Router) คือ Router ที่ Redistribute Route จาก Protocol อื่น (เช่น EIGRP, BGP, Static) เข้ามาใน OSPF ASBR สร้าง External LSA (Type 5 หรือ Type 7) Backbone Router คือ Router ที่มีอย่างน้อย 1 Interface อยู่ใน Area 0
OSPF Area Types: ประเภทของ Area ใน OSPF
Normal Area (Standard Area)
Normal Area เป็น Area ปกติที่รับ LSA ทุกประเภท ทั้ง Internal Route (Type 1 และ 2 LSA), Inter-area Route (Type 3 LSA) และ External Route (Type 5 LSA) LSDB ของ Normal Area จะมีข้อมูลครบทุก Route ทำให้ Router ใน Normal Area รู้เส้นทางไปทุกที่ในเครือข่าย Normal Area เหมาะสำหรับ Area ที่ต้องการเห็น Route ทั้งหมด เช่น Area ที่มี Data Center หรือ Core Network
Stub Area
Stub Area เป็น Area ที่ไม่รับ External Route (Type 5 LSA) จาก ASBR แทนที่จะส่ง External Route เข้ามา ABR จะส่ง Default Route (0.0.0.0/0) เข้า Stub Area แทน ทำให้ LSDB ของ Stub Area เล็กลงมาก เพราะไม่ต้องเก็บ External Route ที่อาจมีนับพันเส้น Router ใน Stub Area จะใช้ Default Route ผ่าน ABR เพื่อไปยัง External Destination ทุกจุด Stub Area เหมาะสำหรับ Remote Office หรือ Branch Office ที่ไม่มีทางออกอื่นนอกจากผ่าน ABR ข้อจำกัดคือ Stub Area ไม่สามารถมี ASBR อยู่ภายในได้ เพราะไม่รับ External Route และ Virtual Link ไม่สามารถผ่าน Stub Area ได้
Totally Stubby Area
Totally Stubby Area เป็น Cisco Proprietary Extension ของ Stub Area ที่ไม่รับทั้ง External Route (Type 5) และ Inter-area Route (Type 3 LSA) ยกเว้น Default Route เดียว LSDB ของ Totally Stubby Area จะเล็กที่สุด มีแค่ Internal Route ของ Area ตัวเองบวก Default Route เท่านั้น เหมาะสำหรับ Small Branch Office ที่มี Router ไม่กี่ตัวและไม่ต้องการ Routing Decision ที่ซับซ้อน การ Configure ทำได้โดยเพิ่ม no-summary บน ABR เช่น area 10 stub no-summary
Not-So-Stubby Area (NSSA)
NSSA แก้ปัญหาข้อจำกัดของ Stub Area ที่ไม่สามารถมี ASBR ภายใน Area ได้ NSSA อนุญาตให้มี ASBR ที่ Redistribute External Route เข้ามาใน Area ได้ แต่ External Route จะถูกส่งเป็น Type 7 LSA (NSSA External) แทน Type 5 LSA เมื่อ Type 7 LSA ถึง ABR ABR จะแปลง Type 7 เป็น Type 5 LSA แล้ว Flood เข้า Backbone Area เพื่อกระจายไปทั่ว OSPF Domain
ตัวอย่างการใช้ NSSA คือ Branch Office ที่มี Router เชื่อมต่อกับ ISP ผ่าน BGP และต้อง Redistribute BGP Route เข้า OSPF ถ้าใช้ Stub Area จะทำไม่ได้ เพราะ Stub Area ห้ามมี ASBR แต่ถ้าใช้ NSSA จะสามารถ Redistribute BGP Route เป็น Type 7 LSA เข้ามาใน Area ได้ และ ABR จะแปลงเป็น Type 5 กระจายไปทั่ว OSPF
Totally NSSA (Totally Not-So-Stubby Area)
Totally NSSA เป็น Extension ของ NSSA ที่ Block ทั้ง Type 3 (Inter-area) และ Type 5 (External) LSA เข้า Area แต่ยังอนุญาต Type 7 LSA สำหรับ Local ASBR ABR จะส่งเฉพาะ Default Route เข้า Totally NSSA ทำให้ LSDB เล็กที่สุดในขณะที่ยังรองรับ External Route จาก Local ASBR ได้
OSPF Packet Types: 5 ประเภทของ OSPF Packet
Type 1: Hello Packet
Hello Packet เป็น Packet แรกที่ OSPF ส่งออกเพื่อ Discover Neighbor และ Maintain Adjacency Hello Packet ถูกส่งเป็น Multicast ไปที่ 224.0.0.5 ทุก Hello Interval (default 10 วินาทีบน Broadcast/Point-to-Point Network และ 30 วินาทีบน NBMA Network) ข้อมูลใน Hello Packet ประกอบด้วย Router ID ของตัวเอง, Hello Interval, Dead Interval, Area ID, Authentication Data, Network Mask, DR/BDR IP Address, Router Priority สำหรับ DR Election และ List ของ Neighbor Router ID ที่ตัวเองรู้จัก
สำหรับ Neighbor จะ Form ได้ ค่าต่อไปนี้ต้องตรงกัน Hello Interval ต้องเท่ากัน Dead Interval ต้องเท่ากัน Area ID ต้องเท่ากัน Subnet Mask ต้องเท่ากัน (ยกเว้น Point-to-Point) Authentication Type และ Key ต้องตรงกัน Stub Flag ต้องตรงกัน (ถ้าฝั่งหนึ่งเป็น Stub อีกฝั่งก็ต้องเป็น Stub)
Type 2: Database Description (DBD) Packet
DBD Packet ใช้ในขั้นตอน Database Synchronization ระหว่าง Neighbor ที่เพิ่งสร้าง Adjacency DBD Packet ประกอบด้วย Header ของ LSA ที่ Router มีอยู่ใน LSDB (ไม่ใช่ LSA เต็มตัว แค่ Summary) ทำให้ Neighbor รู้ว่า Router มี LSA อะไรบ้าง และ Version ไหน กระบวนการ DBD Exchange ใช้ Master/Slave Relationship โดย Router ที่มี Router ID สูงกว่าจะเป็น Master ที่ Control Sequence ของ DBD Exchange
Type 3: Link-State Request (LSR) Packet
หลังจากได้รับ DBD และรู้ว่า Neighbor มี LSA ตัวไหนที่ตัวเองไม่มีหรือมี Version เก่ากว่า Router จะส่ง LSR Packet เพื่อขอ LSA เต็มตัวจาก Neighbor LSR ระบุ LSA Type, Link State ID และ Advertising Router ของ LSA ที่ต้องการ
Type 4: Link-State Update (LSU) Packet
LSU Packet เป็น Packet ที่บรรจุ LSA ตัวเต็ม ใช้ตอบ LSR (ส่ง LSA ที่ถูกขอ) และใช้ Flood LSA ใหม่หรือ LSA ที่ถูก Update ไปทั่ว Area LSU เป็น Packet ที่สำคัญที่สุดในการกระจายข้อมูล Topology เพราะบรรจุ LSA ที่เป็นข้อมูลจริงของ Link State
Type 5: Link-State Acknowledgment (LSAck) Packet
LSAck ใช้ Acknowledge ว่าได้รับ LSU แล้ว OSPF ใช้ Reliable Flooding คือทุก LSA ที่ถูก Flood ต้องได้รับ Acknowledgment ถ้าไม่ได้รับ LSAck Router จะ Retransmit LSA LSAck สามารถ Acknowledge LSA หลายตัวใน Packet เดียวได้
OSPF Neighbor States: 8 สถานะของ OSPF Neighbor
State 1: Down
สถานะเริ่มต้นที่ยังไม่ได้รับ Hello Packet จาก Neighbor เลย Router รู้จัก Neighbor เฉพาะจาก Manual Configuration (ในกรณี NBMA Network) แต่ยังไม่ได้ยิน Hello จากอีกฝั่ง
State 2: Attempt
สถานะนี้ใช้เฉพาะ NBMA Network เท่านั้น Router ส่ง Hello ไปหา Neighbor ที่ถูก Configure ด้วยมือ (neighbor command) แต่ยังไม่ได้รับ Hello ตอบกลับ ใน Broadcast และ Point-to-Point Network จะไม่เห็น State นี้
State 3: Init
Router ได้รับ Hello Packet จาก Neighbor แล้ว แต่ Router ID ของตัวเองยังไม่ปรากฏใน Hello Packet ของ Neighbor หมายความว่า Neighbor ยังไม่รู้จักตัวเอง (One-way Communication) ถ้า Adjacency ค้างอยู่ที่ Init State แสดงว่ามีปัญหา One-way เช่น ACL Block OSPF Packet ฝั่งเดียว หรือ Multicast ไม่ถึงฝั่งใดฝั่งหนึ่ง
State 4: 2-Way
Router ได้รับ Hello Packet จาก Neighbor และเห็น Router ID ของตัวเองอยู่ใน Neighbor List ของ Hello Packet นั้น แสดงว่า Bi-directional Communication สำเร็จ ที่ 2-Way State Router จะตัดสินใจว่าจะ Form Full Adjacency กับ Neighbor หรือไม่ ขึ้นอยู่กับ Network Type ถ้าเป็น Point-to-Point จะ Form Adjacency กับทุก Neighbor ถ้าเป็น Broadcast จะ Form Adjacency เฉพาะกับ DR และ BDR ส่วน Router ที่ไม่ใช่ DR/BDR (DROther) จะหยุดที่ 2-Way State กับ DROther ตัวอื่น
State 5: ExStart
เริ่มต้นกระบวนการ Database Synchronization Router ทั้งสองฝั่งจะเจรจา Master/Slave Relationship และ Initial Sequence Number โดย Router ที่มี Router ID สูงกว่าจะเป็น Master
State 6: Exchange
Router ทั้งสองฝั่งแลกเปลี่ยน DBD Packet ที่ประกอบด้วย Header ของ LSA ทั้งหมดที่มีอยู่ใน LSDB ของตัวเอง Master จะส่ง DBD ก่อน Slave ตอบ DBD กลับ กระบวนการนี้ดำเนินไปจนแลกเปลี่ยน DBD ครบทุกตัว หาก Adjacency ค้างที่ Exchange State มักเกิดจาก MTU Mismatch ระหว่าง Interface ทั้งสองฝั่ง เพราะ DBD Packet ไม่สามารถ Fragment ได้ ถ้า DBD ใหญ่เกินกว่า MTU ของ Interface จะส่งไม่สำเร็จ
State 7: Loading
หลังจากแลกเปลี่ยน DBD เสร็จ Router รู้แล้วว่า Neighbor มี LSA ตัวไหนที่ตัวเองไม่มีหรือมี Version เก่ากว่า Router จะส่ง LSR เพื่อขอ LSA ที่ต้องการ และ Neighbor จะตอบด้วย LSU ที่บรรจุ LSA เต็มตัว กระบวนการนี้ดำเนินไปจน Router ได้รับ LSA ครบทุกตัว
State 8: Full
LSDB ระหว่าง Router ทั้งสองฝั่ง Synchronized สมบูรณ์แล้ว นี่คือ State ปกติของ OSPF Adjacency ที่ทำงานถูกต้อง ถ้าเห็น Full State แสดงว่า OSPF Neighbor Relationship สมบูรณ์ Router สามารถ Run SPF Algorithm บน LSDB และคำนวณ Best Route ได้ ใน show ip ospf neighbor จะเห็น State เป็น FULL
DR/BDR Election: การเลือก Designated Router
ทำไมต้องมี DR/BDR
บน Broadcast Network (เช่น Ethernet) ถ้ามี Router 10 ตัว Connect กันผ่าน Switch ตัวเดียว ถ้าทุก Router ต้อง Form Full Adjacency กับทุกตัว จะมี Adjacency ทั้งหมด n*(n-1)/2 = 45 คู่ ซึ่งสร้าง Overhead มหาศาลทั้ง CPU, Memory และ Bandwidth สำหรับ LSA Flooding
DR (Designated Router) ทำหน้าที่เป็นจุดรวมของ LSA Flooding บน Broadcast Segment แทนที่ทุก Router จะ Flood LSA ให้ทุกตัว Router จะส่ง LSA ให้ DR (ผ่าน 224.0.0.6) จากนั้น DR จะ Flood LSA ให้ Router ทุกตัวบน Segment (ผ่าน 224.0.0.5) ทำให้จำนวน Adjacency ลดลงเหลือ n-1 คู่ (ทุก Router Form Adjacency กับ DR เท่านั้น)
BDR (Backup Designated Router) ทำหน้าที่ Backup ของ DR ถ้า DR ล่ม BDR จะกลายเป็น DR ใหม่ทันทีโดยไม่ต้อง Election ใหม่ (แค่ Election BDR ตัวใหม่) ทำให้ Convergence เร็วขึ้น Router ที่ไม่ใช่ DR หรือ BDR เรียกว่า DROther DROther จะ Form Full Adjacency เฉพาะกับ DR และ BDR เท่านั้น ไม่ Form Adjacency กับ DROther ตัวอื่น (หยุดที่ 2-Way)
กระบวนการ Election
DR/BDR Election ใช้เกณฑ์ 2 ข้อตามลำดับ คือ Priority สูงสุดชนะ (default Priority = 1, ค่า 0 หมายถึงไม่เข้าร่วม Election) ถ้า Priority เท่ากัน Router ID สูงสุดชนะ (Router ID คือ IP Address สูงสุดบน Loopback หรือ Physical Interface ถ้าไม่มี Loopback หรือถูกกำหนดด้วย router-id command)
สิ่งสำคัญที่ต้องรู้คือ DR/BDR Election เป็น Non-preemptive หมายความว่าถ้ามี Router ใหม่ที่มี Priority สูงกว่า Join เข้ามาภายหลัง จะไม่สามารถ Preempt DR/BDR ที่ถูกเลือกไปแล้วได้ DR/BDR จะเปลี่ยนก็ต่อเมื่อ DR หรือ BDR ตัวปัจจุบัน Down เท่านั้น ดังนั้น ถ้าต้องการให้ Router ที่กำหนดเป็น DR ต้อง Set Priority ก่อน Start OSPF หรือ Clear OSPF Process
Best Practice สำหรับ DR/BDR
ในการออกแบบ Network ควรกำหนด DR/BDR อย่างชัดเจน ไม่ปล่อยให้ Election โดย Default เพราะอาจทำให้ Router ที่ Performance ต่ำกลายเป็น DR Set Priority ให้ Router ที่ต้องการเป็น DR มี Priority สูงสุด (เช่น priority 200) BDR สูงรองลงมา (priority 150) และ Router ที่ไม่ต้องการเป็น DR Set priority 0 DR ควรเป็น Router ที่มี CPU/Memory แรงที่สุดบน Segment เพราะต้อง Handle LSA Flooding ทั้งหมด
LSA Types: ประเภทของ Link-State Advertisement
LSA Type 1: Router LSA
สร้างโดย Router ทุกตัว อธิบาย Link ทั้งหมดที่ Router นั้น Connected อยู่ภายใน Area รวมถึง Cost ของแต่ละ Link Router LSA Flood ภายใน Area เดียวเท่านั้น ไม่ข้าม Area ข้อมูลใน Router LSA ประกอบด้วย Router ID ของผู้สร้าง, Link Type (Point-to-Point, Transit Network, Stub Network, Virtual Link), Link ID, Link Data และ Metric (Cost)
LSA Type 2: Network LSA
สร้างโดย DR เท่านั้น บน Broadcast หรือ NBMA Segment อธิบาย Router ทั้งหมดที่ Connected กับ Segment นั้นและ Subnet Mask ของ Segment Network LSA Flood ภายใน Area เดียวเท่านั้น ถ้าบน Point-to-Point Link จะไม่มี Type 2 LSA เพราะไม่มี DR
LSA Type 3: Summary LSA (Inter-area)
สร้างโดย ABR เพื่อ Advertise Route จาก Area หนึ่งไปยัง Area อื่น ABR จะสร้าง Type 3 LSA สำหรับ Prefix ทุกตัวที่เรียนรู้จาก Area หนึ่งและ Flood เข้า Area อื่น Type 3 LSA ประกอบด้วย Network Address, Subnet Mask และ Metric (Cost รวมจาก ABR ไปถึง Destination)
ABR สามารถทำ Route Summarization ได้โดย Summarize หลาย Prefix เป็น Summary Prefix เดียวก่อนส่งเป็น Type 3 LSA ทำให้ลดจำนวน LSA และ Routing Table Entry ใน Area อื่น
LSA Type 4: ASBR Summary LSA
สร้างโดย ABR เพื่อบอก Router ใน Area อื่นว่า ASBR อยู่ที่ไหน (Reachability ของ ASBR) เมื่อ Router ใน Area ที่ไม่มี ASBR ได้รับ Type 5 LSA (External Route) Router ต้องรู้ว่า ASBR อยู่ที่ไหนเพื่อ Route ไปหา ASBR ได้ Type 4 LSA ให้ข้อมูลนี้
LSA Type 5: AS External LSA
สร้างโดย ASBR เพื่อ Advertise External Route ที่ Redistribute เข้ามาใน OSPF Type 5 LSA Flood ไปทั่วทั้ง OSPF Domain (ทุก Area ยกเว้น Stub, Totally Stubby, NSSA, Totally NSSA) External Route แบ่งเป็น 2 ประเภท E1 (External Type 1) ที่รวม External Metric กับ Internal Metric ในการคำนวณ Best Path และ E2 (External Type 2 ซึ่งเป็น Default) ที่ใช้เฉพาะ External Metric ไม่สนใจ Internal Cost
LSA Type 7: NSSA External LSA
สร้างโดย ASBR ที่อยู่ภายใน NSSA Area เพื่อ Advertise External Route เป็น Type 7 แทน Type 5 เนื่องจาก NSSA ไม่อนุญาต Type 5 LSA เมื่อ Type 7 LSA ถึง ABR ของ NSSA ABR จะทำ Type 7 to Type 5 Translation แล้ว Flood Type 5 LSA เข้า Backbone และ Area อื่นๆ
OSPF Cost Metric: การคำนวณ Metric ของ OSPF
สูตรการคำนวณ Cost
OSPF ใช้ Cost เป็น Metric ในการเลือก Best Path สูตรคือ Cost = Reference Bandwidth / Interface Bandwidth โดย Default Reference Bandwidth เท่ากับ 100 Mbps (10^8 bps) ดังนั้น Interface 100 Mbps มี Cost = 1, Interface 10 Mbps มี Cost = 10, Interface 1 Gbps มี Cost = 1 (เท่ากับ 100 Mbps เพราะ Cost ต่ำสุดเท่ากับ 1), Interface 10 Gbps มี Cost = 1 (เท่ากัน)
ปัญหาคือ Default Reference Bandwidth 100 Mbps ทำให้ Interface ที่เร็วกว่า 100 Mbps มี Cost เท่ากันหมด ซึ่งไม่สมเหตุสมผล ในปี 2026 ที่ Interface ส่วนใหญ่เป็น 1 Gbps หรือ 10 Gbps ขึ้นไป ต้องเพิ่ม Reference Bandwidth ด้วยคำสั่ง auto-cost reference-bandwidth 100000 (100 Gbps) ภายใต้ OSPF Process ซึ่งจะทำให้ 1 Gbps มี Cost = 100 และ 10 Gbps มี Cost = 10 สามารถแยกความแตกต่างได้ สำคัญมากว่าต้อง Set Reference Bandwidth ให้เท่ากันบน Router ทุกตัวใน OSPF Domain เพื่อให้ Cost Calculation สอดคล้องกัน
การ Set Cost ด้วยมือ
สามารถ Set Cost ของ Interface ด้วยมือได้โดยใช้ ip ospf cost [value] ใต้ Interface เช่น ip ospf cost 50 การ Set Cost ด้วยมือจะ Override ค่า Cost ที่คำนวณจากสูตร ใช้ในกรณีที่ต้องการ Influence Path Selection เช่น มี Link 2 เส้น Primary และ Backup ต้องการให้ Traffic ไป Primary ก่อน Set Cost ของ Primary ต่ำกว่า Backup
OSPF Equal Cost Multi-Path (ECMP)
ถ้ามี Path หลายเส้นที่มี Cost เท่ากันไปยัง Destination เดียวกัน OSPF จะใส่ Route ทุกเส้นลง Routing Table และทำ Load Balancing ข้าม Path ทั้งหมด (Equal Cost Load Balancing) จำนวน Path สูงสุดที่ OSPF Load Balance ได้ กำหนดด้วย maximum-paths command (Default 4 บน Cisco, สูงสุด 32) ECMP เป็นวิธี Load Balancing ที่ง่ายและมีประสิทธิภาพ ไม่ต้องใช้ Feature เพิ่มเติม
OSPF Configuration บน Cisco Router
Single-Area OSPF (Area 0 เดียว)
สำหรับ Network ขนาดเล็กที่มี Router ไม่เกิน 50 ตัว สามารถใช้ Single-Area OSPF ได้ การ Configure เริ่มจากเปิด OSPF Process ด้วย router ospf [process-id] โดย Process ID เป็นตัวเลขที่มีความหมายเฉพาะ Router ตัวนั้น ไม่ต้องตรงกันกับ Router ตัวอื่น จากนั้น Set Router ID ด้วย router-id [ip-address] ซึ่งเป็น Best Practice ที่ควรกำหนด Router ID ด้วยมือเสมอ ไม่ควรปล่อยให้ OSPF เลือก Auto เพราะอาจเปลี่ยนแปลงได้ถ้า Interface Up/Down
จากนั้น Advertise Network ด้วย network [network-address] [wildcard-mask] area [area-id] เช่น network 10.0.1.0 0.0.0.255 area 0 หมายความว่า Interface ที่มี IP Address อยู่ใน Range 10.0.1.0/24 จะเข้าร่วม OSPF Area 0 Wildcard Mask เป็น Inverse ของ Subnet Mask เช่น Subnet /24 มี Wildcard 0.0.0.255 และ Subnet /30 มี Wildcard 0.0.0.3
ตัวอย่าง Configuration สำหรับ Router ที่มี 3 Interface ได้แก่ Loopback0 (10.0.0.1/32), GigabitEthernet0/0 (10.0.1.1/24) และ GigabitEthernet0/1 (10.0.2.1/24) คือ router ospf 1 ตามด้วย router-id 10.0.0.1 ตามด้วย network 10.0.0.1 0.0.0.0 area 0 (Loopback) ตามด้วย network 10.0.1.0 0.0.0.255 area 0 ตามด้วย network 10.0.2.0 0.0.0.255 area 0 หรือจะใช้ network 10.0.0.0 0.0.255.255 area 0 เพื่อ Match ทุก Interface ที่อยู่ใน 10.0.x.x ก็ได้
Alternative: Interface-level OSPF Configuration
อีกวิธีที่นิยมมากขึ้นคือ Configure OSPF ที่ Interface แทนการใช้ network command โดยใช้ ip ospf [process-id] area [area-id] ใต้ Interface เช่น interface GigabitEthernet0/0 ตามด้วย ip ospf 1 area 0 วิธีนี้ชัดเจนกว่า ไม่ต้องคิด Wildcard Mask และ OSPF จะ Advertise เฉพาะ Interface ที่ Configure เท่านั้น ไม่มีปัญหา Interface ที่ไม่ต้องการเข้าร่วม OSPF โดนจับโดย network command ที่ Wildcard กว้างเกินไป
Multi-Area OSPF
สำหรับ Network ขนาดใหญ่ที่มี Router มากกว่า 50 ตัว ควรแบ่งเป็น Multi-Area เพื่อลด SPF Calculation Time และ LSDB Size การ Configure Multi-Area ทำโดยกำหนด Area ที่ต่างกันให้แต่ละ Interface เช่น Router ที่เป็น ABR จะมี Interface อยู่ทั้ง Area 0 และ Area อื่น ตัวอย่าง ABR ที่ Connect Area 0 กับ Area 10 Configure ดังนี้ router ospf 1 ตามด้วย router-id 10.0.0.1 ตามด้วย network 10.0.0.0 0.0.0.255 area 0 (Backbone Link) ตามด้วย network 10.0.10.0 0.0.0.255 area 10 (Area 10 Link)
สำหรับ Stub Area Configure ด้วย area [id] stub ใต้ OSPF Process สำหรับ Totally Stubby ใช้ area [id] stub no-summary (เฉพาะบน ABR) สำหรับ NSSA ใช้ area [id] nssa และสำหรับ Totally NSSA ใช้ area [id] nssa no-summary (เฉพาะบน ABR)
Passive Interface
Interface ที่ Connect กับ End-user Network (เช่น LAN ของ User) ไม่ควรส่ง OSPF Hello Packet ออกไป เพราะจะเปลืองทรัพยากรและอาจมีปัญหา Security (ถ้ามีคนปลอม OSPF Router บน LAN) ใช้ passive-interface [interface] เพื่อ Suppress Hello Packet บน Interface นั้น OSPF จะยังคง Advertise Subnet ของ Interface ที่เป็น Passive อยู่ แต่จะไม่ส่ง Hello และไม่ Form Adjacency บน Interface นั้น Best Practice คือใช้ passive-interface default เพื่อ Set ทุก Interface เป็น Passive จากนั้น no passive-interface เฉพาะ Interface ที่ต้องการ Form Adjacency
OSPFv3 สำหรับ IPv6
ความแตกต่างจาก OSPFv2
OSPFv3 (RFC 5340) เป็น Version ของ OSPF ที่ออกแบบมาสำหรับ IPv6 แม้ว่าหลักการทำงานจะเหมือน OSPFv2 แต่มีความแตกต่างหลายจุด OSPFv3 ทำงานบน IPv6 Link-local Address ไม่ใช่ IPv4 Multicast Address ที่ใช้คือ FF02::5 (AllSPFRouters) และ FF02::6 (AllDRouters) แทน 224.0.0.5 และ 224.0.0.6 OSPFv3 ใช้ Instance ID แทน Area ในการแยก OSPF Instance บน Interface เดียวกัน Authentication ถูกย้ายไปใช้ IPsec แทน Built-in Authentication ของ OSPFv2 Network command ถูกยกเลิก ใช้ Interface-level Configuration อย่างเดียว (ipv6 ospf [process-id] area [area-id])
OSPFv3 Address Family
ใน OSPFv3 Version ใหม่ (RFC 5838) รองรับ Address Family ทำให้ OSPFv3 Process เดียวสามารถ Route ทั้ง IPv6 และ IPv4 ได้ ลด Overhead ของการ Run OSPFv2 สำหรับ IPv4 และ OSPFv3 สำหรับ IPv6 แยกกัน Configure ด้วย router ospfv3 [process-id] ตามด้วย address-family ipv4 unicast และ address-family ipv6 unicast ใน Sub-command
OSPF Authentication: การ Authenticate OSPF Neighbor
ทำไมต้อง Authenticate
โดย Default OSPF ไม่มี Authentication ใดๆ หมายความว่าใครก็ตามที่สามารถส่ง OSPF Hello Packet บน Network Segment ได้ จะสามารถ Form Adjacency กับ Router อื่นได้ Attacker สามารถปลอม OSPF Router เพื่อ Inject False Route ลงใน OSPF Domain ทำให้ Traffic ถูก Redirect ไปยัง Attacker (Man-in-the-Middle) หรือ Black Hole ดังนั้น Production Network ควร Enable OSPF Authentication เสมอ
Plain Text Authentication (Type 1)
วิธีที่ง่ายที่สุดแต่ไม่ปลอดภัย เพราะ Password ถูกส่งเป็น Clear Text ใน OSPF Packet ใครที่ Capture Packet ด้วย Wireshark จะเห็น Password ทันที Configure ด้วย ip ospf authentication ใต้ Interface และ ip ospf authentication-key [password] ไม่แนะนำให้ใช้ใน Production ยกเว้น Lab
MD5 Authentication (Type 2)
ปลอดภัยกว่า Plain Text เพราะใช้ MD5 Hash ในการ Authenticate Password ไม่ถูกส่งเป็น Clear Text แต่ส่งเป็น Hash ที่คำนวณจาก Password + OSPF Packet Content Receiver จะคำนวณ Hash จาก Password ที่ตัวเองรู้ + OSPF Packet ที่ได้รับ ถ้า Hash ตรงกันแสดงว่า Authenticate สำเร็จ Configure ด้วย ip ospf authentication message-digest ใต้ Interface และ ip ospf message-digest-key [key-id] md5 [password] Key ID ต้องตรงกันทั้งสองฝั่ง
SHA-HMAC Authentication (Extended Cryptographic)
ปลอดภัยที่สุดเพราะใช้ SHA-256 หรือ SHA-512 ซึ่งแข็งแกร่งกว่า MD5 ที่มีช่องโหว่ Collision Attack ใช้ Key Chain Feature ของ Cisco IOS ที่รองรับ Key Rotation ได้ Configure โดยสร้าง Key Chain ก่อน จากนั้น Assign Key Chain ให้ Interface ด้วย ip ospf authentication key-chain [name]
OSPF Summarization: การรวม Route เพื่อลดขนาด Routing Table
Inter-area Summarization (ABR)
ABR สามารถ Summarize Route ก่อนส่งจาก Area หนึ่งไปยัง Area อื่น เช่น Area 10 มี Subnet 10.10.0.0/24, 10.10.1.0/24, 10.10.2.0/24, 10.10.3.0/24 แทนที่ ABR จะส่ง Type 3 LSA 4 ตัว สามารถ Summarize เป็น 10.10.0.0/22 ตัวเดียว ทำให้ LSDB และ Routing Table ใน Area อื่นเล็กลง Configure ด้วย area [source-area] range [summary-address] [mask] ภายใต้ OSPF Process เช่น area 10 range 10.10.0.0 255.255.252.0
External Route Summarization (ASBR)
ASBR สามารถ Summarize External Route ที่ Redistribute เข้ามาใน OSPF ก่อน Flood เป็น Type 5 LSA Configure ด้วย summary-address [address] [mask] ภายใต้ OSPF Process เช่น summary-address 172.16.0.0 255.255.0.0 จะ Summarize External Route ทุกตัวที่อยู่ใน 172.16.0.0/16 เป็น Prefix เดียว
ข้อควรระวังในการ Summarize
การ Summarize อาจทำให้ Route ไม่ Optimal ถ้า Summary Prefix ครอบคลุม Subnet ที่ไม่มีอยู่จริง (Supernetting Problem) เช่น Summarize 10.10.0.0/22 แต่จริงๆ มีแค่ 10.10.0.0/24 และ 10.10.1.0/24 ถ้ามี Traffic ไปยัง 10.10.3.0/24 จะ Route มาถึง ABR แต่ ABR ไม่มี Specific Route จะ Drop Packet OSPF จะสร้าง Null0 Route สำหรับ Summary Prefix เพื่อ Prevent Routing Loop แต่อาจทำให้ Traffic สูญหาย ดังนั้นควร Plan Addressing Scheme ให้ Contiguous ก่อน Summarize
OSPF Virtual Links: การแก้ปัญหา Area ที่ไม่ Connect กับ Backbone
ปัญหาที่ Virtual Link แก้
OSPF Rule กำหนดว่าทุก Area ต้อง Connect กับ Area 0 โดยตรง แต่ในโลกจริงอาจมีสถานการณ์ที่ Area ไม่สามารถ Connect กับ Area 0 ได้ เช่น Network ที่ถูก Merge จาก 2 องค์กร ทำให้มี Area ที่ไม่มี Physical Link กลับไปหา Area 0 หรือ Area 0 ถูกแบ่งเป็น 2 ส่วนเพราะ Link ระหว่าง ABR 2 ตัว Down
Virtual Link เป็น Logical Link ที่สร้างผ่าน Transit Area (Area ที่อยู่ระหว่าง Area ที่ต้องการ Connect กับ Area 0) เพื่อขยาย Area 0 ไปถึง Area ที่ไม่มี Physical Connection
การ Configure Virtual Link
Virtual Link ต้อง Configure บน ABR ทั้ง 2 ฝั่ง คือ ABR ที่ Connect กับ Area 0 และ ABR ที่ Connect กับ Area ที่ต้องการเชื่อม Configure ด้วย area [transit-area-id] virtual-link [neighbor-router-id] ภายใต้ OSPF Process บน ABR ทั้ง 2 ตัว Transit Area คือ Area ที่ Virtual Link ผ่าน Neighbor Router ID คือ Router ID ของ ABR อีกฝั่ง
ข้อจำกัดของ Virtual Link
Virtual Link ไม่ควรเป็น Solution ถาวร ควรใช้เป็น Temporary Fix จนกว่าจะ Redesign Network ให้ทุก Area Connect กับ Area 0 โดยตรง Virtual Link เพิ่ม Complexity และ Troubleshooting Difficulty Transit Area ต้องเป็น Normal Area ไม่สามารถเป็น Stub, Totally Stubby, NSSA หรือ Totally NSSA Virtual Link ไม่สามารถผ่าน Transit Area มากกว่า 1 Area ได้
OSPF Timers Tuning: การปรับ Timer เพื่อ Convergence ที่เร็วขึ้น
Hello Interval และ Dead Interval
Hello Interval คือระยะเวลาที่ OSPF ส่ง Hello Packet (Default 10 วินาทีบน Broadcast/Point-to-Point, 30 วินาทีบน NBMA) Dead Interval คือระยะเวลาที่ถ้าไม่ได้รับ Hello จาก Neighbor จะถือว่า Neighbor Down (Default 4 เท่าของ Hello Interval คือ 40 วินาทีบน Broadcast) หมายความว่า Default ถ้า Neighbor Down จะต้องรอ 40 วินาทีก่อนที่ OSPF จะ Detect และ Converge
สามารถลด Timer ได้ เช่น Set Hello Interval เป็น 1 วินาทีและ Dead Interval เป็น 3 วินาที ด้วย ip ospf hello-interval 1 และ ip ospf dead-interval 3 ทำให้ Detect Failure ได้ภายใน 3 วินาที แต่การลด Timer มากเกินไปอาจทำให้เกิด False Positive (Flapping) ถ้า Router Busy ไม่สามารถ Process Hello ทัน
OSPF Sub-second Convergence (BFD)
สำหรับ Convergence ที่เร็วกว่า 1 วินาที ควรใช้ BFD (Bidirectional Forwarding Detection) แทนการลด OSPF Timer BFD เป็น Protocol แยกที่ทำ Failure Detection ด้วย Lightweight Packet ทุก 50-100 millisecond ถ้า BFD Detect ว่า Neighbor Down จะ Notify OSPF ทันที ทำให้ OSPF Converge ภายใน Sub-second Configure ด้วย bfd interval [ms] min_rx [ms] multiplier [n] ใต้ Interface และ ip ospf bfd ใต้ Interface เพื่อ Enable BFD สำหรับ OSPF
SPF Timer Tuning
เมื่อ OSPF ได้รับ LSA ใหม่ จะต้อง Run SPF Algorithm ใหม่ OSPF ใช้ SPF Throttle Timer เพื่อ Prevent SPF จาก Run บ่อยเกินไป (ซึ่งจะกิน CPU) Configure ด้วย timers throttle spf [spf-start] [spf-hold] [spf-max-wait] เช่น timers throttle spf 50 200 5000 หมายความว่า SPF แรก Run ภายใน 50 ms ถ้ามี LSA มาอีก SPF ถัดไปรอ 200 ms และ Hold Time จะ Double ขึ้นเรื่อยๆ จนถึง Max 5000 ms สำหรับ Network ที่ Stable Timer นี้ทำให้ Convergence เร็วสำหรับ Change แรก และ Protect CPU ถ้ามี Change ต่อเนื่อง
LSA Throttle Timer
คล้ายกับ SPF Timer แต่ควบคุม Rate ของ LSA Generation Configure ด้วย timers throttle lsa all [start] [hold] [max] เช่น timers throttle lsa all 50 200 5000 ป้องกันไม่ให้ Router Generate LSA เดิมซ้ำเร็วเกินไป ซึ่งจะสร้าง LSA Storm ใน Network
OSPF Network Types: ประเภทของ Network ใน OSPF
Broadcast (Default บน Ethernet)
เป็น Default Network Type บน Ethernet Interface มี DR/BDR Election Hello Interval 10 วินาที Dead Interval 40 วินาที เหมาะสำหรับ Multi-access Network ที่มี Router หลายตัว Connect ผ่าน Switch
Point-to-Point (Default บน Serial)
เป็น Default Network Type บน Serial Interface และ Tunnel Interface ไม่มี DR/BDR Election เพราะมี Router แค่ 2 ตัว Hello Interval 10 วินาที Dead Interval 40 วินาที ทุก Router Form Full Adjacency กับ Neighbor ตัวเดียว เหมาะสำหรับ WAN Link ที่เป็น Point-to-Point เช่น Serial, GRE Tunnel, MPLS
Tip: บน Ethernet ที่ Connect Router แค่ 2 ตัว (เช่น Link ระหว่าง Router 2 ตัวผ่าน Direct Cable) ควรเปลี่ยน Network Type เป็น Point-to-Point ด้วย ip ospf network point-to-point ใต้ Interface เพราะไม่จำเป็นต้องมี DR/BDR Election ทำให้ Adjacency Form เร็วขึ้น และไม่ต้องรอ Wait Timer สำหรับ DR Election (default 40 วินาที)
Non-Broadcast Multi-Access (NBMA)
ใช้บน Multi-access Network ที่ไม่รองรับ Broadcast เช่น Frame Relay, ATM มี DR/BDR Election เหมือน Broadcast แต่ Hello Interval 30 วินาที Dead Interval 120 วินาที ต้อง Configure Neighbor ด้วยมือ (neighbor command) เพราะ Multicast ไม่ทำงานบน NBMA ในปี 2026 Frame Relay แทบไม่ใช้แล้ว แต่อาจเจอใน Legacy Network หรือ CCIE Lab
Point-to-Multipoint
ใช้บน NBMA Network ที่ต้องการหลีกเลี่ยง DR/BDR Election OSPF จะ Treat แต่ละ Connection เป็น Point-to-Point Link แยก ไม่มี DR/BDR Election Hello Interval 30 วินาที Dead Interval 120 วินาที ไม่ต้อง Configure Neighbor ด้วยมือ (ใช้ Multicast) เหมาะสำหรับ Hub-and-Spoke Topology บน NBMA ที่ Spoke ไม่สามารถ Communicate กัน Directly
Point-to-Multipoint Non-Broadcast
เหมือน Point-to-Multipoint แต่ไม่รองรับ Multicast ต้อง Configure Neighbor ด้วยมือ ใช้ในสถานการณ์พิเศษที่ Network ไม่รองรับทั้ง Broadcast และ Multicast
Troubleshooting OSPF: วิธีแก้ปัญหา OSPF ที่พบบ่อย
ปัญหา: OSPF Neighbor ไม่ Form Adjacency
สิ่งที่ต้องตรวจสอบเมื่อ OSPF Neighbor ไม่ขึ้น Full State ได้แก่ ตรวจ show ip ospf interface เพื่อดู OSPF Configuration บน Interface ว่า Area ID ถูกต้องหรือไม่ Subnet Mask ตรงกันหรือไม่ Hello/Dead Interval ตรงกันหรือไม่ Authentication ถูกต้องหรือไม่ ตรวจ show ip ospf neighbor เพื่อดู Neighbor State ถ้าค้างที่ Init แสดงว่า One-way Communication (ตรวจ ACL, Firewall) ถ้าค้างที่ ExStart/Exchange มักเกิดจาก MTU Mismatch (ใช้ show ip interface เพื่อตรวจ MTU ทั้งสองฝั่ง) ถ้าค้างที่ Loading แสดงว่า LSR/LSU มีปัญหา อาจเกิดจาก Corruption
ใช้ debug ip ospf adj เพื่อดู Debug Message ของ Adjacency Process (ระวังใน Production เพราะ Debug กิน CPU) ตรวจ Layer 1/2 ก่อนเสมอ ถ้า Physical Link Down หรือ Interface Down OSPF จะทำงานไม่ได้ ตรวจ Firewall/ACL ว่า Allow IP Protocol 89 และ Multicast 224.0.0.5, 224.0.0.6
ปัญหา: OSPF Route ไม่ปรากฏใน Routing Table
ใช้ show ip ospf database เพื่อดู LSDB ว่ามี LSA ของ Network ที่ต้องการหรือไม่ ถ้า LSA ไม่อยู่ใน LSDB แสดงว่า LSA ไม่ถูก Flood มาถึง ตรวจ Area Configuration ว่า Area Type (Stub, NSSA) Block LSA ที่ต้องการหรือไม่ ใช้ show ip route ospf เพื่อดู OSPF Route ใน Routing Table ถ้ามี Route จาก Protocol อื่นที่ AD ต่ำกว่า OSPF (110) Route นั้นจะถูกเลือกแทน OSPF Route ตรวจ Filtering ว่ามี distribute-list, route-map หรือ prefix-list Block Route หรือไม่
ปัญหา: OSPF Flapping (Neighbor Up/Down ซ้ำ)
สาเหตุที่พบบ่อย ได้แก่ Physical Link ไม่ Stable (Cable เสีย, SFP มีปัญหา, Duplex Mismatch), Interface Errors (CRC, Input Errors, Drops) ทำให้ Hello Packet สูญหาย, CPU Overload ทำให้ Router ไม่สามารถ Process Hello Packet ทันก่อน Dead Timer Expire, MTU Mismatch ทำให้ DBD Exchange Fail ซ้ำ และ Timer ตั้งต่ำเกินไป (Hello 1 วินาที Dead 3 วินาที) บน Router ที่ CPU ไม่แรง
การแก้ไข ตรวจ show interface เพื่อดู Error Counter ตรวจ show process cpu เพื่อดู CPU Utilization ตรวจ show ip ospf interface เพื่อดู Timer ปรับ Timer ให้เหมาะสม ใช้ BFD แทนการลด OSPF Timer ถ้าต้องการ Fast Detection ตรวจ Log เพื่อดู Pattern ว่า Flapping เกิดเป็นรอบหรือ Random
Useful OSPF Show Commands
show ip ospf แสดงข้อมูลทั่วไปของ OSPF Process เช่น Router ID, SPF Algorithm Execution Count, Area Information show ip ospf neighbor แสดงรายการ Neighbor พร้อม State, Router ID, IP Address, Interface show ip ospf interface brief แสดง Interface ที่ Run OSPF พร้อม Area, Cost, State, Neighbor Count show ip ospf database แสดง LSDB ทั้งหมดแยกตาม LSA Type show ip ospf database router แสดง Type 1 LSA show ip ospf database network แสดง Type 2 LSA show ip ospf database summary แสดง Type 3 LSA show ip ospf database external แสดง Type 5 LSA show ip ospf border-routers แสดง ABR และ ASBR ที่ OSPF รู้จัก show ip route ospf แสดง Route ที่ OSPF Install ลง Routing Table
OSPF vs EIGRP vs IS-IS: เปรียบเทียบ Routing Protocol
OSPF vs EIGRP
OSPF เป็น Open Standard (IETF RFC) ใช้ได้กับทุก Vendor ส่วน EIGRP เป็น Cisco Proprietary (เปิดบางส่วนใน RFC 7868 แต่ Support จาก Vendor อื่นยังจำกัด) OSPF ใช้ Link-State Algorithm (Dijkstra) ส่วน EIGRP ใช้ Diffusing Update Algorithm (DUAL) OSPF Convergence เร็ว แต่ EIGRP Convergence เร็วกว่าเพราะมี Feasible Successor พร้อมใช้ทันที ไม่ต้อง Run SPF ใหม่ OSPF ใช้ Area สำหรับ Scalability ส่วน EIGRP ใช้ Summarization และ Query Boundary OSPF มี AD 110 ส่วน EIGRP มี AD 90 (Internal) ทำให้ EIGRP ชนะถ้า Run ทั้ง 2 Protocol พร้อมกัน
OSPF เหมาะกว่า EIGRP เมื่อ Network เป็น Multi-vendor, ต้องการ Standard-based Protocol, Network ขนาดใหญ่ที่ต้อง Hierarchical Design (Area), หรือต้อง Migrate ไป Vendor อื่นในอนาคต EIGRP เหมาะกว่า OSPF เมื่อ Network เป็น Cisco-only, ต้องการ Configuration ที่ง่ายกว่า, ต้องการ Convergence ที่เร็วที่สุด (Feasible Successor), หรือ Network ที่ไม่ต้องการ Complex Area Design
OSPF vs IS-IS
IS-IS (Intermediate System to Intermediate System) เป็น Link-State Protocol เช่นเดียวกับ OSPF แต่เดิมถูกออกแบบมาสำหรับ OSI Protocol Stack (CLNS) ไม่ใช่ IP โดยตรง IS-IS ถูกเลือกใช้โดย ISP และ Large Service Provider Network มากกว่า OSPF เพราะ IS-IS ไม่ Run บน IP Layer 3 แต่ Run บน Layer 2 (Data Link Layer) ทำให้ไม่ต้องมี IP Address ก่อน Form Adjacency IS-IS ใช้ TLV (Type-Length-Value) Format ที่ยืดหยุ่น สามารถเพิ่ม Feature ใหม่ได้ง่ายโดยเพิ่ม TLV ใหม่ (เช่น TLV สำหรับ Segment Routing, Traffic Engineering) IS-IS Scalability ดีกว่า OSPF เพราะ IS-IS มี 2 Level เท่านั้น (Level 1 สำหรับ Intra-area, Level 2 สำหรับ Inter-area) ซึ่งง่ายกว่า OSPF ที่มีหลาย Area Type และ IS-IS SPF Algorithm เร็วกว่า OSPF เพราะ LSDB Structure ง่ายกว่า
OSPF เหมาะกว่า IS-IS สำหรับ Enterprise Network เพราะ OSPF Documentation และ Training Resource มีมากกว่า, Network Engineer ส่วนใหญ่คุ้นเคยกับ OSPF มากกว่า, OSPF Feature ครบกว่าสำหรับ Enterprise (เช่น Area Types ที่หลากหลาย) IS-IS เหมาะกว่า OSPF สำหรับ ISP/Service Provider Network เพราะ Scalability ดีกว่า, Convergence เร็วกว่า, และ Support Segment Routing ได้ดีกว่า
ตารางเปรียบเทียบ
ด้าน Standard OSPF เป็น IETF Open Standard, EIGRP เป็น Cisco Proprietary, IS-IS เป็น ISO/IETF Open Standard ด้าน Algorithm OSPF ใช้ Dijkstra SPF, EIGRP ใช้ DUAL, IS-IS ใช้ Dijkstra SPF ด้าน Transport OSPF ใช้ IP Protocol 89, EIGRP ใช้ IP Protocol 88, IS-IS ใช้ Layer 2 CLNS ด้าน Hierarchy OSPF ใช้ Multi-area (Area 0 + Non-backbone), EIGRP ไม่มี Hierarchy (ใช้ Summarization), IS-IS ใช้ 2 Level (L1 + L2) ด้าน AD OSPF = 110, EIGRP Internal = 90 External = 170, IS-IS = 115 ด้าน Metric OSPF ใช้ Cost (Bandwidth-based), EIGRP ใช้ Composite (Bandwidth, Delay, Load, Reliability), IS-IS ใช้ Cost (configurable) ด้าน Popular Use OSPF ใช้ใน Enterprise, EIGRP ใช้ใน Cisco Enterprise, IS-IS ใช้ใน ISP/SP
OSPF ใน Enterprise Campus Design
Three-Tier Architecture
ในการออกแบบ Enterprise Campus Network ที่ใช้ Three-Tier Architecture (Access, Distribution, Core) OSPF ถูกนำมาใช้อย่างแพร่หลาย แนวทางการออกแบบ OSPF Area สำหรับ Three-Tier คือ Core Layer ใช้ Area 0 (Backbone) เสมอ Distribution Layer เป็น ABR ที่ Connect Area 0 กับ Access Area ของแต่ละ Building/Floor Access Layer แต่ละ Building/Floor เป็น Area แยก เช่น Building A = Area 10, Building B = Area 20
ข้อดีของการแบ่ง Area ตาม Building คือ ลด LSDB Size ใน Access Layer, การเปลี่ยนแปลงใน Building หนึ่งไม่กระทบ LSDB ของ Building อื่น (จำกัด Scope ของ SPF Calculation), ABR ที่ Distribution Layer สามารถ Summarize Route ก่อนส่งเข้า Area 0 ลดขนาด Routing Table ใน Core
Two-Tier (Collapsed Core) Design
สำหรับ Network ขนาดเล็กถึงกลางที่ไม่จำเป็นต้องมี Separate Core Layer สามารถใช้ Two-Tier Design ที่ Collapse Core กับ Distribution เป็น Layer เดียว ในกรณีนี้สามารถใช้ Single-Area OSPF (Area 0 เดียว) ถ้า Router ไม่เกิน 50 ตัว หรือแบ่งเป็น Area 0 สำหรับ Core/Distribution และ Area แยกสำหรับ Access แต่ละ Building
Data Center OSPF Design
ใน Data Center ที่ใช้ Leaf-Spine Architecture OSPF ถูกใช้เป็น Underlay Routing Protocol Spine Switch ทั้งหมดอยู่ใน Area 0 Leaf Switch แต่ละ Pod หรือแต่ละ Rack อาจเป็น Area แยก หรือใช้ Single-Area ถ้า Data Center ไม่ใหญ่มาก Point-to-Point Network Type ใช้ระหว่าง Leaf-Spine Link ทุกคู่ (ไม่ต้อง DR/BDR) BFD Enable บนทุก Link สำหรับ Sub-second Failure Detection
อย่างไรก็ตาม ใน Modern Data Center (2026) หลายองค์กรเริ่มเปลี่ยนจาก OSPF ไปใช้ BGP (eBGP) เป็น Underlay Protocol สำหรับ Leaf-Spine เพราะ BGP มี Path Selection ที่ยืดหยุ่นกว่า ไม่มี Area Concept ที่ซับซ้อน และเป็น Standard ของ VXLAN EVPN Fabric แต่ OSPF ยังคงเป็นตัวเลือกที่ดีสำหรับ Small-to-Medium Data Center ที่ไม่ได้ใช้ EVPN
WAN OSPF Design
สำหรับ WAN ที่เชื่อมต่อ Branch Office กับ HQ OSPF สามารถออกแบบได้หลายรูปแบบ Hub-and-Spoke Design โดย HQ อยู่ใน Area 0 แต่ละ Branch เป็น Stub Area หรือ Totally Stubby Area (ลด LSDB ที่ Branch ให้เล็กที่สุด) ABR ที่ HQ ส่ง Default Route ให้ Branch ผ่าน Stub Area Branch ไม่ต้องรู้ Route ทั้งหมดใน Network แค่ส่ง Traffic ไปหา HQ ผ่าน Default Route
สำหรับ Branch ที่มี Dual WAN (เชื่อมต่อ HQ 2 เส้น) ควรใช้ OSPF Cost Manipulation เพื่อ Prefer Primary Link Set Cost ของ Primary Link ต่ำกว่า Secondary Link ทำให้ Traffic ไป Primary เป็น Default และ Failover ไป Secondary เมื่อ Primary Down
OSPF Best Practices สำหรับปี 2026
Design Best Practices
กำหนด Router ID ด้วยมือเสมอ ใช้ Loopback Address เป็น Router ID เพราะ Loopback ไม่ Down แบ่ง Area ตาม Geographic หรือ Functional Boundary จำกัด Router ต่อ Area ไม่เกิน 50 ตัว (ค่าแนะนำ ไม่ใช่ Hard Limit) ทุก Area ต้อง Connect กับ Area 0 โดยตรง หลีกเลี่ยง Virtual Link ใช้ Stub Area หรือ Totally Stubby Area สำหรับ Remote Site ทำ Summarization ที่ ABR ทุกจุดที่เป็นไปได้ ใช้ Contiguous Addressing Scheme เพื่อให้ Summarize ได้ง่าย
Security Best Practices
Enable OSPF Authentication (อย่างน้อย MD5 แนะนำ SHA-HMAC) บนทุก Interface ใช้ Passive Interface สำหรับ Interface ที่ไม่ต้องการ Form Adjacency กรอง OSPF Route ด้วย Distribute-list หรือ Route-map ถ้าจำเป็น Monitor OSPF Neighbor Change ด้วย SNMP Trap หรือ Syslog เพื่อ Detect Unauthorized Router
Performance Best Practices
ปรับ Reference Bandwidth ให้เหมาะกับ Link Speed สูงสุดในเครือข่าย (เช่น 100 Gbps) ใช้ Point-to-Point Network Type บน Ethernet Link ที่เชื่อมต่อ Router 2 ตัว Enable BFD สำหรับ Fast Failure Detection แทนการลด OSPF Timer ปรับ SPF Throttle Timer ให้เหมาะสม (เช่น 50 200 5000) ใช้ Incremental SPF (iSPF) ถ้า Platform Support เพื่อลด SPF Computation Time
Operational Best Practices
Document OSPF Design อย่างละเอียด (Area Map, Router ID Mapping, Cost Table, Authentication Key) ใช้ Automation Tool (Ansible, Terraform) สำหรับ Deploy OSPF Configuration บน Router หลายตัว Monitor OSPF ด้วย SNMP, NetFlow หรือ Streaming Telemetry ตั้ง Alert สำหรับ OSPF Neighbor Change, SPF Run Count สูงผิดปกติ, LSDB Size เพิ่มขึ้นผิดปกติ ทำ Change Management ทุกครั้งที่แก้ OSPF Configuration ทดสอบ Configuration ใน Lab ก่อน Deploy ใน Production เสมอ Backup Configuration ก่อนทำ Change และมี Rollback Plan พร้อม
สรุป: OSPF ยังคงเป็น Routing Protocol หลักของ Enterprise Network ในปี 2026
OSPF เป็น Routing Protocol ที่ได้รับการพิสูจน์มากว่า 35 ปี ว่าเป็น Protocol ที่ Reliable, Scalable และ Efficient สำหรับ Enterprise Network ตั้งแต่ขนาดเล็กไปจนถึงขนาดใหญ่ ความเป็น Open Standard ทำให้ OSPF ทำงานได้กับทุก Vendor ไม่ว่าจะเป็น Cisco, Juniper, MikroTik, Huawei, Arista, Fortinet หรือ Palo Alto ทำให้เป็นตัวเลือกที่ปลอดภัยสำหรับ Multi-vendor Environment
สำหรับ Network Engineer ในไทย OSPF เป็น Protocol ที่ต้องเรียนรู้และเข้าใจอย่างลึกซึ้ง เพราะเป็น Core Topic ใน Certification ทุกระดับ ตั้งแต่ CCNA, CCNP ไปจนถึง CCIE และเป็น Protocol ที่ใช้จริงในทุกองค์กร Key Takeaway สำหรับ Network Engineer คือเริ่มจาก Single-Area OSPF สำหรับ Network ขนาดเล็ก แล้วค่อยๆ ขยายเป็น Multi-Area เมื่อ Network โตขึ้น ใช้ Stub Area สำหรับ Remote Site เพื่อลด Resource ทำ Summarization เพื่อลด Routing Table Enable Authentication เพื่อ Security ใช้ BFD สำหรับ Fast Convergence และ Document ทุกอย่าง ในปี 2026 OSPF อาจถูกท้าทายจาก BGP ใน Data Center Fabric แต่สำหรับ Campus Network และ WAN OSPF ยังคงเป็นราชาของ IGP