M ở đầ u 5
3.5.2. Lớp WebcamClient 36
(a) (b) (c)
Hình 17: (a) Các thuộc tính (b) Các phương thức (c) Lớp lồng
Tại mỗi node, lớp WebcamClient (Hình 17) thực hiện 2 công việc: xử lý và hiển thị
luồng hỉnh ảnh thu được từ máy chủ, đồng thời chuyển tiếp hình ảnh cho các node khác.
Một số phương thức quan trọng
// Hàm khởi tạo // Tham số:
// gui: giao diện chương trình // localNode: thể hiện của lớp Node
public WebcamClient(MainForm gui, Node localNode)
// Lắng nghe kết nối đến và lưu dữ liệu vào hàng đợi listReceivePackets
public void receive()
// Hàm xử lý gói tin nhận được
public void processPacket()
// Hàm lấy giá trị các trường từ gói tin nhận được // Tham số:
// packet: gói tin nhận được dưới dạng chuỗi byte // limitID: lưu thông tin về giới hạn chuyển tiếp // imageID: lưu số thứ tự của frame
// numberOfPart: lưu số phần của frame đó // partID: lưu số thứ tự của phân mảnh
// fragmentImage: lưu dữ liệu của phân mảnh
public void decodePacket(byte[] packet, ref long limitID, ref short
imageID, ref short numberOfPart, ref short partID, ref byte[] fragmentImage)
// Hàm đóng gói dữ liệu để gửi đi trên mạng // Tham số:
// limitID: giới hạn chuyển tiếp // imageID: stt của frame
// numberOfPart: số phân mảnh của frame // partID: stt của phân mảnh
// fragment: dữ liệu phân mảnh
// Hàm trả về dữ liệu dạng chuỗi byte để gửi qua mạng
public byte[] PacketToByte(long limitID, short imageID,short
numberOfPart, short partID, byte[] fragment) // Hàm hiển thị video
public void show()
// Hàm hiển thị từng hình ảnh // Tham số:
// image: hình ảnh dạng chuỗi byte
public void showRemoteWebcam(byte[] image)
// Hàm gửi chuyển tiếp gói tin theo thuật toán multicast
public void forwardPacket(long limitID, short imageID,short
numberOfPart, short partID, byte[] fragmentImage)
Khắc phục nhược điểm của UDP là không có cơ chế sắp xếp lại gói tin đến không
đúng thứ tự, lớp WebcamClient đã sử dụng 2 lớp con Image và ProcessImage (Hình 18)
để thực hiện việc đó. Lớp Image được sử dụng để lưu các mảnh của cùng một frame. Lớp ProcessImage thực hiện kiểm tra xem đã nhận đủ các phần chưa hoặc đã hết thời gian timeout chưa rồi tiến hành ghép các phần lại với nhau.
Hình 18: Lớp Image và lớp ProcessImage
Chương IV: Kết quảđánh giá hệ thống 4.1. Kết quả thử nghiệm
4.1.1. Môi trường chạy thử
Chương trình được chạy thử trên môi trường mạng LAN với tốc độ đường truyền trong điều kiện lý tưởng là 100 Mbps.
Mỗi máy khách kết nối mạng qua cổng Ethenet tốc độ 100 Mbps, RAM 1 G, CPU 2.4 GHz.
Máy chủ có cấu hình RAM 3G, CPU 2x2.4, kết nối Ethenet 100 Mbps.
Quá trình chạy thử diễn ra nhiều lần với số lượng máy khách tăng dần bắt đầu với 2 máy và tối đa là 7 máy.
4.1.2. Kết quảđạt được
Qua quá trình quan sát ta có thể thấy được từng hình ảnh hiển thị rõ nét, tuy nhiên về thời tốc độ hiển thị hình ảnh vẫn còn chậm ( số hình / s) chính vì vậy gây ra hiện tượng dật hình gây khó chịu cho người xem.
4.2. Kết quảđánh giá hiệu năng
Với mô hình 7 máy tính cả máy chủ, ta có băng thông tiêu tốn của các máy đo được (số liệu trong bảng giá trị trung bình):
Node ID Upload Download
3724 110 KB/s 110 KB/s 7620 0 110 KB/s 8598 (server) 0 330 KB/s 13347 110 KB/s 110 KB/s 15105 0 110 KB/s 19948 110 KB/s 110 KB/s 21901 0 110 KB/s
Ta có dễ dàng nhận thấy rằng, server có trách nhiệm phải truyền video cho 6 máy mà bằng thông tiêu tốn chỉ là 330 KB/s. Nếu sử dụng phương pháp truyền tin unicast thông thường thì băng thông tiêu tốn phải là 660 KB/s.
Chương V: Kết luận
Trên thế giới, các ứng dụng mạng ngang hàng nói chung và multicast trên mạng ngang hàng đang được nghiên cứu và phát triển một cách mạnh mẽ. Nó sẽ và đang dần thay thế các mô hình mạng truyền thống như mô hình khách – chủ hay IP multicast.
Trong khóa luận đã trình bày một cách ngắn gọn về cách thứ hoạt động của mạng ngang hàng, cụ thể là Chord để từ đó ta có thể thấy được những lợi thế của nó số với mô hình mạng truyền thống đó là khả năng phân tán, không phụ thuộc quá nhiều vào hạ tầng mạng phía dưới…
Để làm rõ hơn ưu điểm của mạng ngang hàng, khóa luận đã xây dựng thửứng dụng truyền video streaming multicast thời gian thực trên nền mạng Chord. Trong ứng dụng đã sử dụng webcam để tạo luồng dữ liệu thời gian thực, sử dụng Chord để tạo cây multicast. Qua bước đầu thử nghiệm trên mạng LAN ta có thể thấy được ưu điểm của nó là máy chủ
không phải chịu tải quá nặng và việc truyền multicast hoàn toàn không phụ thuộc vào router.
Tuy nhiên ứng dụng xây dựng vẫn còn một số nhược điểm, không có cơ chế mã hóa video, mới chỉ nén từng frame theo dạng JPEG, chính vì vậy tỷ lệ nén vẫn còn thấp. Một nhược điểm nữa là độ trễ giữa các node ở lớp dưới cây multicast so với các node ở lớp trên chênh lệch nhau khá nhiều. Hiện tại khi một node bị lỗi hoặc rời mạng, việc phục hồi cây multicast vẫn dựa vào giao thức đồng bộ được xây dựng trên giao thức Chord. Với việc giao thức này chỉ chạy định kỳ sẽ khiến cho quá trình khôi phục diễn ra chậm gây gián đoạn luồng video streaming trong khoảng thời gian dài.
Với những kết quảđạt được và những mặt còn tồn tại của việc xây dựng ứng dụng, sau đây là một số hướng phát triền tiếp theo :
Khắc phục những nhược điểm đã nêu ở trên.
Tài liệu tham khảo
[1] http://en.wikipedia.org/wiki/SHA_hash_functions
[2] http://www.ietf.org/rfc/rfc1889.txt
[3] http://www.ietf.org/rfc/rfc3170.txt
[4] http://www.rfc-editor.org/rfc/rfc3376.txt
[5] B. Zhao, K. Kubiatowicz, and A. Joseph, “Tapestry: An infrastructure for fault- resilient wide-area location and routing,” Tech. Rep. UCB//CSD-01-1141, University of California at Berkeley Technical Report, April 2001.
[6] Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan. “Chord: A scalable peer-to-peer lookup protocol for internet applications”.
[7] Mojtaba Hosseini, Dewan Tanvir Ahmed, Shervin Shirmohammadi, and Nicolas D.Georganas. “A Survey of Application-Layer Multicast Protocols”.
[8] Sameh El-Ansary, Luc Onana Alima, Per Brand, Seif Haridi Swedish Institute of Computer Science, Kista, Sweden IMIT-Royal Institute of Technology, Kista, Sweden. “Effcient Broadcast in Structured P2P Networks”
[9] Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, Scott Shenker. “A Scalable Content-Addressable Network”
[10] Wenwu Zhu, Member, IEEE, Dapeng Wu, Student Member, IEEE, Yiwei Thomas Hou, Member, IEEE, Ya-Qin Zhang, Fellow, IEEE, Jon M. Peha, Senior Member, IEEE. “Streaming Video over the Internet: Approaches and Directions”