Chương 11 sẽ đề cập đến 2 kỹ thuật tăng cường hiệu suất khác nhau. Thứ nhất, multicast – là khả năng truyền 1 mảnh dữ liệu cho nhiều người nhận khác nhay đồng thời. Thứ hai, nén và giải nén dữ liệu. Đó là việc chuyển một khối dữ liệu lớn thành khối nhỏ hơn, sau đó trả về chính xác hoặc “gần như” chính xác dữ liệu gốc. Mời các bạn cùng tham khảo.
6/29/2011 CHƯƠNG 11 TỐI ƯU BĂNG THÔNG ThS Trần Bá Nhiệm Website: sites.google.com/site/tranbanhiem Email: tranbanhiem@gmail.com Nội dung • • • • • • Giới thiệu Các thủ thuật tăng cường hiệu suất Multicast UDP Nén liệu Nén không mát thơng tin Nén có mát thơng tin 29/06/2011 Chương 11: Tối ưu băng thông 6/29/2011 Giới thiệu • Khơng phải đường truyền đạt tốc độ LAN • Khách hàng chọn phần mềm địi hỏi tốc độ thấp khơng hỏng truyền dở • Chương đề cập đến kỹ thuật tăng cường hiệu suất khác 29/06/2011 Chương 11: Tối ưu băng thơng Giới thiệu • Thứ nhất, multicast – khả truyền mảnh liệu cho nhiều người nhận khác nhay đồng thời • Thứ hai, nén giải nén liệu Đó việc chuyển khối liệu lớn thành khối nhỏ hơn, sau trả xác “gần như” xác liệu gốc 29/06/2011 Chương 11: Tối ưu băng thông 6/29/2011 Các thủ thuật tăng cường hiệu suất • Tăng cường hiệu suất thường nhờ thay đổi đơn giản phương pháp di chuyển liệu client server • Trong số trường hợp áp dụng kỹ thuật này, nhiên dùng thích hợp, giúp liệu di chuyển nhanh chóng 29/06/2011 Chương 11: Tối ưu băng thơng Caching • Caching tăng hiệu suất mạng nhờ lưu trữ liệu tĩnh truy cập thường xuyên vị trí mà liệu đáp ứng nhanh thơng thường • Có tiêu chuẩn sau cần đáp ứng: – Dữ liệu phải truy cập thường xuyên – Dữ liệu phải không bị thay đổi thường xuyên – Thời gian truy xuất với liệu cache phải nhanh truy xuất trực tiếp 29/06/2011 Chương 11: Tối ưu băng thơng 6/29/2011 Caching • Dữ liệu cache điểm client server • Cache phía server ngăn chặn liệu lỗi thời, chậm cache phía client • Cache phía client nhanh liệu đọc từ đĩa, khơng qua mạng, chúng có khuynh hướng lỗi thời 29/06/2011 Chương 11: Tối ưu băng thơng Caching • Proxy cache kết hợp dạng cache Chúng refresh cache rảnh rỗi phục vụ liệu nhanh client kết nối với chúng đường truyền LAN Dữ liệu cũ proxy gây khó chịu cho người dùng khó xử lý làm cache phương pháp thủ công 29/06/2011 Chương 11: Tối ưu băng thơng 6/29/2011 Caching • Cache server đặc biệt có ích liệu cần phải xử lý trước gửi cho client Ví dụ trang ASP.NET tải lên server, phải biên dịch trước sinh nội dung để gửi trả cho client Như server lãng phí thời gian để biên dịch lại trang có yêu cầu dịch sẵn, lưu cache 29/06/2011 Chương 11: Tối ưu băng thông Caching • Khi site gồm chủ yếu nội dung tĩnh, cache nén phần lớn trình duyệt tự động giải nén nội dung với định dạng phù hợp • Khi nội dung động, sử dụng cơng cụ nén on-the-fly Xcache Pipeboost • Một phương pháp đơn giản để xem liệu có lỗi thời hay không dùng phương pháp băm 29/06/2011 Chương 11: Tối ưu băng thông 10 6/29/2011 Các kết nối keep-alive • Cho dù phần lớn trang web chứa nhiều hình ảnh khác đến từ server, số giao thức cũ HTTP 1.0 tạo kết nối HTTP tương ứng hình Điều lãng phí cần kết nối đủ để truyền tất hình ảnh cần thiết 29/06/2011 Chương 11: Tối ưu băng thông 11 Các kết nối keep-alive • Hiện hầu hết trình duyệt có khả quản lý kết nối bền vững dùng HTTP 1.1 • Client yêu cầu server trì kết nối TCP mở với đặc tả “Connection: Keep-Alive” phần HTTP header 29/06/2011 Chương 11: Tối ưu băng thông 12 6/29/2011 Các kết nối keep-alive • Khi kết nối TCP mở đóng, số gói tin bắt tay gửi qua lại client server, chúng làm thời gian trung bình 1giây đường truyền modem Nếu muốn phát triển giao thức thích hợp bao gồm nhiều tiến trình gửi yêu cầu nhận đáp ứng client với server nên giữ kết nối TCP thay cho mở/đóng liên tục sau yêu cầu 29/06/2011 Chương 11: Tối ưu băng thơng 13 Các kết nối keep-alive • Vấn đề trễ bắt tay tránh hồn tồn dùng giao thức non-connectionoriented (connectionless) UDP • Tuy nhiên đề cập chương 3, UDP gây nguy hiểm cho tính tồn vẹn liệu • Một số giao thức real-time streaming protocol (RTSP, RFC 2326) đạt hiệu suất tốc độ tin cậy 29/06/2011 Chương 11: Tối ưu băng thơng 14 6/29/2011 Progressive downloads • Khi phần lớn nội dung file tải client dùng liệu ứng dụng video, audio • Kỹ thuật tương tự áp dụng nhiều ngữ cảnh, ví dụ liệt kê danh sách sản phẩm người dùng dừng ngang sản phẩm cần tìm 29/06/2011 Chương 11: Tối ưu băng thơng 15 Progressive downloads • Các dạng thức hình ảnh JPEG, GIF hiển thị dần phần nội dung file tải đầy đủ • Các byte đến sau dễ dàng nhận thấy có nhiệm vụ nhằm nâng cao chất lượng hình ảnh • Kỹ thuật gọi interlacing 29/06/2011 Chương 11: Tối ưu băng thông 16 6/29/2011 Tinh chỉnh thiết lập • Windows tối ưu mặc định cho việc sử dụng Ethernets, ứng dụng có truy cập thơng qua modems, ISDN, DSL cần phải có tinh chỉnh thiết lập để kết nối hiệu hơn, tăng hiệu suất tồn mạng • Các thiết lập TCP/IP registry tại: HKEY_LOCAL_MACHINE\SYSTEM\Curre ntControlSet\Services\Tcpip\Parameters 29/06/2011 Chương 11: Tối ưu băng thông 17 Tinh chỉnh thiết lập • Chỉnh sửa TCP window size registry tại: HKLM\SYSTEM\CurrentControlSet\Servic es\Tcpip\Parameters\GlobalMaxTcpWindo wSize • TCP window size cho biết số byte mà máy tính truyền chưa cần nhận ACK, nên 256960 (một số giá trị khác 372300, 186880, 93440, 64240, 32120) 29/06/2011 Chương 11: Tối ưu băng thông 18 6/29/2011 Tinh chỉnh thiết lập • Vùng giá trị hợp lệ cho TCP window size từ giá trị maximum segment size (MSS) đến 230 • Kết tốt bội số MSS nhỏ 65535 lần hệ số (là lũy thừa 2) • MSS thơng thường gần giá trị maximum transmission unit (MTU) 29/06/2011 Chương 11: Tối ưu băng thơng 19 Tinh chỉnh thiết lập • Giá trị time-to-live (TTL) gói tin có ý nghĩa quan trọng • TTL cho biết số router tối đa mà gói tin qua trước bị hủy Nếu cao gây trễ, thấp làm cho gói tin bị hủy trước đến đích Giá trị nên 64 • Chỉnh sửa TTL registry tại: KLM\SYSTEM\CurrentControlSet\Services\Tc pip\Parameters\DefaultTTL 29/06/2011 Chương 11: Tối ưu băng thông 20 10 6/29/2011 Nén không mát • Entropy encoding dùng ZIP • Source encoding dùng delta pulse code modulation (ADPCM) – kỹ thuật nén audio • Dạng Entropy encoding run length encoding (RLE), dãy byte gồm toàn byte giống chuyển thành liệu số byte 29/06/2011 Chương 11: Tối ưu băng thơng 57 Nén khơng mát • Ví dụ RLE: chuỗi dạng thập lục phân 00 00 00 00 00 chuyển thành 05 00 • Phương pháp tiếp cận đạt hiệu file có entropy cao • Một phương pháp hiệu khác ZIP nén Huffman Các byte phổ biến mã hóa thành dãy bit dài byte, chúng có số lượng nhỏ nên phương pháp hiệu 29/06/2011 Chương 11: Tối ưu băng thông 58 29 6/29/2011 Nén khơng mát • Bảng chuyển đổi bit-code-to-byte gọi codebook, chúng dạng static dynamic • Vì codebook thêm vào file truyền nên phải nhỏ khơng có static codebook Khơng cần truyền codebook với liệu bên nhận có 29/06/2011 Chương 11: Tối ưu băng thơng 59 Nén khơng mát • Các static codebook có vài năm gần đây, có từ xuất máy tính • Sơ đồ nén mã Morse • Có thể người thiết kế mã Morse nghĩ đến việc giảm bớt entropy • Mã Morse khơng áp dụng cho nén liệu máy tính dùng ký hiệu dừng để phân tách, ký tự dạng nhị phân 29/06/2011 Chương 11: Tối ưu băng thông 60 30 6/29/2011 Nén không mát • Dynamic codebook xây dựng suốt trình nén, ký tự phổ biến xác định sau gán chuỗi bit • Codebook dùng để nén byte liệu vào chuỗi bit ngắn – từ hình thành dịng byte ngắn liệu nguyên thủy 29/06/2011 Chương 11: Tối ưu băng thơng 61 Nén khơng mát • Codebook xây dựng tùy ý • Chúng phải phản ánh tần số ký tự liệu dễ dàng phân tách • Dạng đơn giản gán chuỗi 2-bit cho ký tự phổ biến (ví dụ: 01) • Mỗi byte sau ký tự thể thêm bit 00 Ví dụ với tiếng Anh khoảng trắng có tần số cao nhất, gán 01, ‘e’ 011, ‘t’ 0100,… 29/06/2011 Chương 11: Tối ưu băng thơng 62 31 6/29/2011 Nén khơng mát • Với phương pháp vậy, chuỗi “e et” (gồm byte) biểu diễn thành 0110101010110100 (chỉ chiếm byte) • Tiến trình xây dựng Huffman codebook (hoặc “Huffman tree”) xem thêm tài liệu môn học Lý thuyết thông tin tác giả http://sites.google.com/site/tranbanhiem 29/06/2011 Chương 11: Tối ưu băng thơng 63 Hiện thực nén với ZIP • Tạo project mới, form, textbox tên tbInput, tbOutput button với tên btnCompress, btnBrowseInput, btnBrowseOutput,1 NumericUpdown với tên numericUpDown • Chọn Projects→Add References→Browse chọn SharpZipLib.dll từ thư mục #ZipLib cài đặt sẵn (tải từ www.icsharpcode.net) 29/06/2011 Chương 11: Tối ưu băng thông 64 32 6/29/2011 Hiện thực nén với ZIP private void btnBrowseInput_Click(object sender, EventArgs e) { openFileDialog.ShowDialog(); tbInput.Text = openFileDialog.FileName; } private void btnBrowseOutput_Click(object sender, EventArgs e) { saveFileDialog.ShowDialog(); tbOutput.Text = saveFileDialog.FileName; } 29/06/2011 Chương 11: Tối ưu băng thông 65 Hiện thực nén với ZIP • Giải thuật nằm phần code xử lý cho nút lệnh Compress • Các file ZIP chứa file nguồn, CRC thơng tin ngày tháng với file để giúp bảo vệ tính tồn vẹn • Checksum (hoặc CRC) tương tự giá trị băm để kiểm tra tính tồn vẹn nhãn bảo mật 29/06/2011 Chương 11: Tối ưu băng thông 66 33 6/29/2011 Hiện thực nén với ZIP • ZipOutputStream gắn vào đối tượng ZipEntry • SetLevel dùng để định nghĩa mức độ nén liệu, khơng nén nén tối đa 29/06/2011 Chương 11: Tối ưu băng thông 67 Hiện thực nén với ZIP private void btnCompress_Click(object sender, EventArgs e) { int ziplevel = int.Parse(numericUpDown.Value.ToString()); Crc32 crc = new Crc32(); using (ZipOutputStream ZipStream = new ZipOutputStream(File.Create(tbOutput.Text))) { ZipStream.SetLevel(ziplevel); string file = tbInput.Text; FileStream fs = File.OpenRead(file); byte[] buffer = new byte[fs.Length]; 29/06/2011 Chương 11: Tối ưu băng thông 68 34 6/29/2011 Hiện thực nén với ZIP ZipEntry entry = new ZipEntry(file); entry.DateTime = DateTime.Now; entry.Size = fs.Length; fs.Close(); crc.Reset(); crc.Update(buffer); entry.Crc = crc.Value; ZipStream.PutNextEntry(entry); 29/06/2011 Chương 11: Tối ưu băng thông 69 Hiện thực nén với ZIP ZipStream.Write(buffer, 0, buffer.Length); ZipStream.Finish(); ZipStream.Close(); MessageBox.Show("Compress completed!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } } 29/06/2011 Chương 11: Tối ưu băng thông 70 35 6/29/2011 Hiện thực nén với ZIP 29/06/2011 Chương 11: Tối ưu băng thơng 71 Nén có mát thơng tin • Trong trường hợp khơng cần u cầu tồn vẹn liệu nén có mát lựa chọn hợp lý • Đây lựa chọn cho nén liệu audio, video 29/06/2011 Chương 11: Tối ưu băng thơng 72 36 6/29/2011 Nén liệu audio • File liệu audio có đặc tính byte-to-byte entropy thấp, nên nén kiểu ZIP Huffman cho hiệu suất thấp • Dữ liệu audio tạo sóng âm Mỗi mẫu sóng âm giống với mẫu trước Tốc độ thay đổi mẫu theo hướng tăng/giảm điều hịa, thay ghi giá trị mẫu ghi tốc độ thay đổi 29/06/2011 Chương 11: Tối ưu băng thông 73 Nén liệu audio 29/06/2011 Chương 11: Tối ưu băng thông 74 37 6/29/2011 Nén liệu audio • Trong giải thuật DPCM, tăng/giảm giá trị mẫu thể bit 1/0 Khi giải nén, giá trị mẫu tăng/giảm 1, phụ thuộc vào bit dòng bit • Cách gây thiệt hại: – Slope overload – Nhiễu granular 29/06/2011 Chương 11: Tối ưu băng thơng 75 Nén liệu hình ảnh • Nén hình ảnh tương tự với nén audio ngoại trừ xử lý chiều so với chiều audio • Trong q trình nén, hình ảnh chia thành khối macroblock khối 8x8 cho pixel Mỗi macroblock dùng DCT chiều để cô lập giảm số lượng màu vùng 29/06/2011 Chương 11: Tối ưu băng thông 76 38 6/29/2011 Nén liệu hình ảnh • Biểu diễn tốn học DCT chiều: • Trong đó: Cu = 0.7071 • Cơng thức sinh mảng chiều, sau nén cách cho giá trị gần 0, tiếp dùng nén RLE, nén Huffman 29/06/2011 Chương 11: Tối ưu băng thông 77 Hiện thực nén liệu hình ảnh • May mắn khơng phải thực giải thuật nén NET hỗ trợ cho JPEG, hàng chục định dạng khác như: PNG, TIFF, GIF • Tạo project mới, gồm form, picture box tên pictureBox, textbox tên tbInput, tbOutput, 3button tên btnBrowseInput, btnBrowseOutput, btnCompress 29/06/2011 Chương 11: Tối ưu băng thông 78 39 6/29/2011 Hiện thực nén liệu hình ảnh • Để thực việc nén, đơn giản gọi phương thức Save đối tượng Image tạo ra: private void btnCompress_Click(object sender, EventArgs e) { FileStream fs = new FileStream(tbOutput.Text, FileMode.CreateNew); pictureBox.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg); fs.Close(); } 29/06/2011 Chương 11: Tối ưu băng thơng 79 Hiện thực nén liệu hình ảnh private void btnBrowseInput_Click(object sender, EventArgs e) { openFileDialog.ShowDialog(); tbInput.Text = openFileDialog.FileName; pictureBox.Image = Image.FromFile(openFileDialog.FileName); } private void btnBrowseOutput_Click(object sender, EventArgs e) { saveFileDialog.ShowDialog(); tbOutput.Text = saveFileDialog.FileName; } 29/06/2011 Chương 11: Tối ưu băng thông 80 40 6/29/2011 Hiện thực nén liệu hình ảnh 29/06/2011 Chương 11: Tối ưu băng thơng 81 Nén liệu video • Nếu khơng thực nén liệu băng thơng đường truyền video khơng thể đáp ứng • Một chuẩn nén thành công Motion Pictures Expert Group (MPEG) • Chuẩn nén tương đối tốt, xếp sau, audio-video interleaved (AVI) 29/06/2011 Chương 11: Tối ưu băng thông 82 41 6/29/2011 Nén liệu video • AVI cơng nghệ Microsoft nên tích hợp vào Windows API • Một nguồn tài nguyên tham khảo tốt cho lập trình với AVI file là: www.shrinkwrapvb.com • Nén video tương tự nén audio, ngoại trừ video có kênh liệu hình ảnh (mỗi pixel ảnh tổ hợp màu: đỏ, xanh lục, xanh RGB), kênh cho audio 29/06/2011 Chương 11: Tối ưu băng thơng 83 Nén liệu video • Một kỹ thuật nén quan trọng subsampling • Subsampling: chuyển từ định dạng RGB sang YUV YUV định nghĩa màu tổ hợp luminance chrominance Chrominance định nghĩa màu từ đỏ sang xanh Luminance định nghĩa độ xám màu 29/06/2011 Chương 11: Tối ưu băng thơng 84 42 6/29/2011 Nén liệu video • Vì luminance thay đổi thường xuyên chrominance nên liệu màu gửi • Khi tượng áp dụng cho nén, mức chrominance cập nhật frame, trái lại mức bão hòa cập nhật số frame • Với chuẩn H.261 tỷ số lấy mẫu chrominance:luminance 4:1 29/06/2011 Chương 11: Tối ưu băng thơng 85 Bài tập • Cài đặt chương trình minh họa giảng chương ngôn ngữ C# VB.NET 29/06/2011 Chương 11: Tối ưu băng thông 86 43 ... chrominance:luminance 4:1 29/06/2 011 Chương 11: Tối ưu băng thơng 85 Bài tập • Cài đặt chương trình minh họa giảng chương ngôn ngữ C# VB.NET 29/06/2 011 Chương 11: Tối ưu băng thông 86 43 ... client phạm vi 29/06/2 011 Chương 11: Tối ưu băng thông 33 Point-to-point (TCP / UDP) App App PC2 PC1 App App PC3 PC4 29/06/2 011 Chương 11: Tối ưu băng thông 34 17 6/29/2 011 Multi-point (UDP) App PC2... 011, ‘t’ 0100,… 29/06/2 011 Chương 11: Tối ưu băng thông 62 31 6/29/2 011 Nén khơng mát • Với phương pháp vậy, chuỗi “e et” (gồm byte) biểu diễn thành 0110 10101 0110 100 (chỉ chiếm byte) • Tiến trình