Download as pdf or txt
Download as pdf or txt
You are on page 1of 22

DỊCH TÀI LIỆU IGMP

Internet Group Managerment Protocol (IGMP)


Giao thức IGMP phát triển từ giao thức quan hệ giữa các Máy trạm (Host Membership Protocol),
được mô tả trong tài liệu của Deering. IGMP phát triển từ IGMP phiên bản 1 (RFC1112) đến
IGMP phiên bản 2 (RFC2236) và đến phiên bản cuối cùng IGMP phiên bản 3 (RFC3376). Các
bản tin IGMP được gửi bên trong gói tin IP với trường số của giao thức (protocol number) bằng
2, trong đó trường Time-to-Live (TTL) có giá trị bằng 1. Các gói IGMP chỉ được truyền trong
LAN và không được tiếp tục chuyển sang LAN khác do giá trị TTL của nó.
Hai mục đích quan trọng nhất của IGMP là:
- Thông báo cho router chạy Multicast rằng có một máy muốn nhận lưu lượng Multicast
của một nhóm cụ thể.
- Thông báo cho router rằng có một máy muốn rời một nhóm Multicast (nói cách khác, có
một máy không còn quan tâm đến việc nhận Multicast lưu lượng nữa).
Các router thường dùng IGMP để duy trì thông tin cho từng cổng của router là những nhóm
Multicast nào router cần phải chuyển và những máy trạm nào muốn nhận.
IGMP Version 1
Hình 19-7 cho thấy định dạng 8-octet của một bản tin IGMPv1

Một bản tin IGMPv1 có 5 trường:


- Phiên bản (version): Trường này có độ dài 4 bit và luôn luôn có giá trị bằng 1.
- Loại (Type): Trường giá trị 4 bit, chỉ ra 2 loại bản tin được định nghĩa bởi IGMPv1
• Loại 1 là kiểu truy vấn quan hệ máy trạm (Host Membership Query), chỉ được
dùng bởi router.
• Loại 2 là kiểu báo cáo quan hệ máy trạm (Host Membership Report) được dùng
chỉ bởi máy trạm.
- Không sử dụng (Unused): trường này có độ dài 8 bit chứa giá trị 0 khi được gửi và bị bỏ
qua khi được nhận.
- Kiểm tra lỗi (Checksum): mang giá trị 16 bit kiểm tra lỗi được tính toán bởi nguồn của
bản tin IGMP. Thiết bị nhận thường kiểm tra giá trị kiểm tra lỗi và nếu giá trị này không
đúng bằng giá trị đã tính toán, máy nhận sẽ loại bỏ khung tin.
- Địa chỉ nhóm (Group Address): Được gán về giá trị 0.0.0.0 khi router gửi ra gói tin truy
vấn quan hệ (Membership Query). Giá trị này được gán giá trị địa chỉ nhóm Multicast khi
một máy gửi bản tin báo cáo quan hệ (Membership Report).
Lưu ý rằng khi bạn kết hợp trường Phiên bản và trường Loại, giá trị dạng thập lục phân của
byte đầu tiên của một bản tin truy vấn quan hệ máy trạm IGMPv1 sẽ là 0x11 và bản tin báo
cáo quan hệ máy trạm IGMPv1 sẽ là 0x12. Các giá trị này sẽ được so sánh với các giá trị của
IGMP phiên bản 2.
➢ Chức năng truy vấn quan hệ máy trạm IGMPv1:
Những router chạy multicast sử dụng bản tin truy vấn quan hệ máy trạm IGMPv1 để xác
định xem có bất kỳ máy trạm nào trên bất kỳ cổng LAN nào của nó muốn nhận lưu lượng
multicast cho bất kỳ nhóm nào hay không. Bản tin truy vấn quan hệ máy trạm IGMPv1 chỉ
được gửi bởi các router chạy multicast trên các cổng LAN. Ví dụ, Hình 19-8 cho thấy quy
trình truy vấn quan hệ máy trạm IGMPv1. Nó liệt kê hai bước, với bước thứ hai là router gửi
truy vấn.

Chi tiết của hai bước như sau:


1. Các máy H1 và H3 tham gia vào nhóm Multicast 226.1.1.1. Tác vụ tham gia làm cho các
máy này sẵn sàng nhận các bản tin được gửi đến cả hai địa chỉ 226.1.1.1 và địa chỉ
224.0.0.1 (là địa chỉ mà các gói tin truy vấn IGMP phiên bản 1 sẽ được gửi. Các máy
Multicast sẽ phải lắng nghe địa chỉ 224.0.0.1 để tham gia vào IGMP và để có thể nhận
được các gói tin truy vấn gửi ra từ router. Hai địa chỉ MAC tương ứng là 01-00-5e-01-
01-01 (của địa chỉ 226.1.1.1) và 01-00-5e-00-00-01 (tương ứng của 224.0.0.1).
2. R1 gửi bản tin truy vấn quan hệ máy trạm IGMPv1 ra từng cổng LAN, tìm kiếm bất kỳ
máy trạm nào quan tâm đến việc nhận lưu lượng multicast. R1 định kỳ gửi thông điệp
truy vấn IGMPv1 trên mỗi cổng LAN, theo mặc định cứ sau 60 giây. Khoảng thời gian
này được gọi là khoảng thời gian truy vấn (Query Interval). Bản tin truy vấn của R1 sử
dụng địa chỉ IP đích và địa chỉ MAC là 224.0.0.1 và 01-00-5e-00-00-01, với địa chỉ IP
nguồn và địa chỉ MAC của địa chỉ IP cổng của R1 và BIA (Burned-In Addresses – Địa
chỉ cố định) tương ứng. Sau khi gửi Truy vấn IGMPv1, R1 mong đợi bất kỳ máy trạm
nào tham gia vào nhóm 226.1.1.1 hoặc bất kỳ nhóm nào khác sẽ trả lời bằng Báo cáo
IGMPv1. Truy vấn IGMPv1 cũng sử dụng TTL là 1, để ngăn không cho gói tin được
định tuyến qua mạng khác.
Trong trường địa chỉ nhóm của gói truy vấn IGMP phiên bản 1, giá trị của trường này luôn
luôn là 0.0.0.0. Bằng cách gửi bản tin truy vấn IGMP phiên bản 1 đến địa chỉ nhóm 0.0.0.0
router sẽ hỏi các máy trạm khác trong LAN là “Có còn ai muốn nhận Multicast lưu lượng
cho bất kỳ nhóm nào không?”.
Ở thời điểm này, router R1 vẫn không biết có máy trạm nào cần nhận lưu lượng Multicast
nào hay không. Phần kế tiếp sẽ khảo sát các máy trạm trả lời bằng bản tin báo cáo IGMP
như thế nào.
➢ Chức năng báo cáo quan hệ máy trạm IGMPv1:
Các máy trạm dùng bản tin báo cáo quan hệ máy trạm IGMP phiên bản 1 để trả lời cho các
gói tin truy vấn IGMP và thông báo cho router rằng máy muốn nhận Multicast. Các máy
trạm Multicast dùng bản tin báo cáo IGMP phiên bản 1 để giao tiếp với các router, nêu rõ
địa chỉ nhóm Multicast mà máy muốn nhận. Trong IGMP phiên bản 1, một máy trạm gửi
bản tin báo cáo quan hệ máy trạm IGMP phiên bản 1 trong 2 tình huống sau:
- Khi một máy trạm nhận được một gói tin truy vấn IGMP phiên bản 1 từ router, máy trạm
sẽ giả sử gửi báo cáo quan hệ máy trạm cho tất cả các nhóm Multicast mà nó muốn nhận
lưu lượng. Bản tin này được gọi là bản tin báo cáo yêu cầu quan hệ máy trạm IGMP
phiên bản 1.
- Khi một máy trạm tham gia vào một nhóm mới, máy trạm muốn ngay lập tức gửi ra báo
cáo quan hệ máy trạm IGMP phiên bản 1 để thông báo cho router rằng nó muốn nhận lưu
lượng cho nhóm đó mà không cần chờ gói tin truy vấn IGMP phiên bản 1. Bản tin này
được gọi là báo cáo không yêu cầu quan hệ máy trạm IGMP phiên bản 1.
❖ Báo cáo yêu cầu quan hệ máy trạm IGMPv1
Hình 19-9 cho thấy hoạt động của quy trình Báo cáo yêu cầu quan hệ máy trạm và cơ chế giảm
thiểu báo cáo. Hình 19-9 lấy ví dụ từ Hình 19-8, trong đó router R1 đã gửi một Truy vấn
IGMPv1.
Hình 19-9 mô tả hoạt động của báo cáo yêu cầu quan hệ máy trạm IGMPv1 và cơ chế để giảm
bản tin báo cáo. Hình 19-9 mô tả các bước tiếp theo khi R1 đã gửi ra gói tin truy vấn IGMP
phiên bản 1. Thời gian đáp ứng tối đa (Maximum Responese Time – MRT), thời gian tính bằng
giây, được máy trạm chọn lựa ngẫu nhiên. Nếu nhiều máy trạm đã chạy ứng dụng Multicast và
nếu tất cả các máy trạm này trả lời bản tin truy vấn IGMP phiên bản 1 bằng bản tin báo cáo quan
hệ máy trạm, sẽ có quá nhiều bản tin báo cáo được gửi dư về router. Điều này làm lãng phí băng
thông và tăng tải một cách không cần thiết trên router. Một router chỉ cần nhận một bản tin báo
cáo cho mỗi ứng dụng trên mỗi cổng LAN của nó. Một router sẽ chuyển Multicast lưu lượng vào
cổng LAN cho dù chỉ có một người dùng hay 200 người dùng trên phân đoạn mạng đó muốn
nhận Multicast lưu lượng .
Cơ chế giảm bản tin báo cáo giúp giải quyết vấn đề này. Cơ chế này dùng bộ định thời MRT của
IGMP phiên bản 1 để giảm bớt những bản tin báo cáo của IGMP phiên bản 1. Bộ định thời này
được gọi là khoảng thời gian trả lời truy vấn (Query Response Interval). Khoảng thời gian này
được cấu hình cố định là 10 giây và không thể thay đổi sang giá trị khác trong IGMP phiên bản
1. Nói cách khác, trong IGMP phiên bản 1, khi có bất kỳ máy trạm nào nhận một bản tin truy vấn
IGMP phiên bản 1, nó sẽ có một khoảng thời gian tối đa là 10 giây để gửi bản tin báo cáo IGMP
phiên bản 1 nếu nó muốn tiếp tục nhận lưu lượng Multicast.
Mỗi máy trạm muốn gửi báo cáo yêu cầu quan hệ máy trạm IGMP phiên bản 1 sẽ chọn một
khoảng thời gian ngẫu nhiên giữa 0 và 10 và bắt đầu một bộ định thời. Khi khoảng thời gian
ngẫu nhiên này hết, máy trạm sẽ giả sử là gửi một bản tin báo cáo. Tuy nhiên, nếu một máy trạm
nhận được một bản tin báo cáo được gửi bởi một máy trạm khác cho cùng nhóm Multicast mà nó
cũng muốn nhận lưu lượng , máy trạm này sẽ không gửi ra bản tin báo cáo. Cơ chế này được gọi
là cơ chế giảm bản tin báo cáo. Đơn vị đo lường cho khoảng thời gian MRT là 1/10 giây. Ví dụ,
một khoảng thời gian 3 giây sẽ được mô tả bằng giá trị MRT là 30.
Ba bước sau, được tham chiếu trong Hình 19-9 và sự tiếp nối của các bước được tham chiếu
trong Hình 19-8, mô tả chuỗi sự kiện cho Báo cáo yêu cầu quan hệ máy trạm IGMPv1 và cơ chế
giảm thiểu báo cáo:
3. Các máy H1 và H3 sẽ muốn gửi bản tin báo cáo yêu cầu quan hệ máy trạm IGMPv1. Giả
sử rằng H1 và H3 đã nhận được một gói tin truy vấn IGMPv1. Bởi vì cả H1 và H3 đều
đã tham gia vào nhóm 226.1.1.1, cả hai máy trạm cần phải gửi một bản tin báo cáo yêu
cầu quan hệ IGMP v1. Ngoài ra giả sử thêm rằng cả H1 và H3 đã chọn ngẫu nhiên một
khoảng thời gian MRT là 3 giây và 1 giây.
4. Bộ định thời của H3 sẽ bị hết hạn trong 1 giây, H3 chuẩn bị gửi ra bản tin báo cáo yêu
cầu quan hệ máy trạm IGMP phiên bản 1 với giá trị TTL là 1. H3 dùng địa chỉ IP đích là
IGMP phiên bản 1 là 226.1.1.1 và địa chỉ nguồn là 10.1.1.3. Địa chỉ đích MAC là 01-00-
5e-01-01-01 được tính toán từ địa chỉ 226.1.1.1 và địa chỉ MAC của H3 là địa chỉ nguồn
của khung tin.
5. Các máy H1, H2 và R1 nhận bản tin báo cáo yêu cầu quan hệ máy trạm IGMP phiên bản
1 nhưng chỉ có H1 và R1 là xử lý gói báo cáo. Card mạng (NIC-Network Interface
Cards) của H2 sẽ bỏ khung tin được gửi bởi H3 bởi vì nó không lắng nghe địa chỉ 01-00-
5e-01-01-01. H1 nhận ra rằng H3 đã có gửi một yêu cầu đến router. Vì vậy H1 sẽ không
gửi ra bản tin báo cáo của nó. Bằng cách dùng địa chỉ nhóm là 226.1.1.1, H3 đang báo
cho router là “Tôi muốn nhận lưu lượng Multicast cho nhóm 226.1.1.1”.
R1 nhận được bản tin báo cáo yêu cầu quan hệ máy trạm IGMP phiên bản 1 trên cổng F0/0
của nó nhưng R1 chưa nhận được bản tin báo cáo quan hệ máy trạm trên cổng F0/1. R1 sẽ
bắt đầu đẩy lưu lượng của nhóm 226.1.1.1 ra cổng F0/0.
❖ Báo cáo không yêu cầu quan hệ máy trạm:
Trong IGMPv1, một router chạy multicast sẽ gửi các bản tin Truy vấn quan hệ máy trạm IGMP
theo mặc định sau mỗi 60 giây (Khoảng thời gian truy vấn) trên mỗi cổng LAN của nó để xác
định xem có máy chủ nào muốn nhận lưu lượng multicast cho bất kỳ nhóm nào hay không. Tuy
nhiên, máy trạm không cần phải nhận bản tin truy vấn quan hệ máy trạm từ router để gửi Báo
cáo quan hệ máy trạm. Máy trạm có thể gửi báo cáo không yêu cầu quan hệ máy trạm IGMPv1
bất kỳ lúc nào người dùng khởi chạy ứng dụng đa hướng. Tính năng này làm giảm thời gian chờ
đợi để một máy trạm nhận được lưu lượng cho một nhóm multicast. Ví dụ, Hình 19-11 cho thấy
rằng một người dùng đã khởi chạy một ứng dụng multicast sử dụng 226.1.1.1 trên H4. H4 gửi
báo cáo không yêu cầu quan hệ máy trạm IGMPv1, sẽ được nhận bởi R1 trên cổng fa0 / 1 của
nó, và sau đó R1 sẽ bắt đầu chuyển tiếp lưu lượng cho 226.1.1.1 trên cổng fa0 / 1 của nó.

➢ Cơ chế rời khỏi nhóm của IGMPv1:


IGMPv1 không có cơ chế cho phép các máy trạm có thể “Rời khỏi” nhóm rõ ràng mà các máy
trạm có thể sử dụng để thông báo cho các router cục bộ rằng họ không muốn nhận lưu lượng
phát đa hướng nữa. Ví dụ, giả sử rằng một người dùng đang ngồi tại H4 trong Hình 19-11 nhận
được lưu lượng truy cập của nhóm 226.1.1.1 trong vài phút, nhưng sau đó quyết định chọn một
nhóm khác hoặc đóng cửa sổ ứng dụng. H4 đã lặng lẽ rời nhóm và R1 không biết về điều đó. R1
sẽ tiếp tục đẩy lưu lượng của 226.1.1.1 trên cổng fa0 / 1 của nó trong (tối đa) 3 phút (mặc định,)
ngay cả khi không ai muốn nhận, gây lãng phí băng thông. Sau khi R1 gửi bản tin truy vấn quan
hệ máy trạm của nó ba lần, theo mặc định cách nhau 60 giây và không có ai trả lời bằng Báo cáo
quan hệ máy trạm IGMPv1 cho 226.1.1.1, thì R1 kết luận rằng không máy chủ nào muốn nhận
lưu lượng truy cập cho 226.1.1.1 trên cổng fa0 / 1 của nó. Bộ đếm thời gian 3 phút này được gọi
là Khoảng thời gian xác nhận thành viên nhóm.
Do đó, sau khi H4 rời khỏi nhóm 226.1.1.1, thì R1 tiếp tục đẩy lưu lượng truy cập của 226.1.1.1
trong 3 phút cho mạng con. Sau đó, R1 biết rằng không có máy chủ nào muốn lưu lượng truy cập
cho 226.1.1.1 và ngừng chuyển tiếp các gói này trên cổng fa0 / 1 của nó.
➢ Router truy vấn IGMPv1:
Để tăng tính dự phòng, ta có thể triển khai nhiều router Multicast trên cùng một mạng. Tuy nhiên
nếu tất cả các router gửi gói tin truy vấn mỗi 60 giây thì sẽ rất lãng phí băng thông. Như vậy, một
hệ thống mạng nên có một router được gán vai trò gửi gói tin truy vấn và truyền lưu lượng
Multicast vào hoặc ra mạng con. Nếu một router bị sự cố, router thứ hai có thể đảm nhận trách
nhiệm này. IGMP phiên bản 1 thường dựa vào các thông tin định tuyến của Multicast để giải
quyết vấn đề bầu chọn router này.
IGMP Version 2
Một trong những lý do chính để phát triển IGMPv2 là cung cấp cơ chế rời khỏi nhóm tốt hơn để
rút ngắn thời gian rời khỏi nhóm. IGMPv2 có các tính năng mới sau:
- Bản tin rời bỏ nhóm (Leave Group messages): Cung cấp cho các máy trạm một phương
pháp để thông báo cho các router rằng họ muốn rời khỏi nhóm.
- Bản tin truy vấn nhóm xác định (Group-Specific Query messages): 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.
- Trường thời gian đáp ứng tối đa (Maximum Response Time field): Một trường mới trong
ban tin truy vấn cho phép router chỉ định thời gian đáp ứng tối đa. Trường này cho phép
hiệu chỉnh khoảng thời gian cho thông điệp báo cáo quan hệ máy trạm. Đặ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 mạng con 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.
- Bầu chọn router truy vấn (Querier election process): cung cấp cơ chế cho phép bầu chọn
router gửi ra các bản tin truy vấn khi có nhiều router cùng kết nối vào một mạng con.
Hình 19-12 cho thấy định dạng 8-octet của một bản tin IGMPv2. Lưu ý rằng chỉ có trường thứ
hai trong phần đầu (trường thời gian đáp ứng tối đa) khác với bản tin IGMPv1 được mô tả trong
Hình 19-7. Tuy nhiên, nhiều giá trị khác được định nghĩa cho trường Loại.

IGMPv2 có bốn trường, được định nghĩa như sau:


- Loại (Type): trường này có chiều dài 8 bit, chỉ ra một trong bốn loại bản tin được định
nghĩa bởi IGMPv2. Các giá trị có thể có là:
• Truy vấn quan hệ (Membership query) có giá trị là 0x11: được dùng bởi router để
tìm ra sự hiện diện của các máy trạm trên một mạng con. 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 IGMP phiên bản 1. Một thông
điệp truy vấn cho một nhóm cụ thể 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
IGMP phiên bản 2 từ một máy trạm. 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áo cáo quan hệ phiên bản 1 có giá trị 0x12: được dùng bởi IGMPv2 để tương
thích ngược với IGMPv1.
• Báo cáo quan hệ phiên bản 2 có giá trị 0x16: Được gửi bởi một thành viên nhóm
để thông báo cho router rằng có ít nhất một thành viên nhóm có mặt trên mạng
con.
• Thông điệp rời khỏi nhóm (Leave group) có giá trị là 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 bản tin báo cáo quan hệ. Bản tin
này báo cho router rằng máy trạm đang rời khỏi nhóm.
- Thời gian đáp ứng tối đa (Maximum Response Time): Trường có độ dài 8 bit 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).
- Kiểm tra lỗi (Checksum): Chứa giá trị 16 bit được tính toán bởi máy nguồn. Kiểm tra lỗi
IGMP tính toán trên toàn bộ phần tải của IP chứ không phải chỉ 8 byte đầu tiên mặc dù
IGMP phiên bản 2 có độ dài 8byte.
- Địa chỉ nhóm (Group Address): Được gán giá trị 0.0.0.0 trong bản tin truy vấn tổng quát
và gán địa chỉ nhóm nếu bản tin là cho từng nhóm cụ thể. Các bản tin báo cáo quan hệ
(membership report) hoặc bản tin rời khỏi nhóm (leave group) có thể mang địa chỉ của
nhóm trong trường này.
IGMPv2 hỗ trợ khả năng tương thích ngược với IGMPv1. Lưu ý rằng mã Loại IGMPv2 là 0x11
và 0x12 khớp với mã loại cho IGMPv1 cho các bản tin Truy vấn thành viên và bản tin Báo cáo
quan hệ. Điều này cho phép máy trạm và router chạy IGMPv2 nhận dạng thông báo IGMPv1 khi
có các máy trạm hoặc router chạy IGMPv1 khác trên mạng.
IGMPv2 giúp giảm các bản tin Báo cáo yêu cầu của IGMPv2 do máy trạm gửi để phản hồi lại
các bản tin Truy vấn IGMPv2 bằng cách cho phép quản trị viên mạng thay đổi Khoảng thời gian
phản hồi truy vấn. IGMPv1 không có trường 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 bản tin 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 máy trạm IGMPv2 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 IGMPv2 cũng giống trong IGMPv1. Có một sự
khác nhau nhỏ là các router gửi bản 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 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 IGMPv2, khi một máy trạm rời một nhóm, nó gửi ra một bản tin rời nhóm IGMPv2.
Khi một router nhận được bản tin rời khỏi nhóm IGMPv2, thay vì chờ một khoảng thời gian truy
vấn là 125 giây, router sẽ gửi ngay một bản tin truy vấn cho nhóm đó. Bản tin 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 đó.
Ưu điểm 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.
Nhớ lại phần “Cơ chế rời khỏi IGMPv1” rằng router IGMPv1 theo mặc định mất 3 phút để kết
luận rằng máy trạm cuối cùng trên mạng con đã rời khỏi một nhóm và không máy trạm nào trên
mạng con muốn nhận lưu lượng truy cập cho nhóm. Mặt khác, router chạy IGMPv1 tiếp tục
chuyển tiếp lưu lượng nhóm trên mạng con và gây lãng phí băng thông. Trong khi đó, router
IGMPv2 chỉ cần sau 3 giây kết luận rằng không có máy trạm nào trên mạng con muốn nhận lưu
lượng truy cập cho một nhóm và dừng truyền lưu lượng trên mạng con và không lãng phí băng
thông.
➢ Các bản tin rời nhóm (IGMPv2 Leave Group) và các bản tin truy vấn cho từng
nhóm cụ thể (Group-Specific Query Messages)
Bản tin Rời Nhóm IGMPv2 được sử dụng để làm thời gian rời khỏi nhóm ngắn lại, trong khi bản
tin Truy vấn cho từng nhóm cụ thể IGMPv2 ngăn router dừng chuyển tiếp các gói trong mạng
LAN một cách không chính xác khi máy trạm rời khỏi một nhóm. Do đó, cả hai chức năng này
đã được thêm vào IGMPv2 hoạt động cùng nhau.
Lứu ý: IGMPv2 RFC 2236 khuyến cáo rằng một máy trạm gửi ra một bản tin rời khỏi nhóm chỉ
nếu nó là máy trạm cuối cùng gửi bản tin báo cáo quan hệ. Tuy nhiên phần lớn hệ điều hành của
nhà cung cấp IGMPv2 đều cho phép một máy trạm gửi ra bản tin 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-13 cho thấy hoạt động của quá trình Rời khỏi nhóm IGMPv2 và Truy vấn cho từng
nhóm cụ thể IGMP. Trong Hình 19-13, các máy chủ H1 và H3 hiện là thành viên của nhóm
226.1.1.1; H1 muốn rời nhóm.
Ba bước sau đây, được trình bày trong Hình 19-13, mô tả chuỗi sự kiện cho cơ chế Rời khỏi
IGMPv2 khi H1 rời khỏi:
1. H1 gửi một bản tin rời bỏ nhóm IGMPv2. Địa chỉ đích của gói tin là 224.0.0.2. Đây là địa
chỉ của tất cả các router đang chạy Multicast. Bản tin này muốn báo rằng “Tôi không
muốn nhận lưu lượng multicast 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 Fa0/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 máy trạm 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 máy trạm 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 máy trạm còn lại trong nhóm là “Có còn ai muốn nhận lưu lượng Multicast cho
226.1.1.1 không?”.
3. H3 gửi một bản tin báo cáo quan hệ. H3 vẫn là một thành viên của nhóm 226.1.1.1. Máy
H3 nghe bản tin truy vấn theo nhóm và trả lời bằng một bản tin báo cáo IGMPv2 để
thông báo cho router là nó 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 lưu lượng do quá trình này. Trong ví dụ tiếp
theo, H3 là thành viên duy nhất còn lại của nhóm 226.1.1.1 trên mạng con. Giả sử rằng bây giờ
H3 cũng muốn rời khỏi nhóm, như trong Hình 19-14.
Ba bước sau, được trình bày trong Hình 19-14, mô tả chuỗi sự kiện cho cơ chế Rời khỏi IGMPv2
khi H3 rời nhóm:
1. H3 gửi ra một bản tin rời khỏi nhóm IGMPv2. Đị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 mạng con là “Tôi không muốn nhận lưu lượng 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 báo cáo nào là nhận được, vì vậy R1 sẽ ngừng đẩy lưu lượng . 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 lưu
lượng Multicast của nhóm 226.1.1.1 ra cổng fa0/0.
Bước 3 của ví dụ này cung cấp một kiến thức nền tảng để từ đó mô tả các khái niệm về Khoảng
thời gian truy vấn thành viên lần cuối cùng (Last Member Query Interval) và Số lượng truy vấn
thành viên cuối cùng (Last Member Query Count). Các giá trị này xác định thời gian router tin
rằng tất cả các máy trạm trên mạng LAN đã rời khỏi một nhóm cụ thể. 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 nhận được Báo cáo nào trong Khoảng thời gian truy vấn thành viên lần cuối
cùng, thì lặp lại Bước 1.
3. Lặp lại Bước 1 với số lần được xác định bởi giá trị của Last Member Query Count
Last Member Query Count 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 hoạt động 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 3 giây để xác định không còn thành viên nào trong nhóm.
Trong khi đối với IGMP phiên bản 1, thời gian này là ba phút.
➢ Các router truy vấn IGMPv2:
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.
Khả năng tương tác IGMPv1 và IGMPv2
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:
- Máy trạm dùng IGMPv2 và router chạy IGMPv1
- Máy trạm dùng IGMPv1 và router dùng IGMPv2
- Các Router chạy IGMPv1 và IGMPv2
➢ Máy trạm dùng IGMPv2 và router chạy IGMPv1:
Khi một máy trạm gửi ra một bản tin báo cáo IGMPv2 với loại bản tin là 0x16 (loại này không
được định nghĩa trong IGMPv1, router đang chạy IGMPv1 sẽ xem kiểu bản tin 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 bản tin báo cáo IGMPv1 khi router
IGMPv1 đang hoạt động. Nhưng bằng cách nào một máy trạm IGMPv2 phát hiện sự tồn tại của
một router chạy IGMPv1?
Máy trạm chạy 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 bản tin truy vấn định kỳ. Trong IGMPv1, trường này bằng 0,
trong IGMPv2, trường này là khác 0. Khi một máy trạm chạy IGMPv2 nhận được một truy vấn
từ router IGMPv1, máy trạm biết rằng có một router IGMPv1 đang tồn tại trên mạng con và
đánh dấu cổng này như là IGMPv1. Máy trạm chạy IGMPv2 sau đó sẽ không gửi thông điệp
IGMPv2.
Bất cứ khi nào một máy trạm IGMPv2 nhận một bản tin truy vấn IGMPv1, 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 bản tin truy vấn IGMPv1. Nếu bộ
định thời này hết, có nghĩa là không có router IGMPv1 nào tồn tại trên mạng, máy trạm sẽ bắt
đầu gửi thông điệp IGMPv2.
➢ Máy trạm dùng IGMPv1 và router dùng IGMPv2:
Các router chạy IGMPv2 có thể dễ dàng xác định sự tồn tại của các máy trạm chạy IGMP v1 dựa
vào việc máy trạm có gửi bản tin báo cáo IGMPv1 (Loại 0x12) hay bản tin báo cáo IGMPv2
(Loại 0x16). Giống như router chạy IGMPv1, các router IGMPv22 sẽ định kỳ gửi các gói tin truy
vấn. Một máy trạm 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 máy trạm 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 báo cáo
để tìm ra bất kỳ máy trạm nào chạy IGMPv1 tồn tại trên LAN.
Nếu một máy trạm IGMPv2 cũng tồn tại trên cùng một mạng con, nó sẽ gửi các bản tin báo cáo
IGMPv2. Tuy nhiên, các máy trạm IGMPv1 sẽ không hiểu các thông điệp báo cáo IGMPv2 và
bỏ qua các bản tin này. Các bản tin IGMPv2 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 IGMPv1. Vì vậy, thỉnh thoảng một router IGMPv2 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 IGMPv2 biết rằng có một máy trạm IGMPv1 tồn tại trên LAN, router sẽ bỏ
qua bản tin rời bỏ nhóm và cũng không gởi ra các bản tin 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 bản tin rời bỏ nhóm bằng bản tin truy vấn cho từng
nhóm, các máy trạm chay IGMPv1 sẽ không hiểu loại bản tin này và sẽ bỏ qua. Khi một router
IGMPv2 không nhận được một trả lời cho bản tin 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 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 máy trạm rời khỏi nhóm.
Router IGMPv2 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 IGMPv1 hết hạn. 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.
➢ Các Router chạy IGMPv1 và IGMPv2:
RFC 2236 định nghĩa rằng khi có các router chạy IGMP v1 và IGMPv2 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 IGMPv2 hoạt động như
IGMPv1.
Giá trị mặc định cho Giá trị mặc định cho
Bộ định thời Sử dụng
IGMPv1 IGMPv2
Thời gian truy Khoảng thời giữa các lần
vấn gửi gói tin truy vấn bởi Cố định là 60 giây 125 giây
router
Thời gian đáp Khoảng thời gian tối đa 10 giây. Có thể có giá
ứng truy vấn cho các máy trạm trả lời 10 giây trị từ 1 giây đến 25,5
lại cho các gói truy vấn giây
Thời gian quan hệ Là khoảng thời gian mà
nhóm nếu router không nhận
được thông điệp báo cáo,
router kết luận rằng 180 giây 260 giây
không còn thành viên
nào của nhóm trên mạng
con
Thời gian truy Là khoảng thời gian
vấn khác trong đó nếu một router
IGMP phiên bản 2 không
phải là router truy vấn
- 255 giây
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
Thời gian truy Khoảng thời gian trả lời
vấn thành viên tối đa được chỉ ra bởi
lần cuối router chạy IGMP phiên
bản 2 trong thông điệp
- 1 giây
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
Thời gian hết hạn Là khoảng thời gian
của router đang trong đó nếu một máy
chạy phiên bản 1 trạm chạy IGMP phiên
bản 2 không nhận được
gói tin truy vấn IGMP - 400 giây
phiên bản 1 query, máy
trạm sẽ kết luận rằng
không có router chạy
IGMPv1 và máy trạm bắt
đầu gửi thông điệp
IGMPv2.

IGMP Version 3
Tháng 10 năm 2002, RFC3376 định nghĩa đặc tả cho IGMPv3. IGMPv3 là một phiên bản cải
tiến của giao thức IGMP và là giao thức khá phức tạp. Để dùng các đặc điểm mới của IGMP,
router trạm cuối cùng phải được cập nhật, hệ điều hành của máy trạm phải thay đổi và ứng dụng
Multicast phải thiết kế và viết lại. Ở thời điểm hiện tại, chỉ có rất ít các ứng dụng của IGMPv3 là
có sẵn. Phần này chỉ tóm tắt các đặc điểm chủ yếu của IGMPv3.
Trong IGMPv1 và IGMPv2, khi một máy trạm tham gia vào một nhóm, router sẽ truyền các lưu
lượng cho nhóm đó vào phân đoạn mạng bất chấp địa chỉ nguồn của gói tin. Ví dụ, giả sử có
một buổi hội thảo đa phương tiện đang diễn ra. Một thành viên của nhóm quyết định phá hỏng
phiên hội thảo bằng cách gửi ra một số dữ liệu nhiễu bằng cách nói chuyện hay gửi nhạc cho các
thành viên của nhóm. Mặc dù các ứng dụng đa phương tiện cho phép một người dùng làm im
lặng các thành viên khác, ứng dụng không làm dừng các lưu lượng không mong muốn phân phối
đến máy trạm. Nếu một nhóm các hacker quyết định phát tán một mạng của một công ty bằng
các dữ liệu băng thông cao dùng cùng địa chỉ nhóm Multicast mà công ty đang dùng, nó có thể
tạo ra kiểu tấn công từ chối dịch vụ. Cả IGMPv1 và IGMPv2 đều không có cơ chế để ngăn ngừa
một kiểu tấn công như vậy.
IGMPv3 cho phép các máy trạm lọc các lưu lượng đi vào dựa trên địa chỉ IP nguồn thông qua
một tính năng gọi là Multicast theo từng nguồn (Source Specific Multicast –SSM). IGMPv3 cho
phép các máy trạm chỉ định các lưu lượng xuất phát từ một nguồn cụ thể hoặc nhận từ tất cả
ngoại trừ từ một nguồn nào đó. Hình 19-15 cho thấy hoạt động cơ bản của quy trình Báo cáo
quan hệ IGMPv3.
Trong hình 19.17, lưu lượng của nhóm 226.1.1.1 là xuất phát từ hai nguồn, R1 nhận lưu lượng
từ cả hai nguồn. H1 chuẩn bị thông điệp báo cáo quan hệ IGMP phiên bản 3 dùng địa chỉ đích là
224.0.0.22, được gán bởi IANA cho các thông điệp báo cáo quan hệ IGMP phiên bản 3. Kiểu
thông điệp là 0x22 với một trường bao gồm “địa chỉ nguồn 209.165.201.2”, có nghĩa là “tôi
muốn tham gia vào nhóm Multicast 226.1.1.1 nhưng chỉ nếu nhóm này đến từ nguồn
209.165.201.2”.
Làm thế nào một máy trạm có thể học địa chỉ nguồn của một nhóm? Cisco đã phát triển tính
năng URD và IGMP phiên bản 3 để dùng các tính năng của IGMP phiên bản 3 cho đến khi nào
các ứng dụng IGMP phiên bản 3 là sẵn sàng và hệ điều hành được cập nhật.
➢ So sánh IGMPv1, IGMPv2 và IGMPv3:

Đặc điểm IGMPv1 IGMPv2 IGMPv3

Giá trị octet thứ


nhất cho bản tin 0x11 0x11 0x11
truy vấn
Địa chỉ nhóm cho
bản tin truy vấn 0.0.0.0 0.0.0.0 0.0.0.0
tổng quan
Địa chỉ đích cho bản
tin truy vấn tổng 224.0.0.1 224.0.0.1 224.0.0.1
quan
Thời gian truy vấn
60 giây 125 giây 125 giây
mặc định
Giá trị octet thứ
nhất cho bản tin báo 0x12 0x16 0x22
cáo
Địa chỉ nhóm
Địa chỉ nhóm cho Địa chỉ nhóm Địa chỉ nhóm
Multicast và địa chỉ
bản tin báo cáo Multicast Multicast
nguồn
Địa chỉ đích cho bản Địa chỉ nhóm Địa chỉ nhóm
224.0.0.22
tin báo cáo multicast multicast
Có cơ chế làm giảm
bản tin báo cáo hay Có Có Không
không?
Thời gian trả lời tối
Không, cố định ở 10 Có, từ 0 đến 25,5
đa có thể được cấu Có, từ 0 đến 53 phút
giây giây
hình không?
Máy trạm có thể gửi
bản tin rời nhóm Không Có Có
không?
Địa chỉ đích cho bản
- 224.0.0.22 224.0.0.22
tin rời nhóm
Một router có thể
gửi một thông điệp
Không Có Có
cho từng nhóm cụ
thể không?
Một máy trạm có
thể gửi một bản tin
báo cáo cho từng
Không Không Có
nhóm và từng
nguồn cụ thể hay
không?
Router có thể gửi
truy vấn cho từng
nguồn và từng
Không Không Có
nhóm cụ thể hay
không?

Không, phụ thuộc


Luật bầu chọn Router có địa chỉ IP Router có địa chỉ IP
vào giao thức định
router truy vấn thấp nhất thấp nhất
tuyến
Tương thích với các
Có, với cả IGMPv1
phiên bản khác của Không Có, chỉ với IGMPv1
và IGMPv2
IGMP

IGMP Snooping
IGMP giúp cho router xác định làm thế nào để phân phối Multicast lưu lượng . Tuy nhiên IGMP
hoạt động ở lớp 3, và switch L2 sẽ không hiểu các thông điệp IGMP. Mặc định, switch sẽ phát
tán các Multicast lưu lượng trong một miền Broadcast, làm lãng phí băng thông.

Các máy H1, H2, H3, H4 và R1 là trong cùng miền Broadcast của Vlan 5. Ba bước dưới đây sẽ
mô tả chuỗi các sự kiện xảy ra khi H3 gửi một bản tin tham gia nhóm IGMP:
1. H3 gửi một bản tin tham gia nhóm IGMP cho nhóm 226.6.6.6.
2. R1 sẽ gửi lưu lượng của nhóm về SW1. Địa chỉ MAC đích trên khung tin là
0x0100.5e06.0606. SW1 không thể tìm thấy địa chỉ này trong bảng CAM (Content
Addressable Memory) của nó bởi vì nó không bao giờ được dùng bởi bất kỳ thiết bị nào
như là địa chỉ nguồn. Vì vậy, SW1 bắt đầu đẩy các lưu lượng vào các máy H1, H2 và
SW2 bởi vì lưu lượng của nhóm là cho Vlan 5. Tương tự SW2 bắt đầu đẩy lưu lượng
đến máy H3 và H4.
3. Tất cả các máy H1 và H4 nhận lưu lượng của nhóm, nhưng chỉ có H3 là yêu cầu. H3 bắt
đầu nhận lưu lượng. Tuy nhiên, H1, H2 và H4 không yêu cầu lưu lượng của nhóm và nó
bị tràn ngập bởi các lưu lượng này.
Trong hình 19-16, chỉ có bốn máy là trong miền Broadcast của Vlan 5. Điều gì sẽ xảy ra nếu
mạng này có hàng trăm người dùng? Mục đích của Multicast là giúp sử dụng băng thông hiệu
quả và phân phối lưu lượng đến đúng máy trạm. Có hai phương thức để giúp các switch lớp 2
xác định làm thế nào để phân phối lưu lượng Multicast đến máy trạm: CGMP và IGMP
snooping. Trong phần sẽ thảo luận về IGMP Snooping.
IGMP snooping có thể được dùng cho một môi trường có nhiều loại switch khác nhau để kiểm
soát việc phân phối lưu lượng ở lớp 2. IGMP snooping yêu cầu phần mềm switch nghe lén các
trao đổi IGMP giữa các máy trạm và các router. Switch sẽ kiểm tra các thông điệp IGMP và học
vị trí của các router Multicast và các thành viên nhóm.
Ba bước dưới đây sẽ mô tả quá trình tổng quát của IGMP snooping:
1. Để phát hiện có nhiều router kết nối vào cùng một mạng con hay không, các switch của
Cisco sẽ lắng nghe các giao thức sau để xác định trên những cổng nào của switch đang có
router kết nối:
- IGMP với GDA (Group Destination Address) là 01-00-5e-00-00-01
- Các bản tin OSPF với GDA là 01-00-5e-00-00-05 hoặc 01-00-5e-00-00-06.
- Giao thức PIM (Protocol Independent Multicast) phiên bản 1 và HSRP (Hot Standby
Routing Protocol) với bản tin hello là có GDA 01-00-5e-00-00-01.
- Bản tin hello PIMv2 có GDA là 01-00-5e-00-00-0d.
- Các thông điệp DVMRP (Distance Vector Multicast Routing Protocol) thử nghiệm với
GDA 01-00-5e-00-00-04.
2. Khi một switch nhận được một thông điệp báo cáo IGMP trên một cổng, CPU sẽ xem địa
chỉ nhóm GDA, tạo ra một hàng trong bảng CAM cho địa chỉ nhóm và thêm địa chỉ cổng
vào hàng. Cổng của switch có router cũng được thêm vào hàng mới này. Lưu lượng
nhóm bây giờ được chuyển tiếp trên cổng đó và cổng của router Nếu các máy trạm khác
gửi các báo cáo IGMP, switch sẽ chuyển lưu lượng ra các cổng.
3. Tương tự, khi một switch nhận được một thông điệp rời khỏi nhóm, CPU sẽ tìm địa chỉ
GDA, xóa các cổng ra khỏi bảng CAM và không đẩy lưu lượng ra cổng đó. Switch sẽ
kiểm tra đây có phải là cổng cuối cùng của GDA hay không. Nếu đây không phải là cổng
cuối cùng, có nghĩa là có ít nhất một máy trong Vlan vẫn muốn nghe lưu lượng , switch
sẽ bỏ thông điệp rời bỏ, nếu khác đi, nó sẽ gửi thông điệp rời bỏ đến router.
Tương tự, khi một switch nhận được một bản tin rời khỏi nhóm, CPU sẽ tìm địa chỉ GDA, xóa
các cổng ra khỏi bảng CAM và không đẩy lưu lượng ra cổng đó. Switch sẽ kiểm tra đây có phải
là cổng cuối cùng của GDA hay không. Nếu đây không phải là cổng cuối cùng, có nghĩa là có ít
nhất một máy trong Vlan vẫn muốn nghe lưu lượng , switch sẽ bỏ thông điệp rời bỏ, nếu khác đi,
nó sẽ gửi thông điệp rời bỏ đến router.
Như vậy, IGMP snooping giúp cho các switch gửi lưu lượng chỉ cho những nhóm cần nó và
tránh lãng phí băng thông. Để tăng hiệu quả hoạt động, IGMP snooping yêu cầu phần cứng phải
hỗ trợ chức năng lọc bằng phần cứng sao cho nó có thể phân biệt sự khác nhau giữa các báo cáo
IGMP và lưu lượng Multicast bình thường. CPU của switch cần phải thấy các bản tin báo cáo
IGMP (và các thông điệp định tuyến Multicast khác) bởi vì IGMP snooping có thể làm tốn CPU.
Tuy nhiên, quá trình đẩy khung tin đi không yêu cầu chu kỳ CPU mà chỉ cần phần cứng ASIC
của switch. Những switch cũ hơn, đặc biệt là những switch không có L3 sẽ không thể nhận dạng
một gói tin là IGMP. Các switch này bị ràng buộc về CPU bằng cách gửi tất cả các Multicast lưu
lượng . Phần lớn các switch hiện đại ngày nay hỗ trợ đủ tính năng L3 để nhận biết IGMP sao cho
IGMP snooping sẽ không ràng buộc CPU.
Ba bước sau, được trình bày trong Hình 19-20, mô tả chuỗi sự kiện khi H1 và H2 gửi bản tin
Tham gia IGMP:
1. H1 gửi thông điệp tham gia IGMP cho nhóm 226.6.6.6. Ở mức 2, H1 dùng địa chỉ
Multicast MAC 0x0100.5e06.0606 (đây là địa chỉ MAC cho nhóm 226.6.6.6) như là địa
chỉ đích và dùng địa chỉ MAC của nó 0x0006.7c11.1101 như là địa chỉ nguồn. SW1 sẽ
nhận gói tin của nó trên cổng fa0/1 và lưu ý đây là gói tin IGMP, đẩy gói tin này đến
CPU của switch. CPU sẽ dùng thông tin này để thiết lập một hàng trong bảng định tuyến
Multicast, bao gồm cổng số 0 tượng trưng cho CPU, 1 cho máy H1 và 8 cho R1. Lưu ý
rằng bảng CAM liệt kê ra hai hàng cho cùng một địa chỉ đích 0x0100.5e06.0606. Một
hàng cho cổng 0 và một hàng khác cho những khung tin không phải là IGMP cho cổng 1
và 8. CPU của switch sẽ ra lệnh cho switch không chuyển các khung tin ra cổng 0, tượng
trưng cho CPU.
2. H2 gửi một thông điệp tham gia IGMP cho nhóm 226.6.6.6. Ở lớp 2, H2 dùng địa chỉ
Multicast MAC là 0x0100.5e06.0606 như là địa chỉ đích và dùng địa chỉ MAC
0x0006.7c11.1102 như là địa chỉ nguồn. SW1 sẽ nhận gói tin trên cổng F0/2 và switch sẽ
kiểm tra gói tin. Tiến trình phân tích gói tin được lập lại từ bước 1 và bảng CAM sẽ được
cập nhật.
3. Router R1 đẩy gói tin cho nhóm. R1 sẽ nhận lưu lượng Multicast cho nhóm 226.6.6.6 và
bắt đầu chuyển lưu lượng về Sw1. Sw1 bắt đầu nhận các Multicast lưu lượng trên cổng
f0/8. Cơ chế chuyển mạch sẽ kiểm tra gói tin và xác định đây không phải gói tin IGMP,
switch sẽ tìm kiếm trong bảng CAM và xác định rằng nó nên chuyển lưu lượng ra cổng
F0/1 và F0/2.
Nếu so sánh với CGMP, IGMP thì kém hiệu quả hơn trong việc duy trì thông tin nhóm. Khi
router R1 định kỳ gửi thông điệp truy vấn đến địa chỉ tất cả các máy trạm 224.0.0.1 (GDA
0x0100.5e00.0001), SW1 sẽ chấp nhận các truy vấn và truyền thông qua các cổng của Vlan 5.
Trong CGMP, nhờ vào giao tiếp từ router đến switch, switch sẽ biết chính xác những cổng nào
sẽ có các máy trạm Multicast gắn vào và vì vậy, sẽ chỉ truyền các gói tin truy vấn ra chỉ những
cổng này.
Ngoài ra, trong IGMP snooping, khi các máy trạm gửi các thông điệp báo cáo IGMP, switch phải
bắt các thông điệp này và duy trì thông tin GDA trong bảng CAM. Kết quả là, các máy trạm
không nhận các thông điệp báo cáo IGMP khác, làm gián đoạn cơ chế giảm thông điệp báo cáo
và làm cho các máy gửi thông điệp báo cáo IGMP. Tuy nhiên, switch chỉ gửi một thông điệp báo
cáo IGMP cho từng nhóm đến Router.
Trong CGMP, switch không cần phải nghe các thông điệp báo cáo IGMP, bởi vì việc duy trì
thông tin nhóm trên switch không phụ thuộc vào việc kiểm tra các gói IGMP từ máy trạm thay
vào đó switch có thể dùng thông điệp CGMP từ router.

Hình 19-21 cho thấy quá trình Rời khỏi cho IGMP snooping.
Ba bước sau, được trình bày trong Hình 19-21, mô tả chuỗi sự kiện khi H1 và H2 gửi bản tin rời
nhóm IGMP:
1. H1 gửi một bản tin rời khỏi nhóm IGMP cho nhóm 226.6.6.6 nhưng SW1 không truyền
lưu lượng đến R1 trong trường hợp này. Ở lớp 2, H1 dùng địa chỉ MAC cho tất cả các
Multicast router 0x0100.5e00.0002 như là địa chỉ đích và dùng địa chỉ BIA
0x0006.7c11.1101 như địa chỉ nguồn. SW1 sẽ bắt các bản tin rời bỏ nhóm IGMP trên
cổng F0/1 và cơ chế chuyển mạch của nó sẽ giám sát gói tin. Switch sẽ gửi bản tin truy
vấn ra cổng F0/1 để xác định có còn thành viên nào không. Đặc tính này được thiết kế để
bảo vệ những máy trạm khác là thành viên của nhóm này trên cổng. Nếu một bản tin báo
cáo IGMP là nhận được trên cổng F0/1, switch sẽ bỏ bản tin rời nhóm nhận được từ H1.
Bởi vì trong ví dụ này, chỉ có một máy trạm kết nối vào cổng F0/1, switch không nhận
được bất kỳ bản tin báo cáo IGMP nào và sẽ xóa cổng F0/1 ra khỏi bảng CAM. H2 kết
nối với cổng F0/2 vẫn là một thành viên của nhóm và cổng của nó nằm trong bảng CAM.
Vì vậy SW1 không có truyền bản tin rời nhóm IGMP đến router.
2. Router R1 tiếp tục truyền lưu lượng cho nhóm 226.6.6.6 đến SW1 bởi vì R1 thậm chí
không biết rằng H1 đã rời khỏi nhóm. Dựa trên thông tin cập nhật từ bảng CAM, SW1
bây giờ bắt đầu truyền lưu lượng chỉ trên cổng F0/2.
3. H2 gửi ra một bản tin rời nhóm IGMP cho nhóm 226.6.6.6 và SW1 không chuyển cho R1
trong trường hợp này. Ở lớp 2, H2 dùng địa chỉ MAC Multicast cho tất cả các router
0x0100.5e00.0002 như là địa chỉ đích và địa chỉ BIA 0x0006.7c11.1102 như là địa chỉ
nguồn. SW1 lúc này sẽ bắt các bản tin rời bỏ nhóm IGMP trên cổng F0/2 và cơ chế
chuyển mạch sẽ kiểm tra gói tin. Switch sau đó gửi một bản tin truy vấn IGMP trên cổng
F0/2 xem có còn thành viên nào của nhóm hay không. Bởi vì trong ví dụ này, chỉ có một
máy trạm kết nối vào cổng F0/2, switch sẽ không nhận được bất kỳ bản tin báo cáo IGMP
nào và sẽ xóa cổng F0/2 ra khỏi bảng CAM. Sau khi SW1 xóa cổng, nó nhận ra rằng đây
là cổng không phải của router cuối cùng nằm trong bảng CAM cho địa chỉ
0x0100.5e06.0606. Vì vậy SW1 xóa hẳn nhóm này ra khỏi bảng CAM và sẽ truyền bản
tin rời bỏ nhóm IGMP đến R1. R1 gửi ra bản tin truy vấn cho nhóm và khi không còn
máy trạm nào trả lời, router sẽ không truyền lưu lượng của nhóm 226.6.6.6 về SW1,
Vlan 5.
IGMP snooping trở nên phức tạp khi có nhiều Multicast router là kết nối với nhau và các switch
kết nối với nhau thông qua kết nối trung kế. Ngoài ra CGMP và IGMP kiểm soát việc phân phối
các lưu lượng Multicast chỉ trên những cổng có máy trạm. Các giao thức này không có cơ chế
nào để kiểm soát những cổng có router kết nối vào.

You might also like