Tên trƣờng Độ dài Mô tả
Type 8 bit Xác định 3 kiểu thông điệp có giá trị:
0x12 cho IGMPv1 Host Membership Report 0x16 cho IGMPv2 Host Membership Report 0x22 cho IGMPv3 Host Membership Report Reserved 8 bit Chứa giá trị 0 khi gửi và bị bỏ qua khi nhận Checksum 16 bit Dùng để kiểm tra lỗi trong quá trình truyền dữ
liệu
Reserved 16 bit Chứa giá trị 0 khi gửi và bị bỏ qua khi nhận Number of
Records
16 bit Chứa số lƣợng của nhóm bản ghi trong thông điệp
Group Records Variable Mỗi bản ghi chỉ ra địa chỉ IP cho nhóm multicast tham gia hay rời và danh sách các nguồn nhận dữ liệu và không nhận dữ liệu
CHƢƠNG 2
ĐỊNH TUYẾN MULTICAST
Các giao thức định tuyến multicast đƣợc chia làm ba loại chính gồm: giao thức hoạt động theo mô hình tập trung (dense mode) nhƣ DVMRP và PIM-DM, các giao thức hoạt động theo mô hình phân tán (sparse mode) nhƣ PIM-SM và giao thức hoạt động theo mô hình trạng thái liên kết (link-state) nhƣ MOSPF. Các giao thức dense mode hoạt động theo cơ chế quảng bá và loại bỏ trong đó các router cho rằng trên các mạng con tồn tại ít nhất một máy nhận dữ liệu multicast, vì thế chúng gửi dữ liệu xuống tất cả các mạng cho đến khi nhận đƣợc thông báo dừng gửi dữ liệu. Với cơ chế này các giao thức dense mode phù hợp với các mạng máy tính nhỏ, trong đó lƣu lƣợng multicast đƣợc truyền tới hầu hết các máy trên mạng. Các giao thức sparse mode hoạt động theo cách ngƣợc lại, các router sẽ không gửi dữ liệu lên mạng trừ khi nó nhận đƣợc yêu cầu gửi dữ liệu từ các máy nhận. Điều này làm giảm dữ liệu dƣ thừa truyền trên mạng, giúp cho các giao thức sparse mode phù hợp với các mạng lớn, với số lƣợng các máy tham gia nhận dữ liệu nhiều nhƣng nằm rải rác trên các mạng con.
2.1 Giao thức định tuyến multicast véctơ khoảng cách
Giao thức định tuyến multicast véctơ khoảng cách (Distance Vector Multicast Routing Protocol – DVMRP) là giao thức định tuyến multicast đầu tiên đƣợc sử dụng phổ biến. DVMRP đƣợc phát triển dựa trên giao thức định tuyến unicast Routing Information Protocol (RIP) với một số thay đổi đề phù hợp với cơ chế multicast.
2.1.1 Tìm kiếm hàng xóm
Tìm kiếm router hàng xóm là một quá trình quan trọng bởi vì các router sử dụng giao thức DVMRP cần phải duy trì một danh sách các router hàng xóm để thực hiện chuyển tiếp multicast. Điều này đặc biệt đúng khi DVMRP hoạt động trên mạng đa truy cập nhƣ mạng Ethernet, bởi vì trên mạng có thể có nhiều router DVMRP cùng tham gia. Để thực hiện điều đó, các thông điệp thăm dò DVMRP
Probe đƣợc các router gửi một cách định kỳ tới địa chỉ all-DVMRP-router (224.0.0.4). Trên hình 2.1 thể hiện cơ chế tìm kiếm hàng xóm thông qua hoạt động của 2 router.
Hình 2.1: Tìm hàng xóm trong DVMRP
Các bƣớc hoạt động của cơ chế tìm kiếm đƣợc minh họa trên hình 2.1 gồm: Đầu tiên router 1 gửi một gói tin thăm dò, lúc này router 1 chƣa phát hiện đƣợc các hàng xóm vì thế danh sách hàng xóm trong gói tin là rỗng.
Router 2 nhận đƣợc thông điệp thăm dò từ router 1, nó thêm địa chỉ IP của router 1 vào danh sách các router hàng xóm của giao diện đã nhận gói tin. Router 2 gửi thông điệp thăm dò lên mạng, trong đó có chứa địa chỉ IP của router 1 trong danh sách hàng xóm.
Router 1 nhận đƣợc thông điệp từ router 2 thêm địa chỉ IP của router 2 vào danh sách hàng xóm. Và ở chu kỳ gửi gói tin tiếp theo tiếp theo, router 1 gửi thông điệp lên mạng với địa chỉ IP của router 2 trong danh sách hàng xóm.
Khi một router nhận đƣợc thông điệp thăm dò trong đó địa chỉ IP của nó có trong danh sách hàng xóm, router biết rằng đã có một kết nối hai chiều đƣợc thiết lập thành công giữa nó và hàng xóm, khi đó hai router có thể trao đổi dữ liệu với nhau.
2.1.2 Trao đổi thông báo định tuyến
Các thông báo định tuyến của DVMRP đƣợc gửi một cách định kỳ theo cách giống với giao thức định tuyến unicast RIP. Một điểm khác biệt quan trọng
là DVMRP quảng bá các đƣờng đi cùng với subnet mask cho phép DVMRP hoạt động đƣợc trên giao thức classless. Trên hình 2.2 thể hiện một mạng multicast bao gồm 2 router sử dụng DVMRP kết nối với nhau.
Hình 2.2: Trao đổi định tuyến DVMRP bƣớc 1
Trong bảng định tuyến của 2 router có chứa một số đƣờng đi mà các router đã học đƣợc thông qua giao diện S0. Giả sử router 2 gửi thông điệp thông báo trƣớc nhƣ trên hình 2.3.
Thông báo định tuyến từ router 2 chứa hai đƣờng đi và đƣợc gửi tới router 1. Router 1 thêm một thực thể cho mạng 204.1.16.0/24 vào bảng định tuyến của nó, ngoài ra vì router 2 có giá trị metric tới mạng 151.10.0.0 nhỏ hơn nên router 1 cập nhật thực thể đã có trong bảng định tuyến với giá trị metric mới là 4 và giao diện ra là E0. Sau đó router 1 phản hồi bằng cách gửi thông điệp thăm dò của nó lên mạng để tới router 2.
Trong gói tin gửi tới router 2, router 1 đã sử dung kỹ thuật Poison Reverse với hai đƣờng đi mà nó đã nhận trên cổng E0 bằng cách thêm giá trị ngƣỡng (32) vào giá trị metric hiện tại. Kỹ thuật Poison Reverse trong DVMRP đƣợc sử dụng để thông báo tới một router là có một router khác phụ thuộc vào nó trong việc nhận dữ liệu từ một nhóm multicast. Vì thế router 2 biết rằng router 1 ở phía dƣới trong cây multicast của nguồn dữ liệu và mong muốn nhận dữ liệu multicast từ hai mạng này thông qua router 2. Router 2 nhận thông báo và thêm vào bảng định tuyến của nó một thực thể mới cho mạng 198.14.32.0/24 nhƣ trong hình 2.4.
Hình 2.4: Trao đổi định tuyến DVMRP bƣớc 3
Sau khi cập nhật bảng định tuyến router 2 sẽ gửi một thông báo Poison Reverse cho đƣờng đi 198.14.32.0/24 nhận từ router 1 bằng cách thêm ngƣỡng vào giá trị metric. Điều này cho router 1 biết router 2 là ở phía dƣới và nhận dữ liệu multicast từ mạng nguồn 198.14.32.0/24 thông qua router 1.
2.1.3 Cắt nhánh
DVMRP sử dụng cây nguồn để điều khiển đƣờng đi của luồng dữ liệu, ban đầu dữ liệu multicast đƣợc gửi xuống tất cả các nhánh của cây. Để giảm lƣu lƣợng dƣ thừa cần có một cơ chế cắt các nhánh cây mà trên đó không có các máy nhận dữ liệu. Vì thế tại các router lá không có máy nhận dữ liệu kết nối trực tiếp, một thông điệp DVMRP Prune đƣợc gửi ngƣợc lên cây multicast để yêu cầu dừng gửi dữ liệu không mong muốn và cắt bỏ nhánh khỏi cây multicast. Trên hình 2.5 mô tả mạng với một nguồn hoạt động S gửi dữ liệu multicast tới nhóm G.
Hình 2.5: Cắt nhánh trong DVMRP bƣớc 1
Máy nhận 1 tham gia vào nhóm multicast G và nhận dữ liệu từ S. Các đƣờng mũi tên chỉ ra luồng lƣu lƣợng (S, G) ban đầu đi xuống cây multicast (đƣợc thể hiện bởi các mũi tên đứt nét) trƣớc khi thực hiện quá trình cắt nhánh. router C không phải là router đƣợc chọn để gửi dữ liệu (Designated Router – DR) cho mạng có máy nhận 1 kết nối vì thế nó trở thành một router lá. Vì thế router C gửi một thông điệp DVMRP Prune tới router B để yêu cầu dừng gửi dữ liệu không cần thiết (S, G). Khi nhận đƣợc thông điệp router B phản hồi bằng cách cắt bỏ đƣờng đi tới router C.
Lúc này cả hai router X và Y cũng là router lá vì thế nó gửi thông điệp Prune tới router E để yêu cầu cắt khỏi cây multicast. Router E biết rằng nó chỉ có
2 router hàng xóm, và vì cả hai router đã gửi thông điệp cắt nhánh nên router E cũng gửi thông điệp Prune cho lƣu lƣợng (S, G) lên router D. Router D nhận thông điệp từ E sẽ cắt bỏ đƣờng đi tới router E nhƣ trong hình 2.6.
Hình 2.6: Cắt nhánh trong DVMRP bƣớc 2
2.1.4 Ghép nhánh
Mỗi thông điệp cắt bỏ nhánh có một giá trị thời gian timeout, vì thế nếu một nhánh đã bị cắt bỏ khỏi cây multicast sau khi hết thời gian timeout nó lại có thể nhận dữ liệu từ nguồn. Tuy nhiên DVMRP còn hỗ trợ một cơ chế cho phép các nhánh cây bị cắt bỏ có thể ghép trở lại mà không cần phải đợi hết khoảng thời gian này. Để thực hiện điều này, router gửi một thông điệp DVMRP Graft tới router phía trên để thông báo nó muốn đƣợc ghép trở lại cây multicast. Sau khi router phía trên nhận đƣợc nó sẽ phản hồi lại bằng thông điệp Graft-Ack và chuyển tiếp lƣu lƣợng multicast xuống router phía dƣới. Trên hình 2.7 tiếp tục mô tả mạng nhƣ phần trƣớc, giả sử lúc này máy nhận 2 trên router Y tham gia vào nhóm multicast và nhận dữ liệu từ nguồn S gửi tới nhóm G. Router Y biết rằng nó đang ở trạng thái bị cắt bỏ khỏi cây multicast của nguồn S vì thế nó gửi một thông điệp Graft tới router E. Khi router E nhận đƣợc thông điệp, router E chuyển trạng thái cho cổng kết nối với router Y từ trạng thái cắt bỏ sang trạng thái chuyển tiếp dữ liệu và gửi một thông điệp xác nhận Graft-Ack trở lại router Y.
Hình 2.7: Ghép nhánh trong DVMRP bƣớc 1
Sau đó router E tiếp tục gửi tới router D một thông điệp Graft để yêu cầu nhận dữ liệu multicast gửi tới nhóm G. Cuối cùng khi router D nhận đƣợc thông điệp từ router E nó phản hồi bằng một thông điệp Graft-Ack và chuyển tiếp dữ liệu multicast qua giao diện của nó để đến router E nhƣ trên hình 2.8.
2.2 Giao thức PIM Dense Mode
Giao thức PIM (Protocol Independent Multicast) có tên là giao thức multicast độc lập bởi vì nó hoạt động độc lập với giao thức định tuyến IP unicast. PIM không quan trọng giao thức nào đƣợc sử dụng để tạo ra bảng định tuyến unicast (bao gồm cả bảng định tuyến tĩnh) trên router, mà nó sử dụng thông tin từ bảng định tuyến unicast để thực hiện quá tình kiểm tra Reverse Path Forwarding (RPF) từ đó đƣa ra quyết định gửi dữ liệu. Bởi vì PIM không phải duy trì dữ liệu của bảng định tuyến, nó sẽ không cần thực hiện các quá trình gửi và nhận các thông báo cập nhật đƣờng đi trong bảng định tuyến giữa các router nhƣ các giao thức khác, điều đó làm giảm đáng kể lƣu lƣợng truyền trên mạng.
PIM có thể cấu hình để hoạt động theo hai cơ chế là dense mode và sparse mode, trong phần này chúng ta sẽ tìm hiểu về PIM dense mode (PIM – DM) bao gồm các quá trình cơ bản nhƣ: tìm kiếm hàng xóm, cắt bỏ và ghép thêm nhánh trên cây phân phối multicast, cơ chế xác nhận.
2.2.1 Tìm kiếm hàng xóm
2.2.1.1 Thông điệp Hello
Cũng giống nhƣ giao thức DVMRP, PIM-DM sử dụng cơ chế tìm kiếm hàng xóm để thiết lập mối liên kết với router hàng xóm. Trong PIM-DMv1 thông điệp tìm kiếm có tên là Router Query đƣợc đóng gói trong thông điệp IGMP và đƣợc gửi tới địa chỉ 224.0.0.2 (địa chỉ all-routers). Trong PIM-DMv2 thông điệp thăm dò có tên là Hello đƣợc gửi theo chu kỳ 30 giây tới địa chỉ 224.0.0.13 (địa chỉ all-PIM-routers). Trong thông điệp Hello chứa một giá trị Holdtime để thông báo cho các máy nhận biết khoảng thời gian hiệu lực của kết nối giữa hai máy bị hết nếu không có thông điệp Hello khác đƣợc gửi trong thời gian đó.
2.2.1.2 Router được chỉ định
Ngoài việc thiết lập mối liên kết hàng xóm, thông điệp PIM Hello cũng đƣợc sử dụng để tìm ra router đƣợc chỉ định để gửi dữ liệu (Designated Router – DR) cho mạng đa truy cập. Thông qua thông điệp Hello các router sẽ biết đƣợc router nào trên mạng có giá trị địa chỉ IP cao nhất, và router đó đƣợc chọn làm
DR cho mạng. Khi trong một phân đoạn mạng có nhiều router cùng tồn tại, ngƣời quản trị mạng thông thƣờng cần chỉ định một router là DR. Tuy nhiên việc thay đổi địa chỉ IP của router để chỉ định một router là DR thƣờng khó khăn hoặc không thể thực hiện. Để thực hiện điều này, trong thông điệp PIMv2 Hello thêm vào một lựa chọn về độ ƣu tiên DR-Priority. Khi đó các router có độ ƣu tiên cao sẽ đƣợc chọn làm DR, nếu có hai hay nhiều router cùng độ ƣu tiên thì giá trị IP đƣợc so sánh để bầu chọn.
2.2.1.3 Cây phân phối multicast
Bởi vì PIM-DM là một giao thức dense mode, cây nguồn (hay cây đƣờng đi ngắn nhất) đƣợc sử dụng để chỉ ra quá trình phân phối dữ liệu tới các máy nhận trên mạng. Các cây nguồn đƣợc xây dựng bằng cách sử dụng cơ chế quảng bá và loại bỏ (flood and prune) ngay khi nguồn multicast bắt đầu truyền dữ liệu. Không nhƣ DVMRP là giao thức sử dụng bảng định tuyến multicast của riêng nó, PIM- DM sử dụng thông tin về hàng xóm của nó để xây dụng cây nguồn. Trong PIM- DM các router kết nối với nguồn đƣợc cho là ở trên cây đƣờng đi ngắn nhất SPT và các hàng xóm PIM-DM khác ở các nhánh phía duới của nguồn dữ liệu. Cây SPT ban đầu chính là cây quảng bá (broadcast tree) bởi vì router gửi dữ liệu tới tất cả các hàng xóm của nó, mà không biết trên các router đó có tồn tại các máy nhận dữ liệu hay không. Hình 2.9 thể hiện một ví dụ về việc quảng bá dữ liệu multicast trên mạng PIM-DM xuống cây quảng bá multicast.
Trong mạng trên hình 2.9, nguồn dữ liệu multicast gửi dữ liệu tới router A và B từ đó gửi tiếp xuống các router PIM-DM phía dƣới là router C và D. Ta thấy rằng luồng dữ liệu ban đầu trƣớc khi có các hoạt động cắt nhánh có nhiều đƣờng đi dƣ thừa, nhƣ là router C nhận hai luồng dữ liệu giống nhau, hay router C và D cùng gửi dữ liệu tới một phân đoạn mạng. Cây quảng bá này sẽ đƣợc điều chỉnh để loại bỏ dƣ thừa khi quá trình loại bỏ nhánh đƣợc hoàn tất.
Hình 2.9: Cây phân phối PIM-DM
2.2.2 Cắt nhánh
Các router PIM-DM gửi thông điệp cắt nhánh Prune lên router phía trên của nó khi có một trong các điều kiện sau: khi dữ liệu đến từ một giao diện không phải là giao diện RPF hay khi một router nhận thấy phân đoạn mạng phía sau nó không tồn tại các máy nhận muốn nhận dữ liệu từ nhóm multicast. Trên hình 2.10, giả sử metric cho đƣờng đi từ router A đến C tốt hơn đƣờng đi từ router B đến C, lúc đó router C gửi thông điệp Prune tới router B vì dữ liệu đến nó trên giao diện không phải là giao diện RPF đối với nguồn.
Ở bƣớc tiếp theo, router B phản hồi lại thông điệp Prune đƣợc gửi từ C và đƣờng đi từ router B đến router C bị loại bỏ khỏi cây multicast. Ngoài ra router I là một router lá không có các máy nhận dữ liệu kết nối tới, vì thế nó gửi một thông điệp Prune tới router E. Router E phản hồi lại bằng cách loại bỏ đƣờng đi tới router I và bởi vì router E cũng không có các máy nhận dữ liệu kết nối trực tiếp nó cũng sẽ gửi dữ liệu tới router C và D. Tuy nhiên vì máy nhận 1 kết nối trực tiếp tới cùng giao diện, router C và D sẽ bỏ qua thông điệp Prune từ E. Điều đó có nghĩa dữ liệu từ nguồn vẫn tiếp tục đƣợc gửi tới router E và E tiếp tục gửi thông điệp Prune lên router C và D.
Hình 2.10: Cắt nhánh trong PIM-DM bƣớc 1
Hình 2.11: Cắt nhánh trong PIM-DM bƣớc 2
Trong cơ chế cắt nhánh trên mạng đa truy cập, các router PIM-DM mong muốn nhận thông điệp Join từ các hàng xóm để phản hồi lại thông điệp Prune của hàng xóm khác trên cùng một giao diện. Router G và H trong hình 2.12 là một ví dụ của cơ chế hoạt động trên.
Hình 2.12: Cắt nhánh trong PIM-DM bƣớc 3
G là một node lá và không có các máy nhận dữ liệu kết nối tới vì thế nó gửi