IGMP phiên bản 2 giới thiệu vài sự khác biệt so với phiên bản đầu tiên. Các gói tin truy vấn bây giờ được gọi là gói tin truy vấn tổng quát (General Queries). Các gói này có thể gửi tới địa chỉ tất cả các máy trạm hoặc tới từng nhóm cụ thể.
Một cải tiến khác nữa là các máy trạm được phép rời khỏi nhóm. Khi một máy trạm quyết định rời khỏi một nhóm nó đã tham gia, nó sẽ gửi thông điệp rời bỏ nhóm (Leave Group) đến địa chỉ tất cả các router là 224.0.0.2. Tất cả các router trên một phân đoạn mạng nội bộ sẽ lưu ý thông điệp này và router truy vấn sẽ tiếp tục quá trình. Router sẽ trả lời thông điệp trên bằng thông điệp truy vấn gửi theo nhóm. Thông điệp này sẽ hỏi rằng có còn máy trạm nào muốn nhận lưu lượng cho nhóm đó nữa không? Bất cứ máy trạm nào cũng phải trả lời lại bằng thông điệp báo cáo quan hệ (membership report). Nếu khác đi, router sẽ kết luận một cách an toàn là không cần thiết chuyển lưu lượng cho nhóm đó trên phân đoạn mạng đó.
Một trong những nguyên nhân IGMP phiên bản 2 được phát triển là cung cấp một cơ chế rời khỏi nhóm tốt hơn. IGMP phiên bản 2 có thêm một số tính năng mới:
Thông điệp báo cáo quan hệ sẽ được gửi khi một máy trạm muốn tham gia một nhóm. Thỉnh thoảng, thông điệp loại này cũng được dùng để trả lời cho loại thông điệp truy vấn từ router. Khi một máy trạm muốn tham gia một nhóm, nó sẽ không chờ gói tin truy vấn từ router. Thay vào đó, nó sẽ gửi thông điệp báo cáo quan hệ. Địa chỉ đích của thông điệp báo cáo quan hệ sẽ là địa chỉ đích của nhóm. Để đảm bảo rằng router nhận được thông điệp này, máy trạm sẽ gửi vài thông điệp, cách nhau mỗi 10 giây.
Hình 19.14: Định dạng của gói tin IGMP phiên bản 2
IGMP phiên bản 2 có bốn trường, được định nghĩa như sau:
Dùng lệnh sau để xem các nhóm Multicast mà router biết:
Router#show ip igmp groups
Nếu có nhiều router trên cùng một kết nối, router có địa chỉ IP nhỏ nhất sẽ gửi ra gói tin truy vấn. Vì vậy, khi một router nhận được một gói tin truy vấn từ một router nào đó, nó sẽ kiểm tra địa chỉ nguồn của gói tin đó. Nếu địa chỉ nguồn của router cục bộ nhỏ hơn địa chỉ nguồn trong gói tin vừa đến, router sẽ vẫn tiếp tục gửi gói tin query vì nó biết rằng nó sẽ giữ vai trò truy vấn. Còn nếu địa chỉ nguồn của gói tin truy vấn là nhỏ hơn, router sẽ từ bỏ vai trò truy vấn.
IGMP phiên bản 2 hỗ trợ tính tương thích ngược với IGMP phiên bản 1. Mã số cho kiểu thông điệp truy vấn và báo cáo của IGMP phiên bản 2 và IGMP phiên bản 1 đều cùng là 0x11 và 0x12. Điều này cho phép các máy trạm chạy IGMP phiên bản 2 và các router nhận ra IGMP phiên bản 1 khi có các máy trạm chạy IGMP phiên bản 1 trên mạng. IGMP phiên bản 2 giúp giảm số lượng các thông điệp báo cáo được gửi bởi các máy trạm bằng cách cho phép người quản trị thay đổi khoảng thời gian truy vấn.
IGMP phiên bản 1 không có thông số MRT, vì vậy các máy trạm chỉ đơn giản dùng khoảng thời gian mặc định là 10 giây. Tuy nhiên thông điệp IGMP phiên bản 2 có bao gồm trường MRT, chỉ ra khoảng thời gian MRT được dùng bởi tất cả các máy trạm IGMP phiên bản 2 trên LAN. Các tiến trình mà các máy trạm gửi các thông điệp báo cáo của IGMP phiên bản 2 cũng giống trong IGMP phiên bản 1. Có một sự khác nhau nhỏ là các router gửi gói tin truy vấn IGMP phiên bản 2 mỗi 125 giây thay vì mỗi 60 giây.
IGMP phiên bản 2 cải tiến quá trình Truy vấn/Báo cáo bằng cách dùng cơ chế truy vấn cho từng nhóm cụ thể. Trong IGMP phiên bản 2, khi một máy trạm rời một nhóm, nó gửi ra một thông điệp rời nhóm IGMP phiên bản 2. Khi một router nhận được thông điệp rời khỏi nhóm IGMP phiên bản 2, thay vì chờ một khoảng thời gian truy vấn là 125 giây, router sẽ gửi ngay một thông điệp truy vấn cho nhóm đó. Thông điệp này chỉ để hỏi là còn có máy trạm nào muốn lưu lượng cho nhóm Multicast đó không. Kết quả là, router sẽ nhanh chóng biết được có còn máy trạm nào quan tâm đến lưu lượng của nhóm đó.
Thuận lợi chính của IGMP phiên bản 2 so với IGMP phiên bản 1 là thời gian rời khỏi nhóm của IGMP phiên bản 2 ngắn hơn. IGMP phiên bản 2 chỉ mất có ba giây để kết luận rằng không còn máy trạm nào trên mạng con đó quan tâm đến Multicast.
Các thông điệp rời bỏ nhóm (IGMPv2 Leave Group) và các thông điệp truy vấn cho từng nhóm cụ thể (Group-Specific Query Messages)
IGMP phiên bản 2 RFC 2236 khuyến cáo rằng một máy trạm gửi ra một thông điệp rời khỏi nhóm chỉ nếu nó là máy trạm cuối cùng gửi thông điệp báo cáo quan hệ. Tuy nhiên phần lớn các hiện thực IGMP phiên bản 2 đều cho phép một máy trạm gửi ra thông điệp rời khỏi nhóm khi bất kỳ máy trạm nào rời khỏi nhóm.
Hình 19.15: Quá trình gửi thông điệp rời bỏ nhóm
Router IGMP phiên bản 2 lặp lại tiến trình ở bước 2 mỗi lần nó nhận được thông điệp rời bỏ nhóm trong bước 1. Trong ví dụ trước, R1 không ngừng việc gửi lưu lượng . Trong hình 19.16, H3 là máy trạm duy nhất còn lại của nhóm 226.1.1.1. Giả sử rằng H3 cũng muốn rời bỏ khỏi nhóm.
Hình 19.16: Mô tả quá trình H3 rời bỏ khỏi nhóm
Ba bước sau đây sẽ mô tả quá trình khi H3 rời khỏi nhóm:
Mặc định, router sẽ dùng một giá trị MRT bằng 10 (1 giây) cho các thông điệp truy vấn cho nhóm. Bởi vì một router phải nhận một thông điệp trả lời cho thông điệp truy vấn theo nhóm trước đây trong khoảng thời gian MRT này, router sẽ dùng giá trị MRT như là khoảng thời gian để xác định thành viên cuối cùng rời khỏi nhóm. Router dùng tiến trình sau:
IGMP phiên bản 2 định nghĩa một tiến trình bầu chọn router truy vấn. Tiến trình này được dùng khi có nhiều router kết nối vào cùng một mạng. Khi router IGMP phiên bản 2 khởi động, các router này gửi ra các thông điệp truy vấn đến địa chỉ 224.0.0.1 dùng các địa chỉ cổng trong phần địa chỉ nguồn của gói tin. Khi một router IGMP phiên bản 2 nhận được một thông điệp truy vấn từ các các router kia, nó sẽ so sánh địa chỉ nguồn IP của thông điệp với địa chỉ cổng của chính nó. Router có địa chỉ IP nhỏ nhất sẽ được bầu như router truy vấn. Các router không trở thành router truy vấn sẽ không gửi gói tin truy vấn nhưng vẫn giám sát tần suất của các gói tin truy vấn được gửi.
Khi router truy vấn ngừng gửi một thông điệp truy vấn trong hai chu kỳ rưỡi, router truy vấn sẽ bị xem như đã chết và cần có một router truy vấn khác. RFC2236 qui định khoảng thời gian này là khoảng thời gian giới thiệu router truy vấn khác (Other querier present Interval). Giá trị mặc định cho khoảng thời gian này là 255 giây bởi vì khoảng thời gian mặc định của gói tin truy vấn của IGMP phiên bản 2 là 125 giây và giá trị mặc định của thời gian trả lời truy vấn là 10 giây.
3. So sánh IGMP phiên bản 1 và IGMP phiên bản 2
IGMP phiên bản 1 không có thông điệp rời bỏ nhóm. Điều này có nghĩa là sẽ tốn một khoảng thời gian dài hơn để máy trạm cuối cùng rời khỏi nhóm và router ngừng việc truy vấn. IGMP phiên bản 1 không có thông điệp cho riêng từng nhóm. Điều này là kết quả của đặc điểm 1. Các máy trạm có khoảng thời gian MRT này mặc định là 10 giây. IGMP phiên bản 1 không có tiến trình bầu chọn router truy vấn. Thay vào đó, nó dựa trên cơ chế định tuyến của Multicast để để bầu ra router truy vấn. Do có thể có nhiều giao thức định tuyến khác nhau cho các nhóm Multicast khác nhau, sẽ có một khả năng là sẽ có nhiều router truy vấn trong IGMP phiên bản 1.
IGMP phiên bản 2 được thiết kế để tương thích ngược với IGMP phiên bản 1. Sau đây là một vài trường hợp tương thích.
Khi một máy trạm gửi ra một thông điệp báo cáo IGMP với kiểu thông điệp là 0x16 (kiểu này không được định nghĩa trong IGMP phiên bản 1, router đang chạy IGMP phiên bản 1 sẽ xem kiểu thông điệp này là không hợp lệ và bỏ qua nó. Vì vậy, một máy chạy IGMP phiên bản 2 phải gửi thông điệp báo cáo IGMP phiên bản 1 khi router IGMP phiên bản 1 đang tồn tại. Nhưng bằng cách nào một máy trạm IGMP phiên bản 2 phát hiện sự tồn tại của một IGMP phiên bản 1 router?
Máy trạm chạy IGMP phiên bản 2 sẽ xác định router truy vấn đang dùng IGMP phiên bản 1 hay IGMP phiên bản 2 dựa trên giá trị của trường MRT của các thông điệp truy vấn định kỳ. Trong IGMP phiên bản 1, trường này bằng 0, trong IGMP phiên bản 2, trường này là khác 0. Khi một máy trạm chạy IGMP phiên bản 2 nhận được một truy vấn từ router IGMP phiên bản 1, máy trạm biết rằng có một router IGMP phiên bản 1 đang tồn tại trên mạng con và đánh dấu cổng này như là IGMP phiên bản 1. Máy trạm chạy IGMP phiên bản 2 sau đó sẽ không gửi thông điệp IGMP phiên bản 2.
Bất cứ khi nào một máy trạm IGMP phiên bản 2 nhận một thông điệp truy vấn IGMP phiên bản 1, nó sẽ khởi tạo một bộ định thời phiên bản 1 (version 1 router Present timeout) có thời lượng 400 giây. Bộ định thời này sẽ được khởi tạo lại bất cứ khi nào máy trạm nhận được một thông điệp truy vấn IGMP phiên bản 1. Nếu bộ định thời này hết, có nghĩa là không có router IGMP phiên bản 1 nào tồn tại trên mạng, máy trạm sẽ bắt đầu gửi thông điệp IGMP phiên bản 2.
Các router chạy IGMP phiên bản 2 có thể dễ dàng xác định sự tồn tại của các máy trạm chạy IGMP phiên bản 1 dựa vào việc máy trạm có gửi IGMP phiên bản 1 (0x12) hay IGMP phiên bản 2 (0x16). Giống như router chạy IGMP phiên bản 1, các router IGMP phiên bản 2 sẽ định kỳ gửi các gói tin truy vấn. Một máy trạm chạy IGMP phiên bản 1 trả lời bình thường bởi vì thông điệp truy vấn IGMP phiên bản 2 thì tương tự với định dạng của IGMP phiên bản 1, ngoại trừ byte thứ hai. Các máy trạm IGMP phiên bản 1 sẽ bỏ qua giá trị chứa trong byte này. Vì vậy, một router IGMP phiên bản 2 sẽ kiểm tra tất cả các thông điệp báo cáo để tìm ra bất kỳ máy trạm nào chạy IGMP phiên bản 1 tồn tại trên LAN.
Nếu một máy trạm IGMP phiên bản 2 cũng tồn tại trên cùng một mạng con, nó sẽ gửi các thông điệp báo cáo IGMP phiên bản 2. Tuy nhiên, các máy trạm IGMP phiên bản 1 sẽ không hiểu các thông điệp báo cáo IGMP phiên bản 2 và bỏ qua các thông điệp này. Các thông điệp IGMP phiên bản 2 này không kích hoạt các cơ chế giảm thông điệp báo cáo trong các máy trạm chạy IGMP phiên bản 1. Vì vậy, thỉnh thoảng một router IGMP phiên bản 2 sẽ nhận cả thông điệp báo cáo từ phiên bản 1 và phiên bản 2.
Khi một router chạy IGMP phiên bản 2 biết rằng có một máy trạm IGMP phiên bản 1 tồn tại trên LAN, router sẽ bỏ qua thông điệp rời bỏ nhóm và cũng không gởi ra các thông điệp truy vấn cho từng nhóm. Điều này là cần thiết vì nếu một router IGMP phiên bản 2 trả lời lại thông điệp rời bỏ nhóm bằng thông điệp truy vấn cho từng nhóm, các máy trạm chay IGMP phiên bản 1 sẽ không hiểu loại thông điệp này và sẽ bỏ qua.
Khi một router IGMP phiên bản 2 không nhận được một trả lời cho thông điệp truy vấn theo nhóm, nó có thể kết luận sai rằng không còn ai muốn nhận lưu lượng và sẽ ngừng chuyển lưu lượng vào LAN đó. Vì vậy nếu một hoặc nhiều máy trạm IGMP phiên bản 1 đang lắng nghe đến một nhóm nào đó, router cần phải bỏ quá trình tối ưu giúp giảm thiểu độ trễ khi các máy trạm rời khỏi nhóm. Router IGMP phiên bản 2 tiếp tục bỏ qua thông điệp rời bỏ nhóm cho đến khi nào khoảng thời gian định thời IGMP phiên bản 1 là hết.
Khi router IGMP phiên bản 2 nhận được một thông điệp báo cáo IGMP phiên bản 1, router sẽ thiết lập một bộ định thời IGMP phiên bản 1. Khoảng thời gian này phải bằng với khoảng thời gian xác định thành viên nhóm (Group membership Interval), mặc định là 180 giây trong IGMP phiên bản 1 và 260 giây trong IGMP phiên bản 2. Đây là khoảng thời gian mà trong đó một router không nhận được một thông điệp báo cáo IGMP, router sẽ kết luận là không còn thành viên nào trên mạng.
RFC 2236 định nghĩa rằng khi có các router chạy IGMP phiên bản 1 và IGMP phiên bản 2 tồn tại trên cùng một mạng, người quản trị mạng phải cấu hình thủ công tất cả các router IGMP phiên bản 2 hoạt động như IGMP phiên bản 1.
Bảng 19.2 tóm tắt các thông số thời gian trong IGMP:
Bộ định thời |
Sử dụng |
Giá trị mặc định cho IGMP phiên bản 1 |
Giá trị mặc định cho IGMP phiên bản 2 |
Thời gian truy vấn |
Khoảng thời giữa các lần gửi gói tin truy vấn bởi router |
Cố định là 60 giây |
125 giây |
Thời gian đáp ứng truy vấn |
Khoảng thời gian tối đa cho các máy trạm trả lời lại cho các gói truy vấn |
10 giây |
10 giây. Có thể có giá trị từ 1 giây đến 25,5 giây |
Thời gian quan hệ nhóm |
Là khoảng thời gian mà nếu router không nhận được thông điệp báo cáo, router kết luận rằng không còn thành viên nào của nhóm trên mạng con |
180 giây |
260 giây |
Thời gian truy vấn khác |
Là khoảng thời gian trong đó nếu một router IGMP phiên bản 2 không phải là router truy vấn không nhận được thông điệp truy vấn, router sẽ kết luận là router truy vấn là chết |
- |
255 giây |
Thời gian thành viên truy vấn lần cuối |
Khoảng thời gian trả lời tối đa được chỉ ra bởi router chạy IGMP phiên bản 2 trong thông điệp truy vấn theo nhóm và khoảng thời gian giữa hai thông điệp truy vấn liên tiếp gửi đến cùng nhóm |
- |
1 giây |
Thời gian hết hạn của router đang chạy phiên bản 1 |
Là khoảng thời gian trong đó nếu một máy trạm chạy IGMP phiên bản 2 không nhận được gói tin truy vấn IGMP phiên bản 1 query, máy trạm sẽ kết luận rằng không có router chạy IGMP phiên bản 1 và máy trạm bắt đầu gửi thông điệp IGMP phiên bản 2. |
- |
400 giây |
Bảng 19.2: Các thông số thời gian của IGMP phiên bản 1 và 2
Link phần 4: CƠ CHẾ MULTICAST (Phần 4)