Các ứng dụng Multicast luôn luôn dùng địa chỉ Multicast. Địa chỉ Multicast này tượng trưng cho các ứng dụng Multicast và còn được gọi là các nhóm. Không giống như trong địa chỉ Unicast (một địa chỉ tượng trưng cho một máy trạm), một địa chỉ Multicast được dùng như một địa chỉ đích trên một gói tin IP chỉ ra rằng gói tin đang mang lưu lượng cho một ứng dụng Multicast. Ví dụ, nếu một gói Multicast mang địa chỉ đích là 225.5.5.5, điều này có ý nghĩa là “Tôi đang mang lưu lượng cho ứng dụng Multicast có địa chỉ nhóm là 225.5.5.5, bạn có muốn dùng không?”. Một địa chỉ Multicast sẽ không bao giờ được gán đến một thiết bị mạng, vì vậy nó sẽ không bao giờ dùng như một địa chỉ nguồn. Một địa chỉ nguồn trên một gói Multicast cũng sẽ giống như mọi gói tin Unicast, luôn luôn dùng một địa chỉ Unicast.
Các router và switch phải có phương thức để phân biệt lưu lượng dạng Multicast với dạng Unicast hay Broadcast. Điều này thực hiện thông qua việc gán địa chỉ IP, bằng cách dùng địa chỉ lớp D từ 224.0.0.0 đến 239.255.255.255 chỉ cho Multicast. Các thiết bị mạng có thể nhanh chóng lọc ra các địa chỉ Multicast bằng cách đọc 4 bit bên trái của một địa chỉ. Bốn bit này của một địa chỉ Multicast luôn luôn bằng 1110. Không giống như dãy địa chỉ lớp A,B và C, địa chỉ lớp D này không có quá trình chia nhỏ(mạng conting). Vì vậy có đến 228 địa chỉ nhóm Multicast được trích dẫn ra từ lớp D này. Các địa chỉ Multicast là tượng trưng một nhóm, không tượng trưng cho máy trạm.
Làm thế nào mà một router và switch kết hợp một địa chỉ Multicast của IP với một địa chỉ MAC. Việc gán địa chỉ Multicast vào một nhóm lớp 3 sang một nhóm Multicast thường sẽ tự động tạo ra địa chỉ Multicast lớp 2. Do không có cơ chế tương đương với cơ chế ARP, một dạng giá trị đặc biệt dành riêng cho địa chỉ MAC của Multicast sẽ được dùng. Các địa chỉ này bắt đầu bằng 0100.5e. Phần 28 bit sau của địa chỉ Multicast IP sẽ được ánh xạ vào 23 bit thấp của địa chỉ MAC bằng một giải thuật đơn giản. Địa chỉ MAC được hình thành bằng cách dùng dạng OUI 01005E, sau đó là giá trị 0 và sau cùng là 23 bit địa chỉ của L3 Multicast.
Hình 19.6: Cơ chế ánh xạ địa chỉ IP Multicast và MAC
Hình 19.6 cho thấy cơ chế ánh xạ địa chỉ. Chỉ có 23 bit cuối của địa chỉ là được chép từ địa chỉ IP sang địa chỉ MAC. Tuy nhiên chú ý rằng có 5 bit của địa chỉ IP không được chuyển sang địa chỉ MAC. Khả năng này làm cho nảy sinh một vấn đề là có thể có 32 địa chỉ Multicast khác nhau có thể ánh xạ vào cùng một địa chỉ MAC. Do sự nhập nhằng này, một máy trạm Multicast có một vấn đề nhỏ khi nó nhận một khung tin Ethernet của một địa chỉ Multicast. Một MAC có thể tương ứng với 32 địa chỉ Multicast khác nhau. Vì vậy, khi một máy trạm phải nhận và kiểm tra tất cả các khung tin có MAC mà nó quan tâm. Sau đó máy trạm này phải kiểm tra phần địa chỉ IP bên trong mỗi khung tin để nhận ra phần địa chỉ của từng nhóm Multicast.
Hình 19.7: Quá trình ánh xạ IP Multicast và MAC
Để hiểu tiến trình chuyển đổi dùng các bước sau:
Theo cách thức nêu trên, địa chỉ 238.10.24.5 sẽ sinh ra địa chỉ MAC là 0x01-00-5E-0A-18-05 cũng giống như kết quả do địa chỉ 228.10.24.5. IETF đã chỉ ra rằng khả năng hai ứng dụng Multicast trên cùng một LAN có thể tạo ra cùng những địa chỉ MAC là thấp. Nếu tình cờ điều này xảy ra, một gói tin từ một ứng dụng Multicast khác có thể sẽ được phân biệt bằng địa chỉ lớp 3. Người quản trị nên cẩn thận khi chọn lựa địa chỉ Multicast, tránh việc tạo ra những địa chỉ MAC tương tự nhau.
Toàn bộ không gian địa chỉ Multicast: 224.0.0.0 - 239.255.255.255
Địa chỉ |
Nhóm |
224.0.0.1 |
Tất cả các hệ thống trên mạng con này |
224.0.0.2 |
Tất cả các router trên mạng con này |
224.0.0.4 |
Các DVMRP router |
224.0.0.5 |
Tất cả các OSPF router |
224.0.0.6 |
Tất cả các router được lựa chọn trong OSPF |
224.0.0.9 |
Router chạy RIP phiên bản 2 |
224.0.0.10 |
Rout er chạy EIGRP |
224.0.0.13 |
PIM router |
224.0.1.39 |
Lan truyền Cisco PIM RP |
224.0.1.40 |
Phát hiện Cisco RP |
Bảng 19.1: Các địa chỉ IP Multicast cụ thể
Khi một doanh nghiệp muốn dùng một địa chỉ Multicast toàn cục, doanh nghiệp cần một khối địa chỉ từ ISP hoặc từ IANA. Tuy nhiên, khi một doanh nghiệp muốn dùng một địa chỉ Multicast mà không phải là một phần của các không gian địa chỉ Multicast được mô tả trong các phần trước, các phần địa chỉ còn lại này được gọi là các địa chỉ Multicast tạm thời. Điều này có nghĩa là toàn bộ Internet phải chia sẽ địa chỉ này. Các địa chỉ này sẽ được cấp phát động khi cần thiết và phải được giải phóng khi không còn được dùng. Bởi vì các địa chỉ này không được gán vào bất cứ ứng dụng nào nên nó được gọi là tạm thời. Bất kỳ một doanh nghiệp có thể dùng các địa chỉ Multicast này mà không cần sự cho phép từ IANA nhưng các doanh nghiệp cần giải phóng địa chỉ sau khi dùng xong.
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 thông điệp 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 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à:
Trước khi một máy trạm có thể nhận bất kỳ một Multicast lưu lượng nào, một ứng dụng Multicast phải được cài đặt và chạy trên máy trạm đó. Sau khi một máy trạm tham gia vào một nhóm, phần mềm sẽ tính toán địa chỉ Multicast và sau đó card mạng sẽ bắt đầu lắng nghe địa chỉ Multicast MAC.
Trước khi một máy trạm hoặc một người dùng muốn tham gia vào một nhóm, người dùng cần phải biết nhóm nào đang tồn tại và làm thế nào để tham gia vào nhóm đó. Đối với các ứng dụng mức doanh nghiệp, người dùng chỉ cần đơn giản nhấp vào một liên kết trên một trang web hoặc địa chỉ Multicast có thể cấu hình trước trên máy trạm. Ví dụ, một người dùng có thể được yêu cầu để đăng nhập vào một máy chủ và xác thực bằng tên và người dùng. Nếu tên người dùng được xác thực, ứng dụng Multicast sẽ tự động cài trên PC của người dùng, nghĩa là người dùng đã tham gia vào nhóm Multicast.
Khi người dùng không còn muốn dùng ứng dụng Multicast nữa, người dùng phải rời khỏi nhóm. Ví dụ, người dùng đơn giản chỉ cần đóng ứng dụng Multicast để rời khỏi nhóm. Đối với cơ chế Multicast, một người dùng cần phải tìm ra ứng dụng nào họ muốn chạy, địa chỉ Multicast được dùng bởi ứng dụng.
Làm thế nào một router biết được các máy cần nghe lưu lượng Multicast? Để nhận lưu lượng Multicast từ một nguồn, cả nguồn và các máy nhận đầu tiên phải gia nhập (join) vào một nhóm Multicast. Nhóm này được xác định thông qua địa chỉ Multicast. Một máy trạm có thể tham gia vào một nhóm Multicast bằng cách gửi các yêu cầu đến router gần nhất. Tác vụ này được thực hiện thông qua giao thức IGMP.
IGMP phiên bản 1 được định nghĩa trong RFC1112 và bản cải tiến của nó, IGMP phiên bản 2 được định nghĩa trong RFC2236. Khi có vài máy trạm muốn tham gia vào nhóm, giao thức PIM sẽ thông báo cho nhau giữa các router và hình thành nên cây Multicast giữa các router.
IGMP và ICMP có nhiều điểm tương đồng, cùng chia sẻ một vài chức năng tương tự. IGMP cũng đóng gói trong gói tin IP (chỉ số giao thức là 2), nhưng IGMP giới hạn chỉ trong một kết nối lớp 2. Để đảm bảo router không bao giờ tiếp tục chuyển gói tin đi, trường TTL của IGMP luôn có giá trị bằng 1.
Cứ mỗi 60 giây, một router trên mỗi phân đoạn mạng sẽ gửi truy vấn đến tất cả các máy trạm để kiểm tra xem các máy trạm này có còn quan tâm nhận Multicast lưu lượng nữa không? Router này gọi là router truy vấn IGMP phiên bản 1 (Querier) và chức năng của nó là mời các máy trạm tham gia vào nhóm.
Nếu một máy trạm muốn tham gia vào một nhóm, hoặc nó muốn tiếp tục nhận lưu lượng từ một nhóm mà nó đã tham gia, nó phải trả lời lại bằng thông điệp đáp trả (membership report). Các máy trạm có thể tham gia vào các nhóm Multicast ở bất kỳ thời điểm nào.
Tuy nhiên IGMP phiên bản 1 không có cơ chế để cho phép một máy trạm rời khỏi một nhóm nếu máy trạm đó không còn quan tâm đến nội dung của nhóm Multicast đó. Thay vào đó, router sẽ kết luận là một cổng giao tiếp của bó không còn thuộc về một nhóm Multicast nào nếu router không nhận được thông điệp đáp trả (membership report) trong ba chu kỳ truy vấn liên tiếp. Điều này có nghĩa là, ở chế độ mặc định, các lưu lượng Multicast vẫn gửi vào một phân đoạn mạng trong ba chu kỳ truy vấn liên tiếp sau khi tất cả các thành viên của nhóm không còn lắng nghe Multicast lưu lượng nữa. Ngoài ra, router không có giữ một danh sách đầy đủ các máy thành viên cho từng nhóm Multicast. Thay vào đó, nó cần phải lưu những nhóm Multicast nào là đang tồn tại trên những cổng nào của nó.
Để tham gia vào một nhóm Multicast, một máy trạm sẽ gửi một thông điệp đăng ký tham gia vào nhóm đến router cục bộ của nó. Thông điệp này có tên là báo cáo về tình trạng thành viên của IGMP (Membership Report IGMP). Thông điệp này sẽ thông báo cho router về địa chỉ nhóm Multicast mà máy trạm muốn tham gia vào. Địa chỉ Multicast tượng trưng cho tất cả các máy 224.0.0.1 được dùng như địa chỉ đích. Trong thông điệp này có chứa địa chỉ nhóm Multicast.
Hình 19.8: Cấu trúc của gói tin IGMP phiên bản 1
Một thông điệp IGMP phiên bản 1 có 5 trường:
Lưu ý rằng khi bạn kết hợp hai trường Phiên bản và trường Loại, giá trị dạng thập lục phân của một gói tin IGMP phiên bản 1, truy vấn quan hệ máy trạm sẽ là 0x11 và IGMP phiên bản 1 báo cáo quan hệ máy trạm 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.
Hinh 19.9: Truy vấn và báo cáo quan hệ máy trạm trong IGMP phiên bản 1
Các thông điệp IGMP phiên bản 1 chỉ được gửi bởi router trên các cổng LAN. Chi tiết như sau:
Sau khi gửi ra thông điệp truy vấn, R1 mong đợi rằng bất kỳ máy 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 lại bằng thông điệp báo cáo IGMP phiên bản 1. Gói tin truy vấn IGMP phiên bản 1 có TTL là 1, điều này làm cho gói tin sẽ không bị đị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 thông điệp 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 thông điệp báo cáo IGMP như thế nào.
Các máy trạm dùng thông điệp 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 thông điệp 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 thông điệp báo cáo quan hệ máy trạm IGMP phiên bản 1 trong 2 tình huống sau:
Hình 19.10: Hoạt động của báo cáo yêu cầu quan hệ máy trạm IGMP phiên bản 1
Hình 19.10 mô tả hoạt động của báo cáo yêu cầu quan hệ máy trạm IGMP phiên bản 1 và cơ chế để giảm thông điệp báo cáo. Hình 19.10 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 thông điệp truy vấn IGMP phiên bản 1 bằng thông điệp báo cáo quan hệ máy trạm, sẽ có quá nhiều thông điệp 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 thông điệp 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 thông điệp 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 thông điệp 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 thông điệp 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 thông điệp 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 thông điệp báo cáo. Tuy nhiên, nếu một máy trạm nhận được một thông điệp 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 thông điệp báo cáo. Cơ chế này được gọi là cơ chế giảm thông điệp 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.
Hình 19.11: Cơ chế giảm thông điệp báo cáo của IGMP phiên bản 1
Các máy H1 và H3 sẽ muốn gửi thông điệp báo cáo yêu cầu quan hệ máy trạm IGMP phiên bản 1. Giả sử rằng H1 và H3 đã nhận được một gói tin truy vấn IGMP phiên bản 1. 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 thông điệp báo cáo yêu cầu quan hệ IGMP phiên bản 1. 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.
Bộ định thời của H3 sẽ bị hết hạn trong 1 giây, H3 chuẩn bị gửi ra thông điệp 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.
Các máy H1, H2 và R1 nhận thông điệp 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 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 thông điệp 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 thông điệp 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 thông điệp 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.
Hình 19.12: Báo cáo yêu cầu quan hệ máy trạm của IGMP phiên bản 1
Trong IGMP phiên bản 1, một máy trạm không cần thiết phải nhận thông điệp truy vấn thì mới gửi thông điệp báo cáo. Một máy trạm có thể gửi thông điệp báo cáo bất kỳ lúc nào một người dùng khởi động một chương trình Multicast. Đặc điểm này giúp giảm thời gian một máy trạm phải chờ để nhận lưu lượng Multicast.
HÌnh 19.13: Thông điệp báo cáo không yêu cầu quan hệ máy trạm IGMP phiên bản 1
Ví dụ, trong hình 19.13, một người dùng đã chạy một ứng dụng dùng địa chỉ 226.1.1.1 trên H4. H4 sẽ gửi một thông điệp báo cáo không yêu cầu quan hệ máy trạm IGMP phiên bản 1. Thông điệp này sẽ được nhận bởi R1 trên cổng F0/1 của nó và sau đó R1 sẽ bắt đầu đẩy lưu lượng của nhóm 226.1.1.1 ra cổng F0/1.
IGMP không có một cơ chế để cho phép các máy trạm có thể rời khỏi một nhóm. Giả sử có một người dùng ngồi ở H4 quyết định rời khỏi nhóm. H4 sẽ lặng lẽ rời khỏi nhóm và R1 không biết về việc này. R1 sẽ tiếp tục đẩy lưu lượng của 226.1.1.1 trên cổng F0/1 trong vòng 3 phút, ngay cả khi không có máy trạm nào muốn nhận nó. Sau khi R1 gửi thông điệp truy vấn ba lần, mỗi lần cách nhau 60 giây và không có máy trạm nào trả lời bằng thông điệp báo cáo IGMP phiên bản 1, R1 sẽ kết luận không còn máy trạm nào muốn nhận lưu lượng cho 226.1.1.1 trên cổng F0/1. Khoảng 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 (Group membership Interval).
Để 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.
Link phần 3: CƠ CHẾ MULTICAST (Phần 3)