1. Giới thiệu :
Giao thức OSPF (Open Shortest Path First) thuộc loại link-state routing protocol và được hổ trợ bởi nhiều nhà sản xuất. OSPF sử dụng thuật toán SPF để tính toán ra đường đi ngắn nhất cho một route. Giao thức OSPF có thể được sử dụng cho mạng nhỏ cũng như một mạng lớn. Do các router sử dụng giao thức OSPF sử dụng thuật toán để tính metric cho các route rồi từ đó xây dựng nên đồ hình của mạng nên tốn rất nhiều bộ nhớ cũng như hoạt động của CPU router. Nếu như một mạng quá lớn thì việc này diễn ra rất lâu và tốn rất nhiều bộ nhớ. Để khắc phục tình trạng trên, giao thức OSPF cho phép chia một mạng ra thành nhiều area khác nhau. Các router trong cùng một area trao đổi thông tin với nhau, không trao đổi với các router khác vùng. Vì vậy, việc xây dựng đồ hình của router được giảm đi rất nhiều. Các vùng khác nhau muốn liên kết được với nhau phải nối với area 0 (còn được gọi là backbone) bằng một router biên.
Các router chạy giao thức OSPF giữ liên lạc với nhau bằng cách gửi các gói Hello cho nhau. Nếu router vẫn còn nhận được các gói Hello từ một router kết nối trực tiếp qua một đường kết nối thì nó biêt được rằng đường kết nối và router đầu xa vẫn hoạt động tốt. Nếu như router không nhận được gói hello trong một khoảng thời gian nhất định, được gọi là dead interval, thì router biết rằng router đầu xa đã bị down và khi đó router sẽ chạy thuật toán SPF để tính route mới.
Mỗi router sử dụng giao thức OSPF có một số ID để nhận dạng. Router sẽ sử dụng địa chỉ IP của interface loopback cao nhất (nếu có nhiều loopback) làm ID. Nếu không có loopback nào được cấu hình hình thì router sẽ sử dụng IP cao nhất của các interface vật lý.
OSPF có một số ứu điểm là : thời gian hội tụ nhanh, được hổ trợ bởi nhiều nhà sản xuất, hổ trở VLSM, có thể sử dụng trên một mạng lớn, có tính ổn định cao.
2. Các câu lệnh sử dụng trong bài lab :
- router ospf process-id
Cho phép giao thức OSPF
- network address wildcard-mask area area-id
Quảng bá một mạng thuộc một area nào đó
3. Mô tả bài lab và đồ hình :
Đồ hình bài lab như hình vẽ. Các router được cấu hình các interface loopback 0. Địa chỉ IP của các interface được ghi trên hình. Lưu ý ở đây chúng ta sử dụng subnetmask của các mạng khác
4. Các bước thực hiện :
Trước tiên ta cấu hình cho các Router như sau :
Router BellLab1
Router>enable
Router#configure terminal
Router(config)#hostname BellLab1
BellLab1(config)#interface f0/0
BellLab1(config-if)#ip address 192.168.1.1 255.255.255.0
BellLab1(config-if)#no shutdown
BellLab1(config-if)#exit
BellLab1(config)#interface loopback 0
BellLab1(config-if)#ip address 10.0.0.1 255.255.0.0
BellLab1(config-if)#exit
BellLab1(config)#
Router BellLab2
Router>enable
Router#configure terminal
Router(config)#hostname BellLab2
BellLab2(config)#interface f0/0
BellLab2(config-if)#ip address 192.168.1.2 255.255.255.0
BellLab2(config-if)#no shutdown
BellLab2(config-if)#exit
BellLab2(config)#interface f0/1
BellLab2(config-if)#ip address 170.1.0.1 255.255.0.0
BellLab2(config-if)#no shutdown
BellLab2(config-if)#exit
BellLab2(config)#interface loopback 0
BellLab2(config-if)#ip address 11.1.0.1 255.0.0.0
BellLab2(config-if)#exit
BellLab2(config)#interface e1/0
BellLab2(config-if)#ip address 15.1.0.1 255.0.0.0
BellLab2(config-if)#no shutdown
BellLab2(config-if)#exit
Router BellLab3
Router>enable
Router#configure terminal
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname BellLab3
Router(config)#hostname BellLab3
BellLab3(config)#interface f0/1
BellLab3(config)#interface f0/1
BellLab3(config-if)#ip address 170.1.0.2 255.255.0.0
BellLab3(config-if)#no shutdown
BellLab3(config-if)#exit
BellLab3(config)#interface loopback 0
BellLab3(config)#interface loopback 0
BellLab3(config-if)#ip address 12.1.0.1 255.255.255.252
BellLab3(config-if)#exit
BellLab3(config)#
*Trước khi cấu hình OSPF mọi người cần chú ý đến giá trị WildcasdMask được tính theo các lấy 255.255.255.255 trừ cho giá trị SubnetMask của mạng cần tham gia vào quá trình quảng bá của Ví dụ : cần cho mạng 192.168.1.0/24 được quảng bá trong OSPF:
Mạng 192.168.1.0/24 có Subnetmask là 255.255.255.0 nên giá trị WildcasdMask là :
255.255.255.255 – 255.255.255.0 = 0.0.0.255
Sau khi cấu hình interface cho các router, ta tiến hành cấu hình OSPF như sau:
Router BellLab1
BellLab1(config)#router ospf 10
BellLab1(config-router)#network 192.168.1.0 0.0.0.255 area 0
BellLab1(config-router)#network 10.0.0.0 0.0.255.255 area 0
Router BellLab2
BellLab2(config)#router ospf 10
BellLab2(config-router)#network 192.168.1.0 0.0.0.255 area 0
BellLab2(config-router)#network 170.1.0.0 0.0.255.255 area 0
BellLab2(config-router)#network 15.0.0.0 0.255.255.255 area 0
BellLab2(config-router)#network 11.0.0.0 0.255.255.255 area 0
Router BellLab3
BellLab3(config)#router ospf 10
BellLab3(config-router)#network 170.1.0.0 0.0.255.255 area 0
BellLab3(config-router)#network 12.1.0.0 0.0.0.3 area 0
– Sau khi quảng bá các mạng của router xong chúng ta kiểm tra lại bảng định tuyến của các router bằng câu lệnh show ip route
Nhận xét : các router đã biết được tất cả các mạng trong đồ hình của chúng ta. Các route router biết được nhờ giao thức OSPF được đánh O ở đầu route. Trong kết quả trên các route đó được in đậm.
- Bây giờ chúng ta sẽ kiểm tra lại xem các mạng có thể liên lạc được với nhau hay chưa bằng cách lần lượt đứng trên từng router và ping đến các mạng không nối trực tiếp với nó.
BellLab3#ping 11.1.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 11.1.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/31/32 ms
BellLab3#ping 10.0.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 11.1.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 56/68/108 ms
– Các bạn làm tương tự cho các mạng khác để kiểm tra, và chắc chắn sẽ ping thấy!
5. Cấu hình OSPF nhiều Area :
- Chúng ta sẽ khảo sát cách cấu hình các mạng được phân bố trong nhiều area khác nhau trong mục này.
- Trước hết, chúng ta khảo sát nếu cấu hình cho mạng 12.1.0.0/30 và interface f0/1 của BellLab3 trong cùng area 1 còn các mạng khác vẫn trong area 0 thì toàn mạng của chúng ta có thể liên lạc được hay không ?
- Do phần trên chúng ta đã cấu hình OSPF cho cùng một vùng. Nên bây giờ chúng ta chỉ cần gở bỏ cấu hình OSPF cho router BellLab3 và cấu hình lại cho nó như yêu cầu của câu hỏi đặt ra.
Sau khi cấu hình xong chúng ta kiểm tra lại bảng định tuyến của các router :
Nhận xét : router BellLab1 và BellLab2 biết được các mạng của nhau nhưng không biết được mạng của router BellLab3. Ngược lại router BellLab3, không biết được các mạng của router BellLab1 và BellLab2. Điều này chứng tỏ, các router trong cùng một area chỉ biết được các mạng trong area đó, các mạng trong area khác thì router không biết. (Trường hợp, router BellLab1 thấy được mạng 170.1.0.0/16 là do router BellLab2 quảng bá mạng đó thuộc area 0)
– Để liên kết được các mạng trong cùng các area khác nhau chúng ta phải có một router biên nối area đó về area 0 (backbone). Router này có một interface thuộc area đó và một interface thuộc area 0.
Trong trường hợp bài lab, chúng ta có hai cách để giải quyết vấn đề này. Cách thứ nhất là cấu hình cho mạng của interface f0/1 của router BellLab3 thuộc area 0. Lúc này, router BellLab3 đóng vai trò là một router biên. Cách thứ hai là cấu hình cho mạng của interface f0/1 router BellLab2 thuộc area 1, lúc này router BellLab2 đóng vai trò là router biên.
Chúng ta sẽ khảo sát cách 1 (cấu hình cho mạng interface f0/1 của BellLab3 thuộc area0).
Cách 2 được thực hiện tương tự
Cách cấu hình:
BellLab3(config)#router ospf 10
BellLab3(config-router)#no network 170.1.0.0 0.0.255.255 area 1
BellLab3(config-router)#network 170.1.0.0 0.0.255.255 area 0
BellLab3(config-router)#
– Sau khi cấu hình xong, chúng ta kiểm tra lại bảng định tuyến của các router :
Nhận xét : các router đã thấy được các mạng của các router khác. Như vậy toàn mạng đã liên lạc được với nhau. Chúng ta có thể kiểm tra bằng cách ping đến từng mạng.
6. Cấu hình quá trình chứng thực trong OSPF :
Các router mặc nhiên tin rằng những thông tin định tuyến mà nó nhận được là do đúng router tin cậy phát ra và những thông tin này không bị can thiệp dọc đường đi. Để đảm bảo điều này, các router trong một vùng cần được cấu hình để thực hiện chứng thực với
Một một cổng OSPF trên router cần có một chìa khóa chứng thực để sử dụng khi gửi các thông tin OSPF cho các router khác cùng kết nối với cổng đó. Chìa khóa này sử dụng để tạo ra dữ liệu chứng thực (Authenticationg data) đặt trong phần header của gói OSPF. Mật mã này có thể dài đến 8 ký tự. Bạn cấu hình chứng thực như sau :
Router(config-if)#ip ospf authentication-key password
Router(config-if)#ip ospf authentication Hoặc
Router(config-router)#area area-id authentication
Tuy nhiên, cơ chế chứng thực PlainText không được an toàn do mật khẩu không được mã hóa trước khi gởi ra bên ngoài nên để an toàn hơn ta nên chuyển qua chế độ chứng thực bằng MD5, cách cấu hình như sau
Router(config-if)#ip ospf message-digest-key key-id encryption-type md5 key
Router(config-if)#ip ospf authentication message-digest
Hoặc
Router(config-router)#area area-id authentication message-digest
Các câu lệnh show dùng để kiểm tra cấu hình OSPF :
Lệnh |
Giải thích |
Show ip protocol |
Hiển thị các thông tin về thông số thời gian, thông số định tuyến, mạng định tuyến và nhiều thông tin khác của tất cả các giao thức định tuyến đang hoạt động trên router |
Show ip route |
Hiển thị bảng định tuyến của router, trong đó là danh sách các đường đi tốt nhất đến các mạng đích của bản thân router và cho biết router học được các đường đi này bằng cách nào. |
Show ip ospf interface |
Lệnh này cho biết cổng của router đã được cấu hình đúng với vùng của nó hay không. Nếu cổng loopback không được cấu hình thì ghi địa chỉ IP của cổng vật lý có giá trị lớn nhất sẽ được chọn làm router ID. Lệnh này cũng hiển thị các thông số của khoảng thời gian hello và khoảng thời gian bất động trên cổng đó, đồng thời cho biết các router láng giềng thân mật kết nối vào cổng. |
Show ip ospf |
Lệnh này cho biết số lần đã sử dụng thuật toán SPF, đồng thời cho biết khoảng thời gian cập nhật khi mạng không có gì thay đổi. |
Show ip ospf neighbor detail |
Liệt kê chi tiết các láng giềng, giá trị ưu tiên của chúng và trạng thái của chúng. |
Show ip ospf database |
Hiển thị nội dung của cơ sở dữ liệu về cấu trúc hệ thống mạng trên router, đồng thời cho biết router ID, ID của tiến trình OSPF. |
– Các lệnh clear và debug dùng để kiểm tra hoạt động của OSPF
Lệnh |
Giải thích |
Clear ip route * |
Xóa toàn bộ bảng định tuyến |
Clear ip route a.b.c.d |
Xóa đường a.b.c.d trong bảng định tuyến |
Debug ip ospf events |
Báo cáo mọi sự kiện của OSPF |
Debug ip ospf adj |
Báo cáo mọi sự kiện về hoạt động quan hệ thân mật của OSPF |