Tổng quan về multicast 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ư audio, video, các chương trình broadcast TV… 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 backbone, 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ề Multiprotocol BGP và Border Gateway Multicast Protocol. Ba kiểu truyền lưu lượng IP trên router và switch Unicast: Các gói tin được gửi từ một địa chỉ nguồn đến một địa chỉ đích. Một router hoặc một thiết bị lớp 3 sẽ chuyển các gói tin bằng cách tìm địa chỉ đích trong bảng định tuyến. Nếu một thiết bị là L2, nó chỉ cần dựa vào địa chỉ MAC. Phương thức unicast yêu cầu rằng các ứng dụng video gửi một bản copy 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 video 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ố host 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 server để 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. 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. Đầu tiên, nếu bên máy nhận nằm trong vùng broadcast domain khác máy gửi, router cần phải truyền dữ liệu broadcast. Tuy nhiên, truyền gói tin dạng broadcast có thể là giải pháp tồi nhất vì sẽ tốn rất nhiều băng thông và tăng tải trên tất cả các thiết bị mạng nếu chỉ có một nhóm nhỏ các máy trong mạng thực sự cần nhận gói tin. Broadcast: Các gói tin được gừi từ một máy nguồn đến một địa chỉ đích broadcast. Địa chỉ đích có thể là địa chỉ tất cả các hosts (255.255.255.255) hoặc là một phần của địa chỉ subnet. Một router hoặc một L3 switch sẽ không cho phép chuyển các dữ liệu broadcast này. Một thiết bị L2 sẽ cho phép phát tán broadcast traffic ra tất cả các cổng của nó. Multicast: Các gói được gửi từ một địa chỉ nguồn đến một nhóm các máy tính. Địa chỉ đích tượng trưng bằng các hosts muốn nhận traffic này. Mặc định, một router hoặc một L3 switch sẽ không chuyển các gói tin này trừ khi phải cấu hình multicast routing. Một thiết bị L2 switch không thể nhận biết được vị trí của địa chỉ multicast đích. Tất cả các gói sẽ được phát tán ra tất cả các port ở chế độ mặc định. Có hai thái cực được mô tả ở đây. Cơ chế dùng unicast thì dữ liệu sẽ đi từ host đến host; broadcast thì traffic sẽ đi đến tất cả các host 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 host đến các người dùng muốn nhận loại traffic đó. Nhóm này gọi là nhóm multicast. Các máy nhận multicast traffic 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 traffic dạng multicast thường là một chiều (unidirectional). Do có nhiều host 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 host đích sẽ trả traffic ngược về nguồn theo cơ chế unicast. Cơ chế multicast cũng sẽ được truyền theo kiểu phi-kết-nối (connectionless). Multicast dùng UDP chứ không dùng TCP. Các host 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 host 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. Tóm tắt: Có ba yêu cầu cơ bản để có thể triển khai multicast trên một mạng: + Phải có một tập hợp các địa chỉ dành cho các nhóm multicast. + Phải có một cơ chế trong đó các host có thể tham gia và rời khỏi nhóm + Phải có một giao thức định tuyến cho phép các router phân phối các multicast traffic tới các thành viên của nhóm mà không làm quá tải tài nguyên mạng. Cơ chế multicast hỗ trợ khả năng mở rộng và khả năng quản lý như thế nào? 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à: - Một dãy địa chỉ dành riêng cho địa chỉ lớp 3 mà chỉ được dùng bởi các ứng dụng multicast. Người quản trị cần phải cài đặt một ứng dụng multicast trên một multicast server dùng địa chỉ lớp 3. - Một địa chỉ multicast chỉ được dùng như là địa chỉ đích và không được là địa chỉ nguồn. Không giống như gói tin unicast, một địa chỉ đích IP trong một gói multicast không chỉ ra địa chỉ của máy nhận mà chỉ đơn giản có ý nghĩa là gói tin đang mang dữ liệu multicast. - Các ứng dụng multicast phải được cài đặt trên tất cả các host trong mạng cần phải nhận traffic multicast cho ứng dụng. Ứng dụng phải được cài đặt dùng cùng địa chỉ multicast L3 với địa chỉ của server. Động tác này còn được gọi là tham gia vào cùng một nhóm. - Tất cả các host kết nối vào cùng một mạng LAN phải dùng cùng một phương thức chuẩn để tính toán địa chỉ L2 từ địa chỉ multicast L3 và gán nó vào cạc mạng. Ví dụ, nếu nhiều router cùng kết nối vào một mạng và tất cả đều chạy OSPF, tất cả các cổng Ethernet của tất cả các router sẽ có khả năng lắng nghe đến địa chỉ multicast là 0x0100.5e00.0005 ngoài địa chỉ MAC của chính cổng đó. Địa chỉ multicast L2 0x0100.5e00.0005 được tính toán từ địa chỉ 224.0.0.5. Đây là địa chỉ dành riêng cho OSPF. - Phải có một cơ chế trong đó một host có thể báo cho router kết nối trực tiếp rằng host muốn nhận traffic cho ứng dụng multicast. Giao thức IGMP cung cấp cơ chế giao tiếp giữa host và router trong cùng subnet. CGMP hay IGMP snooping giúp các switch học thông tin host nào đã nhận traffic cho các ứng dụng multicast và các host này gắn vào cổng nào của switch. - Phải có một giao thức định tuyến multicast trong đó cho phép các router truyền các dữ liệu multicast từ server đến các host mà không làm tốn tài nguyên mạng. Một vài giao thức định tuyến multicast là Distance Vector Multicast Routing Protocol (DVMRP), Multicast Open Shortest Path First (MOSPF), và Protocol Independent Multicast dense mode (PIM-DM) và sparse mode (PIM-SM). Giả sử rằng một ứng dụng video được cài đặt trên một server dùng địa chỉ multicast là 225.5.5.5. Các host từ 1 đến 49, nằm trên các kết nối WAN thì không quan tâm đến traffic này. Các host từ 50 đến 100 thì quan tâm đến việc nhận traffic cho ứng dụng này và chạy ứng dụng trên PC. Khi các host chạy ứng dụng multicast, các host sẽ tham gia vào nhóm, có nghĩa là các host bây giờ muốn nhận các gói multicast được gửi về địa chỉ 225.5.5. Các host 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 host này muốn nhận traffic. 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 traffic đế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 FrameRelay và hai cổng Ethernet kết nối đến hai switch, Sw2 và Sw3. R2 biết rằng nó có các host trên cả hai kết nối muốn nhận traffic 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 host muốn nhận multicast thông qua hai giao thức CGMP và IGMP snooping. Một gói multicast truyền từ video server 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 frame này đến cả hai switch. Khi các switch nhận được các frame này, switch sẽ truyền frame ra các cổng phù hợp. Khi các host 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. Giả sử các host từ 1 đến 40 cũng muốn nhận traffic cho nhóm 225.5.5.5. R2 đã sẵn sàng truyền traffic đến cả hai switch. Tuy nhiên, mặc dù đã có thêm 49 máy mới nhận traffic 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. Multicast thì dùng UDP nên không tin cậy, thiếu cơ chế windowing và cơ chế slowstart nên có thể gây ra nghẽn. Một vài cơ chế multicast có thể gây ra gói tin bị trùng lắp. . traffic tới các thành viên của nhóm mà không làm quá tải tài nguyên mạng. Cơ chế multicast hỗ trợ khả năng mở rộng và khả năng quản lý như thế nào? Sáu yêu cầu cơ bản để hỗ trợ các ứng dụng multicast. 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ế. trên 49 cổng. Multicast cũng có vài điểm bất lợi. Multicast thì dùng UDP nên không tin cậy, thiếu cơ chế windowing và cơ chế slowstart nên có thể gây ra nghẽn. Một vài cơ chế multicast có thể