Tác giả:
+ Đặng Quang Minh
CGMP
IGMP giúp cho router xác định làm thế nào để phân phối multicast traffic. Tuy nhiên IGMP hoạt động ở lớp 3, và switch sẽ không hiểu các thông điệp IGMP. Mặc định, switch sẽ phát tán các multicast traffic trong một broadcast domain, làm lãng phí băng thông.
Các máy H1, H2, H3, H4 và R1 là trong cùng broadcast domain của VLẠN. 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 Join:
1. H3 gửi một thông điệp tham gia nhóm IGMP Join cho nhóm 226.6.6.6.
2. R1 sẽ gửi traffic của nhóm về SW1. Địa chỉ MAC đích trên frame là 0x0100.5e06.0606. SW1 không thể tìm thấy địa chỉ này trong bảng CAM 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 traffic vào các máy H1, H2 và SW2 bởi vì traffic của nhóm là cho Vlan5. Tương tự SW2 bắt đầu traffic đến máy H3 và H4.
3. Tất cả các máy H1 và H4 nhận traffic của nhóm, nhưng chỉ có H3 là yêu cầu. H3 bắt đầu nhận traffic. Tuy nhiên, H1, H2 và H4 không yêu cầu traffic của nhóm và nó bị tràn ngập bởi các traffic này.
Trong hình trên, chỉ có bốn máy là trong broadcast domain của VLẠN. Đ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 traffic đến đúng host. Có hai phương thức để giúp các L3 switch xác định làm thế nào để phân phối trafic multicast đến host: CGMP và IGMP snooping. Khi một L2 switch 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 một giao thức là 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ả Cisco router và switch 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 host 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 multilayer switch được cấu hình cho định tuyến multicast có thể được cấu hình cho CGMP. Khi các host gửi các thông điệp membership report để 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 nổi tiếng 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 non-CGMP switch. Các thông điệp CGMP bao gồm địa chỉ MAC của host cùng với địa chỉ MAC của nhóm multicast nó muốn tham gia hay rời bỏ. Khi một layer 2 switch 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 host 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: Group Destination Address (GDA), Unicast Source Address (USA).
Năm bước dưới đây mô tả hoạt động tổng quát của CGMP.
1. Khi một router CGMP kết nối vào một switch, router gửi ra thông điệp join CGMP với giá trị GDA gán bằng không và giá trị USA gán bằng giá trị MAC của chính nó. Switch CGMP bây giờ biết rằng có một router multicast đang gắn vào cổng trên đó switch nhận được thông điệp CGMP. Router lập lại thông điệp mỗi 60 giây. Một router có thể báo cho switch là nó không còn tham gia nhóm CGMP bằng thông điệp CGMP Leave với giá trị GDA gán bằng không và USA gán bằng giá trị MAC của chính nó.
2. Khi một host tham gia vào một nhóm, nó gửi thông điệp tham gia vào nhóm IGMP Join. Thông thường một multicast router kiểm tra chỉ thông tin lớp
3 trong thông điệp IGMP và router không cần thiết xử lý thông tin lớp 2. Tuy nhiên khi CGMP được cấu hình trên router, router sẽ kiểm tra địa chỉ nguồn và đích MAC của thông điệp Join. Địa chỉ nguồn là địa chỉ unicast MAC của máy đang gửi thông điệp tham gia join. Router sau đó sẽ tạo ra các thông điệp tham gia CGMP join vao gồm địa chỉ MAC kết hợp với địa chỉ multicast IP (gán trong trường GDA của thông điệp tham gia CGMP join) và địa chỉ unicast MAC của host được gán vào trường USA của thông điệp CGMP. Router sau đó sẽ gửi thông điệp tham gia CGMP dùng địa chỉ multicast MAC address của CGMP là 0x0100.0cdd.dddd như là địa chỉ đích.
3. Khi một switch nhận được thông điệp tham gia CGMP, switch tìm kiếm trong bảng CAM vị trí của cổng kết hợp với địa chỉ MAC chứa trong trường USA. Switch sẽ tạo ra một hàng mới trong bảng CAM (hoặc dùng một hàng có sẵn nếu nó đã được tạo ra trước đó) cho địa chỉ MAC multicast được liệt kê cho trường GDA của thông điệp CGMP Join, thêm cổng kết hợp với địa chỉ MAC liệt kê trong trường USA và bắt đầu đẩy traffic ra cổng đó.
4. Khi một host rời khỏi một nhóm, nó gửi thông điệp rời khỏi nhóm IGMP. Router sẽ học địa chỉ unicast MAC của máy và địa chỉ nhóm multicast mà nó vừa rời khỏi. Bởi vì thông điệp Leave được gửi đến địa chỉ ‘tất cả các multicast router’ 0x0100.5e00.0002 và không gửi tới địa chỉ nhóm multicast, router sẽ tính toán địa chỉ multicast MAC (GDA) từ địa chỉ nhóm multicast mà host vừa rời bỏ. Router sau đó sẽ tạo ra thông điệp rời bỏ nhóm CGMP Leave. Thông điệp này chép toàn bộ địa chỉ multicast MAC mà nó vừa tính toán trong trường GDA và địa chỉ unicast MAC trong trường USA của thông điệp CGMP Leave và sau đó gửi nó về địa chỉ CGMP multicast MAC. Khi switch nhận được thông điệp rời bỏ nhóm, nó tìm kiếm vị trí cổng kết hợp với địa chỉ MAC liệt kê trong trường USA. Switch sẽ bỏ cổng này ra khỏi sự kết hợp với địa chỉ multicast MAC trong bảng CAM. Địa chỉ multicast MAC này được liệt kê trong trường GDA của thông điệp CGMP Leave. Switch sẽ ngừng đẩy traffic ra khỏi cổng đó.
Như vậy CGMP giúp các switch gửi traffic đến những host muốn nhận nó, giúp tránh lãng phí băng thông.
Hình trên mô tả một ví dụ đầy đủ làm thế nào routers và switch dùng CGMP khi có một host tham gia và rời khỏi nhóm. Hình trên 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 report. Router sẽ gửi một thông điệp CGMP join đế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 Join. SW1 và SW2 tìm kiếm các hàng trong bảng CAM và tìm thấy host với địa chỉ USA là 0x0006.7c11.1103 nằmg 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.
Khi router truyền các traffic 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 traffic này phải được đẩy ra cổng F0/20. Vì vậy, chỉ có SW2 nhận được traffic của nhóm. Tương tự, SW2 tìm kiếm bảng CAM và đẩy traffic của nhóm ra cổng F0/3 và chỉ máy H3 nhận traffic.
CGMP tối ưu việc chuyển traffic. Mặc dù không hiển thị trên hình vẽ, giả sử rằng H1 gửi một thông điệp tham gia nhóm IGMP Join vào nhóm 226.6.6.6. R1 sẽ gửi một thông điệp CGMP Join 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 traffic 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 reports, 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.
+ Đặng Quang Minh
CGMP
IGMP giúp cho router xác định làm thế nào để phân phối multicast traffic. Tuy nhiên IGMP hoạt động ở lớp 3, và switch sẽ không hiểu các thông điệp IGMP. Mặc định, switch sẽ phát tán các multicast traffic trong một broadcast domain, làm lãng phí băng thông.
Các máy H1, H2, H3, H4 và R1 là trong cùng broadcast domain của VLẠN. 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 Join:
1. H3 gửi một thông điệp tham gia nhóm IGMP Join cho nhóm 226.6.6.6.
2. R1 sẽ gửi traffic của nhóm về SW1. Địa chỉ MAC đích trên frame là 0x0100.5e06.0606. SW1 không thể tìm thấy địa chỉ này trong bảng CAM 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 traffic vào các máy H1, H2 và SW2 bởi vì traffic của nhóm là cho Vlan5. Tương tự SW2 bắt đầu traffic đến máy H3 và H4.
3. Tất cả các máy H1 và H4 nhận traffic của nhóm, nhưng chỉ có H3 là yêu cầu. H3 bắt đầu nhận traffic. Tuy nhiên, H1, H2 và H4 không yêu cầu traffic của nhóm và nó bị tràn ngập bởi các traffic này.
Trong hình trên, chỉ có bốn máy là trong broadcast domain của VLẠN. Đ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 traffic đến đúng host. Có hai phương thức để giúp các L3 switch xác định làm thế nào để phân phối trafic multicast đến host: CGMP và IGMP snooping. Khi một L2 switch 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 một giao thức là 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ả Cisco router và switch 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 host 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 multilayer switch được cấu hình cho định tuyến multicast có thể được cấu hình cho CGMP. Khi các host gửi các thông điệp membership report để 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 nổi tiếng 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 non-CGMP switch. Các thông điệp CGMP bao gồm địa chỉ MAC của host cùng với địa chỉ MAC của nhóm multicast nó muốn tham gia hay rời bỏ. Khi một layer 2 switch 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 host 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: Group Destination Address (GDA), Unicast Source Address (USA).
Năm bước dưới đây mô tả hoạt động tổng quát của CGMP.
1. Khi một router CGMP kết nối vào một switch, router gửi ra thông điệp join CGMP với giá trị GDA gán bằng không và giá trị USA gán bằng giá trị MAC của chính nó. Switch CGMP bây giờ biết rằng có một router multicast đang gắn vào cổng trên đó switch nhận được thông điệp CGMP. Router lập lại thông điệp mỗi 60 giây. Một router có thể báo cho switch là nó không còn tham gia nhóm CGMP bằng thông điệp CGMP Leave với giá trị GDA gán bằng không và USA gán bằng giá trị MAC của chính nó.
2. Khi một host tham gia vào một nhóm, nó gửi thông điệp tham gia vào nhóm IGMP Join. Thông thường một multicast router kiểm tra chỉ thông tin lớp
3 trong thông điệp IGMP và router không cần thiết xử lý thông tin lớp 2. Tuy nhiên khi CGMP được cấu hình trên router, router sẽ kiểm tra địa chỉ nguồn và đích MAC của thông điệp Join. Địa chỉ nguồn là địa chỉ unicast MAC của máy đang gửi thông điệp tham gia join. Router sau đó sẽ tạo ra các thông điệp tham gia CGMP join vao gồm địa chỉ MAC kết hợp với địa chỉ multicast IP (gán trong trường GDA của thông điệp tham gia CGMP join) và địa chỉ unicast MAC của host được gán vào trường USA của thông điệp CGMP. Router sau đó sẽ gửi thông điệp tham gia CGMP dùng địa chỉ multicast MAC address của CGMP là 0x0100.0cdd.dddd như là địa chỉ đích.
3. Khi một switch nhận được thông điệp tham gia CGMP, switch tìm kiếm trong bảng CAM vị trí của cổng kết hợp với địa chỉ MAC chứa trong trường USA. Switch sẽ tạo ra một hàng mới trong bảng CAM (hoặc dùng một hàng có sẵn nếu nó đã được tạo ra trước đó) cho địa chỉ MAC multicast được liệt kê cho trường GDA của thông điệp CGMP Join, thêm cổng kết hợp với địa chỉ MAC liệt kê trong trường USA và bắt đầu đẩy traffic ra cổng đó.
4. Khi một host rời khỏi một nhóm, nó gửi thông điệp rời khỏi nhóm IGMP. Router sẽ học địa chỉ unicast MAC của máy và địa chỉ nhóm multicast mà nó vừa rời khỏi. Bởi vì thông điệp Leave được gửi đến địa chỉ ‘tất cả các multicast router’ 0x0100.5e00.0002 và không gửi tới địa chỉ nhóm multicast, router sẽ tính toán địa chỉ multicast MAC (GDA) từ địa chỉ nhóm multicast mà host vừa rời bỏ. Router sau đó sẽ tạo ra thông điệp rời bỏ nhóm CGMP Leave. Thông điệp này chép toàn bộ địa chỉ multicast MAC mà nó vừa tính toán trong trường GDA và địa chỉ unicast MAC trong trường USA của thông điệp CGMP Leave và sau đó gửi nó về địa chỉ CGMP multicast MAC. Khi switch nhận được thông điệp rời bỏ nhóm, nó tìm kiếm vị trí cổng kết hợp với địa chỉ MAC liệt kê trong trường USA. Switch sẽ bỏ cổng này ra khỏi sự kết hợp với địa chỉ multicast MAC trong bảng CAM. Địa chỉ multicast MAC này được liệt kê trong trường GDA của thông điệp CGMP Leave. Switch sẽ ngừng đẩy traffic ra khỏi cổng đó.
Như vậy CGMP giúp các switch gửi traffic đến những host muốn nhận nó, giúp tránh lãng phí băng thông.
Hình trên mô tả một ví dụ đầy đủ làm thế nào routers và switch dùng CGMP khi có một host tham gia và rời khỏi nhóm. Hình trên 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 report. Router sẽ gửi một thông điệp CGMP join đế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 Join. SW1 và SW2 tìm kiếm các hàng trong bảng CAM và tìm thấy host với địa chỉ USA là 0x0006.7c11.1103 nằmg 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.
Khi router truyền các traffic 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 traffic này phải được đẩy ra cổng F0/20. Vì vậy, chỉ có SW2 nhận được traffic của nhóm. Tương tự, SW2 tìm kiếm bảng CAM và đẩy traffic của nhóm ra cổng F0/3 và chỉ máy H3 nhận traffic.
CGMP tối ưu việc chuyển traffic. Mặc dù không hiển thị trên hình vẽ, giả sử rằng H1 gửi một thông điệp tham gia nhóm IGMP Join vào nhóm 226.6.6.6. R1 sẽ gửi một thông điệp CGMP Join 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 traffic 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 reports, 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.
Comment