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ư Use Datagram Protocol (UDP) và giao thức điều khiển phiên như Real Time Streaming Protocol (RTSP).
[8] RTSP là một giao thức điều khiển trên mạng được thiết kế để sử dụng giao tiếp giữa máy Client và máy streaming Server. Giao thức này được sử dụng để thiết lập và điều khiển phiên giao dịch giữa các máy tính.
RTSP sử dụng TCP là giao thức để duy trì một kết nối đầu cuối tới đầu cuối và các thông điệp điểu khiển của RTSP được gửi bởi máy Client tới máy Server. Nó cũng thực hiện điều khiển lại các đáp trả từ máy Server tới máy Client.
Các lệnh cơ bản trong giao thức RTSP:
Lệnh Chức năng
Option Dùng để yêu cầu thiết lập phiên
Describe Dùng để yêu cầu gửi 1 bản tin mô tả chi tiết phiên giao dịch.
Setup Dùng để yêu cầu cấp phát tài nguyên
Play Dùng để yêu cầu trình chiếu video
Pause Dùng để yêu cầu tạm dừng trình chiếu video
Teardown Dùng để yêu cầu kết thúc phiên
26
Để thực hiện kỹ thuật streaming video theo giao thức RTSP nhất thiết máy Client phải gửi lên máy Server những yêu cầu sau và phải theo một trình tự nhất định.
Dưới đây chỉ ra một quá trình thiết lập phiên dựa trên giao thức RTSP
Hình 4. Một phiên làm việc dựa trên giao thức RTSP 3.3. Kiến trúc của hệ thống
27 Hệ thống thường gồm các thành phần :
- Server là một máy chủ đa phương tiện có dung lượng lớn quản lý quá trình kết nối của các máy trạm thông qua một cổng nhất định. Trên Server được cài đặt phần mềm hỗ trợ streaming video. Server bao gồm:
+ Hard Disk: Lưu trữ tập tin video của nhà cung cấp. + Server Manager:
o Tạo Server với port được lựa chọn, chờ người dùng kết nối tới. o Quản lý người dùng kết nối dựa trên IP.
o Quản lý những tập tin video đã được đưa vào cache.
o Quản lý việc lựa chọn gửi phần nào của tập tin video về cho người dùng. + Streaming Video Server:
o Khi nhận được yêu cầu từ phía người dùng lấy một tập tin video, Streaming Video Server tìm tập tin đó dưới ổ cứng và đẩy vào Caching Devide.
o Tại Caching Device, tập tin video được chia ra thành các frame và lưu trữ dưới dạng một cấu trúc cây Binary Tree.
o Sau đó từng frame sẽ được đưa qua một cơ chế nén và mã hóa trước khi gửi về người dùng.
-Client:
Khi người dung truy cập vào Web browser hoặc Media Player, chọn tập tin video cần xem và bấm play, lệnh yêu cầu play tập tin video sẽ được gởi lên Server.
Web browser hoặc Media Player sẽ nhận Software player và thực hiện kết nối với server.
Software player nhận các frame và thực hiện việc giải nén, giải mã trước khi hiển thị Video lên cho người dùng.
28
Mô hình hoạt động tổng quát của hệ thống:
Hình 6. Mô hình hoạt động tổng quát của hệ thống
3.4. Một số điểm tồn tại của dịch vụ video theo yêu cầu
[4]Theo hoạt động của mô hình Client-Server, thì máy chủ streaming sẽ đáp ứng tất cả các yêu cầu của máy khách, như thế khi số lượng máy khách tăng lên, đặc biệt với nhu cầu sử dụng dịch vụ của các hệ thống VoD ngày càng tăng như hiện nay, thì mô hình truyền thống còn bộ lộ những giới hạn sau:
- Giới hạn về chất lượng: Các máy streaming Server chính thường được đặt ở nơi rất xa. Điều này làm tăng số lượng các đường dẫn có sẵn cũng như số lượng các
Gửi yêu cầu kết
nối đến Server Nhận yêu cầu
Nhận thông báo kết nối thành công
Chấp nhận kết nối
Gửi yêu cầu dữ liệu Nhận yêu cầu
Xử lý dữ liệu rồi gửi về Client Nhận các frame, giải
nén, mã hóa rồi hiển thị cho người dùng
Client
Server
Server Manager Streaming video Server
29
"bước nhảy" của các gói dữ liệu, ảnh hưởng đến thời gian trễ của các gói tin và làm tăng xác suất mất gói tin, do đó ảnh hưởng đến chất lượng của gói tin nhận được.
- Giới hạn về khả năng mở rộng: Unicasting là phương pháp tiêu tốn đường truyền chủ yếu trên Internet. Vì mỗi người sử dụng thường phải tạo ra một kênh từ máy Client đến máy chủ để tải dữ liệu, điều này tiêu thụ băng thông đáng kể trong mạng và quá tải trên các máy chủ đa phương tiện chính, đặc biệt là khi nhiều người sử dụng cùng xem một nội dung cùng một lúc.
- Giới hạn về tương tác: Thời gian tín hiệu trên đường truyền từ máy chủ đến máy khách khá lâu, nên phía máy khách không thể thể hiện trên các đầu máy video với độ trễ thấp được.
- Giới hạn về chất lượng dịch vụ: Chất lượng dịch vụ tốt cho thấy băng thông được đảm bảo thì thời gian chờ ít, ngay cả khi tắc nghẽn. Tuy nhiên, Internet không thể cung cấp được dịch vụ đảm bảo chất lượng mà chỉ có thể cố gắng cung cấp dịch vụ tốt nhất.
Mô hình mạng ngang hàng P2P giúp giải quyết vấn đề này bằng cách loại bỏ thành phần Server và cho phép tất cả các thành phần khác tương tác với nhau một cách bình đẳng. Trong 1 mạng ngang hàng mỗi peer không chỉ download dữ liệu từ mạng mà còn upload dữ liệu để người dùng khác download. Do đó, công nghệ này không chỉ cho phép hệ thống đáp ứng được lượng lớn truy cập tăng đột biến mà còn có khả năng mở rộng quy mô. Hơn nữa, giải pháp P2P không cần đến bất kỳ một yêu cầu đặc biệt nào về phần cứng mạng nên rất dễ triển khai. Nên các ứng dụng P2P ngày càng phổ biến, trong số đó có thể kể ra các ứng dụng chia sẻ file (BitTorrent, uTorrent, eMule), các ứng dụng hội thoại qua mạng VoIP (Skype)…. Mặc dù vậy, việc xây dựng các ứng dụng video dựa trên mạng ngang hàng như dịch vụ video theo yêu cầu vẫn còn đang gặp nhiều khó khăn, thách thức. Khó khăn chủ yếu xuất phát từ những nhược điểm của mạng ngang hàng như mức độ tham gia đóng góp tài nguyên của các peer không đồng đều, các peer có thể tham gia hoặc ngắt kết nối khỏi hệ thống vào thời điểm bất kỳ .... Trong khi đó ứng dụng VoD lại là loại ứng dụng yêu cầu hiệu năng thời gian thực và băng thông lớn. Điều này đã
30
khiến cho việc xây dựng các ứng dụng VoD dựa trên mạng ngang hàng trở nên phức tạp hơn hẳn so với mô hình Client – Server.
Mô hình Local Proxy được đề xuất để xây dựng ứng dụng với mong muốn đạt được hiệu suất tốt và khắc phục những tồn tại của 2 mô hình Client-Server và P2P, cũng như tận dụng những lợi thế của 2 mô hình trên. Mục đích của giải pháp này là:
- Giữ nguyên thiết kế giao thức theo kiến trúc Client-Server để đơn giản. - Cài đặt giao thức sử dụng giao tiếp P2P để đạt được hiệu suất tốt hơn.
31
CHƯƠNG 4 - THIẾT KẾ ỨNG DỤNG THEO MÔ HÌNH LOCAL PROXY Với tính chất của dịch vụ cung cấp video theo yêu cầu, thì số lượng người dùng rất lớn, các tệp video được lưu trữ có dung lượng rất lớn. Nên khi số lượng người truy cập hệ thống tăng lên sẽ dẫn đến nghẽn cổ chai ở máy chủ, tiêu tốn lượng lớn băng thông mạng.
Việc áp dụng mô hình Local Proxy vào xây ứng dụng là một giải pháp được đưa ra với mục đích để việc thiết kế đơn giản, nhưng đạt được hiệu suất tốt.
4.1. Các chức năng của ứng dụng ở mô hình Client–Server
Trong giải pháp này, luận văn tập trung vào việc làm thế nào để ứng dụng được thiết kế giao tiếp với hệ thống P2P, vì thế luận văn sẽ lựa chọn những chức năng cơ bản của ứng dụng.
Chức năng cơ bản của ứng dụng ở mô hình Client – Server được liệt kê trong Bảng 1 dưới đây.
Bảng 1. Chức năng cơ bản của ứng dụng
TT Chức năng Mô tả chức năng
1
Đăng ký
Đăng ký tài khoản của người sử dụng trong hệ thống. - Người dùng nhập thông tin đăng ký tài khoản gồm các trường: username, pass, họ tên, email tại Client.
- Client gửi yêu cầu đăng ký tài khoản lên Server.
- Server nhận yêu cầu, kiểm tra xem username đã tồn tại trên hệ thống chưa?
+ Nếu chưa có, Server sẽ lưu các thông tin tài khoản của người dùng thành 1 file tài khoản người dùng.
+ Nếu có rồi, Server thông báo cho người dùng tài khoản đã tồn tại trên hệ thống.
2
Đăng nhập
Đăng nhập tài khoản của người sử dụng vào hệ thống - Người dùng nhập username, pass tại Client
32
- Client gửi yêu cầu đăng nhập lên Server.
- Server nhập yêu cầu, tiến hành kiểm tra username đã tồn tại trên hệ thống chưa?
+ Nếu có rồi, nó tiếp tục kiểm tra pass có đúng không? Nếu đúng sẽ thông báo cho người dùng đăng nhập thành công. Nếu không đúng, nó sẽ thông báo cho người dùng sai pass và yêu cầu nhập lại pass.
+ Nếu chưa có, nó thông báo cho Client là tài khoản chưa được đăng ký, vui lòng đăng ký để sử dụng hệ thống.
3 Search Tìm kiếm file video trong hệ thống
- Người dùng nhập từ khóa muốn tìm kiếm và thực hiện chức năng Search.
- Client gửi yêu cầu tìm kiếm cùng từ khóa cần tìm kiếm do người dùng nhập vào lên Server.
- Khi nhận được yêu cầu tìm kiếm do Client gửi lên, Server sẽ đọc các file lưu tại máy, kiểm tra trong <metadata> có thông tin liên quan đến từ khóa cần tìm không, nếu có sẽ trả về danh sách các file video có nội dung liên quan đến từ khóa cần tìm kiếm.
4 Play Trình chiếu video
- Người dùng chọn 1 file video muốn xem trong danh sách các file video được liệt kê trên màn hình hoặc từ kết quả Search tại Client.
- Client gửi yêu cầu xem video lên Server.
- Server nhận yêu cầu, gửi thông tin kết nối về cho Client. - Client gửi yêu cầu kết nối đến Server.
33
streaming server sẽ chia video thành các frame, sau đó nén, mã hóa và gửi lần lượt các frame vể Client sử dụng các giao thức ràng buộc về thời gian RTSP, RTP, RTCP. - Các frame về Client sẽ được lưu vào bộ đệm sau đó được giải nén, giải mã và hiển thị cho người dùng.
4.2. Cài đặt ứng dụng theo mô hình Local Proxy 4.2.1. Phân tích hệ thống 4.2.1. Phân tích hệ thống
Mục đích của luận văn là xây dựng ứng dụng trên P2P, nhưng tương tác giữa máy khách và máy chủ video vẫn giữ nguyên như trong Bảng 1. Ứng dụng được thực hiện theo mô hình trong Hình 3. Module Client không thay đổi, module máy chủ video là không cần thiết. Một module Local Streaming Server sẽ được cài đặt trên cùng máy Client, nó tiếp nhận tất cả các yêu cầu từ module Client như là 1 máy chủ streaming cục bố, nhưng chia sẻ thông qua mạng P2P với Local Streaming Server của các máy khác.
Để đơn giản, luận văn xin lựa chọn phương pháp sau:
- Trao đổi thông tin được tổ chức trong các tập tin và thư mục.
- Tập tin và thư mục được đồng bộ giữa các Local Streaming Server module sử dụng P2P hệ thống chia sẻ file như một cơ sở giao tiếp.
[2]Yêu cầu đối với Local Streaming Server và phần P2P của ứng dụng:
- Modules Local Streaming Server xử lý các yêu cầu từ modules Client tương ứng của mình.
- Khi một tệp video được gửi lên mạng, module Local Streaming Server có thể lưu trữ tệp video đó nếu thuộc phạm vi xử lý của mình.
- Modules Local Streaming Server luôn sẵn sàng và xử lý yêu cầu từ các Local Streaming Server khác.
- Không để mất dữ liệu khi một máy thoát ra khỏi mạng.
Bằng phương thức lưu trữ thông tin dưới cấu trúc file, tại mỗi máy sẽ có các thư mục chia sẻ:
34
Share: lưu các file [session_id]<filename>, nội dung file này chứa nội dung của file video có kèm thông tin mô tả (metadata) của video mà người dùng upload lên.
Dangky: lưu các file username.txt, nội dung file này chứa thông tin đăng ký của người dùng.
Logged-in: lưu các file [logged_in]<username>.txt thông tin trạng thái đăng nhập của người dùng.
Mỗi phiên giao dịch có 1 chỉ số session_id khác nhau, ta dùng hàm để lấy tham số session_id đặt vào trước tên của file video nhằm phân biệt 2 file video khi chúng có tên trùng nhau.
Trên cơ sở các chức năng trong Bảng 1, luận văn đã phát triển thêm và xây dựng ứng dụng dựa trên mô hình Local Proxy với các các chức năng như trong Bảng 2 và phân tích hoạt động của thành phần Local Streaming Proxy.
Bảng 2. Mô tả hoạt động của Local Streaming Server
STT Chức năng Hoạt động của Local Streaming Server
1 Đăng ký
- Tạo một file có dạng <username>.txt lưu trong thư mục Dangky bao gồm các thông tin: username, pass, họ tên, email…
2
Đăng nhập - Tìm file <username>.txt trong thư mục Dangky, nếu có, kiểm tra <pass> trong file <username>.txt
- Nếu đăng nhập thành công, lưu trạng thái đăng nhập thành file [logged_in]<username>.txt lưu vào thư mục Logged-in.
3 Upload - Tạo file [session_id]<filename> chứa nội dung của file video, thông tin mô tả (metadata) của file video và lưu vào thư mục Share.
4 Search - Đọc file, kiểm tra <metadata> của các file [session_id]<filename> có thông tin tìm kiếm?
35
+ Nếu không, gửi yêu cầu tìm kiếm lên mạng P2P.
5 Play Kiểm tra file [session_id]<filename> lưu trữ ở đâu.
+ Nếu file được lưu trữ tại Local Streaming Server thì nó sẽ thực hiện quá trình streaming video đến Client theo các giao thức ràng buộc về thời gian được thiết kế như trong mô hình Client – Server.
+ Ngược lại, nó sẽ gửi yêu cầu tìm kiếm file video lên mạng P2P. Khi xác định được địa chỉ lưu trữ file cần tìm, Local Streaming Server sẽ gửi yêu cầu xem video trực tiếp đến node lưu trữ video và thực hiện các giao thức ràng buộc về thời gian được thiết kế như trong mô hình Client–Server.
Khi áp dụng mô hình Local Proxy vào xây dựng ứng dụng, trên mỗi máy tính sẽ tích hợp 3 thành phần là modules Client, modules Local Streaming Server và thành phần P2P Agent.
36
4.2.2. Phân tích các module trong ứng dụng theo mô hình Local Proxy
Client module: Module này có thiết kế như thành phần Client trong mô hình Client-Server ở hình 5, phần mềm được cài đặt để trình chiếu video là VLC Player.
Client sẽ thực hiện việc gửi trực tiếp yêu cầu lên Local Streaming Server được cài đặt tại máy của Client. Sau đó Local Streaming Server sẽ thực hiện việc phân tích và đáp ứng yêu cầu cho Client.
- Local Streaming Server module: Trên mỗi máy tính sẽ cài đặt một module Local Streaming Server. Nó tương tác với module Client và cập nhật các dữ liệu cục bộ và xử lý yêu cầu của Client của chính nó. Local Streaming Server module đóng vai trò như một Streaming Server cục bộ. Chương trình được cài đặt để streaming video là Live555MediaServer.
- P2P Agent: Duy trì kết nối giữa các Local Streaming Server và chấp nhận yêu cầu chia sẻ, cập nhật, truyền tải dữ liệu trên mạng P2P thông qua các thao tác Put(filename), Get(filename), Search(filename), Delete(filename).
4.2.3. Giao thức sử dụng trong hệ thống P2P
Đối với hệ thống P2P, luận văn lựa chọn giao thức Kamdemlia
Các node Kademlia lưu trữ thông tin liên lạc của nhau để định tuyến các bản tin truy vấn. Với mỗi i sao cho 0≤ i ≤ 160, mọi node sẽ lưu trữ một danh sách về <địa chỉ IP, cổng UDP, Node ID> của các node nằm giữa 2i và 2i+1 tính từ bản thân nó. Ta gọi danh sách đó là các danh sách k-buckets. Mỗi k-bucket lưu trữ không quá k liên lạc với các node. Và phải có cơ chế quản lý thay thế và xóa liên lạc để tối ưu