các giao thức định tuyến dựa trên cơ sở của cây khung nhỏ nhất để định tuyến multicast
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
- -Báo cáo Môn: Giao thức định tuyến
Đề tài: Thiết kế giao thức định tuyến dựa trên cơ sở của cây khung nhỏ nhất để định tuyến multicast
Giảng viên hướng dẫn: TS Trương Diệu Linh
Lưu Thanh Tùng 20102475 Nguyễn Bảo Khánh 20101704 Thân Văn Hải 20101486 Mai Văn Minh 20101883 Phạm Việt Anh 20101112
Hà Nội – 2014
Trang 2Mục lục
I Giới thiệu về multicast, giải thuật tìm đường đi ngắn nhất 3
1 Giới thiệu về multicast 3
a Địa chỉ multicast 3
b Cây phân phối multicast 4
2 Giải thuật tìm đường đi ngắn nhất 5
a Bài toán 5
b Ý tưởng để giải quyết bài toán 5
c Thuật toán Dijkstra 5
d Các kiểu giải thuật tìm đường 5
II Định tuyến multicast 6
1 IGMP 6
a IGMPv1 7
b IGMPv2 8
2 Giải thuật định tuyến multicast 10
3 Định tuyến multicast 16
Trang 3I Gi i thi u v multicast, gi i thu t tìm đ ới thiệu về multicast, giải thuật tìm đường đi ngắn ệu về multicast, giải thuật tìm đường đi ngắn ề multicast, giải thuật tìm đường đi ngắn ải thuật tìm đường đi ngắn ật tìm đường đi ngắn ường đi ngắn ng đi ng n ắn
nh t ất
1 Gi i thi u v multicast ới thiệu về multicast, giải thuật tìm đường đi ngắn ệu về multicast, giải thuật tìm đường đi ngắn ề multicast, giải thuật tìm đường đi ngắn
Địa chỉ multicast ra đời nhằm để giải quyết vấn đề khi một nguồn muốn gửi gói tin cho một số đích khác nhau khi mà 2 kiểu truyền thông unicast và broadcast không hoàn toàn đặt được hiểu quả triệt để, ảnh hưởng đến băng thông chung của mạng
IP multicast dùng để truyền gói tin từ một nguồn đến nhiều đích khác nhau trong mạng LAN hay WAN Những thành viên nào muốn nhận các gói tin này thì phải tham gia vào một nhóm Multicast Với địa chỉ Multicast thì địa chỉ nguồn chỉ cần gửi một gói tin đến nhóm, gói tin này sẽ được chuyển đến tất cả thành viên trong nhóm
đó
a Đ a ch multicast ịa chỉ multicast ỉ multicast
Các router hay switch phải có phương thức để phân biệt gói tin dạng multicast với dạng unicast hay broadcast Điều này được thông qua việc gán địa chỉ IP, bằng cách sử dụng địa chỉ lớp D từ 224.0.0.0 đến 239.255.255.255 dành cho multicast
Các thiết bị mạng có thể nhanh chóng lọc ra các địa chỉ multicast bằng cách đọc 4 bit bên trái của một địa chỉ Bốn bit này của một địa chỉ multicast luôn bằng 1110 Vậy làm thế nào để một router và switch kết hợp được địa chỉ multicast với một địa chỉ MAC Do không có cơ chế hoạt động tương đương như cơ chế ARP, một dạng giá trị đặc biệt dành riêng cho địa chỉ MAC của multicast sẽ được dùng Các địa chỉ này sẽ bắt đầu bằng 0100.5e Phần 28 bit sau của địa chỉ multicast sẽ được ánh xạ vào 23 bit thấp của địa chỉ MAC
Trang 4Hình trên cho ta thấy cơ chế ánh xạ địa chỉ, chỉ có 23 bit cuối của địa chỉ là được chép từ địa chỉ IP sang địa chỉ MAC Tuy nhiên vẫn còn 5 bit của địa chỉ IP không được chuyển sang địa chỉ MAC, điều này làm nảy sinh một vấn đề là có thể có 32 địa chỉ IP khác nhau được ánh xạ vào chung một địa chỉ MAC Do sự nhập nhằng này, một host multicast có một vấn đề nhỏ khi nó nhận frame của một địa chỉ multicast Một MAC có thể ứng với 32 địa chỉ multicast khác nhau, vì vậy
nó có thể nhận được những gói tin của nhóm khác không phải nhóm của mình Không gian địa chỉ multicast :
Toàn bộ không gian địa chỉ multicast : 224.0.0.0 – 239.255.255.255
Địa chỉ link-local : 224.0.0.0 – 224.0.0.255 được dùng bởi các giao thức định tuyến Đây là địa chỉ các nhóm cố định vì các địa chỉ này đã được định nghĩa trước Một số địa chỉ bao gồm như :
- 224.0.0.1 : tất cả các host
- 224.0.0.2 : tất cả các router
- 224.0.0.5 : tất cả các OSPF router
Dải địa chỉ dành cho quản trị : 239.0.0.0.0 – 239.255.255.255 được dùng trong các vùng multicast riêng
Địa chỉ toàn cục : 224.0.1.0 – 238.255.255.255 được dùng bởi bất cứ đối tượng nào
b Cây phân ph i multicast ối multicast
Để phân phối dữ liệu multicast tới tất cả các máy nhận, cây phân phối multicast được sử dụng, nó có tác dụng điều khiển đường đi của dữ liệu truyền trên mạng
Có 2 loại cây phân phối cơ bản :
Cây nguồn : là cây với gốc của nó chính là nguồn dữ liệu multicast
và các nhánh của nó dẫn tới các đầu cuối nhận dữ liệu trên mạng
Do vậy cây này sử dụng đường đi ngắn nhất nên gọi là cây đường
đi ngắn nhất (Shortest Path Tree – SPT)
Cây chia sẻ : là cây sử dụng chung một gốc duy nhất tại một điểm
đã chọn trên mạng Gốc này còn được gọi là điểm hẹn (Rendezvous Point – RP) Khi sử dụng cây chia sẻ, nguồn phải gửi lưu lượng của nó tới gốc sau đó lưu lượng này được chuyển tiếp theo các nhánh của cây đến các đầu cuối nhận dữ liệu
Trang 52 Gi i thu t tìm đ ải thuật tìm đường đi ngắn ật tìm đường đi ngắn ường đi ngắn ng đi ng n nh t ắn ất
a Bài toán
Cho đồ thị G(V,E) : với V là tập các đỉnh của đồ thị, E là tập các cạnh của đồ thị
Kí hiệu c(u,v) là độ dài của cạnh nối giữa 2 đỉnh u và v Cho s,t là 2 đỉnh của đồ thị Bài toán đặt ra là tìm đường đi ngắn nhất từ đỉnh s đến đỉnh t
b Ý t ưởng để giải quyết bài toán ng đ gi i quy t bài toán ể giải quyết bài toán ải thuật tìm đường đi ngắn ết bài toán
Dò tìm bằng cách thử đi qua các đỉnh trung gian
Nếu phát hiện đường đi qua đỉnh trung gian ngắn hơn đường đi hiện tại thì
sẽ cập nhật đường đi mới đồng thời chỉnh sửa lại các thông số liên quan
Thường sử dụng 2 mảng để lưu trữ :
- D(v) : độ dài đường đi ngắn nhất từ đỉnh s đến đỉnh v
- T(v) : đỉnh nằm trước v trên đường đi ngắn nhất từ s đến v
c Thu t toán Dijkstra ật tìm đường đi ngắn
Khởi tạo
For (all v ∈ V) do
Begin
D[v] := c[s,v];
T[v] := s;
End;
T = V – {s}; // Tập đánh dấu các đỉnh đã chọn
Vòng lặp
While T <> ∅ do
Begin
Tìm đỉnh u ∈T thỏa mãn D[u] nhỏ nhất
T=T-{u};
For all v là lân cận của u và v ∈T do
if D[v] > D[u] + c[u,v] then
Begin
D[v]:=D[u] + c[u,v];
T[v]:=u;
End;
End;
d Các ki u gi i thu t tìm đ ể giải quyết bài toán ải thuật tìm đường đi ngắn ật tìm đường đi ngắn ường đi ngắn ng
Phương pháp này chỉ định một con số, gọi là chi phí (hay trọng số), cho mỗi một liên kết giữa các node trong mạng Các node sẽ gửi thông
Trang 6tin từ điểm A đến điểm B qua đường đi mang lại tổng chi phí thấp nhất (là tổng các chi phí của các kết nối giữa các node được dùng)
Khi một node khởi động lần đầu, nó chỉ biết các node kề trực tiếp với
nó và chi phí trực tiếp để đi đến nó ( danh sách các đích, tổng chi phí từng node, bước kế tiếp để gửi dữ liệu đến đó tạo nên bảng định tuyến
…)
Mỗi node trong tiến trình gửi đến từng “ hàng xóm” tổng chi phí của
nó để đi đến đích mà nó biết
Các node “ hàng xóm” phân tích và so sánh với thông tin mà chúng biết Bất kì điều gì cải thiện những thông tin chúng có sẽ được đưa vào bảng định tuyến của chúng
Đến khi kết thúc, các node trên mạng sẽ tìm ra bước truyền kế tiếp tối
ưu đến tất cả mọi đích và tổng chi phí thấp nhất
Giao thức định tuyến Link State thu thập thông tin về đường đi từ tất
cả các Router khác trong cùng hệ thồng mạng
Khi tất cả các thông tin thu thập đầy đủ mỗi Router sẽ tự tính toán để chọn đường đi tốt nhất cho nó đến các mạng đích trong hệ thống
Mỗi Router trong mạng sẽ có chung một cơ sở dữ liệu về trạng thái của mạng
Sử dụng thông tin gói tin Hello và LSA nhận được từ Router hàng xóm để xây dựng cơ sở dữ liệu về cấu trúc hệ thống mạng
Sử dụng thuật toán Dijkstra để tìm đường ngắn nhất đến từng mạng
Lưu kết quả chọn đường trong bảng định tuyến
II Đ nh tuy n multicast ịa chỉ multicast ết bài toán
1 IGMP
Làm thế nào để các router có thể biết được máy nào cần nhận gói tin multicast? Để thực hiện việc này, cả nguồn gửi và máy nhận đều phải gia nhập vào một nhóm multicast Nhóm này được xác định thông qua địa chỉ multicast, một host có thể tham gia vào một nhóm multicast bằng cách gửi yêu cầu đến router gần nhất Tác vụ này được thực hiện thông qua giao thức IGMP (Internet Group Management Protocol)
Trang 7a IGMPv1
Version : Xác định phiên bản của IGMP
Type : Loại thông điệp, trong IGMPv1 thì có 2 loại thông điệp được sử dụng giữa host và router :
- Membership Report : thông điệp đăng ký tham gia vào nhóm multicast được gửi từ host đến router
- Membership Query : thông điệp truy vấn được gửi từ router đến các host để kiểm tra xem các host có muốn nhận multicast traffic hay không
Checksum : dùng để kiểm tra lỗi
Group Address : chứa địa chỉ nhóm multicast khi thông điệp Membership Report được gửi, bằng 0 khi dùng trong thông điệp Membership Query IGMP sử dụng mô hình truy vấn – trả lời (Query – Response) cho phép các router multicast xác định nhóm multicast hoạt động (có tham gia vào nhóm multicast) trên nhánh mạng
Trong mô hình này, host H1, H2 đăng ký vào nhóm multicast 224.1.1.1, host H3 đăng ký vào nhóm multicast 224.2.2.2 Router A gửi thông điệp Membership Query đến tất cả các host trong nhánh mạng Router B chỉ lắng nghe và ghi nhận việc trả lời từ các host
Router A gửi thông điệp Membership Query đến tất cả các host trên nhánh mạng
Trang 8 Tất cả các router sẽ nhận được thông điệp này, và các host đã đăng ký vào nhóm multicast phải trả lời lại bằng thông điệp Membership Report, thông báo cho router biết trên nhánh mạng có host muốn nhận gói tin từ nhóm 224.1.1.1
Host H1 cũng lắng nghe đến nhóm 224.1.1.1, do đó nó biết được H2 đã gửi thông điệp Membership Report đến router, và hủy thông điệp của nó
Cơ chế này (Report Suppression) làm giảm được lưu lượng trên nhánh mạng
Host H3 cũng nhận được thông điệp và trả lời lại nhóm mà nó đã đăng ký
là 224.2.2.2
Kết quả của quá trình Query-Respone là Router A biết được các máy muốn nhận được gói tin từ nhóm 224.1.1.1 và 224.2.2.2 trên nhánh mạng Ngoài ra Router B cũng lắng nghe được toàn bộ quá trình và cũng biết được thông tin như router A
b IGMPv2
- Một phương thức để xác định router nào sẽ gửi thông điệp truy vấn multicast khi có nhiều router cùng kết nối vào một mạng con
- Một thông điệp mới được sử dụng khi một host muốn rời nhóm
- Một thông điệp mới cho phép router truy vấn cho từng nhóm cụ thể thay
vì tất cả nhóm
Type : trong IGMPv2 có 4 loại thông điệp được sử dụng :
- Membership Query : thông điệp truy vấn được gửi từ router đến các host để kiểm tra xem các host có muốn nhận multicast traffic hay không
- IGMPv1 Membership Report : thông điệp đăng ký tham gia vào nhóm multicast được gửi từ host đến router
- IGMPv2 Membership Report
- Leave Group : thông điệp khi một host muốn rời khỏi nhóm multicast
Trang 9 Maximum Response Time : Chỉ dùng trong thông điệp Membership Query, nó chỉ định thời gian tối đa mà 1 host có thể chờ để trả lời 1 thông điệp truy vấn Giá trị mặc định là 100 (10 giây)
Checksum : trường dùng để kiểm tra lỗi
Group Address: khi một thông điệp General Query được gửi đi, trường này được gán về giá trị 0 để phân biệt với thông điệp Group – Specific Query Khi thông điệp Membership Report hoặc Leave Group gửi đi thì trường này chứa giá trị của nhóm multicast
Trong mô hình trên, host H2 là thành viên của nhóm 224.1.1.1, host H2 muốn rời khỏi nhóm
H2 gửi thông điệp Leave Group đến địa chỉ all-router (224.0.0.2) thông báo cho tất cả các router trên nhánh mạng biết nó muốn rời khỏi nhóm
Router A lắng nghe thông điệp Leave Group từ host H2 Router A gửi thông điệp Group – Specific Query đến nhóm 224.1.1.1 để xác định xem còn host nào trong nhóm nữa không
Do không còn host nào trong nhóm 224.1.1.1 trả lời thông điệp Group – Specific Query Router A đợi 1 giây, sau đó lại gửi tiếp một thông điệp khác mà vẫn không nhận được thông điệp trả lời thì lúc nào Router A sẽ ngừng chuyển gói tin multicast đến nhánh mạng này
2 Gi i thu t đ nh tuy n multicast ải thuật tìm đường đi ngắn ật tìm đường đi ngắn ịa chỉ multicast ết bài toán
Trang 10Cây ngắn nhất từ một nguồn là một cây có gốc là nguồn đó và các đường đi ngắn nhất đến tất cả các đỉnh còn lại
Hình trên mô tả các đường đi ngắn nhất đến các router khác với gốc là router R1
Router R1 sẽ gửi gói tin Hello đến tất cổng có kết nối để biết thông tin tất
cả các hàng xóm của mình
Trang 11 Khi các router khác nhận được gói tin Hello nó sẽ trả lời cũng bằng gói Hello
Trang 12 Sau khi có thông tin của các hàng xóm của mình, Router R1 sẽ xây dựng một gói tin Link-State (LS) chứa thông tin của các hàng xóm của mình xong đó nó sẽ gửi gói tin này đến toàn bộ Router trên mạng để các Router khác biết được
Trang 13 Lúc này, tất cả các Router đều đã biết được hết cấu trúc của mạng, lúc này mỗi Router sẽ dùng giải thuật Dijkstra để xây dựng nên cây đường đi ngắn nhất của mình
Trang 163 Đ nh tuy n multicast ịa chỉ multicast ết bài toán
Khi router hoạt động nó sẽ gửi gói tin “hello” đến tất cả các router khác để xây dựng cây đường đi ngắn nhất của riêng mình
Khi có một luồng dữ liệu muốn gửi multicast từ một nguồn nào đó, router
sẽ gửi thông điệp “request” đến tất cả các router để hỏi xem ở router đó có host nào muốn nhận dữ liệu không?
Nếu ở đó có host muốn nhận (thông qua giao thức IGMP) thì router sẽ đáp trả thông điệp “request” bằng thông điệp “join” để thông báo nó có muốn nhận dữ liệu của nhóm multicast này
Trong trường hợp không có host nào muốn nhận (cũng thông qua giao thức IGMP) thì router sẽ đáp trả bằng thông điệp “deny” để thông báo không muốn nhận dữ liệu
Từ đó router nguồn biết những router nào muốn nhận dữ liệu và sau đó dựa vào cây đường đi ngắn nhất của mình để xây dựng được bảng định tuyến cho nhóm multicast đó
0 7 8 15 16 31
Source Router ID Destination Router ID Group Address Checksum Data
Data
Version (1 byte) : chứa phiên bản giao thức
Type (1 byte) : dạng thông điệp
- Giá trị 1 : “Hello”
- Giá trị 2 : “LS”
- Giá trị 3 : “Request”
- Giá trị 4 : “Join”
- Giá trị 5 : “Deny”
Packet Length (2 byte) : kích thước gói tin
Trang 17 Source Router ID (4 byte) : địa chỉ router ID nguồn (Router ID là địa chỉ
IP cao nhất trong các cổng đang hoạt động của router)
Destination Router ID (4 byte) : địa chỉ router ID đích
Group Address (4 byte) : chứa địa chỉ IP của nhóm multicast
Checksum (4 byte) : mã kiểm tra lỗi
Cấu trúc mạng có 2 nhóm :
- Nhóm 224.1.1.1 : PC1, PC2
- Nhóm 224.2.2.2 : PC2, PC3
Trang 18 Cây multicast cho nhóm 224.1.1.1
Trang 19 Cây multicast cho nhóm 224.2.2.2
Bảng định tuyến multicast của Router R1
Group Address Routing 224.1.1.1 R1 to R2
R1 to R2 to R5 224.2.2.2 R1 to R2
R1 to R3 to R4