ĐẠI HỌC CÔNG NGHỆ ĐẠI HỌC QUỐC GIA HÀ NỘI ĐỖ TIẾN DŨNG SỬA LỖI MẠNG SỬ DỤNG MÃ HÓA KHÔNG GIAN CON LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ VIỄN THÔNG Hà Nội - 2012 z ĐẠI HỌC CÔNG NGHỆ ĐẠI HỌC QUỐC GIA HÀ NỘI ĐỖ TIẾN DŨNG SỬA LỖI MẠNG SỬ DỤNG MÃ HÓA KHÔNG GIAN CON Ngành: Công Nghệ Điện Tử - Viễn Thông Chuyên ngành: Kỹ thuật điện tử Mã số: 60 52 70 LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ VIỄN THÔNG Hà Nội - 2012 z ii MỤC LỤC LỜI CAM ĐOAN. ii DANH SÁCH THUẬT NGỮ VIẾT TẮT. iv DANH SÁCH HÌNH VẼ. vii CHƢƠNG I: GIỚI THIỆU.
1 CHƢƠNG II: TỔNG QUAN KỸ THUẬT MÃ MẠNG .2 Kỹ thuật mã mạng .1 Định lý cơ bản của kỹ thuật mã mạng .2 Ưu điểm của kỹ thuật mã mạng .3 Kỹ thuật mã mạng tuyến tính .4 Kỹ thuật mã mạng tuyến tínhngẫu nhiên. 12 CHƢƠNG III: MÃ SỬA LỖI MẠNG .2 Mã hóa cho kênh operator.1 Khoảng cách giữa hai không gian véc-tơ trong .3 Điều kiện để khôi phục mã.4 Mã có kích thước không đổi.3 Các giới hạn về tốc độ mã hóa.1 Giới hạn Hamming.2 Giới hạn quả cầu Hilbert.2 Giới hạn mã Singleton.4 Phương pháp xây dựng mã sửa lỗi mạng. 27 z iii CHƢƠNG IV: MÔ PHỎNG .1 Giới thiệu phần mềm.1 Cài đặt và sử dụng phần mềm.2 Cấu trúc phần mềm.3 Giao diện phần mềm.1 Cấu trúc gói tin.2 Hoạt động của nút nguồn.2 Hoạt động của nút trung gian.3 Hoạt động của nút đích. 36 CHƢƠNG V: KẾT LUẬN .2 Hướng nghiên cứu trong tương lai.
39 TÀI LIỆU THAM KHẢO. 41 z iv DANH SÁCH THUẬT NGỮ VIẾT TẮT Ký hiệu Tiếng Anh Tiếng Việt NC Network Coding Kỹ thuật mã mạng LNC Linear Network Coding Kỹ thuật mã mạng tuyến tính RLNC Random Linear Network Coding Kỹ thuật mã mạng tuyến tính ngẫu nhiên NECO Network Coding Simulator Phẩn mềm mô phỏng NECO UML Unifield Modelling Language Ngôn ngữ mô hình hóa thống nhất z v DANH SÁCH HÌNH VẼ Hình 1.1: Mô hình mạng cánh bướm .1: Mạng cánh bướm .2: Kỹ thuật mã mạng trong mô hình mạng không dây .3: Bảo mật thông tin trong kỹ thuật mã mạng .1: Minh họa khôi phục mã .2: Minh họa giới hạn mã Hamming .3: Minh họa mã Hilbert .4: Minh họa mã Singleton .5: Giới hạn tốc độ mã hóa cho một một mã trong đồ thị Grassmann .1: Sơ đồ UML cho module core .3: Giao diện phần mềm NECO.5: Tùy chọn đường truyền trong mô phỏng.6: Tùy chọn Protocol .8: Xác suất mất mát đường truyền 0.9: Xác suất mất mát đường truyền 0. 38 z vii TÓM TẮT Kỹ thuật mã mạng là một kỹ thuật truyền tin mới được đưa ra cho mô hình phát đa điểm (multicast) bằng cách cho phép các nút mạng trung gian mã hóa thông tin nó nhận được trước khi gửi đi, được đề xuất bởi Ahlswede và đồng nghiệp năm 2000 [1]. Tuy nhiên, trong mạng không dây, do kênh truyền bị ảnh hưởng bởi pha đinh, thông tin được mã hóa tại các nút mạng có thể bị lỗi và lỗi này sẽ tiếp tục tích lũy từ nút mạng này đến nút mạng khác, gây nên lỗi tin của toàn mạng tại các nút đích.
Giải pháp thường dùng là áp dụng phương pháp mã kênh tại từng nút mạng để làm giảm thiểu lỗi mạng. Thay vì vậy, một hướng mới đang được nhiều người quan tâm đến là mã hóa trên không gian chiếu (còn gọi là KK codes), được đề xuất bởi Koetter và Kschischang năm 2008, trên nền kỹ thuật mã mạng tuyến tính ngẫu nhiên. KK codes mở rộng kỹ thuật channel-error correction thành network-error correction, trong đó thay vì gửi một véc-tơ thì người ta gửi một không gian véc-tơ. Ở đầu nhận, sau khi nhận được một không gian véc-tơ khác, có bị tác động của nhiễu, ta cần tìm lại không gian véc-tơ đã được gửi.
Có rất nhiều công cụ phục vụ cho việc mô phỏng mạng như NS-2, OPNET, GLOMOSIM, Matlab với các ngôn ngữ lập trình khác nhau: C++, JAVA, Python … Luận văn này sử dụng phần mềm mô phỏng NECO dựa trên ngôn ngữ lập trình Python để mô phỏng sửa lỗi mạng dùng mã KK. Đây là một công cụ mô phỏng mới và được sử dụng ngày càng phổ biến bời các nhà nghiên cứu kỹ thuật mã mạng. z 1 CHƢƠNG I GIỚI THIỆU Xét một mô hình mạng truyền thông như hình vẽ: Hình 1.1: Mô hình mạng cánh bướm Giả sử rằng nút trên cùng muốn gửi 2 bit dữ liệu x và y đến cả hai nút phía dưới (multicasting) trong thời gian nhanh nhất. Dễ thấy rằng phương pháp truyền trong hình là tối ưu, với giả sử rằng tốc độ truyền trên các cạnh của đồ thị là như nhau.
Ví dụ này dẫn đến ý tưởng sau: Nếu ta cho phép các nút trung gian (như các router trên Internet) tham gia thay đổi các gói dữ liệu, thì có khả năng sẽ tiết kiệm được thông lượng, độ trễ và các tài nguyên khác trong mạng. Thay vì chỉ đơn thuần chuyển tiếp thông tin, các nút mạng trung gian có thể tổ hợp lại một vài gói tin đầu vào và biến thành một hoặc nhiều gói tin đầu ra. Như vậy, NC chính là một hình thức hợp tác ở tầng mạng. Với hình thức này, NC cho phép các nút trung z 2 gian sinh ra các gói tin mới, và có thể được xem là một cách tổng quát hóa của phương thức định tuyến trong mạng truyền thống.
Những ưu điểm của NC so với định tuyến truyền thống: Sử dụng hiệu quả hơn tài nguyên mạng(tăng băng thông và công suất). Hiệu quả tính toán. Tăng tính bền vững (robustness) giúp chống lại những thay đôỉ về cấu hình của mạng. Tăng tính bảo mật thông tin.
Để hiểu rõ hơn, ta định nghĩa một bài toán cụ thể như sau: Mô hình mạng dưới dạng một đồ thị trực tiếp , để đơn giản ta giả sử là một đồ thị acyclic. Trong có 1 đỉnh là nguồn (source) và một số đỉnh gọi là đích (sink). Ta muốn truyền dữ liệu từ source đến tất cả các sink trong thời gian ngắn nhất, với giả sử dung năng mỗi cạnh bằng 1 (một đơn vị dữ liệu truyền trên một đơn vị thời gian). Khi đó, với việc sử dụng kỹ thuật mã mạng, các nút trung gian có thể kết hợp các gói tin đến nó để tạo ra một gói tin mới.
Giả sử tất cả các gói tin đến đều có kích thước là k (tức là thuộc trường ). Việc kết hợp các gói tin có thể coi như một hàm số. Một bộ các hàm số như vậy được gọi là mã mạng (network code). Nếu tất cả các mã mạng cho phép giải mã ở đích thì ta gọi là một network coding solution.
Nếu tất cả các hàm là tuyến tính, tức là gói tin lối ra là tổ hợp tuyến tính của các gói tin lối vào thì ta có một mã mạng tuyến tính. Quay lại bài toán mã mạng, định lý của Ahlswede có thể được hiểu như sau: bằng cách trộn dữ liệu tại các nút trung gian của mạng, thông tin được truyền từ nút nguồn tới nút đích với tốc độ tối đa bằng giá trị min-cut giữa chúng. z 3 Định lý và chứng minh của Ahlswede cho biết luôn tồn tại một network coding solution nhưng không chỉ ra phương pháp kết hợp các gói tin để đạt được tốc độ truyền tin lớn nhất. Tuy nhiên, vào năm 2003 Li và các đồng nghiệp [3] đã chỉ ra phương pháp mã tuyến tính (linear coding) tại các nút trung gian để đạt được tốc độ truyền tin lớn nhất từ nguồn tới đích.
Trong [3], khái niệm mã mạng tuyến tính và cách xây dựng mã trong truyền tin đa điểm của mạng tuần hoàn và không tuần hoàn được chỉ ra. Một phương pháp mã hóa được đề xuất [5] là các nút trung gian lựa chọn các hệ số mã hóa tuyến tính một cách ngẫu nhiên. Phương pháp này được gọi là mã mạng tuyến tính ngẫu nhiên (random linear NC). Không giống như phương pháp mã mạng tuyến tínhngẫu nhiên quyết định (deterministic linear NC), mã mạng tuyến tínhngẫu nhiên không thể đạt đến dung năng đa điểm với xác suất đơn vị nhưng vấn đề truyền thông đa điểm có thể thực hiện với xác suất hàm mũ khi chiều dài mã.
Bài báo chỉ ra rằng, xác suất mã mạng ngẫu nhiên được tìm ra sẽ giảm khi số đường liên kết lớn, và ngược lại sẽ tăng khi kích thước trường hữu hạn càng lớn. Ngày nay, NC là hướng nghiên cứu được rất nhiều người quan tâm vì những ưu điểm cũng như tiềm năng của nó trong lĩnh vực mạng và truyền thông. Tuy nhiên, truyền thông trên thực tế đối mặt nhiều với vấn đề nhiễu, nhiễu có nhiễu đường truyền hoặc các gói tin độc được đưa vào với mục đích phá hoại. Lúc này bắt đầu xuất hiện khái niệm sửa lỗi mạng, mục đích chính của nó là thiết kế một mã mạng có thể sửa được lỗi gây ra trong quá trình truyền tin.
Năm 2003, Kotter và Kschischang đã đề xuất một phương pháp thiết kế mã mạng sửa lỗi cho mã mạng ngãu nhiên tuyến tính. Ý tưởng này đã khởi nguồn cho một lĩnh vực nghiên cứu mới được biết đến với cái tên mã không gian con hay mã sửa lỗi trong không gian chiếu (error-correction code design in projective spaces).Một mô hình truyền tin ứng dụng kỹ thuật mã mạng được z 4 đề xuất, thay vì là các véc-tơ, đầu vào và đầu ra của mô hình là các không gian con của một không gian nào đó. Những khái niệm mới từ đó cũng phải được định nghĩa để phục vụ cho mục đích mã hóa và giải mã như khoảng cách giữa hai không gian véc-tơ, các loại mã không gian con cùng với những giới hạn của các loại mã đó. Luận văn này sẽ mô phỏng lại một mã sửa lỗi cho mã mạng tuyến tínhngẫu nhiên trên thực tế dựa trên thuật toán mã hóa và giải mã được đề xuất bởi Kotter và Kschischang.
Công cụ mô phỏng được sử dụng trong luận văn là NECO, một công cụ mô phỏng mới được giới thiệu năm 2009 và được sử dụng rộng rãi trong lĩnh vực nghiên cứu mã mạng (network coding) trong những năm gần đây. Phần mềm mô phỏng này được viết trên ngôn ngữ lập trình bậc cao Python.Đây là ngôn ngữ rõ ràng, dễ đọc nên giảm thời gian phát triển và nâng cao hiệu suất cũng như dễ bảo trì và mở rộng chương trình. Python cũng được sử dụng rộng rãi cho các ứng dụng khoa học, và đặc biệt có hai thư viện toán học và kỹ thuật tuyệt vời là SAGE và Pylab có sẵn và miễn phí. Tất cả các thư viện sử dụng để phát triển mô phỏng được cho phép bởi GPL (GNU General Public License) và là mã nguồn mở.
Về cơ bản NECO được chia thành các mô-đun lõi và mô-đun mở rộng.