I.GIAO THỨC OSPF1.1. Tổng quan về giao thức OSPFa.Khái niệmOSPF (Open Shortest Path First) là một giao thức định tuyến dạng linkstate, sử dụng thuật toán Dijkstra “ Shortest Path First (SPF)” để xây dựng bảng định tuyến.•Open: chuẩn mở của IETF (Version 3 – RFC 2740)•Shortest Path First: Cài đặt giải thuật Dijkstra OSPF được miêu tả trong nhiều tài liệu của IETF (Internet Engineering Task Force)•OSPFv2: RFC2328•OSPFv3: RFC5340b.Đặc điểmTốc độ hội tụ nhanhĐường đi linh hoạt hơn.Hỗ trợ xác thực (Authenticate)Kích thước mạng có thể hỗ trợ lớnMỗi router có cái nhìn đầy đủ về cấu trúc hệ thống mạngChọn đường theo trạng thái đường link state hiệu quả hơn distance vectorSử dụng chi phí (cost) làm thông số định tuyến để chọn đường đi trong mạng.Thực hiện cập nhật khi mạng có sự thay đổi.1.2. Các loại gói tin OSPFPhần dữ liệu của 1 thông báo OSPF được đóng trong 1 gói.Trường dữ liệu này có thể bao gồm 1 trong 5 loại bản tin OSPF.Các gói tiêu đề OSPF được gửi kèm với mỗi gói tin OSPF,bất kể loại bản tin nào của OSPF. Các OSPF header và loại gói dữ liệu cụ thể được gói gọn trong gói tin IP.Trong gói tiêu đề IP,trường giao thức được thiết lập bằng 89 để cho biết là OSPF, và địa chỉ đích được thiết lập là 1 trong 2 địa chỉ multicast :224.0.0.5 hoặc 224.0.0.6. Nếu gói OSPF được đóng gói trong 1 khung Ethernet, địa chỉ MAC đích cũng là 1 địa chỉ multicast : 01005E000005 or 01005E000006.Khuôn dạng gói OSPF:
Trang 1VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ────────
BÁO CÁO MÔN: CÁC GIAO THỨC ĐỊNH TUYẾN
ĐỀ TÀI: GIAO THỨC OSPF
Sinh viên thực hiện:1 Nguyễn Thị Hạnh 20121661
Giảng viên hướng dẫn: PGS.TS Trương Thị Diệu Linh
Hà Nội, tháng 4 năm 2016
Trang 3Lời nói đầu
Giao thức là một kiểu cách thức giao tiếp , đối thoại Cũng như con người máy móc muốn làm việc với nhau cũng cần có những cách thức giao tiếp riêng Trong việc truyền tin cũng vậy các Router muốn giao tiếp với nhau cũng cần phải có những giao thức để làm việc với nhau Các giao thức đó thường là RIP , IGRP, EGRP, IS-IS,BGP4 và OSPF
OSPF là giao thức định tuyến nhóm link-state, thường được triển khai trong các hệ thống mạng phức tạp Giao thức OSPF tự xây dựng những cơ chế riêng cho mình, tự bảo đảm những quan hệ của chính mình với các router khác Nó có thể dò tìm nhanh chóng sự thay đổ của topology (cũng như lỗi của các interface ) và tính toán lại những router mới sau chu kỳ hội tụ Chu kỳ hội tụ của OSPF rất ngắn và cũng tốn rất ít lưu lượng đường truyền
Để tìm hiểu rõ hơn về các đặc điểm và cách thức hoạt động của OSPF, nhóm chúng
em đã lựa chon đề tài “Giao thức định tuyến OSPF” và đưa ra các mô hình mô phỏng
trực quan bằng cách thực hiện các bài lab về giao thức OSPF Chúng em xin cảm ơn PGS.TS.Trương Thị Diệu Linh đã hướng dẫn chúng em hoàn thành bài tập này!
Trang 4I GIAO THỨC OSPF
1.1 Tổng quan về giao thức OSPF
a Khái niệm
OSPF (Open Shortest Path First) là một giao thức định tuyến dạng link-state, sử dụng thuật toán Dijkstra “ Shortest Path First (SPF)” để xây dựng bảng định tuyến
• Open: chuẩn mở của IETF (Version 3 – RFC 2740)
• Shortest Path First: Cài đặt giải thuật Dijkstra
OSPF được miêu tả trong nhiều tài liệu của IETF (Internet Engineering Task Force)
• OSPFv2: RFC2328
• OSPFv3: RFC5340
b Đặc điểm
Tốc độ hội tụ nhanh
Đường đi linh hoạt hơn
Hỗ trợ xác thực (Authenticate)
Kích thước mạng có thể hỗ trợ lớn
Mỗi router có cái nhìn đầy đủ về cấu trúc hệ thống mạng
Chọn đường theo trạng thái đường link state hiệu quả hơn distance vector
Sử dụng chi phí (cost) làm thông số định tuyến để chọn đường đi trong mạng
Thực hiện cập nhật khi mạng có sự thay đổi
1.2 Các loại gói tin OSPF
Phần dữ liệu của 1 thông báo OSPF được đóng trong 1 gói.Trường dữ liệu này có thể bao gồm 1 trong 5 loại bản tin OSPF
Các gói tiêu đề OSPF được gửi kèm với mỗi gói tin OSPF,bất kể loại bản tin nào của OSPF Các OSPF header và loại gói dữ liệu cụ thể được gói gọn trong gói tin IP.Trong gói tiêu đề IP,trường giao thức được thiết lập bằng 89 để cho biết là OSPF, và địa chỉ đích được thiết lập là 1 trong 2 địa chỉ multicast :224.0.0.5 hoặc 224.0.0.6 Nếu gói OSPF được đóng gói trong 1 khung Ethernet, địa chỉ MAC đích cũng là 1 địa chỉ multicast : 01-00-5E-00-00-05 or 01-00-5E-00-00-06
Khuôn dạng gói OSPF:
Trang 5Hình 2.1: Khuôn dạng gói tin OSPF
Trong đó:
• Version: phiên bản gói tin
• Type (loại gói OSPF): Hello (1), DD(2), LS Request (3), LS Update (4), LS ACK (5)
• Router ID: xác định router
• Area ID: Vùng hoạt động của OSPF
a Gói tin Hello
Định dạng thông điệp bản tin Hello:
Hình 2.2: Định dạng thông điệp bản tin Hello
Trong đó:
• Network Mask : subnet mask của giao diện gửi
Trang 6• Hello Interval : số giây gửi bản tin Hello của router
• Router Priority : sử dụng trong việc bầu chọn DR,BDR
• Designated Router : Router ID của DR nếu có
• Backup Designated Router : Router ID của BDR nếu có
• List of Neighbors : danh sách OSPF Router ID của router hàng xóm
Hoạt động của gói tin Hello: dùng để thiết lập và duy trì mối quan hệ hàng xóm với những router khác Mỗi router gửi multicast gói Hello để giữ liên lạc với các router láng giềng Gói Hello mang thông tin về các mạng kết nối trực tiếp vào router
Hình 2.3: Hoạt động của gói tin Hello
c Gói tin DBD
Bản tin dùng để trao đổi toàn bộ link-state Database phục vụ cho việc đồng bộ các router kề Khi trao đổi, một router đóng vai trò là chủ, các router khác đóng vai trò tới
và đáp trả lại thông điệp “database description” này
d Gói tin LSR
Link state request, gói tin này để yêu cầu các router lân cận cập nhật trạng thái liên kết của các link cụ thể Mỗi yêu cầu đặc trưng bởi: LS type, Link state ID, router đã quảng cáo thông tin link -state Các router lân cận sẽ trả lời với thông tin mới nhất mà
nó có được về các liên kết đó
Trang 7e Gói tin LSU
Link- state update được sử dụng để trả lời LSRs cũng như công bố thông tin mới Một gói LSU có thể chứa 10 loại bản tin khác nhau của link-state Advertisements (LSAs) như hiển thị ở hình bên dưới
Hình 2.4: Gói tin LSU
f Gói tin LSAck
Khi 1 LSU được nhận router gửi 1 link-state Acknowledgement (LSAck) để xác nhận LSU
1.3 Quá trình bầu chọn DR và BDR
Bản tin LSAs được gửi đi khi khởi tạo hoặc khi có sự thay đổi của mô hình mạng
Để tránh hiện tượng gửi bản tin LSAs làm cho lưu lương mạng trở nên tắc nghẽn không lưu thông được.Giải pháp đua ra là phải bầu chọn DR và BDR
DR có nhiệm vụ cập nhật các router khác(gọi là DROther) khi có sự thay đổi ở trong mạng Thay vì phải gửi lan tràn bản tin LSAs thì DROthers chỉ gửi LSAs của nó cho DR và BDR sử dung địa chi 224.0.0.6 Trong trường hợp này R1 gửi LSA cho DR
và BDR Sau đó BDR lắng nghe xem DR có hoạt động tốt hay không Sau đó DR có nhiệm vụ chuyển tiếp các LSAs tới tất cả các router khác trong mạng bằng địa chỉ 224.0.0.5 Kết quả cuối cùng chỉ 1 router làm nhiệm vụ gửi lan tràn các LSAs
BDR để dự phòng cho DR
DR có các nhiệm vụ sau:
Mô tả mạng đa truy nhập và các Router gắn vào mạng cho phần còn lại của liên mạng
Quản lý quá trình tràn lụt trong mạng đa truy nhập
Mỗi Router trong mạng thiết lập quan hệ thân mật với DR Chỉ có DR gửi các LSA tới phần còn lại của liên mạng
Nếu DR bị hỏng, một DR mới phải được bầu ra Đó chính là BDR
Quá trình bầu chọn liên quan đến 2 tham số:
Trang 8• Độ ưu tiên (priority)
• router ID
Tham số priority được chọn trước tiên (0 - 255) Mặc định giá trị priority OSPF là 1
Nếu priority đặt là 0 thì router này sẽ không tham gia vào quá trình bầu chọn DR/BDR
Khi giá trị priority đều bằng nhau thì OSPF sẽ bầu chọn DR dựa vào tham số router ID
Trong trường hợp DR bị lỗi, BDR sẽ được lựa chọn làm DR và sẽ lựa chọn router còn lại làm BDR Tương tự khi BDR bị lỗi, cũng chọn mới BDR từ các router còn lại, trừ DR
Chú ý: Priority có thể ảnh hưởng đến quá trình bầu cử DR và BDR nhưng
không ảnh hưởng đến các DR và BDR đã được bầu cử Nếu có một Router có Priority cao hơn các DR và BDR đã được kích hoạt, nó cũng không thể thay thế các DR và BDR này
Trang 9 Nếu Router DR cũ hết lỗi, tham gia vào mạng vẫn bị coi là DROther
1.4 Chi phí của OSPF
OSPF sử dụng metric là cost để xác định đường đi tốt nhất Cost của một tuyến đường là giá trị tích luỹ từ 1 router tới router kế tiếp cho tới khi đến đích
Cost được tính dựa trên băng thông sao cho tốc độ kết nối của đường link càng cao thì cost càng thấp (CT: 10^8 / bandwidth)
Có thể thay đổi giá trị cost
Băng thông mặc định là 100Mbps
Ta phân biệt giữa bandwidth danh định trên cổng và tốc độ thật của cổng ấy Hai giá trị này không nhất thiết phải trùng nhau và giá trị danh định mới chính là giá trị được tham gia vào tính toán định tuyến Giá trị danh định được thiết lập trên cổng bằng câu lệnh:
R(config-if)#bandwidth BW(đơn vị là kbps)
Ta phải chỉnh giá trị danh định này trùng với tốc độ thật của cổng để tránh việc tính toán sai lầm trong định tuyến Ví dụ: một đường leased – line kết nối vào cổng serial chỉ có tốc độ thật là 512kbps nhưng giá trị bandwidth danh định trên cổng serial luôn
là 1.544Mbps ở mặc định Điều đó dẫn đến OSPF xem một cổng 512 kbps như một cổng 1.544 Mbps! Ta phải chính lại băng thông danh định trên cổng trong trường hợp này để phản ánh đúng tốc độ thật:
Trang 10R(config-if)#bandwidth 512
Dựa vào công thức metric đã nêu ở trên, ta có giá trị cost default của một số loại cổng:
Ethernet (BW = 10Mbps) -> cost = 10
Fast Ethernet (BW = 100Mbps) -> cost = 1
Serial (BW = 1.544Mbps) -> cost = 64 (bỏ phần thập phân trong phép chia)
Ta cùng xem xét một ví dụ để khảo sát cách tính toán path – cost cho một đường đi:
Hình 5.1: Sơ đồ ví dụ tính path – cost.
Yêu cầu đặt ra với sơ đồ hình 5.1 là tính path – cost (metric) cho đường đi từ R1 đến mạng 192.168.3.0/24 của R3
Ta thấy một cách dễ dàng: từ R1 đi đến mạng 192.168.3.0/24 của R3 sẽ đi qua các đường link Fast Ethernet có cost = 1, serial có cost là 64 và link Fast Ethernet có cost bằng 1 Vậy tổng cost tích lũy sẽ là 1 + 64 + 1 là 66 Metric từ R1 đến mạng 192.168.3.0/24 là 66
Tuy nhiên việc tính toán sẽ trở nên phức tạp hơn nếu hai cổng router ở hai đầu link không đồng nhất về giá trị cost Ví dụ, ta vào cổng F0/0 của R2 đổi lại giá trị cost thành 64 bằng cách đánh lệnh sau đây trên cổng F0/0 của R2:
R2(config)#interface f0/0
R2(config-if)#ip ospf cost 64
Vậy câu hỏi đặt ra là với link Fast Ethernet nối giữa R1 và R2 ta chọn cost của link này là 1 hay 64? Nếu chọn là 1, tổng cost toàn tuyến vẫn giữ giá trị như cũ là 66, nhưng nếu chọn là 64, tổng cost toàn tuyến sẽ là 64 + 64 + 1 là 129, hai giá trị rất khác nhau!
Hình 5.2: Tổng path – cost là 66 hay 129?
Để trả lời được câu hỏi này, ta cần nắm nguyên tắc sau đâu trong việc tính tổng cost với OSPF:
Để tính tổng cost từ một router đến một mạng đích theo một đường (path) nào đó,
ta thực hiện lần ngược từ đích lần về và cộng dồn cost theo quy tắc đi vào thì cộng, đi
ra thì không cộng
Áp dụng quy tắc này cho ví dụ ở hình 10: để tính tổng cost từ R1 đến mạng 192.168.3.0/24, ta đi ngược từ mạng 192.168.3.0/24 đi về Khi đi về ta đi vào cổng F0/0 của R3, cộng giá trị cổng này (tổng cost lúc này là 1); đi ra khỏi cổng S2/0 của R3, bỏ qua không cộng (tổng cost vẫn là 1); đi tiếp vào cổng S2/0 của R2, cộng giá trị cổng này (lúc này tổng cost là 1 + 64 = 65); đi ra khỏi cổng F0/0 của R2, bỏ qua không cộng (tổng cost vẫn là 65); đi tiếp vào cổng F0/0 của R1, cộng giá trị cổng này (tổng cost là 65 + 1 = 66), kết thúc hành trình Vậy tổng cost vẫn là 66, việc thay đổi giá trị cost trên cổng F0/0 không ảnh hưởng gì đến path – cost từ R1 đi đến 192.168.3.0/24
Trang 11Hình 5.3: Các cổng tham gia vào tiến trình tính toán path – cost với OSPF.
Như vậy với OSPF, để đánh giá đúng được cost của đường đi và có thể hiệu chỉnh cost trên cổng để bẻ đường đi của gói tin theo ý muốn, ta cần phải cẩn thận trong việc xác định xem cổng nào trên đường đi sẽ tham gia vào tính toán để hiệu chỉnh đúng cổng vì hiệu chỉnh không đúng cổng sẽ không mang lại bất kỳ thay đổi gì
1 Xây dựng bảng định tuyến
a Quá trình trao đổi LSDB
LSDB – Link State Database – Bảng cơ sở dữ liệu trạng thái đường link là một bảng trên router ghi nhớ mọi trạng thái đường link của mọi router trong vùng Ta có thể coi LSDB là một “tấm bản đồ mạng” mà router sẽ căn cứ vào đó để tính toán định tuyến LSDB phải hoàn toàn giống nhau giữa các router cùng vùng Các router sẽ không trao đổi với nhau cả một bảng LSDB mà sẽ trao đổi với nhau từng đơn vị thông tin gọi là LSA – Link State Advertisement Các đơn vị thông tin này lại được chứa trong các gói tin cụ thể gọi là LSU – Link State Update mà các router thực sự trao đổi
với nhau Lưu ý: LSA không phải là một loại gói tin mà chỉ là một bản tin LSU mới
thực sự là gói tin và nó chứa đựng các bản tin này
Việc trao đổi thông tin diễn ra rất khác nhau tùy theo từng loại network – type gán cho link giữa hai router Trong báo cáo này, chúng em tìm hiểu về hai loại network –
type là Point – to – Point và Broadcast Multiaccess.
Trao đổi LSDB trong mạng Point – to – Point
Loại link point – to – point điển hình là kết nối serial điểm – điểm chạy giao thức HDLC hoặc PPP nối giữa hai router
Hình 6.1: Trao đổi LSDB với kết nối point – to – point.
Trong trường hợp này, hai router láng giềng sẽ ngay lập tức gửi toàn bộ bảng LSDB cho nhau qua kết nối point – to – point và chuyển trạng thái quan hệ từ 2 – WAY sang một mức độ mới gọi là quan hệ dạng FULL Quan hệ Full qua một kết nối serial point – to – point được ký hiệu là FULL/ –
Trang 12 Trao đổi LSDB trong mạng Broadcast Multiaccess
Môi trường Broadcast Multiaccess điển hình chính là môi trường Ethernet LAN
Hình 6.2: Broadcast MultiAccess.
Với môi trường này, mỗi router đều kết nối trực tiếp với nhau và đều thiết lập quan
hệ 2 – WAY với nhau Tuy nhiên, các router sẽ không trao đổi trực tiếp với nhau mà sẽ tiến hành trao đổi thông tin thông qua một router đầu mối gọi là DR – Designated Router Trên mỗi kết nối Multi – access, một DR router được bầu ra Một router khác
sẽ được bầu làm Backup DR (BDR) để dự phòng cho DR trong trường hợp DR down Các router còn lại đóng vai trò là DROther
Nguyên tắc đặt ra như sau: các router DROther khi trao đổi thông tin định tuyến sẽ không gửi trực tiếp cho nhau mà sẽ gửi lên cho DR và BDR Sau đó router DR này sẽ forward lại thông tin xuống cho các router DROther khác Khi các router gửi thông tin lên cho DR và BDR, chúng sẽ sử dụng địa chỉ multicast 224.0.0.6 còn khi DR forward lại thông tin xuống các router khác, nó sử dụng địa chỉ 224.0.0.5
Hình 6.3: Hoạt động trao đổi thông tin thông qua DR.
Quan hệ giữa các cặp router:
- Các DROther không bao giờ trao đổi thông tin với nhau nên quan hệ giữa chúng mãi mãi chỉ dừng lại ở mức độ 2 – WAY Thực hiện show bảng neighbor trên các router
Trang 13DROther sẽ thấy rằng các router này hiển thị tình trạng quan hệ với nhau là 2-WAY/DROther
- Các DROther có trao đổi dữ liệu với DR và BDR nên trong bảng neighbor của các router DROther, các router DR và BDR sẽ hiện ra với quan hệ dạng full: FULL/DR và FULL/BDR Ngược lại, các router DR và BDR cũng thấy tình trạng quan hệ của các router DROther với chúng là FULL/DROther
1.5 Xây dựng bảng định tuyến
Sau khi hoàn thành xong thao tác trao đổi LSDB, mỗi router trong vùng đều đã có được bảng cơ sở dữ liệu trạng thái đường link của mọi router trong vùng, hay nói một cách khác, mỗi router đã có được “tấm bản đồ mạng” của cả vùng Dựa trên LSDB này, các router sẽ chạy giải thuật Dijkstra để xây dựng một cây đường đi ngắn nhất đến mọi đích đến trong mạng với gốc cây chính là router ấy Từ cây này, router xây dựng lên bảng định tuyến của mình
Hình 6.4: Quá trình xây dựng bảng định tuyến
Khi nhận được thông tin mạng thay đổi nó sẽ tính lại SPE
Kí hiệu :
- G=(V,E) : Đồ thị với tập đỉnh V và tập cạnh E
- c(x,y) : Chi phí của liên kết x tới y , =∞ nếu không phải 2 nút kề nhau
- d(v) : chi phí hiện thời của đường đi từ nút nguồn tới nút đích V
- p(v) : nút ngay trước nút v trên đường đi từ nguồn tới nút đích
- T : tập các nút mà đường đi ngắn nhất đã được xác định
Các thủ tục :
- Init ():
Với mỗi nút v,d[v]= ∞,p[v]=NIL
Trang 14d[s]=0
- update(u,v)trong đó (u,v)u,v là một cạnh nào đó của G
If d[v]>d[u]+c(u,v) then
d[v]=d[u] +c(u,v)
p[v]=u
Dijsktra’s Algorithm
Init();
T=Φ;
Repeat
u: u ∈T | d(u) là bé nhất;
T= T U {u};
For all v ε neighbor(u) và v ∉ T
Update (u,v);
1.6 Until T=V;Thiết kế phân cấp trong OSPF
a Vùng trong OSPF
Nguyên tắc hoạt động của OSPF là mỗi router phải ghi nhớ bảng cơ sở dữ liệu trạng thái đường link của toàn bộ hệ thống mạng chạy OSPF rồi từ đó thực hiện tính toán định tuyến dựa trên bảng cơ sở dữ liệu này Để giảm tải bộ nhớ cũng như tải tính toán cho mỗi router và giảm thiểu lượng thông tin định tuyến cần trao đổi, các router chạy OSPF được chia thành nhiều vùng (area), mỗi router lúc này chỉ cần phải ghi nhớ thông tin cho một vùng mà nó ở trong đó
Hình: Kiến trúc phân vùng trong OSPF.
Cách tổ chức như vậy rõ ràng tiết kiệm tài nguyên mạng và tài nguyên trên mỗi router Ngoài ra, cách tổ chức này còn cô lập được những bất ổn vào trong một vùng: khi có một link nào đó trên một router up/down, sự kiện này chỉ lan truyền trong nội
bộ một vùng và gây ra sự tính toán lại định tuyến của các router trong vùng ấy chứ không ảnh hưởng đến các router thuộc vùng khác