2. Giao thức multicast nội vùng IGMP
Giao thức quản lý nhóm IGMP là cơ chế truyền thông giữa trạm con và router gắn trực
tiếp với mạng đó. Router sử dụng IGMP để xác định có hay không có thành viên nhóm
multicast trong mạng con. Nếu có thành viên nhóm, router sẽ tham gia vào nhóm
multicast đó và chuyển tiếp dữ liệu multicast đến các trạm con trong nhóm. Phiên bản
đầu tiên của IGMP được mô tả chi tiết trong RFC 1112, "Host Extensions for IP
Multicasting". Phiên bản hiện hành là "Internet Group Management Protocol, Version 2"
mô tả trong RFC 2236.
2.1 Internet Group Management Protocol, IGMP Version 1
RFC1112 quy định khoảng địa chỉ multicast cho các máy trạm từ 224.0.0.0 đến
239.255.255.255 và xác định cơ chế gửi và nhận dữ liệu multicast cho các máy trạm.
Các trạm con sử dụng IGMP để thông báo việc tham gia vào nhóm multicast với router
kết nối trực tiếp với nó. Ðịnh dạng thông điệp IGMP như hình sau.
-Trường Version dài 4 bit mang giá trị 0x1 đối với IGMPv1.
-Trường Type dài 4 bit xác định loại thông điệp truy vấn:
.Type = 0x1 : thông điệp truy vấn thành viên Membership Query
.Type = 0x2 : thông điệp báo cáo thành viên Membership Report
-Trường Unused dài 8 bit không sử dụng nên mang giá trị 0x00.
-Trường Checksum dài 16 bit dùng để kiểm tra lỗi header.
-Trường Group Address dài 32 bit chứa địa chỉ nhóm multicast, mang giá trị 0.0.0.0 khi
loại thông điệp là Membership Query, mang giá trị địa chỉ nhóm multicast khi loại thông
điệp là Membership Report.
Router gửi thông điệp Membership Query để xác định có trạm con nào là thành viên của
nhóm multicast không (xem hình ). Khi có 1 trạm trả lời truy vấn, router sẽ tiếp tục gửi
dữ liệu multicast cho nhóm đó trong mạng. Các thông điệp này được gửi đến địa chỉ
nhóm tất cả các trạm con trong mạng (224.0.0.1) và có giá trị TTL là 1.
Khi nhận thông điệp Membership Query, trạm con sẽ trả lời bằng cách gửi một hay nhiều
thông điệp Membership Report (xem hình dưới). Mỗi thông điệp Membership Report
chứa địa chỉ nhóm multicast mà trạm con đó là thành viên.
Khi nhận được thông điệp Membership Query, trạm con sẽ thiết lập một giá trị thời gian
ngẫn nhiên t= random(n), n =10 giây đối với IGMPv1. Khi hết thời gian này, trạm con
tiến hành gửi thông điệp Membership Report để xác lập quan hệ.
Khi trạm con đầu tiên gửi thông điệp Membership Report, các trạm con khác trên cùng
đoạn mạng sẽ nhận được thông điệp này, bộ đếm thời gian bị loại bỏ và sẽ không gửi
thông điệp Membership Report đi nữa.
Như vậy, trên mỗi đoạn mạng chỉ có 1 thông điệp Membership Report được tạo ra cho
mỗi truy vấn Membership Query (xem hình ).
Hình : Router xác nhận quan hệ thành viên nhóm
Trong hình trên, khi trạm con A, C, và D nhận thông điệp Membership Query từ router,
mỗi trạm sử dụng bộ đếm thời gian để thiết lập khoảng thời gian ngẫu nhiên. Khi trạm
đầu tiên hết hạn, giả sử là trạm A, khi đó A gửi thông điệp report, giá trị thời gian của
trạm C và D giảm đi 1. Như vậy, trước khi thời gian ở trạm C và D hết hạn thì đã nhận
thông điệp Host Membership Report gửi bởi trạm A. Bởi vì đây là thông điệp report của
nhóm nên các trạm này không cần gửi lại thông điệp report.
Cuối cùng, khi trạm con quyết định rời khỏi nhóm, nó sẽ lặng lẽ rời khỏi nhóm vì không
có thông điệp rời nhóm trong IGMP version 1. Nếu trạm con là trạm cuối cùng rời khỏi
nhóm, router sẽ không biết điều này cho đến khi nó không nhận được thông điệp hồi đáp
định kỳ Membership Query.
Hình : Trạm con xác nhận quan hệ thành viên nhóm
2.2 Internet Group Management Protocol, IGMP Version 2
2.2.1 Ðịnh dạng thông điệp IGMPv2
IGMP version 2 được mô tả chi tiết trong RFC 2236. Ðịnh dạng thông điệp IGMP
version 2 như hình sau:
Trường Type dài 8 bit, mỗi giá trị trường Type ứng với mỗi loại thông điệp:
-Type = 0x11: Thông điệp truy cấn thành viên Membership Query
-Type = 0x12: Thông điệp báo cáo thành viên Membership Report Version 1
-Type = 0x16: Thông điệp báo cáo thành viên Membership Report Version 2
-Type = 0x17: Thông điệp rời khỏi nhóm Leave Group
Thông điệp Membership Query, ứng với giá trị Type = 0x11, mang 2 nội dung. Thứ nhất
thông điệp General Query dùng để xác định nhóm nào trên mạng có thành viên hoạt
động. Thứ hai là thông điệp Group-Specific Query dùng để xác định một nhóm multicast
cụ thể có thành viên hoạt động.
Trường Maximum Response Time (Max. Rtime) chỉ áp dụng cho thông điệp Membership
Query. Trường này chỉ ra thời gian lớn nhất mà trạm con phải chờ trước khi nhận thông
điệp hồi đáp Membership Query.
Trường Checksum dài 16 bit dùng để kiểm tra lỗi header.
Trường Group Address chứa địa chỉ nhóm. Ðối với thông điệp General Query, trường
này mang giá trị 0.0.0.0. Ðối với thông điệp Group Specfic, trường này sẽ chứa địa chỉ
của nhóm multicast được truy vấn.
2.2.2 So sánh IGMPv2 và IGMPv1
-IGMPv1 không có thông điệp Group Leave nên thời gian nhận biết trạm cuối cùng rời
khỏi nhóm và thời gian router ngừng gửi dữ liệu multicast lâu hơn so với IGMPv2. Trong
khi IGMPv2 giảm thiểu thời gian chờ khi xác định trạm con rời nhóm và nhanh chóng bỏ
qua lưu lượng không mong muốn.
-IGMPv2 có sử dụng thông điệp truy vấn Group-Specific Query trong khi IGMPv1 thì
không có thông điệp này.
-IGMPv1 không chỉ định khoảng thời gian Maximum Response Time trong các thông
điệp Membership Query mà cố định thời gian này là 10 giây.
-IGMPv1 không chọn ra router nào gửi thông điệp Membership Query nên có thể có
nhiều router gửi thông điệp này trên cùng mạng con.
- Một cải tiến của IGMP version 2 so với version 1 liên quan đến mạng đa truy cập
(multi-access networks) ví dụ như mạng ethernet có nhiều hơn 1 router multicast trong
mạng. Do chỉ cần 1 router gửi thông điệp Membership Query, IGMP version 2 thêm một
tính năng là xác định được router sẽ chịu trách nhiệm gửi thông điệp Membership Query
gọi là Querier router và các router khác trở thành Non-Querier router (xem hình 2-14).
Hình: Router có địa chỉ IP thấp nhất sẽ trở thành Querier router
Giả sử rằng router A gửi thông điệp Membership Query vào mạng trước router B. Router
B nhận thông điệp này và bởi vì router A có địa chỉ IP thấp hơn router B nên router A
vẫn là Querier router và router B trở thành Non-Querier router . Nếu router B gửi thông
điệp Membership Query trước router A, điều này không ngăn cản được thông điệp
Membership Query từ router A vì router A có địa chỉ IP thấp hơn. Router A sẽ gửi thông
điệp Membership Query và router B(trong lúc nhận thông điệp này) sẽ trở thành Non-
Querier router trong mạng.
Ðiểm mới nữa của IGMP version 2 so với IGMP version 1 là có thêm thông điệp Leave
Group. Khi trạm con quyết định rời khỏi nhóm và nếu trạm con là trạm hồi đáp thông
điệp Membership Query cuối cùng, thì trạm con sẽ gửi thông điệp Leave Group đến địa
chỉ multicast của tất cả các router trong mạng 224.0.0.2. Nếu trạm con chưa phải là trạm
cuối cùng gửi thông điệp Membership Query, thì thông điệp Leave Group chưa gửi đi.
RFC cũng cho phép gửi thông điệp Leave Group đến nhóm multicast cụ thể thay vì gửi
đến địa chỉ multicast của tất cả các router. Lợi ích của việc gửi thông điệp Leave Group
đến địa chỉ multicast của tất cả các router là các trạm con khác không là thành viên của
nhóm không phải xử lý thông điệp này.