หัวข้อ 17 · 18 นาที
OSPF: cost, DR/BDR และ network type
นึกภาพก่อน
แอปนำทางไม่ได้เลือกเส้นที่ สั้นที่สุด แต่เลือกเส้นที่ เร็วที่สุด: ทางด่วนที่อ้อมกว่าอาจถึงก่อนถนนเล็กที่ตรงกว่า OSPF ทำแบบเดียวกัน: ให้คะแนนแต่ละลิงก์ตามความเร็ว (ยิ่งเร็วยิ่งถูก) แล้วเลือกเส้นทางที่ ผลรวมต่ำสุด
Cost
Cost = Reference bandwidth ÷ Interface bandwidth
- reference bandwidth default = 100 (Mbps)
- เปลี่ยนด้วย
auto-cost reference-bandwidth 10000 - ต้องตั้งเท่ากันทุก router ไม่เช่นนั้นแต่ละตัวคิด cost ของเส้นทางเดียวกันไม่เท่ากัน และเลือกเส้นทางไม่สอดคล้องกัน
ทำไมต้องเปลี่ยน reference
ด้วย default 100: ลิงก์ 100 Mbps, 1 Gbps และ 10 Gbps ได้ cost 1 เท่ากันหมด (cost ต่ำสุดคือ 1) OSPF จึงแยกไม่ออกว่าเส้นใดเร็วกว่า
| Interface | bandwidth | cost ที่ reference 100 | cost ที่ reference 10000 |
|---|---|---|---|
| 10 Gbps | 10000 | 1 | 1 |
| 1 Gbps | 1000 | 1 | 10 |
| 100 Mbps | 100 | 1 | 100 |
| T1 | 1.544 | 64 | 6477 |
ตัวอย่างในสไลด์ (reference 10000):
- Gigabit 1000 Mbps → 10000 ÷ 1000 = 10
- T1 1.544 Mbps → 10000 ÷ 1.544 = 6476.68 → 6477
Path selection
OSPF เลือกเส้นทางที่ cost รวมต่ำที่สุดเสมอ — ไม่ได้ดูจำนวน hop
ตัวอย่างในสไลด์:
| เส้นทาง | cost รวม |
|---|---|
| ผ่าน switch (ลิงก์ Gigabit) | 10 + 10 = 20 |
| ผ่านลิงก์ตรง Point-to-Point (T1) | 12,954 |
แม้ลิงก์ Point-to-Point จะ "ตรง" กว่าในทาง physical แต่ความเร็วต่ำทำให้ cost สูงกว่ามาก OSPF จึงเลือกผ่าน switch เป็นหลัก และ สลับไปใช้ลิงก์ P2P ก็ต่อเมื่อเส้นทางหลักล้มเหลว — นี่คือประโยชน์ของ redundancy
ECMP (Equal-Cost Multi-Path)
ถ้า cost ของสองเส้นทาง เท่ากันพอดี OSPF ติดตั้งทั้งสองเส้น ลง routing table (default สูงสุด 4 เส้นทาง บน Cisco IOS) แล้ว load balance ระหว่างกัน ได้ทั้ง throughput รวมและ redundancy
รูปแบบ: R1-R2 bandwidth(Mbps) — หาเส้นทางจาก router หมายเลขต่ำสุดไปหมายเลขสูงสุด
หาเส้นทาง R1 → R4 · reference bandwidth = 10000 Mbps
| ลิงก์ | bandwidth (Mbps) | cost |
|---|---|---|
| R1–R2 | 1000 | ? |
| R2–R4 | 1000 | ? |
| R1–R3 | 1.544 | ? |
| R3–R4 | 1.544 | ? |
คำอธิบายทีละขั้น
OSPF cost
ลองใน simulation: preset แรกได้ 20 กับ 12,954 ตามสไลด์ แล้วเปลี่ยน reference เป็น 100 เพื่อดูว่าลิงก์ Gigabit ทั้งหมดกลายเป็น cost 1
DR/BDR election
บนเครือข่ายที่มีหลาย router ต่อ segment เดียว (เช่นผ่าน switch) ถ้าทุกตัวแลก LSA กับทุกตัว จำนวนความสัมพันธ์จะมากเกินไป จึงเลือก DR (Designated Router) เป็นศูนย์กลาง และ BDR (Backup DR) เป็นตัวสำรอง
กติกา
- OSPF priority สูงสุด ชนะ (ช่วง 0–255)
- ถ้าเท่ากัน → Router ID สูงสุด ชนะ
- อันดับสองได้เป็น BDR
ตัวอย่างในสไลด์: R1 (Router ID 1.1.1.1) และ R2 (2.2.2.2) priority 100 เท่ากัน → R2 เป็น DR (Router ID สูงกว่า) · R1 เป็น BDR
Non-preemptive
เมื่อเลือก DR/BDR แล้ว router ใหม่ที่ priority สูงกว่าจะไม่แย่งตำแหน่ง DR คงอยู่จนกว่าจะล่ม หรือจนกว่าจะสั่ง clear ip ospf process
ผลที่ตามมา: ลำดับการเปิดเครื่องมีผล router ที่ขึ้นก่อนอาจได้เป็น DR ทั้งที่ priority ต่ำกว่า
Priority 0
ip ospf priority 0 = ไม่เข้าร่วมการเลือก ไม่เป็นทั้ง DR และ BDR คงสถานะ DROTHER (แต่ยังเป็น full neighbor กับ DR/BDR)
ใช้กับ router ที่ทรัพยากรจำกัด หรือ router ขอบเครือข่าย
interface GigabitEthernet0/1
ip ospf priority 100
Network type
| Broadcast | Point-to-Point | |
|---|---|---|
| ลักษณะ | หลาย router บน segment เดียว (multi-access) | สอง router เท่านั้น |
| DR/BDR | มี | ไม่มี |
| LSA | Type 1 + Type 2 | Type 1 เท่านั้น |
| default บน | Ethernet | serial |
| คำสั่ง | – | ip ospf network point-to-point |
- LSA Type 1 (Router LSA): ทุก router สร้าง อธิบายลิงก์ของตัวเอง
- LSA Type 2 (Network LSA): DR สร้าง อธิบาย segment แบบ multi-access — จึงมีเฉพาะที่ที่มี DR
ลิงก์ Ethernet ที่ต่อ router สองตัวตรงกัน ตั้งเป็น point-to-point ได้เพื่อไม่ต้องเสียเวลาเลือก DR/BDR
ตัวอย่างไล่ทีละขั้น
โจทย์ 1: ตั้ง auto-cost reference-bandwidth 10000 จาก R1 ไป R4 มีสองทาง: R1–R2–R4 (ลิงก์ 1 Gbps สองเส้น) กับ R1–R3–R4 (ลิงก์ 100 Mbps แล้ว 10 Gbps) OSPF เลือกทางใด
- 1 Gbps: 10000 ÷ 1000 = 10 → ทางแรก 10 + 10 = 20
- 100 Mbps: 10000 ÷ 100 = 100 · 10 Gbps: 10000 ÷ 10000 = 1 → ทางที่สอง 100 + 1 = 101
- 20 น้อยกว่า 101 → เลือก R1–R2–R4
ลิงก์ 10 Gbps ในทางที่สองไม่ช่วย เพราะลิงก์ 100 Mbps ถ่วงผลรวม
โจทย์ 2: router สี่ตัวบน segment เดียวกันเปิดพร้อมกัน: A (priority 1, RID 4.4.4.4), B (priority 100, RID 1.1.1.1), C (priority 100, RID 2.2.2.2), D (priority 0, RID 9.9.9.9) ใครเป็น DR และ BDR
- D มี priority 0 → ตัดออก (เป็น DROTHER เสมอ แม้ Router ID สูงสุด)
- priority สูงสุดคือ 100: B และ C เท่ากัน → เทียบ Router ID: C (2.2.2.2) สูงกว่า B (1.1.1.1)
- DR = C · BDR = B · A และ D เป็น DROTHER
ถ้าภายหลังมี router E (priority 200) เข้ามา: ไม่เปลี่ยนอะไร เพราะ non-preemptive
จุดที่มักพลาด
1. กลับสูตร cost
reference ÷ bandwidth (ไม่ใช่ bandwidth ÷ reference) ลิงก์เร็ว cost ต่ำ
2. คิดว่า OSPF เลือกเส้นที่ hop น้อยสุด
เลือก cost รวม ต่ำสุด
3. คิดว่า Router ID ต่ำชนะ DR
สูงสุด ชนะ ทั้ง priority และ Router ID (ตรงข้ามกับ STP)
4. คิดว่า DR ถูกแย่งได้
non-preemptive
5. คิดว่า priority 0 คือ priority ต่ำสุดที่ยังมีสิทธิ์
priority 0 = ไม่มีสิทธิ์เลย
6. ตั้ง reference bandwidth ไม่เท่ากัน
ต้องเท่ากันทุก router
7. คิดว่า Point-to-Point มี DR
ไม่มี และมีแต่ LSA Type 1
ที่มา: OSPF_Single_Area_Advanced.pdf หน้า 2–8