Hình 19.20: Tiến trình gửi thông điệp tham gia nhóm trong CGMP
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 thông điệp tham gia nhóm IGMP:
Trong hình 19.20, 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 3 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. Khi một switch lớp 2 không thể thực hiện tác vụ IGMP snooping, một router Multicast láng giềng sẽ trợ giúp. Cisco phát triển ra giao thức quan hệ nhóm Cisco (Cisco Group Membership Protocol - CGMP) nhằm mục đích này.
CGMP là một giao thức lớp 2 được cấu hình trên cả router và switch của Cisco và cho phép router giao tiếp với các thông tin lớp 2 nó học được từ IGMP đến switch. Một router Multicast biết địa chỉ MAC của các máy Multicast và các nhóm đang lắng nghe dựa trên thông tin giao tiếp với các máy trạm thông qua IGMP. Mục tiêu của CGMP là cho phép router truyền thông tin này đến các switch sao cho switch có thể thay đổi động các thành phần trong bảng CAM. Chỉ có các router tạo ra các thông điệp CGMP trong khi switch chỉ lắng nghe các thông điệp CGMP. Một router hoặc một switch đa lớp được cấu hình cho định tuyến Multicast có thể được cấu hình cho CGMP. Khi các máy trạm gửi các thông điệp báo cáo quan hệ để tham gia và rời khỏi một nhóm, Router CGMP sẽ trung chuyển các thông điệp này đến các switch quan tâm.
Các thông điệp CGMP dùng các địa chỉ Multicast phổ biến là 0100.0cdd.dddd. Theo định nghĩa, địa chỉ nhóm Multicast này sẽ được phát tán như là một trường hợp đặc biệt sao cho các thông điệp CGMP có thể được truyền trên các switch không chạy CGMP. Các thông điệp CGMP bao gồm địa chỉ MAC BIA của máy trạm cùng với địa chỉ MAC của nhóm Multicast nó muốn tham gia hay rời bỏ.
Khi một switch lớp 2 nhận thông điệp CGMP này, tác vụ đơn giản của nó là thêm vào địa chỉ nhóm Multicast và các máy trạm của nhóm đó vào bảng CAM. Router sẽ trở thành thiết bị “trợ thính” cho một switch trong việc lắng nghe các thông điệp CGMP.
Việc sử dụng địa chỉ MAC đặc biệt này làm cho switch phát tán các thông điệp thông qua các cổng sao cho tất cả các switch trong hệ thống mạng nhận được thông điệp CGMP. Cặp địa chỉ MAC trong thông điệp CGMP là một thông tin quan trọng: Địa chỉ đích của nhóm (Group Destination Address - GDA), Địa chỉ nguồn Unicast (Unicast Source Address - USA).
Dưới đây là 5 bước đây mô tả hoạt động tổng quát của CGMP.
Như vậy CGMP giúp các switch gửi lưu lượng đến những máy trạm muốn nhận nó, giúp tránh lãng phí băng thông.
Hình 19.21: Tiến trình sử dụng CGMP của router và switch
Hình 19.21 mô tả một ví dụ đầy đủ làm thế nào router và switch dùng CGMP khi có một máy trạm tham gia và rời khỏi nhóm. Hình 19.21 bắt đầu bằng cách mô tả những phản ứng của router khi có một thông điệp báo cáo IGMP. Router sẽ gửi một thông điệp tham gia nhóm CGMP đến các switch trên LAN. Hai bước theo sau mô tả chuỗi các sự kiện khi H3 gửi ra một thông điệp tham gia IGMP. SW1 và SW2 tìm kiếm các hàng trong bảng CAM và tìm thấy máy trạm với địa chỉ USA là 0x0006.7c11.1103 nằm trên các cổng f0/20 và f0/3. Sau đó SW1 và SW2 sẽ ánh xạ địa chỉ GDA 0x0100.5e06.0606 đến các cổng f0/20 và f0/3 tương ứng.
Hình 19.22: Quá trình tham gia nhóm trong CGMP
Khi router truyền các lưu lượng Multicast với địa chỉ nhóm GDA 0x0100.5e06.0606 đến SW1, SW1 tìm kiếm trong bảng CAM và thấy rằng lưu lượng này phải được đẩy ra cổng F0/20. Vì vậy, chỉ có SW2 nhận được lưu lượng của nhóm. Tương tự, SW2 tìm kiếm bảng CAM và đẩy lưu lượng của nhóm ra cổng F0/3 và chỉ máy H3 nhận lưu lượng .
CGMP tối ưu việc chuyển lưu lượng . Mặc dù không hiển thị trên hình 19.22, giả sử rằng H1 gửi một thông điệp tham gia nhóm IGMP vào nhóm 226.6.6.6. R1 sẽ gửi một thông điệp tham gia CGMP và SW1 sẽ cập nhật địa chỉ GDA 0x0100.5e06.0606 đến cổng F0/1. Khi một router gửi một thông điệp truy vấn IGMP, switch sẽ trung chuyển các lưu lượng này đến các thành viên đã tham gia bất kỳ nhóm nào, ví dụ như H1 và H3. Khi các máy gửi các thông điệp báo cáo IGMP, switch sẽ chuyển các thông điệp này đến các thành viên của nhóm và của router.
Hình 19.23: Quá trình rời khỏi nhóm trong CGMP
Khi máy H3 rời khỏi nhóm, các sự kiện sau sẽ diễn ra:
H1 vẫn là một thành viên của nhóm 266.6.6.6, vì vậy R1 vẫn tiếp tục đẩy lưu lượng với GDA 0x0100.5e06.0606 đến SW1. SW1 tìm kiếm bảng CAM và thấy rằng địa chỉ này chỉ nên đẩy ra cổng F0/1. Bây giờ giả sử rằng H1 gửi ra một thông điệp rời khỏi nhóm IGMP 226.6.6.6, R1 sẽ gửi một thông điệp truy vấn cho nhóm 226.6.6.6. Bởi vì không còn máy trạm nào là thành viên của nhóm này, R1 không nhận bất kỳ một thông điệp báo cáo IGMP cho nhóm. R1 sẽ tạo ra và gửi thông điệp rời bỏ nhóm CGMP trong đó trường GDA gán bằng giá trị MAC của nhóm và trường USA gán bằng 0. Thông điệp này báo cho switch rằng “không còn máy trạm nào quan tâm đến lưu lượng Multicast cho địa chỉ MAC 0x0100.5e06.0606, vì vậy hãy xóa hết tất cả các hàng trong bảng CAM liên quan đến nhóm này”.
Ở chế độ mặc định, CGMP là tắt trên tất cả các cổng của Multicast router. Để cho phép, dùng lệnh
Switch(config-if)# ip cgmp
Chỉ có router Multicast phải được cấu hình cho CGMP. Tất cả các hệ điều hành của switch lớp 2 đều có CGMP cho phép ở chế độ mặc định, vì vậy switch sẽ tự động xử lý CGMP từ router. Mặc dù cả router và switch đều cấu hình để chạy CGMP, thật sự chỉ có router là tạo ra các gói tin CGMP. Có hai loại gói tin CGMP. Loại thứ nhất, gói tin tham gia được gửi ra bởi router, ra lệnh cho switch thêm vào các member mới. Loại thứ hai, gói tin rời nhóm được dùng để báo cho switch xóa bớt thành viên hoặc xóa hẳn một nhóm.
Kiểu |
Địa chỉ đích của nhóm |
Địa chỉ nguồn Unicast |
Ý nghĩa |
Join (Tham gia) |
MAC của nhóm |
MAC của máy trạm |
Thêm cổng có địa chỉ USA vào nhóm |
Leave (Rời nhóm) |
MAC của nhóm |
MAC của máy trạm |
Xóa cổng có địa chỉ USA ra khỏi nhóm |
Join (Tham gia) |
0 |
MAC của Router |
Cập nhật cổng nào nối đến CGMP router |
Leave (Rời nhóm) |
0 |
MAC của Router |
Giải phóng cổng CGMP của router |
Leave (Rời nhóm) |
MAC của nhóm |
0 |
Xóa nhóm khỏI bảng CAM |
Leave (Rời nhóm) |
0 |
0 |
Xóa tất cả các nhóm khỏi bảng CAM |
Thông điệp cuối cùng trong bảng 19.4, xóa tất cả các nhóm, được dùng bởi router cho mục đích bảo trì. Ví dụ, khi lệnh clear ip cgmp được nhập vào router để xóa tất các các hàng CGMP trên switch, router sẽ gửi ra thông điệp CGMP với giá trị GDA được gán về bằng 0 và USA gán về bằng 0. Khi các switch nhận được thông điệp này, nó sẽ xóa tất cả các nhóm ra khỏi bảng CAM.
Giao thức quản lý nhóm cổng của Router (Router-port Group Management Protocol – RGMP) là một giao thức lớp 2 cho phép router giao tiếp với switch để chỉ ra những lưu lượng nào mà router muốn nhận và không muốn nhận từ switch. Bằng cách giới hạn địa chỉ địa chỉ đích Multicast mà một switch chuyển đến một router, một router có thể giảm phí tổn xử lý. Thật ra, RGMP được thiết kế để giúp router giảm phí tổn khi nó được kết nối vào các mạng LAN tốc độ cao. Mặc dù RGMP là một giao thức của Cisco, nó không thể cùng hoạt động với CGMP. Khi RGMP được bật trên một router hay một switch, CGMP sẽ bị tắt. Nếu CGMP là bật, RGMP sẽ bị tắt. Mặc dù là của Cisco, RGMP được mô tả ở RFC3488.
RGMP làm việc tốt khi kết hợp với IGMP snooping. IGMP snooping thường học tất cả các cổng có router thông qua việc lắng nghe IGMP và các thông điệp khác. Trong một vài trường hợp, một vài router có thể không muốn nhận tất cả các Multicast lưu lượng vì vậy RGMP sẽ cung cấp một cách thức để giảm những lưu lượng không mong muốn.
Điểm mấu chốt của nhu cầu cho sự tồn tại của một giao thức như RGMP là khi dùng IGMP snooping, người ta nhận ra một khía cạnh quan trọng. IGMP snooping giúp các switch kiểm soát việc phân phối các lưu lượng Multicast trên những cổng có máy trạm gắn vào nhưng nó không giúp switch kiểm soát việc phân phối lưu lượng Multicast trên những cổng có router gắn vào.
Hình 19.24: Mạng hoạt động dựa vào RGMP
Xem một sơ đồ mạng đơn giản như hình 19.22. SW2 đã nhận biết các router R3 và R4 thông qua giao thức IGMP snooping, vì vậy nó chuyển tất cả các Multicast của tất cả các nhóm về R3 và R4. R3 thật sự chỉ nhận lưu lượng của nhóm A và R4 cần phải nhận lưu lượng chỉ của nhóm B. Tuy nhiên IGMP snooping làm cho switch sẽ chuyển tất cả các lưu lượng Multicast về từng router. Để khắc phục vấn đề này, router có thể dùng RGMP để báo cho switch chỉ truyền những gói Multicast đặc biệt cho từng nhóm.
Hình 19.25: Sơ đồ mạng kết hợp giám sát IGMP và RGMP
Hình 19.23 cũng mô tả một sơ đồ mạng giống như trước nhưng với IGMP snooping kết hợp với RGMP. Trong trường hợp này, các thông điệp tham gia RGMP được bật lên trên cả router và switch. Có ba bước chính, trong đó bước đầu tiên hiển thị chức năng của RGMP với thông điệp tham gia RGMP. Thông điệp tham gia cho phép router nhận dạng được nhóm mà router muốn nhận lưu lượng.
RGMP bao gồm 4 loại thông điệp khác nhau. Tất cả các thông điệp RGMP được tạo ra bởi router và được gửi tới địa chỉ Multicast 224.0.0.25. Danh sách dưới đây mô tả các kiểu thông điệp này: