Tải bản đầy đủ (.doc) (6 trang)

IGMPv2 và sự khác nhau cơ bản giữa IGMPv1 & IGMPv2 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (79 KB, 6 trang )

IGMPv2
Phiên bản IGMPv2 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à General Queries. Các gói này có thể gửi tới địa chỉ all-hosts hoặc
tới từng nhóm cụ thể. Một cải tiến khác nữa là các host được phép rời khỏi nhóm. Khi
một host quyết định rời khỏi một nhóm nó đã tham gia, nó sẽ gửi thông điệp LeaveGroup
đến địa chỉ all-router 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 cập gửi theo nhóm. Thông điệp này sẽ hỏi rằng có còn host nào
muốn nhận traffic cho nhóm đó nữa không? Bất cứ host nào cũng phải trả lời lại bằng
thông điệp 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 traffic cho nhóm đó trên phân đoạn mạng đó. Khoảng thời gian này mặc
định là 3 phút.
Một trong những nguyên nhân IGMPv2 được phát triển là cung cấp một cơ chế rời khỏi
nhóm tốt hơn. IGMPv2 có thêm một số tính năng mới:
- Group-specific Query: cho phép router gửi truy vấn cho một nhóm cụ thể thay vì cho tất
cả các nhóm.
- Maximum response Time: Một trường mớI trong gói tin truy vấn, cho phép hiệu chỉnh
khoảng thời gian cho thông điệp Host membership report. Đặc điểm này có thể hữu ích
khi một số lớn các nhóm tồn tại trên một subnet và bạn muốn giảm số thông điệp trả lời
bằng cách kéo dài những thông điệp trả lời ra một khoảng thời gian dài hơn.
- Leave group message: cho phép host thông báo cho router rằng host muốn rời khỏi
nhóm.
- Bầu chọn router truy vấn: cung cấp cơ chế cho phép bầu chọn router gửi ra các thông
điệp truy vấn khi có nhiều router cùng kết nối vào một subnet.
Thông điệp Membership report sẽ được gửi khi một host 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
query từ router. Khi một host muốn tham gia một nhóm, nó sẽ không chờ gói tin query từ
router. Thay vào đó, nó sẽ gửi membership report. Địa chỉ đích của membership report sẽ
là địa chỉ đích của nhóm. Để đảm bảo rằng router nhận được thông điệp này, host sẽ gửi
vài thông điệp, cách nhau mỗi 10 giây.
IGMP v2 có bốn trường, được định nghĩa như sau:


1. Type: trường này có chiều dài 8bit, chỉ ra một trong bốn loại thông điệp được định
nghĩa bởi IGMPv2. Các giá trị có thể có là:
a. Membershop query (giá trị là 0x11): được dùng bởi router để tìm ra sự hiện diện của
các host trên một subnet. Thông điệp loại này gán giá trị địa chỉ nhóm về 0.0.0.0 giống
như trong IGMPv1. Một thông điệp truy vấn cho một nhóm sẽ gán địa chỉ nhóm vào
trường này. Thông điệp loại này thường được gửi khi router nhận được một thông điệp
rời khỏi nhóm IGMPv2 Leave group từ một host. Thông điệp loại này được dùng để xác
định xem có còn thành viên nào của một nhóm cụ thể không.
b. Membership report version 1 (mã 0x12): được dùng bởi IGMPv2 để tương thích với
IGMPv1.
c. Membership report v2 (mã 0x16): được gởi bởi thành viên để thông báo cho router là
còn ít nhất một thành viên trên mạng.
d. Leave group (0x17): được gửi bởi thành viên nhóm nếu nó là thành viên cuối cùng gửi
thông điệp membership report. Thông điệp này báo cho router rằng host đang rời khỏi
nhóm.
2. Thời gian đáp ứng tối đa (Maximum Response Time): Trường có độ dài 8bit chỉ có
trong các thông điệp truy vấn. Giá trị mặc định cho trường này là 100 (tương đương 10
giây). Giá trị sẽ thay đổi từ 1 đến 255 (nghĩa là từ 0.1 giây đến 25.5giây).
3. Checksum: Chứa giá trị 16bit được tính toán bởi máy nguồn. IGMP checksum tính
toán trên toàn bộ phần tải của IP chứ không phải chỉ 8bytes đầu tiên mặc dù IGMPv2 có
độ dài 8bytes.
4. Địa chỉ nhóm Group Address: Được gán giá trị 0.0.0.0 trong gói tin truy vấn và gán địa
chỉ nhóm nếu thông điệp là cho từng nhóm cụ thể. Các thông điệp membership report
hoặc thông điệp Leave Group có thể mang địa chỉ của nhóm trong trường này.
Dùng lệnh sau để xem các nhóm multicast mà router biết:
#show ip igmp groups
Nếu có nhiều router trên cùng một kết nối, router có IP address 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 query 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 query là nhỏ hơn,
router sẽ từ bỏ vai trò truy vấn.
IGMPv2 hỗ trợ tính tương thích ngược với IGMPv1. Mã số cho kiểu thông điệp query và
report của IGMPv2 và IGMPv1 đều cùng là 0x11 và 0x12. Điều này cho phép các host
chạy IGMPv2 và các router nhận ra IGMPv1 khi có các host chạy IGMPv1 trên mạng.
IGMPv2 giúp giảm số lượng các thông điệp report được gửi bởi các host bằng cách cho
phép người quản trị thay đổi khoảng thời gian truy vấn. IGMPv1 không có thông số
Maximum Response Time, vì vậy các host 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 IGMPv2 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 host IGMPv2 trên LAN. Các tiến trình các host gửi
các thông điệp Report của IGMPv2 cũng giống trong IGMPv1. Có một sự khác nhau nhỏ
là các router gửi gói tin truy vấn IGMPv2 mỗi 125 giây thay vì mỗi 60 giây.
IGMPv2 cải tiến quá trình Query/report bằng cách dùng cơ chế truy vấn cho từng nhóm
cụ thể. Trong IGMPv2, khi một host rời một nhóm, nó gửi ra một thông điệp rời nhóm
IGMPv2. Khi một router nhận được thông điệp leave group IGMPv2, thay vì chờ một
khoảng thời gian truy vấn query 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ó host 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 host nào quan
tâm đến traffic của nhóm đó.
Thuận lợi chính của IGMPv2 so với IGMPv1 là thời gian rời khỏi nhóm của IGMPv2
ngắn hơn. IGMPv2 chỉ mất có ba giây để kết luận rằng không còn host nào trên subnet đó
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 cho từng
nhóm cụ thể (Group-Specific Query Messages)
IGMPv2 RFC 2236 khuyến cáo rằng một host gửi ra một thông điệp rời khỏi nhóm chỉ
nếu nó là host cuối cùng gửi thông điệp membership report. Tuy nhiên phần lớn các hiện
thực IGMPv2 đều cho phép một host gửi ra thông điệp LeaveGroup khi bất kỳ host nào
rời khỏi nhóm.
1. H1 gửi một thông điệp rời bỏ nhóm IGMPv2 Leave Group. Địa chỉ đích của gói tin là
224.0.0.2. Đây là địa chỉ của tất cả các multicast router. Thông điệp này muốn báo rằng

“Tôi không muốn nhận multicast traffic của 226.1.1.1”.
2. R1 sẽ gửi ra một thông điệp cho riêng nhóm đó. Bởi vì H1 đã quyết định rời khỏi
nhóm 226.1.1.1, R1 quyết định ngừng đẩy lưu lượng của nhóm 226.1.1.1 trên cổng f0/0
nếu H1 là thành viên cuối cùng của 226.1.1.1. Tuy nhiên, R1 cần phải đảm bảo rằng
không còn host nào trên cổng này vẫn cần nhận lưu lượng của nhóm 226.1.1.1. Vì vậy,
R1 gửi ra một thông điệp để xác định có còn thành viên nào của nhóm 226.1.1.1. R1
dùng địa chỉ đích 226.1.1.1 như là địa chỉ đích trên gói tin sao cho chỉ có các host là
thành viên của nhóm này là nhận thông điệp và trả lời. Thông qua thông điệp này, R1 sẽ
hỏi các host còn lại trong nhóm là “Có còn ai muốn nhận muticast traffic cho 226.1.1.1?”.
3. H3 gửi một thông điệp membership report. H3 vẫn là một thành viên của nhóm
226.1.1.1. Máy H3 nghe thông điệp truy vấn theo nhóm và trả lời bằng một thông điệp
IGMPv2 report để thông báo cho router là vẫn còn thành viên của nhóm 226.1.1.1.
Router IGMPv2 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 traffic. Trong hình dưới, H3 là
host 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.
Ba bước sau đây sẽ mô tả quá trình khi H3 rời khỏi nhóm:
1. H3 gửi ra một thông điệp rời khỏi nhóm IGMPv2 LeaveGroup. Địa chỉ đích của gói tin
là 224.0.0.2 để thông báo cho tất cả các router trên subnet là “Tôi không muốn nhận
traffic của nhóm 226.1.1.1”.
2. R1 gửi ra một thông điệp truy vấn cho riêng nhóm đó. R1 nhận thông điệp rời khỏi
nhóm từ H3. R1 sẽ gửi các thông điệp truy vấn cho từng nhóm để xác định có còn máy
nào vẫn là thành viên của nhóm 226.1.1.1. R1 dùng địa chỉ đích là 226.1.1.1 sao cho chỉ
có những máy là thành viên của nhóm này nhận được thông điệp và trả lời.
3. Không có thông điệp report nào là nhận được, vì vậy R1 sẽ ngừng đẩy traffic. Bởi vì
không còn thành viên nào của nhóm 226.1.1.1, R1 sẽ không nhận được thông điệp trả lời
nào cho thông điệp truy vấn trước đây do R1 gửi ra. Kết quả là R1 sẽ ngừng đẩy
multicast traffic của nhóm 226.1.1.1 ra cổng f0/1.
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:
1. Gửi ra một thông điệp truy vấn cho từng nhóm cụ thể khi router nhận được một thông
điệp rời khỏi nhóm.
2. Nếu không có thông điệp report nào nhận được trong khoảng thời gian MRT (Last
member query interval), lặp lại bước 1.
3. Lặp lại bước 1 một số lần được chỉ ra trong thông số last member query count. Chỉ số
này là số lần các thông điệp truy vấn theo nhóm được gửi trước khi router kết luận là
không còn thành viên nào tích cực trong nhóm. Giá trị mặc định của thông số này bằng 2.
Vì vậy thường chỉ mất dưới ba giây để xác định không còn thành viên nào trong nhóm.
Trong khi đối với IGMPv1, thời gian này là ba phút.
Các router truy vấn IGMPv2 Querier
IGMPv2 đị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 IGMPv2 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 IGMPv2 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 querier 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 IGMPv2
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.
Sự khác nhau cơ bản giữa IGMPv1 và IGMPv2
IGMPv1 không có thông điệp rời bỏ nhóm LeaveGroup. Điều này có nghĩa là sẽ tốn một
khoảng thời gian dài hơn để host cuối cùng rời khỏi nhóm và router ngừng việc truy vấn.
IGMPv1 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.
IGMPv1 không có thông điệp Max_response-time. Các host có khoảng thời gian này mặc

định là 10s. IGMPv1 không có tiến trình bầu chọn router truy vấn querier. Thay vào đó,
nó dựa trên cơ chế routing multicast để để bầu ra router truy vấn. Do có thể có nhiều giao
thức routing cho multicast khác nhau, sẽ có một khả năng là sẽ có nhiều router querier
trong IGMPv1.
Tương thích giữa IGMPv1 và IGMPv2
IGMPv2 được thiết kế để tương thích ngược với IGMPv1. Sau đây là một vài trường hợp
tương thích.
- Host dùng IGMPv2 và router chạy IGMPv1.
- Host dùng IGMPv1 và router dùng IGMPv2.
- Router chạy IGMPv1 và một số router khác chạy IGMPv2.
Host chạy IGMPv2 Host và router chạy IGMPv1
Khi một host gửi ra một thông điệp IGMP report với kiểu thông điệp là 0x16 (kiểu này
không được định nghĩa trong IGMPv1, router đang chạy IGMPv1 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 IGMPv2 phải gửi thông điệp
IGMPv1 report khi router IGMPv1 đang tồn tại. Nhưng bằng cách nào một host IGMPv2
phát hiện sự tồn tại của một IGMPv1 router?
IGMPv2 sẽ xác định router truy vấn đang dùng IGMPv1 hay IGMPv2 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 IGMPv1, trường này bằng 0,
trong IGMPv2, trường này là khác không. Khi một host chạy IGMPv2 nhận được một
truy vấn từ IGMPv1, router biết rằng có một router IGMPv1 đang tồn tại trên subnet và
đánh dấu cổng này như là IGMPv1. Host chạy IGMPv2 sau đó sẽ không gửi thông điệp
IGMPv2.
Bất cứ khi nào một host IGMPv2 nhận một thông điệp truy vấn IGMPv1, nó sẽ khởi tạo
một bộ định thời 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 host nhận được một thông điệp truy vấn IGMPv1.
Nếu timer này hết, có nghĩa là không có router IGMPv1 nào tồn tại trên mạng, host sẽ bắt
đầu gửi thông điệp IGMPv2.
Host chạy IGMPv1 và router chạy IGMPv2
Các router chạy IGMPv2 có thể dễ dàng xác định sự tồn tại của các host chạy IGMPv1
dựa vào việc host có gửi IGMPv1 (0x12) hay IGMPv2 (0x16). Giống như router chạy

IGMPv1, các router IGMPv2 sẽ định kỳ gửi các gói tin truy vấn. Một host chạy IGMPv1
trả lời bình thường bởi vì thông điệp truy vấn IGMPv2 thì tương tự với định dạng của
IGMPv1, ngoại trừ octet thứ hai. Các host IGMPv1 sẽ bỏ qua giá trị chứa trong octet này.
Vì vậy, một router IGMPv2 sẽ kiểm tra tất cả các thông điệp report để tìm ra bất kỳ host
nào chạy IGMPv1 tồn tại trên LAN.
Nếu một host IGMPv2 cũng tồn tại trên cùng một subnet, nó sẽ gửi các thông điệp
IGMPv2 report. Tuy nhiên, các host IGMPv1 sẽ không hiểu các thông điệp IGMPv2
report và bỏ qua các thông điệp này. Các thông điệp này không kích hoạt các cơ chế giảm
thông điệp report trong các host chạy IGMPv1. Vì vậy, thỉnh thoảng một router IGMPv2
sẽ nhận cả thông điệp report từ v1 và v2. Khi một router chạy IGMPv2 biết rằng có một
host IGMPv1 tồn tại trên LAN, router sẽ bỏ qua thông điệp rờI bỏ nhóm Leave 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 IGMPv2 trả lời lại thông điệp rời bỏ nhóm Leavegroup bằng thông điệp truy vấn
cho từng nhóm, các host chay IGMPv1 sẽ không hiểu thông điệp này và sẽ bỏ qua. Khi
một router IGMPv2 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 traffic và sẽ ngừng chuyển traffic vào
LAN đó. Vì vậy nếu một hoặc nhiều host IGMPv1 đ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 host rời khỏi nhóm.
Router IGMPv2 tiếp tục bỏ qua thông điệp leave cho đến khi nào khoảng thời gian
IGMPv1-host-present countdown là hết.
Khi router IGMPv2 nhận được một thông điệp report IGMPv1, router sẽ thiết lập một bộ
định thời IGMPv1 host-present-countdown. 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 IGMPv1 và 260 giây trong IGMPv2. Đây là khoảng thời gian mà trong đó một
router không nhận được một thông điệp IGMP report, router sẽ kết luận là không còn
thành viên nào trên mạng.
IGMPv1 và IGMPv2 Routers
RFC 2236 định nghĩa rằng khi có các router chạy IGMPv1 và IGMPv2 tồn tại trên cùng
một network, người quản trị mạng phải cấu hình thủ công tất cả các router IGMPv2 hoạt
động như IGMPv1.

Bảng dưới đây tóm tắt các thông số thời gian trong IGMP

×