Professional Documents
Culture Documents
DỊCH TÀI LIỆU IGMP
DỊCH TÀI LIỆU IGMP
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:
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.