Cuối những năm 80, Steve Deering làm việc trên một dự án trong đó có nhu cầu gửi một thông điệp từ một máy tính đến một nhóm các máy tính thông qua các giao thức lớp 3. Sau khi nghiên cứu vài giao thức định tuyến, Deering kết luận rằng chức năng của các giao thức định tuyến có thể mở rộng để hỗ trợ cơ chế Multicast lớp 3. Định nghĩa cơ bản nhất của IP Multicast là:
Cơ chế gửi một thông điệp từ một nguồn duy nhất đến một nhóm chọn lựa các địa chỉ đích thông qua một hạ tầng mạng lớp 3 trong một dòng dữ liệu. Nếu bạn muốn gửi một thông điệp từ một nguồn về một đích, bạn có thể dùng cơ chế Unicast. Nếu bạn muốn gửi một thông điệp từ một nguồn đến tất cả các đích trong một phân đoạn mạng, bạn phải dùng Broadcast.
Steve Deering viết RFC đầu tiên cho cơ chế Multicast vào năm 1986. Nhưng chỉ vài năm sau, các nhu cầu to lớn cho cơ chế Multicast đã bùng nổ, xuất phát từ nhu cầu giao tiếp một-nhiều và nhiều-nhiều. Các ứng dụng chẳng hạn như âm thanh, hình ảnh, các chương trình TV quảng bá… Multicast cũng đã được nghiên cứu như một thành phần của Internet, được biết đến như dự án Multicast mạng chính, Mbone. Tuy nhiên muốn triển khai Multicast trên toàn mạng Internet thì phải chờ các nghiên cứu về BGP đa giao thức và Giao thức Multicast BGP.
Hình 19.1: Cơ chế truyền Unicast
Phương thức Unicast yêu cầu rằng các ứng dụng hình ảnh gửi một bản sao chép của từng gói tin đến mọi địa chỉ Unicast của các thành viên của nhóm. Để hỗ trợ hình ảnh đẹp, mỗi dòng tính hiệu hình ảnh yêu cầu 1.5 Mbps cho mỗi máy nhận. Nếu chỉ có một vài máy nhận, phương thức này làm việc được nhưng yêu cầu băng thông là n*1.5Mbps trong đó n là số máy nhận.
Khi số máy tham gia vào tăng lên hàng trăm hoặc hàng ngàn, tải trên máy chủ để tạo ra các phiên bản của dữ liệu cũng tăng lên. Đối với 100 người dùng, phần băng thông yêu cầu để gửi Unicast là 150Mbps. Đối với 1000 người dùng, phần băng thông yêu cầu là 1.5Gbps.
Hình 19.2: Cơ chế Unicast khi có nhiều máy nhận
Phương thức dùng Unicast không có khả năng mở rộng. Nếu chuyển sang dùng Broadcast, ta chỉ cần truyền dữ liệu một lần, tuy nhiên lúc này sẽ gặp vài vấn đề nghiêm trọng.
Hình 19.3: Cơ chế Broadcast
Có hai thái cực được mô tả ở đây. Cơ chế dùng Unicast thì dữ liệu sẽ đi từ máy trạm đến máy trạm; Broadcast thì lưu lượng sẽ đi đến tất cả các máy trạm trên phân đoạn mạng đó. Cơ chế Multicast sẽ nằm giữa hai thái cực này, trong đó máy nguồn chỉ gửi những gói tin từ một máy trạm đến các người dùng muốn nhận loại lưu lượng đó đó. Nhóm này gọi là nhóm Multicast. Các máy nhận lưu lượng Multicast có thể nằm ở bất cứ nơi nào chứ không chỉ trên phân đoạn mạng cục bộ.
Các lưu lượng dạng Multicast thường là một chiều (unidirectional). Do có nhiều máy trạm nhận cùng một dữ liệu, nên thông thường các gói tin không được phép gửi ngược về máy nguồn trên cơ chế Multicast. Một máy trạm đích sẽ trả lưu lượng ngược về nguồn theo cơ chế Unicast. Cơ chế Multicast cũng sẽ được truyền theo kiểu không kết nối (connectionless). Multicast dùng UDP chứ không dùng TCP.
Các máy trạm muốn nhận dữ liệu từ một nguồn Multicast có thể tham gia hoặc rời khỏi một nhóm Multicast ở bất kỳ thời điểm nào. Hơn nữa, một máy trạm sẽ quyến định có trở thành thành viên của một hay nhiều nhóm Multicast hay không. Nguyên tắc cần quan tâm là sẽ hoạch định làm thế nào để phân phối các lưu lượng Multicast đến các thành viên của nhóm mà không ảnh hưởng đến các thành viên ngoài nhóm.
Có ba yêu cầu cơ bản để có thể triển khai Multicast trên một mạng:
Sáu yêu cầu cơ bản để hỗ trợ các ứng dụng Multicast trên một hạ tầng mạng là:
Hình 19.4: Hệ thống hoạt động dựa trên Multicast
Giả sử rằng một ứng dụng hình ảnh được cài đặt trên một máy chủ dùng địa chỉ Multicast là 225.5.5.5. Các máy trạm từ 1 đến 49, nằm trên các kết nối WAN thì không quan tâm đến lưu lượng này. Các máy trạm từ 50 đến 100 thì quan tâm đến việc nhận lưu lượng cho ứng dụng này và chạy ứng dụng trên PC.
Khi các máy trạm chạy ứng dụng Multicast, các máy trạm sẽ tham gia vào nhóm, có nghĩa là các máy trạm bây giờ muốn nhận các gói Multicast được gửi về địa chỉ 225.5.5. Các máy trạm từ 50 đến 100 tham gia vào nhóm 225.5.5.5 và báo cho R2 thông qua IGMP rằng các máy trạm này muốn nhận lưu lượng. Các ứng dụng Multicast tính toán địa chỉ lớp 2 0x0100.5e05.0505 từ địa chỉ lớp 3 225.5.5.5 và các card mạng của các máy từ 50 đến 100 sẽ lắng nghe địa chỉ này bên cạnh các lưu lượng đến địa chỉ MAC BIA.
Một giao thức định tuyến Multicast được cấu hình giữa R1 và R2 sao cho các router có thể truyền các lưu lượng Multicast. R2 có một kết nối đến mạng Frame Relay và hai cổng Ethernet kết nối đến hai switch, Sw2 và Sw3. R2 biết rằng nó có các máy trạm trên cả hai kết nối muốn nhận lưu lượng của nhóm 225.5.5.5. Cả hai switch cũng sẽ ghi nhận các cổng của các máy trạm muốn nhận Multicast thông qua hai giao thức CGMP và IGMP snooping. Một gói Multicast truyền tín hiệu hình ảnh từ máy chủ trên kết nối Ethernet đến R1 và R1 sẽ truyền một gói tin Multicast trên kết nối WAN đến R2. Khi R2 nhận gói Multicast, R2 sẽ nhân bản gói Multicast và truyền trên từng kết nối Ethernet.
Vì đây là gói tin Multicast, R2 sẽ tính địa chỉ lớp 2 0x0100.5e05.0505 và dùng nó như địa chỉ MAC đích, sau đó R2 sẽ truyền khung tin này đến cả hai switch. Khi các switch nhận được các khung tin này, switch sẽ truyền khung tin ra các cổng phù hợp. Khi các máy trạm nhận được các gói này, card mạng sẽ so sánh địa chỉ MAC đích với địa chỉ Multicast mà máy đang lắng nghe. Nếu là đúng, card mạng sẽ thông báo cho các lớp cao hơn xử lý gói tin.
Hình 19.5: Quá trình nhận lưu lượng trong mạng chạy Multicast
Giả sử các máy trạm từ 1 đến 40 cũng muốn nhận lưu lượng cho nhóm 225.5.5.5. R2 đã sẵn sàng truyền lưu lượng đến cả 2 switch. Tuy nhiên, mặc dù đã có thêm 49 máy mới nhận lưu lượng Multicast, tải trên các thiết bị mạng và nhu cầu băng thông trên kết nối WAN không đổi. Tải trên SW2 thì có thể tăng bởi vì nó phải thực hiện việc nhân bản 49 lần và truyền nó trên 49 cổng.
Multicast cũng có vài điểm bất lợi:
Link phần tiếp theo: CƠ CHẾ MULTICAST (Phần 2)