Đề tài Xây dựng ứng dụng video streamming dựa trên mạng ngang hàng Chord

Khóa luận này đưa ra một phương thức truyền tin multicast trên nền tảng mạng ngang hàng mới nhằm khắc phục những nhược điểm của một sốphương thức truyền tin multicast đã tồn tại từtrước. Những nhược điểm đó gồm có việc phải phụthuộc hoàn toàn vào khảnăng của router đối với IP multicast hay vấn đềquản lý cây multicast khó khăn đối với một sốgiao thức truyền tin multicast trên tầng ứng dụng khác. Khóa luận mô tảchi tiết giao thức mạng ngang hàng có cấu trúc Chord và cách thức truyền tin multicast trên nền mạng ngang hàng Chord.Trong khóa luận, vấn đềtruyền video streaming cũng được đềcập đến. Từ đó khóa luận đã xây dựng nên ứng dụng truyền video streaming multicast trên nền Chord. Việc đánh giá kết quảthu được qua quá trình xây dựng ứng dụng cho ta thấy được những ưu điểm của việc triển khai multicast trên mạng ngang hàng, cũng nhưnhững nhược điểm cần khắc phục.

pdf42 trang | Chia sẻ: nhungnt | Lượt xem: 2650 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng ứng dụng video streamming dựa trên mạng ngang hàng Chord, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
 TRƯỜNG ………………….  KHOA……………………….  ‐‐‐‐‐[\ [\‐‐‐‐‐  Báo cáo tốt nghiệp  Đề tài:   Xây dựng ứng dụng video streamming dựa trên mạng ngang hàng Chord Tóm tắt Khóa luận này đưa ra một phương thức truyền tin multicast trên nền tảng mạng ngang hàng mới nhằm khắc phục những nhược điểm của một số phương thức truyền tin multicast đã tồn tại từ trước. Những nhược điểm đó gồm có việc phải phụ thuộc hoàn toàn vào khả năng của router đối với IP multicast hay vấn đề quản lý cây multicast khó khăn đối với một số giao thức truyền tin multicast trên tầng ứng dụng khác. Khóa luận mô tả chi tiết giao thức mạng ngang hàng có cấu trúc Chord và cách thức truyền tin multicast trên nền mạng ngang hàng Chord. Trong khóa luận, vấn đề truyền video streaming cũng được đề cập đến. Từ đó khóa luận đã xây dựng nên ứng dụng truyền video streaming multicast trên nền Chord. Việc đánh giá kết quả thu được qua quá trình xây dựng ứng dụng cho ta thấy được những ưu điểm của việc triển khai multicast trên mạng ngang hàng, cũng như những nhược điểm cần khắc phục. MỤC LỤC Mở đầu......................................................................................................................................................... 5  Chương I: Tổng quan về video streaming multicast .............................................................................. 7  1.1.  Giới thiệu về video streaming .................................................................................................7  1.2.  Giới thiệu multicast .................................................................................................................9  1.3.  IP multicast ............................................................................................................................10  1.4.  Multicast tầng ứng dụng ( ALM – Application-layer Multicast) ......................................12  1.4.1.  Giới thiệu...................................................................................................................12  1.4.2.  Một số giải pháp truyền tin multicast trên tầng ứng dụng ...................................13  Chương II: Truyền tin multicast trên nền mạng ngang hàng có cấu trúc Chord............................... 16  2.1.  Giới thiệu mạng ngang hàng ................................................................................................16  2.2.1.  Khái niệm ..................................................................................................................16  2.2.2.  Ưu thế của mạng ngang hàng..................................................................................16  2.2.3.  Phân loại mạng ngang hàng ....................................................................................16  2.2.  Mạng ngang hàng có cấu trúc Chord ..................................................................................18  2.2.1.  Giới thiệu chung .......................................................................................................18  2.2.2.  Finger table ...............................................................................................................20  2.2.3.  Node tham gia/ rời mạng và quá trình đồng bộ ( stabilization) ...........................21  2.3.  Thuật toán truyền tin multicast dựa trên nền mạng Chord ..............................................22  Chương III: Xây dựng ứng dụng truyền tin video streaming multicast thời gian thực trên nền mạng ngang hàng có cấu trúc Chord................................................................................................................. 26  3.1.  Mục tiêu và yêu cầu của việc xây dựng ứng dụng ..............................................................26  3.2.  Ý tưởng ...................................................................................................................................26  3.3.  Thiết kế hệ thống ...................................................................................................................27  3.3.1.  Tạo cây multicast......................................................................................................27  3.3.1.  Tạo dữ liệu thời gian thực........................................................................................28  3.3.2.  Truyền hình ảnh .......................................................................................................28  3.3.3.  Xử lý và hiển hình ảnh .............................................................................................29  3.4.  Thiết kế giao thức ..................................................................................................................29  3.4.1.  Giao thức máy chủ ...................................................................................................29  3.4.2.  Giao thức máy khách ...............................................................................................31  3.5.  Thiết kế chương trình ...........................................................................................................33  3.5.1.  Lớp WebcamServer .................................................................................................34  3.5.2.  Lớp WebcamClient ..................................................................................................36  Chương IV: Kết quả đánh giá hệ thống................................................................................................. 39  4.1.  Kết quả thử nghiệm...............................................................................................................39  4.1.1.  Môi trường chạy thử ................................................................................................39  4.1.2.  Kết quả đạt được ......................................................................................................39  4.2.  Kết quả đánh giá hiệu năng..................................................................................................39  Chương V: Kết luận.................................................................................................................................. 41  Tài liệu tham khảo .................................................................................................................................... 42  Mở đầu Trong những ngày đầu phát triển của ứng dụng đa phương tiện, khoảng nửa cuối thập niên 90, việc xem một video trên mạng gần như là điều không thể. Ngày nay, cùng với sự bùng nổ của Internet, các ứng dụng đa phương tiện trong đó có video streaming đã trở thành nhu cầu không thể thiếu của nhiều cư dân mạng.Theo thống kê, riêng tại Mỹ đã có khoảng 13,5 tỉ video được xem trong tháng 10 – 2008 (nguồn comScore). Con số trên đủ cho ta thấy được sự lớn mạnh không ngừng của các ứng dụng video streaming. Tuy nhiên, để phát triển một ứng dụng video streaming tốt gặp phải nhiều vấn đề. Ứng dụng video streaming đòi hỏi nhiều băng thông và yêu cầu độ trễ thấp. Chính vì vậy cần phải có một phương thức phân phát video trên đường truyền hợp lý. IP multicast với khả năng tối ưu hóa đường truyền là một giải pháp cho vấn đề này. Tuy nhiên, việc triển khai IP multicast lại rất tốn kém bởi nó đòi hỏi toàn mạng phải có những Router đắt tiền, chuyên dụng. Điều này hoàn toàn không khả thi trong một mạng diện rộng như Internet. Triển khai multicast trên tầng ứng dụng với việc không làm thay đổi hạ tầng mạng phía dưới là một giải pháp thay thế hữu hiệu cho IP multicast. Hiện nay, trên thế giới đã và đang phát triển rất nhiều phương pháp truyền tin multiast trên tầng ứng dụng khác nhau. Trong đó truyền tin multicast dựa mạng ngang hàng hứa hẹn có nhiều ưu điểm. Đặc thù của truyền tin multicast là phải tạo được một cây multicast tối ưu, có sự liên kết chặt chẽ giữa các node với nhau, có khả năng phục hồi lỗi nhanh. Mạng ngang hàng có cấu trúc hoàn toàn có thể đáp ứng được yêu cầu đó với việc các node được liên kết với nhau bằng một thuật toán cụ thể. Để làm rõ hơn những lợi thế của mạng ngang hàng có cấu trúc trong việc truyền tin multicast, khóa luận này đã nghiên cứu xây dựng một ứng dụng truyền video streaming multicast dựa trên nền tảng mạng ngang hàng có cấu trúc Chord. Sau đây là tóm tắt nội dung khóa luận gồm 5 chương. Chương 1: Tổng quan về video streaming và multicast Giới thiệu về video streaming và trình bày những khái cơ bản về multicast, so sánh với các phương thức truyền tin khác. IP multicast và multicast tầng ứng dụng được trình bày một cách ngắn gọn để từ đó có thể thấy được ưu điểm của multicast tầng ứng dụng so với IP multicast. Chương 2: Truyền tin multicast trên nền mạng ngang hàng có cấu trúc Chord Phần này đưa ra cái nhìn tổng quan về mạng ngang hàng bao gồm: khái niệm, phân loại và ưu điểm chung của mạng ngang hàng. Tiếp đó, sẽ giới thiệu hoạt động của giao thức Chord. Đặc biệt, việc truyền tin multicast dựa trên nền mạng Chord được đề cập một cách chi tiết. Chương 3: Xây dựng ứng dụng truyền multicast video streaming thời gian thực trên nền Chord Chương 3 đề cập đến những yêu cầu, mục tiêu của ứng dụng và cách thức xây dựng ứng dụng sao cho phù hợp với những mục tiêu đó. Trong đó, trình bày chi tiết về thiết kế hệ thống, thiết kế giao thức và thiết kế chương trình của ứng dụng. Chương 4: Kết quả đánh giá hệ thống Sau các nghiên cứu ở các phần trên, chương 4 trình bày về môi trường chạy thử chương trình, các kết quả và đánh giá thu được sau quá trình thử nghiêm. Chương 5: Kết luận Chương I: Tổng quan về video streaming multicast 1.1. Giới thiệu về video streaming Video là một loại dữ liệu đa phương tiện quan trọng phục vụ cho truyền thông hoặc cho nhu cầu giải trí của con người trong nhiều thập niên. Trong thời kỳ đầu video được xử lý và truyền dưới dạng tín hiệu tương tự (analog). Với sự phát triển không ngừng của mạch điện tử và máy tính dẫn đến việc số hóa video và mở ra một cuộc cách mạng về nén và truyền thông video. Sự phát triển và phổ biến của Internet giữa những năm 90 đã định hướng truyền thông video qua mạng chuyển mạch gói best-effort. Video qua mạng qua mạng Internet gặp phải rất nhiều yếu tố bất lợi về băng thông, độ trễ và mất gói tin, cùng với một số vấn đề như làm thế nào để chia sẽ tài nguyên mạng giữa các luông hay làm thế nào có thể triển khai hiệu quả phương thức truyền thông một- nhiều ( truyền dữ liệu từ một nguồn đến nhiều đích cùng một lúc). Từ đó đã có rất nhiều giải pháp được nghiên cứu và phát triển nhằm khác phục những vấn đề này. Video streaming được định nghĩa là một “dòng chảy” video , nghĩa là dữ liệu video được truyền liên tục từ một nguồn đến một đích nào đó. Ý tưởng cơ bản của video streaming đó là chia video thành từng frame, sau đó liên tục truyền những phần được chia ra và bên nhận có thể hiện thị những phần video đã nhận được mà không phải đợi cho đến khi toàn bộ video được truyền xong. Tuy nhiên có một vài vấn đề ảnh hưởng trực tiếp đến video streaming. Video streaming qua mạng Internet gặp rất nhiều khó khăn bởi Internet chỉ cung cấp dịch vụ truyền best-effort (cố gắng tối đa). Do đó, nó không đảm bảo về băng thông, độ trễ, jitter hay sự mất gói tin. Những nhân tố này thường không đoán trước được và động. Chính vì vậy, mục tiêu chính của việc xây dựng một ứng dụng video streaming là phải thiết kết một hệ thống phân phát video chất lượng cao đáng tin cây qua mạng Internet. Các ứng dụng video streaming thường được nhiều người dùng cùng một lúc, tức là video phải được truyền cùng lúc tới nhiều người như video conference hay truyền hình trực tuyến. Truyền tin multicast là một giải pháp thích hợp cho những ứng dụng đó. Phần dưới đây sẽ trình bày chi tiết về multicast. Cấu thành nên một hệ thống video streaming gồm có 6 yếu tố cơ bản: cơ chế nén video, cơ chế điều khiển chất lượng dịch vụ tầng ứng dụng, dịch vụ phân phát video, máy chủ streaming, cơ chế đồng bộ dữ liệu và giao thức dành cho video streaming [10]. Hình 1 cho ta thấy được mối liên hệ giữa các yếu tố này với nhau. Hình 1: Cấu trúc ứng dụng video streaming ƒ Cơ chế nén video. Dữ liệu video nguyên gốc cần phải được nén trước khi được truyền nhằm tiết kiệm băng thông. ƒ Cơ chế điều khiển chất lượng dịch vụ tầng ứng dụng. Để đối phó với sự biến thiên của tài nguyền mạng hoặc để cung cấp chất lượng hình ảnh thay đổi theo từng người dùng, nhiều kỹ thuật điều kiển chất lượng dịch vụ tầng ứng dụng đã được đưa ra. Kỹ thuật đó bao gồm điều khiển tắc nghẽn và điều khiển lỗi. Điều khiển tắc nghẽn được triển khai để ngăn ngừa việc mất gói tin và giảm độ trễ. Trong khi đó, điều khiển lỗi cải thiện chất lượng hình ảnh khi có gói tin bị mất. ƒ Dịch vụ phân phát video trên đường truyền. Được xây dựng trên nền của Internet ( giao thức IP), dịch vụ phân phát video trên đường truyền cho phép đạt được QoS ( chất lượng dịch vụ) và hiệu quả cho việc phân phát video qua mạng Internet. ƒ Máy chủ streaming. Máy chủ streaming đóng vai trò quan trọng trong việc cung cấp dịch vụ streaming. Máy chủ streaming được yêu cầu phải xử lý các dữ liệu video với sự rằng buộc về thời gian, đồng thời hỗ trợ các hành động tương tác như dừng (pause), tua (fast forward). Một server streaming gồm 3 hệ thống con: bộ truyền tin (communicator) ví dụ như giao thức tầng giao vận, hệ điều hành và hệ thống lưu trữ. ƒ Cơ chế đồng bộ dữ liệu. Với cơ chế đồng bộ, ứng dụng tại bên nhận có thể hiển thị video gần giống như khi nó được khởi tạo tại bên gửi. Một ví dụ của cơ chế đồng bộ là cử động môi của người nói phải phù hợp với tiếng nói họ phát ra. ƒ Giao thức dành cho video streaming. Giao thức được thiết kế và chuẩn hóa cho truyền thông giữa máy khách và máy chủ streaming. Giao thức có thể được chia làm 3 loại: giao thức tầng mạng như Internet Protocol (IP), giao thức tầng giao vận như User Datagram Protocol (UDP) và giao thức điều khiển phiên như Real-time Streaming Protocol (RTSP). 1.2. Giới thiệu multicast Trong hệ thống mạng của chúng ta hiện nay có 3 cách truyền tin cơ bản đó là unicast, multicast và broadcast (Hình 2). Unicast là phương thức truyền tin cơ sở của IP network. Với unicast một máy truyền và chỉ có một máy nhận theo kiểu point to point. Hiện nay hầu hết các ứng dụng mạng được phát triển và sử dụng trên nền phương thức unicast như HTTP, Telnet, FTP … Nhưng với những ứng dụng đòi hỏi phải truyền tin từ một nguồn cho một nhóm người dùng như video streaming thì việc triên khai trên unicast là không hiệu quả và truyền tin multicast là giải pháp thay thế. Multicast là cách truyền dữ liệu từ một – nhiều (one-to-many) tức là dữ liệu được gửi từ một node nguồn và một nhóm node đích sẽ nhận được cùng dữ liệu đó. Cách truyền này khác với unicast– gửi thông tin trên mạng theo cách truyền gói tin một- một (one – to – one). Nếu multicast có thể so sánh với cuộc gọi chung cho nhiều người (conference call) thì unicast có thể so sánh với cuộc gọi riêng giữa hai người. Broadcast được mô tả như truyền thông tin cho toàn mạng, tất cả các điểm trong mạng đều nhận được thông báo này. Trong trường hợp này chỉ một người gửi nhưng tất cả người trong mạng đều nhận được. Broadcast được hỗ trợ trong mạng LAN (ví dụ Ethernet) và được sử dụng để gửi những gói tin giống nhau đến các máy trong mạng LAN (ví dụ ARP được sử dụng gửi địa chỉ đến toàn bộ máy trong mạng LAN). Network protocol (như IP) hỗ trợ khuôn dạng gói tin để gửi đến bất kỳ hệ thống nào trong logical network. Có thể nói, multicast là cách thức hiệu quả nhất để truyền dữ liệu đến một nhóm người trên Internet. Chúng ta cũng có thể sử dụng unicast để truyền tin lần lượt từ nguồn đến từng node trong nhóm. Tuy nhiên, với cách này thì node nguồn sẽ phải lặp đi lặp lại việc truyền 1 gói tin cho rất nhiều node khác, dẫn đến việc tiêu tốn tài nguyên của node nguồn ( CPU, memory …). Đồng thời, sẽ có rất nhiều gói tin không cần thiết được lưu thông trên mạng, dẫn đến lãng phí tài nguyên mạng. Với multicast, một cây multicast sẽ được hình thành với nguồn là gốc của cây và các thành phần còn lại của cây có thể là node đầu cuối ( end – host ) hoặc có thể là router tùy vào từng công nghệ multicast khác nhau. Thay vì việc node nguồn nhân bản gói tin và gửi đến từng node trong nhóm thì nó chỉ truyền cho 1 hoặc vài node nhất định và các node này có nhiệm vụ sao chép và truyền gói tin theo cây multicast. Hình 2: Các phương thức truyền tin trên mạng 1.3. IP multicast IP multicast (Hình 3) là chuẩn mở của IETF (Internet Engineering Task Force)[3], dùng để truyền dữ liệu tới nhiều người nhận. Trong IP multicast, các router sẽ đóng vai trò là node trung gian trong cây multicast và có trách nhiệm sao chép gói tin rồi truyền cho các node ứng dụng - ở đây, các node này sẽ đóng vai trò là ngọn của cây. Hình 3: Thành phần của IP multicast Trong IP multicast mỗi node sẽ gửi yêu cầu một router gắn với nó khi muốn ra nhập hoặc rời khỏi nhóm. Sau đó các router multicast sẽ trao đổi các thông tin về việc quản lý nhóm thông qua cây multicast. Tất cả các công việc như tạo nhóm, nhập nhóm, rời nhóm đều được thực hiện bởi giao thức IGMP (Internet Group Membership Protocol)(Hình 4)[4]. IP multicast sử dụng địa chỉ IP lớp D để định danh các nhóm multicast. Đây là dạng địa chỉ IP đặc biệt dành riêng cho multicast. Tất cả các máy nối kết vào Internet phải có địa chỉ IP thuộc lớp A, lớp B, hoặc lớp C. Một máy có thể có một hoặc nhiều địa chỉ multicast lớp D tùy thuộc vào số nhóm multicast mà nó tham gia. Địa chỉ lớp D có độ dài là 32 bit. 4 bit đầu tiên được dùng để xác định nó thuộc lớp D, 28 bit còn lại được dùng để xác định nhóm multicast. Một địa chỉ lớp D có thể so sánh với một kênh trên tivi. Khi bạn truy cập một địa chỉ lớp D, bạn sẽ nhận được tất cả thông tin được multicasting đến địa chỉ đó. Hình 4: Internet Group Management Protocol – Thông điệp Query IGMP chỉ có trách nhiệm quản lý các nhóm multicast và việc phân phát các gói tin multicast từ router nội bộ đến các node trong nhóm. Việc gói tin làm thế nào để đi được từ nguồn đến các router biên ( các router trực tiếp nối với node) phụ thuộc vào giao thức định tuyến multicast chạy trên các router trong mạng. Hiện nay có một vài giao thức định tuyến được phát triển dành riêng cho IP multicast như DVMRP (Distance Vector Multicast Routing Protocol) – giao thức định tuyến multicast đầu tiên hay như PIM (Protocol Independent Multicast) – giao thức multicast được dùng phổ biến nhất hiện nay. Với các giao thức định tuyến multicast trong IP multicast, số lượng gói tin phải sao chép nhân bản trên đường truyền được giảm thiểu so với các phương thức truyền tin khác từ đó tiết kiệm đáng kể băng thông mạng. Tuy nhiên một nhược điểm khiến nó không được sử dụng nhiều và không có khả năng mở rộng đó là các router trong mạng phải hỗ trợ multicast. Đồng thời, IP multicast chỉ hỗ trợ các ứng dụng chạy trên nền UDP – giao thức truyền tin không tin cậy. Nhằm khắc phục những nhược điểm này, truyền tin multicast tầng ứng đã và đang được nghiên cứu, phát triển rất nhiều trong những năm gần đây. Phần tiếp của khóa luận sẽ trình bày về phương thức truyền tin multicast tầng ứng dụng. 1.4. Multicast tầng ứng dụng ( ALM – Application-layer Multicast) 1.4.1. Giới thiệu Khái niệm multicast tầng ứng dụng chỉ đơn giản là việc thi hành multicasting như một dịch vụ tầng ứng dụng chứ không phải như một dịch vụ tầng mạng. Hình 5 mô tả việc truyền multicast cho cùng một nhóm người nhận và người gửi của multicast tầng ứng dụng và IP multicast. Ở đây, cây multicast được hình thành ở tầng ứng dụng. Với việc chỉ sử dụng phương thức truyền tin unicast của tầng mạng, node nguồn S gửi hai gói tin cho D1 và D2; tại D1, D2 gói tin được nhân bản và chuyền tiếp cho D4,D3. Hình 5: (a) IP multicast (b) Multicast tầng ứng dụng IP multicast được triê