Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
2,82 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đào Tuấn Anh XÂY DỰNG GIẢI PHÁP PHÂN CỤM CHO KURENTO MEDIA SERVER NHẰM TĂNG KHẢ NĂNG MỞ RỘNG CỦA CÁC HỆ THỐNG WEBRTC ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Truyền thơng mạng máy tính HÀ NỘI - 2018 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đào Tuấn Anh XÂY DỰNG GIẢI PHÁP PHÂN CỤM CHO KURENTO MEDIA SERVER NHẰM TĂNG KHẢ NĂNG MỞ RỘNG CỦA CÁC HỆ THỐNG WEBRTC ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Truyền thơng mạng máy tính Cán hướng dẫn: TS Nguyễn Đình Hóa Cán đồng hướng dẫn: TS Hoàng Xuân Tùng HÀ NỘI - 2018 LỜI CAM ĐOAN Tôi xin cam đoan nội dung đồ án tơi thực hướng dẫn trực tiếp TS Hoàng Xuân Tùng T.S Nguyễn Đình Hóa Tất tài liệu tham khảo nghiên cứu liên quan ghi nguồn trích dẫn rõ ràng Nếu có sai tơi xin hồn tồn chịu trách nhiệm Hà Nội, ngày…tháng…năm 2018 Sinh viên Đào Tuấn Anh LỜI CẢM ƠN Tôi xin gửi lời cảm ơn sâu sắc tới thầy Hồng Xn Tùng thầy Nguyễn Đình Hóa thuộc mơn Truyền thơng Mạng máy tính, trường Đại Học Cơng Nghệ, Đại Học Quốc Gia Hà Nội, người trực tiếp hướng dẫn tơi q trình thực đồ án Tôi xin chân thành cảm ơn Thầy Cô khoa Cơng Nghệ Thơng Tin nói riêng thầy cô trường Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội nói chung dạy dỗ tận tình bảo tơi suốt q trình học tập trường Cuối xin gửi lời cảm ơn tới gia đình, bạn bè ln động viên ủng hộ giúp đỡ tơi để hồn thành khóa luận Tơi xin chân thành cảm ơn Hà Nội, ngày tháng năm 2018 Sinh viên Đào Tuấn Anh MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT STT 10 11 12 13 14 15 16 Từ viết tắt WebRTC KMS HTTP CSS NAT STUN TURN P2P HTML UDP API JSON JSON-RPC GCP REST SIP Cụm từ tiếng anh Web Real-Time Communication Kurento Media Server Hypertext Transfer Protocol Cascading Resource Locator Network Address Translation Session Traversal Utilities for NAT Traversal Using Relays around NAT Peer-to-Peer Hyper-Text Markup Language User Datagram Protocol Application Programming Interface Javasript Object Notation Javasript Object Notation – Remote Procedure Call Google Cloud Platform Representational State Transfer Session Initiation Protocol DANH MỤC HÌNH VẼ DANH MỤC BẢNG CHƯƠNG MỞ ĐẦU 1.1 Đặt vấn đề Ngày với sử bùng nổ công nghệ, người dùng internet đòi hỏi yêu cầu sử dụng ứng dụng truyền thông đa phương tiện ngày lớn Các ứng dụng multimedia ngày không thực việc tương tác người dùng đủ Chúng ta cần phải quan tâm đến vấn đề tối ưu hóa hiệu hay xử lý tính nâng cao nhằm giúp tăng khả tương tác với người sử dụng cách sử dùng cộng nghệ thực tế ảo tăng cường ( AR ), Computer Vision … Một số ứng dụng tiếng thực tốt việc kể tới Facebook, Youtube, Skype, Viber, … Những ứng dụng sử dụng rộng rãi toàn thế giới Tuy nhiên việc xử lý liệu multimedia không đơn giản, đòi hỏi người thực phải có kiến thức định Chính lý số mã nguồn mở đưa nhằm giúp cho việc đơn gian hóa khai triển ứng dụng multimedia Có nhiều dự án mã nguồn mở đưa nhằm trợ giúp cho việc xây dựng ứng dụng multimedia Jenus, Jitsi, Lincode, Kurento…Mỗi tảng thiết kế có ưu nhược điểm riêng mình.Trong báo cáo xin trình bầy Kurento Đây tảng mạnh mẽ hồn tồn miễn phí đưa với mục đích nâng cao khả thực ứng dụng multimedia Kurento với phần lõi Kurento Media Server, media server xây dựng nhằm xử lý nhiều tác vụ video nâng cao thực tế ảo tăng cường, phân tích nhận dạng… Kurento đưa gói thư viện nhằm hỗ trợ cho việc điều khiển trực tiếp Kurento Media Server đơn giản hóa q trình thực API WebRTC Mặc dù hỗ trợ tốt cho người lập trình, nhiên việc vơ hình chung làm cho ta phải phụ thuộc vào ngơn ngữ lập trình mà Kurento đưa ,vấn đề đề cập báo cáo Một vấn đề khác đề cập đến thông thường ta thực ứng dụng multimedia sử dụng với kurento thường được kèm với Kurento Media Server Khi số lượng người dùng tăng lên đồng nghĩa với việc hiệu ứng dụng giảm đi, ta cần phải có giải pháp để thay đổi điều Nhưng điều chỉnh đồng nghĩa với thay đổi ứng dụng có Vì báo cáo đưa giải pháp giúp cho tăng hiệu hệ thống, đồng thời đảm bảo giữ nguyên xây dựng trước ứng dụng 1.2 Phạm vi mục tiêu báo cáo Báo cáo tập trung tìm hiểu kurento, APIs giao thức mà họ sử dụng, sau đưa cách thực ứng dụng multimedia Từ đưa giải pháp nhằm cải thiện khả ứng dụng, cách mà giải pháp thực Báo cáo đưa ứng dụng demo thực 10 Khai triển API GATEWAY KMS nên Google Cloud Platform Google Cloud Platform (GCP) dịch vụ điện toán đám mây công cộng cung cấp Google Nền tảng bao gồm loạt dịch vụ lưu trữ để tính tốn, lưu trữ phát triển ứng dụng chạy phần cứng Google Các dịch vụ Google Cloud Platform truy cập nhà phát triển phần mềm, quản trị viên đám mây, chuyên gia CNTT doanh nghiệp nhà phát triền website qua mạng internet công cộng thông qua kết nối mạng dành riêng Một điều đặc biệt GCP cho phép ta sử dụng miễn phí có giới hạn vòng 12 tháng(300$ 12 tháng) Để tạo server GCP Dashboard GCP vào Computer -> VM Instance Sau ta bắt đầu vào giao diện cấu hình, có số thơng số cần quan tâm là: • Name: Là hostname VPS • Zone: Khu vực bạn muốn tạo (EU, US,Asia…) • Machine Type: chọn thơng số cấu hình cho server • Boot disk: chọn hệ điều hành cho server • Firewall: cấu hình tường lửa Hình 4.2 Mơ tả thông số để tạo server Google Cloud Platform 60 Khi tạo thành cơng ta có thơng số bên dưới.Ta cần quan tâm đến External IP (IP public), IP ta truy cập từ internet Có nhiều cách để điều khiển server tạo ra, ta điều khiển thơng qua SSH Hình 4.3 Mô tả kết tạo server thành công Cả API GATEWAY KMS chương trình khai triển GCP.Các bước cài đặt KMS giới thiệu phần 4.2.1 4.3 Các cài đặt thực nghiệm Phần đưa thực nghiệm khác cho hệ thống với hai trường hợp có khơng có API GATEWAY, từ đưa nhận xét đánh giá Chi tiết thực nghiệm mô tả bên 4.3.1 Thực nghiệm hệ thống với gọi khơng có API GATEWAY Mơ tả: Mơ hình thử nghiệm bao gồm server, server chay KMS tạo Google Cloud Platform , server lại la STUN TURN server Thử nghiệm chạy máy PC đóng vai trò web server local Hostname OS CPU RAM HDD IP PORT web KMS STUN TURN Ubuntu 16.04 LTS Ubuntu 16.04 LTS core core GB 600 MB 50 GB 20 GB 192.168.100.102 35.237.119.74 108.177.98.12 158.68.221.198 8443 8888 19302 3478 Bảng 4.4 Mơ hình thử nghiệm cho thực nghiệm Thực hiện: 61 Trên máy chủ KMS bắt đầu khởi động kurento media server: sudo service kurento media server -start; Tiếp tiến hành thiết lập firewall cho phép cổng 8443, 19302, 3478 thực thi Thực chạy web server local kèm với địa KMS cung cấp: npm start ws_uri=ws://35.237.119.74:8888/kurento Sau server chạy xong ta bắt đầu thực việc test trường hợp này, chương trình test đợc cài đặt chương trình thực npm test Chương trình test thực tự động số thao tác để thực gọi web server đăng kí, tìm peer, gọi Dưới số thứ cần ý: Thông qua chrome://webrtc-internals/ thu số trao đổi candidate sau : icecandidate (host): sdpMid: video, sdpMLineIndex: 1, candidate: candidate:914589916 udp 2122260223 192.168.100.102 41633 typ host generation ufrag uuNO network-id network-cost 10 icecandidate (srflx): sdpMid: video, sdpMLineIndex: 0, candidate: candidate:1598670621 udp 1686052607 27.79.156.107 13414 typ srflx raddr 192.168.100.102 rport 36444 generation ufrag uuNO network-id network-cost 10 addIceCandidate (host): sdpMid: video, sdpMLineIndex: 0, candidate: candidate:1 UDP 2013266431 fe80::4001:aff:fe8e:2 54827 typ host addIceCandidate (srflx): sdpMid: video, sdpMLineIndex: 1, candidate: candidate:9 TCP 843055615 35.237.119.74 48021 typ srflx raddr 10.142.0.2 rport 48021 tcptype passive addIceCandidate (relay): sdpMid: video, sdpMLineIndex: 0, candidate: candidate:10 UDP 503316991 158.69.221.198 58296 typ relay raddr 10.142.0.2 rport 57236 Phân tích: 62 Đoạn log thu thập mà peer muốn kết nối với KMS ngược lại "host" candidate thu thập từ hệ thống máy ta (ở PC), ta thấy candidate có địa 192.168.100.102 cổng 41633 cho phép luồng liệu kiểu video truyền theo UDP (sdpMid UDP) ,cũng tương tự "srlfx" relay candidate thu thập từ STUN TURN server Các candidate peer thu thập nhằm mục đích gửi cho KMS để có kết nối.Ta có candidate tương ứng KMS gửi sang peer thêm vào cách thực addIceCandidate Ở ta thấy địa IP 35.237.119.74 external ip KMS mà STUN trả lại cho nó,external ip thêm vào để peer tạo cách kết nối với KMS điều chứng minh ta phân tải cho KMS có địa 35.237.119.74 Kết quả: Kết nhận thực nghiệm peer kết nối với (camera nhỏ local lớn remote) Hình 4.4 Kết thực nghiệm thực gọi khơng có API GATEWAY Thời gian thiết lập gọi 6.3 giây 63 Hình 4.5 Mơ tả chạy chương trình thực qua chương trình test 4.3.2 Thực nghiệm hệ thống với gọi thêm vào API GATEWAY Mô tả: Mơ hình thử nghiệm bao gồm server, server chaỵ KMS tạo Google Cloud Platform, server API GATE WAY phụ trách phân tải tới KMS, server lại la STUN TURN server Thử nghiệm chạy máy PC đóng vai trò web server local Hostnam e Số lượng CPU RAM HDD IP PORT Thực hiện: Bảng 4.5 Mô hình thử nghiệm cho thực nghiệm API web KMS STUN GATEWAY 1 core core core GB 600 MB GB 50 GB 20 GB 50GB KMS 1:35.237.119.74 108.177 localhost KMS 2: 35.237.223.81 localhost 98.12 KMS 3: 35.237.9.153 8443 8888 8088 19302 TURN 158.68.2 21.98 3478 Tương tự thực nghiệm trước, để thực ta cần chạy server với đầu vào địa KMS: npm start ws_uri=ws://35.237.119.74:8888/kurento ws_uri=ws://3 5.237.223.81:8888/kurento ws_uri=ws://35.237.9.153:8888/kurento Tiếp tục chạy web server, kèm với địa API GATEWAY: npm start gateway_uri=http://localhost:8088 64 Một số trao đổi candidate với KMS sau: icecandidate (host): sdpMid: video, sdpMLineIndex: 1, candidate: candidate:914589916 udp 2122260223 192.168.100.102 55462 typ host generation ufrag fXWw network-id network-cost 10 icecandidate (srflx) sdpMid: audio, sdpMLineIndex: 0, candidate: candidate:1598670621 udp 1686052607 27.79.156.107 22280 typ srflx raddr 192.168.100.102 rport 50102 generation ufrag fXWw network-id network-cost 10 icecandidate (relay) sdpMid: video, sdpMLineIndex: 1, candidate: candidate:453802058 udp 41885439 158.69.221.198 50272 typ relay raddr 27.79.156.107 rport 22281 generation ufrag fXWw network-id network-cost 10 addIceCandidate (host): sdpMid: audio, sdpMLineIndex: 0, candidate: candidate:4 UDP 2013266430 10.142.0.2 45348 typ host addIceCandidate (srflx) sdpMid: audio, sdpMLineIndex: 0, candidate: candidate:9 TCP 843055615 35.237.9.153 64126 typ srflx raddr 10.142.0.4 rport 64126 tcptype passive Phân tích: Cũng tương tự phân tích peer KMS đưa nhận candidate từ host, STUN, TURN server Khi thêm API GATEWAY vào hệ thống, KMS không tương tác trực tiếp với Signaling mà thay vào API GATEWAY Nhìn vào log ta thấy API GATEWAY phụ trách phân tải, lần phân tải tới KMS có địa 35.237.9.153 Kết quả: Kết nhận 65 Hình 4.6 Kết thu với thực nghiệm Thời gian thiết lập gọi thực nghiệm nhận thấy phần lớn so với chưa có API GATEWAY Hình 4.7 Mơ tả thực thực nghiệm với chương trình test 4.3.3 Thực nghiệm hệ thống với nhiều gọi khơng có API GATEWAY Mơ tả: Mơ hình thử nghiệm bao gồm server, server chay KMS tạo Google Cloud Platform , server lại la STUN TURN server Thực nghiệm mô gọi chạy ngầm (khơng có giao diện) dựa headless chrome giới hạn khả KMS 10 gọi Các gọi thử nghiệm cách tự động dựa vào chương trình test viết Bảng 4.6 Mơ hình thử nghiệm cho thực nghiệm Hostnam e Số lượng CPU RAM HDD web KMS STUN TURN core GB 50 GB 1 core 600 MB 20 GB 1 66 IP PORT 192.168.100.10 8443 KMS 1:35.237.119.74 8888 108.177.98.1 19302 158.68.221.98 3478 Thực hiện: Chạy server với đầu vào địa KMS tham số n để giới hạn gọi thực npm start ws_uri=ws://35.237.119.74:8888/kurento n=10 Thực test với TEST_CASE số gọi cần test env TEST_CASE=10 npm test Kết quả: 10 gọi thực thành cơng với chương trình test tự động Hình 4.8 Mơ tả thực thực nghiệm với chương trình test Tiếp thực gọi thứ 11, nhận thấy thực server bị tải (theo điều kiện giới hạn) 67 Hình 4.9 Kết gọi thứ 11 4.3.4 Thực nghiệm hệ thống với nhiều gọi có API GATEWAY Mô tả: Thực nghiệm thực tương tự thực nghiệm thứ 2, khác điều việc thực gọi thực background giống thực nghiệm giới hạn 10 gọi KMS Sử dụng thuật tải random để phân tải tới KMS Bảng 4.7 Mơ hình thử nghiệm cho thực nghiệm Hostnam e Số lượng CPU RAM HDD core GB 50 GB IP localhost PORT 8443 web API GATEWAY core GB 50GB KMS core 600 MB 20 GB KMS1: 35.237.119.74 KMS 2: 35.237.223.81 KMS 3: 35.237.9.153 8888 Thực hiện: 68 STUN TURN 1 localhost 108.177.98.1 158.68.221.9 8088 19302 3478 Chương trình chạy thực nghiệm 2, thêm vào giới hạn 10 gọi cho KMS npm start ws_uri=ws://35.237.119.74:8888/kurento ws_uri=ws://3 5.237.223.81:8888/kurento ws_uri=ws://35.237.9.153:8888/kurento n=10 Kết quả: Kết 10 gọi thành cơng giống thực nghiệm Hình 4.10 Mô tả thực thực nghiệm với chương trình test Tiếp thục thực gọi thứ 11 nhận thấy không giống trước, gọi thành cơng Hình 4.11 Kết thực gọi thứ 11 với thực nghiệm 69 4.4 Kết Kết thực nghiệm trình bầy tóm luợt lại bảng Bảng 4.8 Bảng kết thu thực nghiệm Các thành phần tham gia Khả KMS số gọi số gọi thành công Khả chịu tải ứng thực nghiệm Thời gian thực Thực nghiệm • Signaling • STUN • TURN • KMS Thực nghiệm • Signaling • STUN • TURN • KMS • API GATEWAY Thực nghiệm • Signaling • STUN • TURN • KMS • • • • • Thực nghiệm Signaling STUN TURN KMS API GATEWAY 10 10 1 11 11 1 10 11 10 nhỏ 30 4m /10 5m /10 giây/ giây /cuộc Nhận xét: • Đầu tiên ta thấy thực nghiệm khơng có API GATEWAY thời gian thiết lập • gọi nhanh so với việc thêm vào Điều dễ hiểu trao đổi phải qua gateway trung gian để xử lý Khi ta tăng số lượng KMS, với xây dựng API GATEWAY cho việc phân tải, số lượng gọi chương trình tăng nên, chứng thực nghiệm (với giới hạn KMS 10), 10 gọi thực xong tương tác với KMS nhất, sau gọi thứ 11 vào thực tải Điều trái ngược lại với thực nghiệm 70 CHƯƠNG KẾT LUẬN CHUNG 5.1 Những thành đạt Với yêu cầu xây dựng giải pháp phân cụm cho Kurento Media Server nhằm tăng cường khả mở rộng cho hệ thống WebRTC, báo cáo thu số kết sau: • Tìm hiểu về nội dung WebRTC, khó khăn gặp phải xây dựng • • ứng dụng với WebRTC Tìm hiểu kurento cách thực ứng dụng multimedia dựa kurento Nghiên cứu giải pháp nhằm cải thiện khả ứng dụng kurento đồng thời thích hợp giải pháp vào ứng dụng multimedia có sử dụng kurento 5.2 Một số hướng phát triển • • • Phát triển ứng dụng thật với đa tảng hoàn chỉnh (mobile/web/desktop) Nghiên cứu khả để thích hợp với nhiều ứng dụng multimedia với kurento Thực nhiều chức với khả xư lý cao ứng dụng video-call AR, Computer Vision… 71 72 TÀI LIỆU THAM KHẢO [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] “WebRTC.” [Online] Available: https://en.wikipedia.org/wiki/WebRTC B J Alan and C B Daniel, WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web 2007 S Loreto and R S Pietro, Real-time Communicate with WebRTC 2007 D A McGrew and K Norrman, “The Secure Real-time Transport Protocol (SRTP).” [Online] Available: https://tools.ietf.org/html/rfc3711 Randall Stewart, “Stream Control Transmission Protocol.” [Online] Available: https://tools.ietf.org/html/rfc4960 “The Datagram Transport Layer Security (DTLS).” [Online] Available: https://tools.ietf.org/id/draft-ietf-tls-dtls13-01.html “The IP Network Address Translator (NAT).” [Online] Available: https://tools.ietf.org/html/rfc1631 “Session Traversal Utilities for NAT (STUN).” [Online] Available: https://tools.ietf.org/html/rfc5389 “Traversal Using Relays around NAT.” [Online] Available: https://tools.ietf.org/html/rfc5766 “SDP: Session Description Protocol.” [Online] Available: https://tools.ietf.org/html/rfc4566 “Interactive Connectivity Establishment (ICE).” “Intel Collaboration Suite for WebRTC.” [Online] Available: https://software.intel.com/en-us/webrtc-sdk “VP8 Data Format and Decoding Guide.” [Online] Available: https://tools.ietf.org/html/rfc6386 “VP9.” [Online] Available: https://en.wikipedia.org/wiki/VP9 “H.264/MPEG-4 AVC.” [Online] Available: https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC “High Efficiency Video Coding (HEVC).” [Online] Available: https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding “Janus WebRTC Server: About Janus.” [Online] Available: https://janus.conf.meetecho.com/ “Jitsi Videobridge - scalable open source video conferencing for developers.” [Online] Available: https://jitsi.org/jitsi-videobridge/ “Licode.” [Online] Available: http://lynckia.com/licode/ “mediasoup.” [Online] Available: https://mediasoup.org/ “About Kurento and WebRTC — Kurento 6.8.1 documentation.” [Online] Available: https://doc-kurento.readthedocs.io/en/stable/user/about.html “Kurento API - Media Elemements and Media Pipelines.” [Online] Available: https://doc-kurento.readthedocs.io/en/stable/features/kurento_api.html “JSON-RPC 2.0 Specification.” [Online] Available: https://www.jsonrpc.org/specification “Kurento Protocol.” [Online] Available: https://dockurento.readthedocs.io/en/stable/features/kurento_protocol.html “5 Common Server Setups For Your Web Application | DigitalOcean.” [Online] Available: https://www.digitalocean.com/community/tutorials/5-common-serversetups-for-your-web-application “Comparing Load Balancing Algorithms.” [Online] Available: 73 https://www.jscape.com/blog/load-balancing-algorithms 74 ... NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đào Tuấn Anh XÂY DỰNG GIẢI PHÁP PHÂN CỤM CHO KURENTO MEDIA SERVER NHẰM TĂNG KHẢ NĂNG MỞ RỘNG CỦA CÁC HỆ THỐNG WEBRTC ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Truyền... dụng kurento giới thiệu Cuối giới thiệu tình phân tải phổ biến ứng dụng web Chương 3: Giải pháp phân cụm cho Kurento Media Server Chương trình bầy cách thực gọi với kurento, sau đưa giải pháp xây. .. hỏi khả mở rộng cách thêm nhiều server 27 Hình 2.13 Mơ tả kiến trúc phân tải load balancer Ưu điểm: • Cho phép mở rộng hệ thống cách thêm nhiều server • Có thể bảo vệ chống lại công DDOS cách