OSPF Routing Protocol

Open Shortest Path First (OSPF)

Open Shortest Path First เป็นโปรโตคอลแบบ Link State (ไม่ส่ง Routing Table ทั้งหมดของตนไปให้กับเพื่อนบ้าน) ที่ได้รับความนิยมและเป็นโปรโตคอลที่สำคัญมากในปัจจุบัน โปรโตคอลนี้เป็นโปรโตคอลแบบ Open Standard ถูกนำไปใช้ในหลายๆผู้ผลิตอุปกรณ์เน็ตเวิร์ค รวมถึงตัวของ Cisco เอง โปรโตคอลนี้รันภายใต้ อัลกอริทึมการหาเส้นทางแบบ Dijkstra คุณสมบัติเด่นๆของ 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
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
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
13)   Point-to-Point เป็นการเชื่อมต่อระหว่างอุปกรณ์สองตัว
14)   Point-to-multipoint เป็นการเชื่อมต่อระหว่างอุปกรณ์หนึ่งตัวกับหลายตัว

การทำงานของ OSPF ประกอบด้วย
1 เพื่อนบ้านและการเริ่มความสัมพันธ์
2 การทำ LSA
3 การคำนวณ SPF (Shortest Path First)

            เมื่อ 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

ลดความเสี่ยงด้วย Backup Interface

การทำ Active Standby บน Router 

ส่วนที่ผมกำลังทำ จะให้ Serial1/0 เป็นขาที่ Active อยู่ ส่วน Serial1/1 เป็นขาที่รอ Standby อยู่ หากขา Serial1/0 เกิดการ Down จะทำให้ Serial1/1 ขึ้นมาแทนทันที

การคอนฟิก

R1(config-if)#int se1/0
R1(config-if)#backup interface se1/1
ส่วนคอนฟิกอื่นๆ ผมไม่ขอกล่าวถึงนะครับ ก็จะมีการ Set IP Address ทั่วๆไป

ภาพแสดงก่อนการทำการ Shutdown port ที่ Router R2




หากเกิดการ Down ของ Serial1/0 จะทำให้ขา Serial1/1 ขึ้นมาแทน (up) แต่ต้องคอยเวลาซักระยะหนึ่งก่อน

การทำ Summarization


ในการทำ Summarization ก็คือการยุบรวม Routing Entry จำนวนมากๆ เข้าให้กลายเป็น Routing Entry เดียว เพื่อให้ลดภาระการทำงาน ลดการใช้หน่วยความจำในการเก็บ Routing Entry ของ router ลง แต่การจะทำ Summarization ได้ IP address ที่ใช้กันในองค์กร ต้องผ่านการออกแบบมาอย่างดีก่อน ซึ่งจะต้องไม่มีขาดตอนของ IP Address

การทำ Summarization จะ Support กับ Routing Protocol ที่เป็นแบบ Classless เท่านั้น


การทำ DHCP บน Router


บนขา Interface ในโซนสีชมพู
ip dhcp excluded-address 192.168.1.1 192.168.1.10

ip dhcp pool tck-pool
network 192.168.1.0 255.255.255.0
default-router 192.168.1.1

dns-server 5.5.5.5

บนขา Interface ในโซนสีฟ้า
ip dhcp excluded-address 192.168.2.1 192.168.2.10

ip dhcp pool tck-pool-2
network 192.168.2.0 255.255.255.0
default-router 192.168.2.1
dns-server 8.8.8.8

ip dhcp excluded-address : เป็นการกัน IP address ไม่ให้ตัว Router ทำการแจกจ่าย
ip dhcp pool tck-pool : ตั้งชื่อให้ Pool
network 192.168.1.0 255.255.255.0 : ใส่ Subnet mask ที่ต้องการแจก
default-router 192.168.1.1 : ใส่ Default gateway
dns-server 8.8.8.8 : ใส่ dns server

คำสั่ง Show
show ip dhcp blinding : แสดงรายการทั้งหมดของ IP ที่ได้รับการแจกจ่ายให้กับเครื่อง Client
show ip dhcp pool [pool name] : แสดงค่าคอนฟิก
show ip dhcp server statistics : แสดงสถานะของ DHCP
show ip dhcp conflict


note:
เราเตอร์สามารถแบ่ง Broadcast Domain ได้
DHCP จะแบ่งตาม Broadcast Domain โดยจะเลือกให้ Match กับ network id ของ ขา Interface ด้วย


Download PKT

Erase-Config

TCK#erase startup-config 
Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]
[OK]
Erase of nvram: complete
%SYS-7-NV_BLOCK_INIT: Initialized the geometry of nvram


//above command is used when you want to delete router configuration

TFTP

Using TFTP server as a second backup

TFTP server has connected to Router


//copy confuguration from router to tftp server
TCK#copy running-config tftp
Address or name of remote host []? 192.168.1.2
Destination filename [TCK-confg]? tck-config

Writing running-config...!!
[OK - 557 bytes]

557 bytes copied in 0.001 secs (557000 bytes/sec)

//copy configuration from tftp to router
TCK#copy tftp running-config 
Address or name of remote host []? 192.168.1.2
Source filename []? tck-config
Destination filename [running-config]? 

Accessing tftp://192.168.1.2/tck-config...
Loading tck-config from 192.168.1.2: !
[OK - 557 bytes]

557 bytes copied in 0 secs

note:
ip address of router is 192.168.1.1/30
ip address of server is 192.168.1.2/30