Tải bản đầy đủ (.pdf) (48 trang)

đồ án tối ưu hóa truyenf multicast trogn giải thuật truyền dữ liệu video stream ming

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.47 MB, 48 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Đỗ Xuân Vinh

TỐI ƯU HÓA CÂY TRUYỀN MULTICAST TRONG GIẢI
THUẬT TRUYỀN DỮ LIỆU VIDEO STREAMING TRÊN
MẠNG NGANG HÀNG

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin

HÀ NỘI - 2016


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Đỗ Xuân Vinh

TỐI ƯU HÓA CÂY TRUYỀN MULTICAST TRONG GIẢI
THUẬT TRUYỀN DỮ LIỆU VIDEO STREAMING TRÊN
MẠNG NGANG HÀNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin

Cán bộ hướng dẫn: TS. Nguyễn Hoài Sơn

HÀ NỘI - 2016



VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY

Đỗ Xuân Vinh

OPTIMIZING MULTICAST TREE STRUCTURE FOR
VIDEO STREAMING ON P2P NETWORKS

Major: Information Technology

Supervisor: TS. Nguyễn Hoài Sơn

HÀ NỘI - 2016


LỜI CẢM ƠN
Trước tiên, em xin bày tỏ lòng biết ơn chân thành và sâu sắc nhất tới Thầy giáo,
TS Nguyễn Hoài Sơn đã tận tình chỉ bảo, hướng dẫn, động viên và giúp đỡ em trong
suốt quá trình thực hiện đề tài.
Em xin gửi lời cảm ơn sâu sắc tới quý Thầy Cô giáo trong Khoa Công nghệ
thông tin nói riêng và trong trường Đại học Công nghệ - Đại Học Quốc Gia Hà Nội
nói chung, đã truyền đạt kiến thức quý báu cho em trong những năm học qua.
Con xin nói lên lòng biết ơn vô hạn đến Bố Mẹ, Bố Mẹ luôn là nguồn chăm sóc,
động viên, khích lệ con trên con đường học vấn.
Cuối cùng, xin gửi lời cảm ơn tới các anh chị và các bạn, đặc biệt là thành viên
lớp K57CLC đã ủng hộ, giúp đỡ trong suốt quá trình tôi học tập trên giảng đường đại
học và thực hiện đề tài.
Tôi xin chân thành cảm ơn.

Hà nội, ngày 28 tháng 04 năm 2016

Sinh viên

Đỗ Xuân Vinh


TÓM TẮT
Tóm tắt –Công nghệ video streaming trên mạng P2P đang càng ngày càng trở nên quan
trọng với sự phát triển của Internet bởi vì hầu hết người dùng đều không có điều kiện truy cập
đủ nhanh để tải tất cả các tập tin video lớn một cách nhanh chóng. Với Streaming video, trình
duyệt của người dùng có thể bắt đầu hiển thị dữ liệu trước khi nhận được toàn bộ tập tin. Tuy
nhiên, công nghệ truyền video theo dòng này vẫn phải đối mặt với rất nhiều vấn đề để nâng
cao chất lượng truyền tải, giảm thiểu độ trễ mạng cũng như tỷ lệ mất gói tin trên đường
truyền. Tổ chức mạng lưới tầng ứng dụng được cho là một giải pháp hứa hẹn đối với video
streaming để giải quyết những vấn đề đó. Một giải pháp đã đề ra là tổ chức các nút trong
mạng thành một cấu trúc dạng lưới. Cấu trúc này khá linh hoạt khi có hiện tượng một nút bất
kỳ ra/vào mạng tuy nhiên các nút trong mạng lại phải chịu một độ trễ thời gian lớn vì mỗi nút
đều phải kéo dữ liệu cần phát từ các nút hàng xóm của nó theo một cơ chế riêng biệt.
Để có được một giải pháp tối ưu hơn trong việc xây dựng cấu trúc mạng, khóa luận này
sẽ đưa ra một một giải pháp mới cho công nghệ video streaming trên mạng P2P. Chúng tôi đã
đề xuất một cấu trúc cây cân bằng với việc tối ưu độ cao của cây, giải quyết tính động của nút
để duy trì cấu trúc cây và việc tổ chức các liên kết kéo dữ liệu từ các cây con khác nhằm giảm
khoảng trễ giữa hai quá trình kéo và đẩy dữ liệu. Cơ chế của chúng tôi cũng được chứng minh
trong kết quả của việc mô phỏng.
Từ khóa: video streaming, cấu trúc mạng, cấu trúc cây cân bằng.


ABSTRACT
Abstract - In the 90s of the last century, watching a video on the internet seemed to be
impossible. With the recent outbreak of network technology, together with the powerful
development of digital era, multimedia applications which include video streaming become

indispensable for many people in many parts of the world.
However, developing a video streaming application always faces many uphill problems
which needs handling. A good video streaming application meeting user’s criteria is required
to have high bandwidth and low latency, enhancing online video quality transmission. There
have been many proposed measures to solve this problem, one of which is to organize
streaming video network. There are two main methods to establish a video transmitting
structure. One of which is the natural tree structure, however, this structure does not ensure its
solid feature in case of churn node. An alternative measure is the mesh structure which
entirely overcome the weaknesses of the tree one, maintaining network structure in case of
churn node. However, the mesh structure has a long time delay because each node has to
carry required data from its neighbors according to a separate mechanism.
To obtain a more effective solution to establish network structure, this thesis offers a
method of setting a video streaming multicast transmitting structure on P2P. We have
recommended a balanced tree structure by multi-distribution with high optimization, handling
the fluctuation of node to maintain the tree structure and organizing the data links among
others seedlings to reduce the delay between push and pull data. Our mechanism has been
also demonstrated in the results of simulation.
Keywords: video streaming, network structure, balance tree structure.


LỜI CAM ĐOAN
Tôi xin cam đoan các kỹ thuật sử dụng ngữ cảnh xã hội trong hệ tư vấn trên
phương tiện xã hội được trình bày trong khóa luận này do tôi thực hiện dưới sự hướng
dẫn của TS. Nguyễn Hoài Sơn.
Tất cả những tham khảo từ các nghiên cứu liên quan đều được nêu nguồn gốc
một cách rõ ràng từ danh mục tài liệu tham khảo trong khóa luận. Trong khóa luận,
không có việc sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ
về tài liệu tham khảo.
Hà Nội, ngày 28 tháng 4 năm 2016
Sinh viên


Đỗ Xuân Vinh


MỤC LỤC

MỞ ĐẦU

1

CHƯƠNG 1: CÁC KIẾN THỨC LIÊN QUAN

5

1.1. Giới thiệu về video streaming

5

1.2. Nén dữ liệu

6

1.3. Điểu khiển chất lượng dịch vụ tầng ứng dụng

9

1.4. Dịch vụ phân phát video trên đường truyền

9


1.5. Máy chủ (streaming server)

9

1.6. Các giao thức video streaming

10

1.7. Cơ chế đồng bộ video streaming

10

CHƯƠNG 2: TỔNG QUÁT

12

2.1. MDC

12

2.2. Giới thiệu chung về cấu trúc cây.

12

CHƯƠNG 3: CẤU TRÚC CÂY CÂN BẰNG VÀ CÁC VẤN ĐỀ ĐẶT RA. 14
3.1. Cấu trúc cây cân bằng.

14

3.2. Các vấn đề đặt ra.


14

3.2.1. Khi một nút tham gia vào mạng
3.2.2. Khi một nút rời khỏi mạng.
3.2.3. Tối ưu cây cân bằng.
CHƯƠNG 4: XÂY DỰNG CÂY CÂN BẰNG.

14
15
16
18


4.1. Khi một nút tham gia vào mạng.

18

4.2. Khi một nút rời khỏi mạng.

20

4.2.1 Điều kiện trước.
4.2.2. Cơ chế phát hiện nút rời khỏi mạng.
4.2.3. Quy trình xử lý một nút rời khỏi mạng.
4.3. Tối ưu hóa cây cân bằng.
4.3.1. Điều kiện trước.
4.3.2. Quy trình cơ chế Switching.

21

22
22
26
26
27

CHƯƠNG 5: MÔ PHỎNG VÀ ĐÁNH GIÁ.

33

5.1. Cài đặt mô phỏng.

33

5.1.1. Cấu trúc:

33

5.1.2. Cài đặt mô phỏng.

34

5.2. Kết quả thí nghiệm.

34

5.2.1. Xây dựng cây cân bằng dựa vào cơ chế ngẫu nhiên.

34


5.2.2. Xây dựng cây cân bằng theo cơ chế tổng số nút và băng thông.

35

CHƯƠNG 6: KẾT LUẬN VÀ CÔNG VIỆC TƯƠNG LAI.

37

6.1. Kết luận.

37

6.2. Công việc tương lai.

38

TÀI LIỆU THAM KHẢO

38


MỞ ĐẦU
Với sự bùng nổ của Internet trên thế giới hiện này, các ứng dụng đa phương tiện
trong đó có video streaming đang trở nên rất phổ biến với lượng người dùng khổng lồ.
Theo thống kê, riêng tại Mỹ, đã có khoảng 33 tỷ video được xem trong tháng 12-2012
(nguồn comScore), hơn một tỷ người dùng mạng xã hội video Youtube (gần một phần
ba tổng số người sử dụng Internet). Điều đó đã cho thấy tầm quan trọng và sự lớn
mạnh không ngừng của các ứng dụng video streaming. Các ứng dụng video streaming
ngày nay thường cần phải truyền một lượng dữ liệu lớn tới nhiều người dùng với yêu
cầu độ trễ tối thiểu và đảm bảo chất lượng xem video. IP multicast[5] với khả năng tối

ưu hóa đường truyền là một giải pháp tốt cho vấn đề này. Tuy nhiên việc triển khai IP
multicast lại nhược điểm lớn đó 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 thông
không tin cậy. Nhằm khác phục những nhược điểm này, việc triển khai multicast tầng
ứng dụng (ALM) trên mạng P2P không làm thay đổi hạ tầng mạng phía dưới là một
phương thay thế hữu hiệu cho IP multicast. Trong phương pháp truyền dữ liệu ALM,
một nút không chỉ nhận dữ liệu từ nguồn mà nó còn chuyển tiếp dữ liệu nhận được cho
các nút khác, do vậy sẽ giảm thiểu việc tải dữ liệu từ server streaming.
Tuy nhiên, nhiều vấn đề mới nảy sinh ra trong phương pháp này, cụ thể là, giải
quyết vấn đề vào/ra của một nút bất kỳ cùng với việc phân phối dữ liệu lớn và các vấn
đề về độ trễ trong các ứng dụng video streaming. Đã có nhiều đề xuất được đưa ra,
một trong số đó là tổ chức các nút trong mạng thành một cấu trúc phân phối dữ liệu
dạng một cây đơn hoặc nhiều cây tập hợp lại hay một cấu trúc dạng lưới. Trong cấu
trúc cây đơn[6][7], dữ liệu từ nút nguồn sẽ được truyền xuống các nút con của nó và
các nút này lại chuyển tiếp dữ liệu tới các nút con của chúng, qúa trình truyền dữ liệu
kết thúc khi nút các nút lá nhận được toàn bộ dữ liệu. Cấu trúc cây đơn là một cấu trúc
cho phép ta dễ dàng thiết lập vì sự đơn giản nhưng cấu trúc này không đảm bảo sự
công bằng giữa các nút khi mà các nút trong của cây(các nút không phải là nút nguồn
và không phải là nút lá) phải đóng góp lượng lớn băng thông của mình vào mạng
chung, còn các nút lá thì không đóng góp băng thông của chúng trong việc truyền dữ
liệu trong mạng. Cấu trúc cây đơn là một cấu trúc không linh hoạt với trường hợp một
nút bất kỳ rời khỏi mạng, hệ quả gây ra sẽ làm cho các nút con của nút đó không thể
tiếp tục truyền phát video streaming cho đến khi cây được tái cấu trúc lại. Nút rời khỏi
mạng càng gần nút nguồn, số lượng các nút bị ảnh hường càng lớn.

1


Để khắc phục những vấn đề trên, cấu trúc nhiều cây kết hợp là một giải pháp
mới.[8][9] Trong cấu trúc nhiều cây kết hợp này, các nút trong mạng được tổ chức

thành nhiều cây khác nhau, nhưng có chung gốc là nút nguồn sao cho các nút trong
của cây này sẽ là các nút lá của tất cả cây khác. Không giống như cấu trúc cây đơn,
dòng dữ liệu từ nguồn sẽ được chia nhỏ thành nhiều luồng dữ liệu con sử dụng phương
pháp mã hóa MDC(Multiple Description Coding) hoặc Layered Video. Mỗi luồng dữ
liệu con đó sẽ được phân phối tới các nút qua một cây con trong mạng. Tuy nhiên, để
xây dựng được mạng lưới cấu trúc nhiều cây kết hợp này, tất cả các nút trong mạng
phải có băng thông như nhau, không thì hiệu suất truyền dữ liệu toàn mạng sẽ bị giảm
đáng kể, đây là một yêu cầu khó khăn đối với một mạng lưới thực tế. Không những
thế, các nút trong mạng vẫn phải chịu một thời gian bộ đệm lớn do thời gian truyền tải
các luồng dữ liệu nhỏ là khác nhau. Hơn nữa, cấu trúc này rất khó và phức tạp để thiết
lập và duy trì mỗi khi có hiện tượng các nút/ra vào cây.
Phương pháp tiếp cận tiếp theo là cấu trúc dạng lưới. [10][11][12][13]Cấu trúc
dạng lưới được tạo thành bởi một mạng các nút liên kết với nhau, các nút đó sẽ chọn
một số nút, được gọi là các nút hàng xóm, để kéo dữ liệu về trong suốt quá trình truyền
tin. Giống như mô hình nhiều cây kết hợp, dòng dữ liệu từ nguồn cũng sẽ được chia
nhỏ thành nhiều luồng dữ liệu con sử dụng phương pháp mã hóa MDC(Multiple
Description Coding) hoặc Layered Video. Hướng tiếp cận này có thể giảm thiểu tối đa
vấn đề một nút nào đó trong danh sách kéo dữ liệu về có băng thông không lớn, nó sẽ
lựa chọn và kéo dữ liệu cần thiết về từ một nút thích hợp khác. Hơn nữa, cấu trúc dạng
lưới tối ưu hơn cấu trúc dạng cây về việc có một nút bất kỳ ra vào mạng, nhưng nó lại
chịu một độ trễ lớn hơn và yêu cầu về cơ chế lập lich kéo dữ liệu phức tạp .
Với những vấn đề đã nếu ra ở trên, việc xây dựng một cấu trúc mạng P2P trên
tầng ứng dụng là một bài toán cần được giải quyết. Cấu trúc này phải đảm bảo được
những yêu cầu về độ trễ cũng như chất lượng video trên mỗi nút trong mạng, đặc biệt
là tối ưu cấn đề độ trễ dữ liệu ở các nút lá. Ngoài ra, cấu trúc mạng mà chúng tôi mong
muốn đạt được cũng phải linh hoạt khi có hiện tượng vào/ra của một nút bất kỳ sao
cho các nút khác ít bị ảnh hưởng đến và cấu trúc mạng tái ổn định một cách nhanh
nhất. Hơn nữa, chúng tôi cũng cố gắng xây dựng một cấu trúc để có thể áp dụng các cơ
chế khuyến khích người dùng đóng góp băng thông của họ vào mạng lưới truyền dữ
liệu chung.

Trong khóa luận này, chúng tôi đưa ra một cơ chế mới cho việc xây dựng cấu
trúc các nút trong mạng P2P trên tầng ứng dụng. Trong cơ chế của chúng tôi, các nút
trong mạng sẽ được tổ chức thành K cây con riêng biệt, có chung gốc là nút nguồn. Dữ

2


liệu nguồn sẽ được chia thành k dòng nhỏ và phân phát mỗi dòng cho một cây con
trong mạng bằng cơ chế đẩy dữ liệu. Mỗi node cũng tự tạo cho mình k-1 liên kết kéo
với k-1 các nút ở k-1 cây con khác và nhận k-1 gói dữ liệu ở các dòng con đó thông
qua liên kết kéo dữ liệu. Cơ chế của chúng tôi giải quyết được hiện tượng tắc nghẽn
dữ liệu bên trong mỗi nút và đảm bảo tất cả các nút có đủ dữ liệu để có thể trao đổi với
các nút khác.
Khác với các phương thức streaming khác, cơ chế của chúng tôi là tiền đề để xây
dựng lên cơ chế công bằng truyền, cơ chế khuyến khích người dùng đóng góp băng
thông của họ nhiều hơn vào mạng, những ai cho người khác kéo dữ liệu nhiều hơn thì
sẽ được ưu tiên hơn trong việc kéo dữ liệu từ nút khác. Chúng tôi đề xuất một cấu trúc
cây cân bằng để tối ưu các cơ chế phát tán dữ liệu trong mạng P2P và đảm bảo chất
lượng dịch vụ video streaming. Những đóng góp chủ yếu trong khóa luận này là:
 Việc xây dựng lên cấu trúc của một cây cân bằng: một cây cân bằng có nghĩa là
tổng số nút và tổng băng thông sẵn có phải tương tự nhau ở mỗi cây con có nút gốc là
một nút bất kỳ trong mạng. Hơn thế nữa, nút có băng thông cao hơn sẽ được đẩy lên
level trên trong cây. Điều này sẽ tối ưu hóa độ cao của cây, giảm độ trễ dữ liệu ở các
nút có level cao.
 Thiết kế cơ chế tái cấu trúc khi có một nút tham gia vào mạng hay rời khỏi
mạng. Chúng tôi cố gắng hạn chế tối thiểu số các nút bị ảnh hưởng và thời gian để
thiết lập lại cây mỗi khi có hiện tượng nút ra/vào mạng.
 Thiết kế cơ chế quản lý phân quyền để đảm bảo khả năng mở rộng của mạng.
Nó không cần bất cứ một nút nào đó giữ thông tin chung của toàn mạng.
 Khóa luận đã đánh giá hiệu suất giải pháp bằng bộ mô phỏng. Kết quả mô

phỏng chỉ ra rằng hệ thống đề xuất của chúng tôi có thể cải thiện chất lượng dịch vụ
truyền phát video streaming ngay cả trong trường hợp các nút ra/vào mạng thường
xuyên.
Phần còn lại của khóa luận sẽ bao gồm những nội dung sau:
Chương 1: Các kiến thức liên quan.
Mô tả các kiến thứ liên quan đến khóa luận như công nghệ viedoe streaming, các
phương pháp nén dữ liệu và một số phần khác.
Chương 2: Tổng quát
Trong phần này các kiến thức tổng quát sẽ được đề cập đến. Chúng tôi sẽ giới
thiệu về phương pháp mã hóa dữ liệu MDC (Multiple Description Coding) và mô tả
chung về cấu trúc cây áp dụng trong khóa luận trước khi đi vào mô tả chi tiết.
Chương 3: Cấu trúc cây cân bằng và các vấn đề đặt ra.
3


Việc mô tả chi tiết về cấu trúc của một cây cân bằng sẽ được đề cập đến trong
phần này. Cùng với đó sẽ là các vấn đề cần được giải quyết khi xây dựng một cây cân
bằng sao cho có một kết quả tối ưu nhất.
Chương 4: Xây dựng cây cân bằng.
Trong phần bốn, các cơ chế giải quyết các vấn đề nút ra/vào và tối ưu độ rộng
của cây sẽ được đưa ra và giải thích chi tiết, rõ ràng.
Chương 5: mô phỏng và đánh giá.
Việc thực hiện chương trình mô phòng, đưa ra kết quả vào đánh giá kết quả sẽ
được đưa ra trong phần 5
Chương 6: kết luận và công việc tương lai.

4


Chương 1: Các kiến thức liên quan.

1.1.

Giới thiệu về video streaming
Việc xem một video trên mạng đã không còn là lạ lẫm với phần đông con người
chúng ta trong vòng một thập kỷ trở lại đây. Loại dữ liệu đa phương tiện này có vai trò
quan trọng trong ngành truyền thông và nhu cầu giả trí của con người. Trong thời kỳ
sơ khai của công nghệ, một video được xử lý và truyền đi dưới dạng analog( tín hiệu
dạng tương tự). Nhưng với sự phát triển vượt bậc của ngành công nghệ thông tin nói
riêng và các ngành khoa học nói chung, công nghệ thế giới đã mở ra một cuộc cách
mạng lớn về truyền thông video trên mạng internet. Ở đây, các cơ chế truyền dữ liệu
video của chúng ta được chia ra làm hai loại chính, thứ nhất truyền dữ liệu theo cơ chế
download và thứ hai là truyền dữ liệu theo cơ chế streaming( truyền dữ liệu theo
dòng). Trong cơ chế download, một người dùng bất kỳ muốn xem được nội dung của
một video, họ sẽ phải download toàn bộ dữ liệu video đó về máy của họ, sau đó mới
trình chiếu video trên một ứng dụng nào đó. Chính vì tính chất này, cho nên một video
trong cơ chế download sẽ có một chất lượng rất cao, không bị giật, mất dữ liệu giữa
chừng nhưng người dùng sẽ phải chờ một thời gian khá lâu, nhiều khi đến mức không
chấp nhận được để đợi quá trình download toàn bộ video về máy. Đối lập với phương
pháp này, trong cơ chế truyền dữ liệu theo dòng, streaming video sử dụng cách thức
phát lại các đoạn video được lưu trữ trên các máy tính trên mạng tới người dùng đầu
cuối muốn xem đoạn video mà không cần tải đoạn video đó về trên máy tính. Về bản
chất, streaming video là quá trình chia nhỏ file video thành các frame, rồi lần lượt gửi
từng frame tới một bộ đệm trên máy tính của người xem và hiển thị nội dung frame đó.
Với đặc tính như vậy thì streaming video là kỹ thuật cũng khá phức tạp để triển khai.
Nhưng với những lợi ích mà kỹ thuật streaming video đem lại, chúng ta hoàn toàn có
thể triển khai được kỹ thuật này trên thực tế.

5



Hình 1.1: Quy trình trong Video Streaming.
Hình 1 thể hiện cấu trúc quy trình trong một cơ chế video streaming. Ban đầu dữ
liệu thô được nén lại thông qua bộ nén dữ liệu, và được lưu trữ tại thiết bị lưu trữ bên
trong server. Sau đó khi có yêu cầu từ client thì server sẽ lấy các dữ liệu tương ứng đã
được nén lại trong thiết bị lưu trữ, và chuyển giao tới cho bộ phận điều khiển chất
lượng dịch vụ tầng ứng dụng. Bộ phận này tùy thuộc vào yêu cầu của ứng dụng, tình
trạng mạng để tạo ra các dòng lưu lượng hợp lý. Các giao thức tầng giao vận sẽ các
trách nhiệm gửi dữ liệu thông qua Internet tới client. Khi các gói tin được lưu truyển
trên mạng, nó có thể bị mất hoặc là có độ trễ lớn khi mạng bị tắc nghẽn. Để hỗ trợ chất
lượng video/audio truyền tải, các dịch vụ hỗ trợ truyền thông đa phương tiện liên tục
được triển khai. Khi các gói tin đến được client thành công, nó được chuyển lên tầng
giao vận, rồi tiếp đó là các bộ phận điều khiển chất lượng dịch vụ tầng ứng dụng. Sau
đó chúng được giải mã để cho ra các dữ liệu như dữ liệu thô ban đầu, tiếp theo để có
thể sử dụng được những dữ liệu này, cần phải sử dụng bộ đồng bộ hóa đa phương tiện
để động bộ hóa video và audio một cách chuẩn xác.
Vậy tức là mỗi một hệ thông video streaming cần thiết phải có sáu thành phần
tương với sáu bước thao tác như trên, bây giờ ta sẽ đi cụ thể từng thành phần đó.
1.2.

Nén dữ liệu
Một video thô chắc chắn phải được nén lại trước khi được truyền tải trên mạng
internet, để giảm thiểu dung lượng của dữ liệu truyền tải và tối ưu hiệu quả truyền một
cách tốt nhất. Đồng thời, khi nhận được dữ liệu thì người dùng cần phải giả nén để có

6


thể trình chiếu video mà mình nhận được. Có hai kiểu nén dữ liệu cơ bản là kiểu nén
không mở rộng (non – scalabel compress) và kiểu nén mở rộng (scalable compress).
Phương pháp nén không mở rộng: nén dữ liệu không mở rộng là phương pháp

nén toàn bộ dữ liệu thành một dòng bit. Xuất phát từ video gốc, toàn bộ dữ liệu sẽ trải
qua các bước DCT( biến đổi cosin rời rạc), Quantization(lượng tử hóa), VLC (variable
length coding) và tạo thành một dòng bit đã được nén. Quy trình giải mã dữ liệu cũng
được thể hiện rõ ràng trong hình 1.2(b). Một luồng bit được giải mã sẽ trải qua ba
bước sau: VLD(Variable Length Decoding), IQ(Inverse Quantization) và
IDCT(inverser DCT). Phương pháp này không tương thích với việc điều khiển chất
lượng video truyền đi để có thể đáp ứng nhu cầu băng thông và độ trễ của người dùng,
video luôn được nén ở một chất lượng cố định và không thể thay đối.
Phương pháp nén mở rộng:Trong phương pháp nén mở rộng dữ liệu ban đầu sẽ
được chia làm nhiều luồng con, trong đó có một luồng con được gọi là luồng cơ bản,
khi thực hiện quá trình nén nó không phụ thuộc vào bất ký luồng con nào khác, và với
một luồng nén dữ liệu này, chúng ta sẽ có một video với chất lượng tối thiểu nhất, có
thể chấp nhận được. Các luồng con khác là luồng mở rộng, việc giải nén phải phụ
thuộc vào luồng cơ bản ở trên, và chúng cung cấp chất lượng video tốt hơn. Luồng
toàn phấn (kết hợp của tất cả các luồng) cung cấp một video với chất lượng tốt nhất
như video thô ban đầu. Hình 1.3(a)(b) thể hiện quy trình khi mã hóa và giải mã một
video theo phương pháp nén mở rộng. Với phương pháp nén dữ liệu này, chúng ta sẽ
có được nhiều video ở chất lượng khác nhay được nén từ video ban đầu. Hơn nữa,
chúng ta cũng có thể tùy chỉnh để có được các khung hình có kích cỡ nhỏ hơn hay tỷ
lên khung hình thấp hớn. Rõ ràng rằng, với phương pháp nén này, chúng ta có thể
hoàn toàn điều chỉnh được chất lượng video sao cho nó có thể tương thích với băng
thông hiện tại, hay độ trễ cũng như chất lượng yêu cầu từ phía người dùng hơn phương
pháp nén không mở rộng.

7


Hình 1.2. Phương pháp nén dữ liệu không mở rộng. (a) bộ mã hóa dữ liệu. (b) bộ
giải mã dữ liệu


8


Hình 1.3: quy trình nén dữ liệu không mở rộng.
Điểu khiển chất lượng dịch vụ tầng ứng dụng
Để đáp ứng với nhiều điều kiện khác nhau và các yêu cầu về chất lượng khác
nhau từ người dùng, rất nhiều các kỹ thuật điều khiển chất lượng dịch vụ tầng ứng
dụng đã được đề xuất. Trong số đó có hai kỹ thuật chính đó là điều khiển tắc nghẽn và
1.3.

điều khiển lỗi. Cơ chế điều khiển tắc nghẽn được áp dụng để ngăn chặn việc mất mát
dữ liệu và giảm thiểu độ trễ của gói tin. Trong khi đó, cơ chế điều khiển lỗi lại được áp
dụng nhằm để cải thiện chất lượng video trong trường hợp các gói tin bị mất. Cơ chế
điều khiển lỗi lại được chia ra thành bốn cơ chế khác. Chúng là bốn cơ chế sau: FEC
(forward error correction), retransmission, error-risilen, error concealment.
Dịch vụ phân phát video trên đường truyền
Để cung cấp các dịch vụ đa phương tiện có chất lượng tốt, sự hỗ trợ của mạng
lưới truyền tải cũng vô cùng quan trọng. Sự hỗ trợ từ phía mạng sẽ có thể làm giảm độ
trễ truyền tải cũng như tỷ lệ các gói tin bị mất. Chia nhỏ các chặng đường từ server
cho đến người dùng và tác động vào chất lựng dữ liệu với điều kiện của từng chặn đó
1.4.

sẽ mạng lại một kết quả truyền tốt hơn đáng kể. Dịch vụ phân phát video trên đường
truyền được chia làm các loại chính sau đây: bộ lọc mạng( network filtering), truyền
multicast trên tầng ứng dụng( application-level multicast) và sao chép nội dung
(content replication).
1.5.

Máy chủ (streaming server)
Máy chủ luôn đóng một vai trò quan trọng trong việc cung cấp dịch vụ video

streaming. Để đưa ra dịch vụ chất lượng cao, máy chủ cần phải xử lý dữ liệu đa
phương tiện với sự ràng buộc về mặt thời gian. Ngoài ra, máy chủ cũng cần hỗ trợ các
hoạt động điều khiển VCR. Hơn nữa, nó cũng cần cung cấp chức năng truyền thông
9


kiểu đồng bộ. Để làm được điều đó, thông thường máy chủ gồm những bộ phận chính
sau:
Cơ cấu truyền: Một cơ cấu truyền tham gia tầng ứng dụng và các giao thức tầng
giao vận được thực hiện trong máy chủ. Thông qua cơ cấu truyền, các máy khách có
thể giao tiếp với một máy chủ và nhận nội dung đa phương tiện một cách liên tục và
đồng bộ.
Hệ điều hành: Khác với hệ điều hành thông thường, hệ điều hành cho máy chủ
luồng cần phải có thời gian thực an toàn cho các ứng dụng luồng.
Hệ lưu trữ: Phải hỗ trợ lưu trữ truyền thông liên tục và có thể truy cập được.

1.6.

Các giao thức video streaming
Nhiều giao thức được thiết kế và chuẩn hóa cho giao tiếp giữa máy chủ luồng và
máy khách. Theo tính năng, các giao thức này liên quan trực tiếp đến video streaming
trên Internet và có thể chia làm các loại sau. Thứ nhất là giao thức tâng mạng ví dụ
như Internet protocol (IP), thứ hai là giao thức tầng giao vận ví dụ như gia thức gửi dữ
liệu ngắn (UDP) và cuối cùng là giao thức điều khiển phiên ví dụ như giao thức truyền
dòng thời gian thực (RTSP).
Cơ chế đồng bộ video streaming
Đồng bộ video streaming chính là việc bảo trì mối quan hệ giữa một luồng dữ
liệu với một số luồng truyền thông khác. Có ba mức của đồng bộ gọi là đồng bộ trong
luồng, đồng bộ luồng và động bộ đối tượng.
1.7.


Đồng bộ luồng trong luồng: Tầng thấp nhất của truyền thông liên tục. Đơn vị
của tầng truyền thông liên tục là các khối dữ liệu logio như frame hình/truyền thanh.
Đồng bộ mức này được gọi là đồng bộ luồng dư, bảo trì sự liên tục của các đơn vị dữ
liệu. Không có đồng bộ luồng dư, trình diễn của luồng có thể bị ngắt bởi việc dừng và
sự sai khác
Đồng bộ luồng: tầng hai của dữ liệu thời gian thực là tầng luồng. Đơn vị của
tầng luồng chính là luồng. Đồng bộ tầng này chính là đồng bộ luồng, có nhiệm vụ bảo
trì mối quan hệ giữa các truyền thông liên tục. Không có đồng bộ luồng, sự không ăn
khớp giữa các luồng có thể gây lỗi. Ví dụ, người dùng sẽ thấy khó chụi khi việc di
chuyển mỗi người nói không tương ứng với âm thanh.

10


Đồng bộ đối tượng: Tầng cao nhất của tài liệu đa phương tiện là tầng đối tượng,
đó là sự kết hợp luồng và dữ liệu thời gian thực như chữ và hình ành. Đồng bộ ở tầng
này gọi là đồng bộ đối tượng. Mục đích của nó là bắt đầu và kết thúc của trình diễn
thời gian thực trong một khoảng thời gian vừa phải, nếu tại các điểm định nghĩa trước
của đối tượng truyền thông độc lập thời gian có thể đạt được. Không có sự đồng bộ
này, người xem của việc trình diễn slide có thể khó chịu vì tiếng bình cho một slide thì
slide khác đã hiển thị.

11


Chương 2: Tổng quát
2.1. MDC.
Với bất cứ cơ chế truyền video streaming nào, dữ liệu ở nguồn không thể không
được mã hóa trước khi chúng truyền tải trên Internet. Trong rất nhiều bài báo, nhiều

nghiên cứu đã đưa ra một cách mã hóa dòng dữ liệu theo tầng (layer coding). Với cách
mã hóa dữ liệu này, dòng video sẽ được mã hóa thành thành nhiều lớp trong đó có một
lớp cơ sở và n lớp nâng cao. Lớp cơ sở là lớp không thể thiếu để các ứng dụng có thể
giải mã, các lớp nâng cao sẽ có vai trò giúp nâng cao chất lượng video. Do vậy, mỗi
lớp nâng cao đều phụ thuộc vào lớp cơ sở ban đầu và không chỉ vậy lớp nâng cao n+1
còn phải phụ thuộc vào lớp cấp n bên dưới nó, do đó chỉ có thể áp dụng nếu n đã được
áp dụng. Do vậy mà, các video được trình chiếu có thể bị gián đoạn bất cứ khi nào nếu
lớp cơ sở bị mất và như thế các lớp nâng cao tương ứng là hoàn toàn vô dụng. Điều
tương tự xảy đến với lớp n+1 khi lớp nâng cao n bị mất. Với cơ chế mã hóa này, việc
đảm bảo độ trễ thấp trong truyền phát video streaming là rất khó trong các trường hợp
nghẽn mạng hay mất mát dữ liệu trên Internet. Thay vào đó, có một cơ chế mã hóa dữ
liệu khác có thể khác phục được những nhược điểm này – cơ chế mã hóa Multiple
Description Coding(MDC).
Trong phương thức MDC[13], dữ liệu từ nguồn sẽ được mã hóa thành n
description khác nhau (n≥2)và mỗi một description đó thì đều có vai trò như nhau
trong việc hiển thị nội dung video. Có nghĩa là, với bất kỳ description nào, dù một hay
một vài description kết hợp với nhau, các ứng dụng đều có thể giải mã và trình chiếu
video ở một chất lượng cho phép, còn với càng nhiều description được kết hợp thì chất
lượng video chúng ta có được sẽ càng tăng cao.
MDC giúp tăng khả năng phục hồi lỗi trong video streaming. Từ một tập nhỏ
hay chỉ một description chúng ta đều có thể giải mã được từ dòng dữ liệu gốc, vậy nên
vấn đề nghẽn mạng hay mất dữ liệu trong truyền tin – những vấn đề xảy ra thường
xuyên trong Internet- sẽ không làm gián đoạn dòng dữ liệu truyền đi mà chỉ làm giảm
chất lượng video trong khoảng thời gian rất ngắn. So với việc một video được phát
một cách liên tục nhưng không ở một chất lượng đảm bảo sẽ được chấp nhận hơn là
một video luôn phát ở chất lượng cao nhưng lại bị giật, trình chiếu không liên tuc, rất
dễ làm cho người xem có cảm giác khó chịu.

2.2. Giới thiệu chung về cấu trúc cây.


12


MDC cũng là nền tảng để xây dựng lên mô hình cây cân bằng và cơ chế khuyến
khích người dùng đóng góp băng thông (không được đề cập trong khóa luận này) trong
mạng truyền video streaming. Các nút trong mạng sẽ được tổ chức thành một cây
truyền dữ liệu với gốc là nút nguồn. Cây truyền sữ liệu của chúng tôi sẽ được chia
thành k cây con từ nút nguồn. Mỗi nút trong mạng sẽ chỉ thuộc một cây con nào đó
trong k cây con trên, không nút nào cùng thuộc hai cây con khác nhau từ nguồn. Mỗi
nút sẽ tự tìm kiếm cho mình một liên kết đẩy dữ liệu với cha của nó và k-1 liên kết kéo
dữ liệu với các nút láng giềng thuộc k-1 cây con khác. Nút nguồn sẽ liên tục tạo ra một
phân khúc video cứ sau 𝛿 giây. Mỗi phân khúc này sẽ được MDC mã hóa thành k
description, và mỗi description sẽ được phát tán tới mỗi cây con dựa vào cơ chế đẩy
dữ liệu. Mỗi nút sẽ nhận một description của một phân khúc dữ liệu từ nút cha của nó
thông qua liên kết đẩy, nó sẽ chuyển tiếp dữ liệu nhận được cho các nút con của nó và
cố gắng lấy k-1 description còn lại từ các nút láng giềng thông qua liên kết kéo dữ liệu.
Hình 1 sẽ cho chúng ta thấy một ví dụ cấu trúc cây mà chúng tôi đang đề cập đến
với k=3. Nút nguồn sẽ phát tán 3 luông dữ liệu được mã hóa bởi phương thức MDC
tới các nút 1, 21,48. Những nút này sẽ tiếp tục đẩy dữ liệu mà chúng nhận được tới
các nút con của nó trong cây con. Và cuối cùng, kết quả chúng ta nhận được sẽ là mỗi
nút trong mạng hiện tại sẽ có ít nhất một gói dữ liệu là một description của dữ liệu gốc.
Sau khi nhận dữ liệu thông qua các liên kết đẩy dữ liệu từ nút cha của một nút thì
nút đó sẽ kéo các dữ liệu là các description khác ở những cây con con khác vê thông
qua liên kết kéo dữ liệu. Đồng thời nó cũng gửi dữ liệu nhận được trước tiên là cho nút
con và sau là cho các nút trong danh sách nó kéo dữ liệu về. trong hình 1, nút 3 sẽ kéo
dữ liệu còn thiếu về để từ nút 23 ở cây con thứ 2 và nút 52 ở cay con thứ 3. Nếu một
liên kết kéo dữ liệu bị ngắt, nút kéo dữ liệu về sẽ gửi mọt yêu cầu kéo dữ liệu tới một
nút khác trong cây con đó để đảm bảo vẫn có đủ dữ liệu để nâng cao chất lượng video.

13



Chương 3: Cấu trúc cây cân bằng và các vấn đề đặt ra
3.1. Cấu trúc cây cân bằng.
Trong giải pháp của chúng tôi, các nút trong mạng sẽ được đưa vào một cấu trúc
cây bằng có gốc là nút nguồn và k cây con phân biệt khác nhau. Một cây cân bằng
được định nghĩa là một cây mà tổng số nút và tổng băng thông bất kỳ ở các cây con có
gốc là nút trong mạng thì đều tương đương nhau. Hơn nữa, trong cây cân bằng của
chúng tôi, những nút có bằng thông lớn, và độ ổn định cao(có thòi gian sống cao) sẽ
được đưa lên trên gần với nút nguồn hơn. Cấu trúc cây cân bằng này là nền tảng cho
cơ chế khuyến khích đóng góp băng thông trong mạng P2P, giải quyết được vấn đề
tính ích kỷ của một nút trong mạng, chỉ muốn nhận dữ liệu mà không muốn truyền dữ
liệu cho nút khác. Do vậy, cấu trúc cây cân bằng này đảm bản được rằng sẽ có đủ băng
thông cho các nút ở các cây con khác nhau trao đổi dữ liệu với các nút khác. Hơn thế
nữa, nó cũng sẽ làm giảm độ cao của cây so với những cáu trúc cây không cân bằng,
gián tiếp làm cho thời gian phát tán dữ liệu toàn mạng được nâng cao. Những nút ở
đáy của cây sẽ ít bị chịu độ trễ hơn nếu những cấu trúc cây này là không cân bằng.
Để xây dựng lên cấu trúc một cây cân bằng, mỗi nút trong mạng sẽ giữ thông tin
về tổng số nút và tổng số băng thông của các nút trong mỗi cây con của nút đó. Và cứ
mỗi lần có sự thay đổi thông tin trong cây con của một nút, nút đó sẽ cập nhật lại các
thông tin về tổng số nút và tổng băng thông ở các con của nó. Và chuyển tiếp tin nhắn
cập nhật lên các nút cha mẹ ở trên. Sau đó các nút cha mẹ cũng sẽ cập nhật lại dữ liệu
của nó. Tin nhắn yêu cầu cập nhật bên trên cũng bao gồm danh sách các nút lá, những
nút có băng thông cao nhất trong các nút lá ở cây con. Những nút lá này sẽ được dùng
để thay thế những nút rời khỏi mạng. Hoặc cũng có thể dùng để đổi chỗ với những nút
ở trên mà có băng thông thấp hơn.

3.2. Các vấn đề đặt ra.
Để có thể tổ chức các nút trong mạng thành một cấu trúc dạng cây cân bằng như
đã được giới thiệu ở trên, chúng tôi đã gặp rất nhiều vấn đề cần giải quyết. sau đây là

những khó khắn gặp phải khi xây dựng một cấu trúc cây cân bằng.

3.2.1. Khi một nút tham gia vào mạng
Việc một nút ngẫu nhiên có thể tham gia vào một mạng là một chuyện thường
xuyên xảy ra vào không thể tránh khỏi trong việc xây dựng và duy trì một hệ thống
mạng P2P. Vậy nên, giải quyết việc một nút tham gia vào cây là một nhiệm vụ trước
hết. một số câu hỏi sẽ được đặt ra trong vấn đề này như sau: cách nào để tổ chức một
14


cây khi có một nút tham gia vào mạng? vị trí nào là thích hợp cho nút đó? Làm thế nào
để đánh giá được vị trí đó là phù hợp cho một nút? Cơ chế nào đảm bảo được nút tham
gia vào cây và nút đó có thể nhận nút đó làm con sẽ nhận đầy đủ dữ liệu từ nút
nguồn?
Khi có một nút bất kỳ tham gia vào cây, nó không thể được đưa tới một vị trí
ngẫu nhiên trong cây của chúng ta đang xây dựng. Việc lựa chọn vị trí thích hợp cho
mỗi nút tham gia vào cây phải được tuân theo một cơ chế xác định sao cho cấu trúc
cây của chúng ta vẫn giữ được độ cân bằng theo đúng định nghĩa. Không chỉ đảm bảo
được tổng số nút ở mỗi cây con của các nút trong mạng là tương đương nhau mà đồng
thời với đó, tổng băng thông ở những cây con đó cũng phải xấp xỉ nhau, vì thế một
công thức tổng quát để đáp ứng được cả hai yêu cầu trên sẽ là một thách thức cần phải
giải quyết.
Bên cạnh đó, việc phân chia băng thông của nút mà sẽ nhận nút tham gia vào
mạng làm nút con cũng là một vấn đề cần phải giải quyết. Làm sao để nút đó vừa có
thể nhận nút đang yêu cầu làm nút con, lại vừa vẫn có thể đóng góp băng thông vào
mạng lưới? – đây là câu hỏi được đặt ra trong vấn đề này.
Tóm lại, có hai vấn đề chính cần phải giải quyết khi có một nút tham gia vào
mạng. Thứ nhất, lựa chọn vị trí cho nút đang yêu cầu sao cho vẫn đảm bảo được sự
cân bằng của cây và thứ hai, nút cha mà nhận nút đang yêu cầu vào làm con vẫn phải
có đủ băng thông để chắc chắn rằng vẫn đủ dữ liệu để phát video.


3.2.2. Khi một nút rời khỏi mạng.
Giống như trường hợp một nút nào đó có thể tham gia vào mạng, thì một nút
ngẫu nhiên có thể rời khỏi mạng cũng là một trường hợp không thể tránh khỏi và rất
hay xảy ra. Và khi có một nút hoặc nhiều nút cùng ra khỏi mạng, thì cấu trúc cây của
chúng ta rõ ràng sẽ không còn được hiệu quả, mất tính cân bằng. Không những thế,
nếu một nút ở càng gần nút nguồn mà đột ngột rời khỏi mạng, thì sẽ dẫn đến là tất cả
các nút con của nó và các nút kéo dữ liệu từ nó sẽ không nhận được dữ liệu trả về để
có thể phát video. Do vậy, một cơ chế để giải quyết vấn đề này là rất cần thiết để có
thể đảm bảo được độ ổn định và việc truyền dữ liệu trong mạng của chúng ta.
Có hai trường hợp khi một nút nào đó rời khỏi mạng, một là nút đó sẽ rời khỏi
mạng mà không hề thông báo trước cho các nút lân cận, hai là nút đó chủ ý rời khỏi
mạng và có thông báo cho các nút lân cận về việc rời đi của nó. Với trường hợp thứ
nhất, một cơ chế để các nút lân cận có thể biết được nút đang xét có vẫn đang trong
mạng hay đã rời khỏi mạng là cần thiết để giải quyết vấn đề này.

15


Sau đó, để đảm bảo tính cân bằng cũng như việc truyền dữ liệu trong mạng
không bị gián đoạn dĩ nhiên ta cần phải có một nút khác, trong mạng, thay thế nút vừa
đã ra khỏi mạng. Thế nhưng, việc chọn nút nào trong mạng để thay thế lại là một việc
không hề đơn giản. Nút được chọn không thể là nút bất kỳ trong mạng của chúng ta,
nếu như thế toàn bộ cấu trúc của chúng ta sẽ bị phá vỡ. Nút được chọn phải đáp ứng
được yêu cầu về băng thông, cũng như phải là nút mà sau khi thay thế, cấu trúc cây ít
bị thay đổi nhất.
Cùng với đó, việc thay đổi các thông tin như thông tin về nút cha, thông tin các
nút kéo dữ liệu về ,….của các nút bị ảnh hưởng bới việc rời khỏi mạng của nút trên
cũng là một vấm đề đặt ra cần phải giải quyết. Đây cũng là một cơ chế để đảm bảo
rằng các nút trong mạng sẽ không hề bị ảnh hưởng bởi viêc rời đi của một nút nào đó,

các nút vẫn có thể nhận được đầy đủ dữ liệu để có thế phát video ở một chất lượng tốt.

3.2.3. Tối ưu cây cân bằng.
Một trong những đặc điểm của cây cân bằng mà chúng tôi xây dựng là những nút
ở càng gần nút gốc sẽ có băng thông cao hơn những nút ở level dưới. Với đặc điểm
như vậy, cây cân bằng của chúng tôi sẽ có độ cao trung bình giảm xuống so với cấu
trúc cây không phân biệt về băng thông của các nút trên dưới. Thật vậy, nếu những nút
có băng thông cao được đẩy lên trên, đồng nghĩa với việc những nút ở trên có thể nhận
được nhiều con hơn bình thường, vì thế mà với tổng số nút như nhau, cây cân bằng
của chúng tôi xây dựng sẽ được rộng hơn nhưng giảm về độ cao trung bình so với cây
không có sự phân biệt băng thông. Hệ quả của việc tối ưu các nút băng thông lớn như
thế này là làm cho thời gian truyền dữ liệu toàn mạng sẽ nhanh hơn bình thường, các
nút ở đáy của cây sẽ nhân được dữ liệu từ nguồn sớm hơn so với những nút đáy ở cây
có đô cao lớn hơn vì thế mà nâng cao chất lượng truyền dữ liệu trong toàn mạng của
chúng ta.
Vậy nên làm sao để tối ưu cấu trúc cây được như trên là một thách thức cần phải
vượt qua để nâng cao hiệu quả truyền dữ liệu của toàn mạng. Làm sao để dám chắc
rằng các nút ở level trên sẽ có băng thông cao hơn những nút ở level dưới trong khi
các nút tham gia vào cây không được sắp theo thứ tự tăng dần của băng thông cùng
với thứ tự của thời gian. Hơn nữa, hiện tượng các nút rời khỏi mạng cũng thường
xuyên xảy ra, cơ chế tái thiệt lập cây lại được sử dụng vậy, bằng cách nào để luôn có
được một cấu trúc cây tối ưu như chúng ta đã định nghĩa?
Tóm lại, để xây dựng được cấu trúc cây đúng như chúng ta mong đợi, chúng ta
phải giải quyết rất nhiều vấn đề. Trên đây là những vấn đề chính, quan trọng mà chúng
tôi gặp phải trong việc giải quyết bài toán đã ra. Trong những vấn đề này, còn rất

16



×