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.[6]
Từ ý tưởng trên, kỹ thuật mã mạng (NC: Network Coding) được đề xuất trong lĩnh vực lý thuyết thông tin bởi Ahlswede (2000) 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 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)
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 Đị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 đề 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
Các mô-đun lõi cung cấp các tính năng thiết lập tối thiểu như các giao thức định tuyến cơ bản, tạo đồ thị, lập lịch, giao diện người dùng đồ họa và dòng lệnh Mô-đun mở rộng để phát triển các chức năng cơ bản, tính toán các giao thức phức tạp hơn Đặc điểm chính của phần mềm NECO bao gồm:
Xác định các mô hình mạng
Các giao thức của kỹ thuật mã mạng
Quan sát hoạt động của mạng cũng như các tham số thống kê khác
Mô phỏng được viết toàn bộ bằng Python và dễ dàng mở rộng các module
Luận văn được tổ chức thành các phần:
Chương 2: Tổng quankỹ thuật mã mạng
Chương 3: Mã sửa lỗi mạng
Chương 5: Kết luận và hướng nghiên cứu tiếp theo.
TỔNG QUAN KỸ THUẬT MÃ MẠNG
Giới thiệu
Trong các hệ thống mạng truyền thống, thông tin có thể được ghép kênh, đóng gói, định tuyến… nhưng vẫn tồn tại trong mạng như những thực thể độc lập, các nút mạng không làm thay đổi thông tin, bản tin đi ra một nút là bản sao của bản tin lối vào Năm 2000, Ahlswede và các đồng nghiệp đã đề xuất một kỹ thuật mới đầy triển vọng trong mạng truyền thông, đó là kỹ thuật mã mạng (network coding) Với kỹ thuật này các nút mạng không chỉ chuyển tiếp mà còn xử lý thông tin mà nó có được bằng cách kết hợp chúng lại và truyền đi, để rồi sau đó nơi nhận vẫn tách ra được thông tin nó cần nhận Kỹ thuật này đã chững minh được những ưu điểm của nó về tiết kiệm tài nguyên mạng cũng như tăng tính bảo mật thông tin
Ngày nay, kỹ thuật mã mạng đã trở thành một hướng nghiên cứu được rất nhiều nhà khoa học hướng đến bởi những ứng dụng rộng rãi của nó trong xử lý thông tin, xử lý ảnh và truyền thông.
Kỹ thuật mã mạng
2.2.1 Định lý cơ bản của kỹ thuật mã mạng Định lý 1 : Xét một đồ thị có hướng không tuần hoàn , với là tập hợp các đỉnh, là tập các cạnh của đồ thị Giả sử rằng từng cạnh có dung năng đơn vị, có nguồn phát đơn vị nằm trên cùng một đỉnh của đồ thị và phát dữ liệu đến bộ thu Giá trị lát cắt nhỏ nhất (min-cut) đến từng bộ thu là thì sẽ tồn tại một giản đồ truyền đa điểm trên một trường hữu hạn đủ lớn , trong đó các nút mạng trung gian sẽ kết hợp tuyến tính những ký hiệu đi đến nó trên , phân phát thông tin từ đỉnh phát đồng thời tới tất cả các đỉnh thu ở tốc độ Định lý này có thể được xem như là định lý Max-flow Min-cut cho lý thuyết thông tin mạng: Định nghĩa 1: Xét một mạng được biểu diễn bởi đồ thị Gọi và lần lượt là tập các đỉnh và cạnh có dung năng đơn vị là nút nguồn của mạng và muốn truyền thông tin đến nút đích
Một lát cắt giữa và là phép phân hoạch các nút của đồ thị thành các tập rời nhau
Lát cắt nhỏ nhất là lát cắt có giá trị nhỏ nhất
Giá trị của một lát cắt bằng tổng dung năng của các cạnh trong lát cắt Định lý 2: Xét một mạng được biểu diễn bằng đồ thị như được định nghĩa ở trên Nếu lát cắt nhỏ nhất giữa và bằng thì thông tin được truyền từ đến với tốc độ lớn nhất bằng Tương đương, tồn tại chính xác đường dẫn phân biệt từ nút nguồn tới nút đích
Từ định lý trên, ta biết rằng tồn tại đường dẫn phân biệt từ nút nguồn tới nút đích Do nhiều nút đích cùng sử dụng mạng đồng thời, tập hợp những đường dẫn này sẽ có thể chồng lên nhau Dễ thấy là chúng phải chia sẻ tài nguyên với nhau và do vậy làm giảm tốc độ truyền Tuy nhiên, định lý một đã nói rằng nếu ta cho phép nút trung gian không chỉ truyền mà còn kết hợp thông tin thì các nút đích sẽ thu được cùng một tốc độ giống như là chỉ có duy nhất nó sử dụng tài nguyên mạng Kỹ thuật mã mạng giúp tađạt được điều này
2.2.2 Ƣu điểm của kỹ thuật mã mạng
Hình 2.1 mô tả một mạng truyền thông như là một đồ thị có hướng trong đó các đỉnh là các thiết bị đầu cuối và cạnh tương ứng với kênh truyền Giả sử
2 nguồn cẩn truyền thông tin và tới 2 bộ thu ,
Theo truyền thống, bit thông tin và được xử lý độc lập với nhau vì vậy cạnh sẽ truyền hoặc hoặc Nếu ta truyền thì bộ thu sẽ chỉ nhận được , trong khi nhận được cả và Ngược lại nếu quyết định truyền đi bit Sử dụng ý tưởng của kỹ thuật mã mạng, ta có thể cho phép các nút trung gian xử lý thông tin nó có thay vì chỉ chuyển tiếp chúng Cụ thể, nút có thể làm phép “xor” hai thông tin và tạo ra và truyền đi qua cạnh nhận được { }, từ đó giải các phương trình khôi phục lại được Tương tự như vậy đối với
Ví dụ này chỉ ra rằng nếu ta cho phép các nút trung gian trong mạng kết hợp chuỗi thông tin và tách thông tin tại nơi nhận thì chúng ta có thể tăng được thông lượng của hệ thống
Tiết kiệm tài nguyên mạng không dây
Với thông tin vô tuyến, kỹ thuật mã mạng mang lại nhiều lợi ích đối với tuổi thọ pin, băng thông không dây và độ trễ Xét một mạng không dây ad-hoc, trong đó hai thiết bị và muốn trao đổi hai tập tin nhị phân sử dụng như là thiết bị chuyển tiếp
Hình 2.2: Kỹ thuật mã mạng trong mô hình mạng không dây [10]
Với kỹ thuật mã mạng được áp dụng, ta có những ưu điểm về mặt dung lượng của kênh vô tuyến: nút nhận được cả hai tập tin và thực hiện phép “xor” chúng để tạo ra tập tin mới, tập tin này sau đó được quảng bá tới cả hai bộ thu Nút đã có và từ đó giải mã được Nút có và giải mã được Phương pháp này có những ưu điểm về mặt sử dụng năng lượng (nút tiết kiệm được năng lượng vì chỉ cần truyền một lần thay vì hai như trước), thời gian trễ ( quá trình truyền hoàn tất chỉ trong 3 lần truyền thay vì 4), băng thông vô tuyến (sử dụng kênh vô tuyến trong thời gian ngắn hơn)
Việc gửi đi kết hợp tuyến tính các gói tin thay vì truyền dữ liệu chưa mã hóa giúp nâng cao tính bảo mật một cách tự nhiên, tránh những trường hợp nghe trộm Như vậy, với những hệ thống muốn tránh những xâm nhập đơn giản, ta sẽ không cần thêm cơ chế bảo mật nào nữa Ví dụ trong hình 2.3, nút gửi thông tin tới nút thông qua hai đường và Thông tin được kết hợp và gửi đi, nếu một đối tượng tại nút trung gian nào đó lấy cắp dữ liệu thì cũng không thể giải mã được, chỉ nơi thu khi nhận đủ thông tin cần thiết từ các nguồn khác nhau mới có thể khôi phục lại thông tin ban đầu
Hình 2.3: Bảo mật thông tin trong kỹ thuật mã mạng [10]
Kỹ thuật mã mạng tuyến tính
Đình lý về kỹ thuật mã mạng được nêu ở phần trên chỉ ra rằng bằng việc kết hợp dữ liêu tại các nút trung gian của mạng, thông tin từ nguồn tới đích có thể được truyền qua mạng với tốc độ lớn nhất bằng giá trị lát cắt nhỏ nhất giữa chúng Tuy nhiên, định lý không chỉ ra làm cách nào để đạt được tốc độ lớn nhất đó Năm 2003, Li và đồng nghiệp [3] đã chứng minh được có một phương pháp có thể đạt được điều đó, đó chính là mã mạng tuyến tính
Một vấn đề quan trọng của mã mạng tuyến tính là cách xây dựng mã mạng (network code), hay nói cách khác là tim các hệ số của các hàm mã hóa tại các nút trung gian để nơi thu có thể khôi phục lại bản tin nguồn từ các gói tin nhận được Tập các hệ số thỏa mãn điều kiện có thể khôi phục lại được gọi là network coding solution Câu trả lời đơn giản và có hệ thống được Koetter và Medard đưa ra vào năm 2003 dựa trên các phép toán đại số[9] Có sự liên hệ giữa network code solution với phương pháp giải các phương trình tuyến tính
Một vài kết quả quan trọng được các nhà nghiên cứu trong lĩnh vực này sử dụng một cách rộng rãi Trước khi chỉ ra những kết quả đó, ta sẽ bắt đầu với một vài ký hiệu và định nghĩa
Một mạng được biểu diễn là một đồ thị có hướng , với là tập các nút mạng (các đỉnh của đồ thị) và là tập các đường truyền trong mạng (các cạnh của đồ thị) Giả sử rằng thông tin được truyền từ nút tới nút với mọi Định nghĩa 2: Với một đường truyền nói chung , nút và được gọi là điểm bắt đầu và điểm kết thúc Với một đường truyền , điểm bắt đầu và kết thúc được ký hiệu là Sử dụng kỹ thuật mã mạng, thông tin truyền trên đường truyền là hàm mã hóa các gói tin nhận được tại điểm bắt đầu Định nghĩa 3: Gọi lần lượt là số bản tin nguồn cần phát và số bộ thu { }, { } là tập các nút nguồn và nút đích Dữ liệu nguồn cũng như dữ liệu được truyền trên đường truyền là chuỗi các bít véc-tơ là các phần tử của trường hữu hạn với Dữ liệu đầu ra thứ của nút đích là tổ hợp tuyến tính của các dữ liệu đi trên đường truyền của nó:
∑ (2.1) trong đó là thông tin truyền trên đường truyền , có được bằng kết hợp tuyến tính trong : các dữ liệu nguồn (nếu có) hoặc các dữ liệu ngẫu nhiên đã được tạo ra trước đó :
Tập các hệ số { } được chọn từ trường là bài toán cho kỹ thuật mã mạng
Từ hai định nghĩa trên, ta có hai kết quả quan trọng sau: Định lý 3: Coi các hệ số { } được lấy trong ma trận kích thước | |, { } được lấy từ ma trận kích thước | |, và { } được lấy từ ma trận kích thước | | | | Bộ được gọi là một mã mạng tuyến tính (linear network code)
Việc ánh xạ các bản tin nguồn [ ] tới các dữ liệu nhận được [ ] tại một đích nào đó được biểu diễn:
Với , là ma trận đơn vị Định lý 4: Bộ mã mạng tuyến tính trên trường có thể giải được nếu ma trận truyền có bậc đầy đủ hạn đối với từng bộ thu với Khi đó, bài toán kết nối đa điểm có thể được giải quyết
Một vấn đề quan trọng đằng sau việc xây dựng mã mạng tuyến tính cho kỹ thuật mã mạng là biết được kích thước phù hợp của trường hữu hạn để có thể giải quyết được bài toán truyền đa điểm Kích thước trường càng lớn, độ phức tạp tính toán trong mạng càng lớn Thực tế, các biểu thức đại số trong kỹ thuật mã mạng được thực hiện trên các từ mã có độ dài Định lý 5 : Đối với bài toán truyền đa điểm với nguồn độc lập và có bộ thu Trong cả trường hợp mạng không tuần hoàn có lỗi hoặc không có lỗi xảy ra, tồn tại mã mạng tuyến tính trong trường nếu
Kỹ thuật mã mạng tuyến tínhngẫu nhiên
Các định lý cơ bản nói trên dựa trên việc tính toán cho mã mạng tuyến tính quyết định (deterministic linear network code) trong truyền tin đa điểm
Nói cách khác các hệ số { } được chọn để thông tin nguồn được tái tạo lại từ các bộ thu với xác suất bằng một Tức là mạng lúc này là mạng có cấu trúc tập trung, các hệ số được tạo ra và phân phát bởi một trung tâm nào đó
Một phương pháp được đề xuất đó là mã mạng tuyến tínhngẫu nhiên, các nút mạng sẽ lựa chọn các hệ số mã hóa một cách tuyến tính Không giống như phương pháp mã mạng tuyến tính quyết định, phương pháp này không thể đạt được xác suất đơn vị, nhưng có thể đạt được xác suất hàm mũ với chiều dài mã Định lý 6 : Xét bài toán truyền đa điểm với các thông tin nguồn độc lập, bộ thu, các hệ số mã hóa { } được chọn ngẫu nhiên, đồng đều trên trường với Xác suất để bộ mã mạng có thể được giải ít nhất sẽ bằng ⁄ với là số đường truyền liên quan các hệ số mã hóa
Như vậy, định lý này đã chỉ ra rằng, số đường truyền liên quan đến các hệ số mã hóa càng lớn thì xác suất giải bộ mã mạng càng nhỏ, kích thước trường hữu hạn càng lớn thì xác suất giải bộ mã mạng càng lớn.
MÃ SỬA LỖI MẠNG
Mã hóa cho kênh operator
Trong truyền tin thông thường, để so sánh sự thay đổi giữa hai gói tin, khái niệm khoảng cách Hamming được sử dụng Với phương pháp mã hóa không gian véc-tơ được đề xuất, một không gian véc-tơ được truyền đi, ta cần một định nghĩa tương tự như khoảng cách Hamming nhưng đối với 2 không gian véc-tơ để có thể khôi phục lại không gian được truyền từ không gian nhận được Trước khi chỉ ra làm thế nào để xây dựng loại mã tốt cho kênh operator mà ta đã định nghĩa, ta cần phải định nghĩa khoảng cách giữa hai không gian véc-tơ
3.2.1 Khoảng cách giữa hai không gian véc-tơ trong
Hàm: là khoảng cách giữa hai không gian véc-tơ trong
W là không gian véc-tơ kích thước N thuộc trường U là không gian con của
W, không gian con trực giao của U là một không gian kích thước N-k:
{ } Với không gian con bất kì thì
Khoảng cách giữa hai không gian con U và V bằng khoảng cách giữa hai không gian trực giao tương ứng
Gọi W là không gian véc-tơ kích thước N trong trường Một loại mã cho kênh operator với không gian W là tập con của
Kích thước của mã được ký hiệu | | Khoảng cách nhỏ nhất của được định nghĩa:
Kích thước lớn nhất của các từ mã của C:
Nếu kích thước của từng từ mã của là bằng nhau thì được gọi là mã có kích thước không đổi
Trong mà sửa lỗi tuyến tính truyền thống thì một loại mã thường được biểu diễn dưới dạng trong đó là độ dài của mã, là kích thước và là khoảng cách Hamming Với loại mã không gian véc-tơ đối với kênh operator được định nghĩa ở trên thì được biểu diễn dưới dạng [ | | ]
Tiếp theo, ta sẽ tìm hiểu đinh nghĩa về tốc độ mã của một mã nào đó
Gọi là một loại mã có kiểu [ | | ] Để truyền một không gian , nơi phát cần phát véc-tơ của V vào trong mạng, tương ứng với truyền ký tự
Gọi là một mã được biểu diễn dưới dang [ | | ] Trọng số chuẩn hóa (weight) , tốc độ và khoảng cách nhỏ nhất chuẩn hóa của C được định nghĩa như sau:
3.2.3 Điều kiện để khôi phục mã
Bộ giải mã dựa vào lối ra U của kênh operator sẽ trả lại từ mã có khoảng cách tới U là nhỏ nhất
Hình 3.1: Minh họa khôi phục mã [2]
Ta có một định lý liên hệ giữa khoảng cách nhỏ nhất của mã với lỗi và mất mát gây ra bởi kênh:
Nếu ta sử dụng một mã cho truyền tin trên kênh operator Chọn để truyền thì sẽ nhận được U:
Với và là số véc-tơ bị mất mát tối đa bởi kênh
(3.7) thì bộ giải mã sẽ khôi phục lại được không gian truyền V từ không gian nhận được U
3.2.4 Mã có kích thước không đổi
Mã có kích thước không đổi là mã có kích thước các từ mã không đổi
Nó tương tự với mã có trọng số không đổi trong không gian Hamming (các từ mã có trọng số Hamming bằng nhau) hay các loại mã cầu trong không gian Euclid (các từ mã có năng lượng bằng nhau)
Các mã có kích thước không đổi thường được miêu tả như là các đỉnh nào đó trong đồ thị Grassmann:
Gọi là tập các không gian con của có kích thước được gọi là Grassmannian Đồ thị Grassmann có các đỉnh là tập với hai đỉnh cạnh nhau khi và chỉ khi
Các giới hạn về tốc độ mã hóa
Trước tiên, một vài ký hiệu và khái niệm liên quan đến việc đóng gói trong sẽ được đưa ra
Hệ số Gauss* + được định nghĩa:
⟦ ⟧ ⟦ ⟧ với số nguyên dương i bất kỳ:
⟦ ⟧ ∏⟦ ⟧ Định lý 7: Số không gian con kích thước của không gian véc-tơ n trên trường bằng * + Đồ thị Grassmann giúp ta dễ dàng trong việc sử dụng các phép toán hình học để tạo ra các giới hạn cho mã (về kích thước, tốc độ mã) khi nó được thể hiện dưới dạng quả cầu Trước khi đề cập đến giới hạn của một mã, ta có định nghĩa sau:
Gọi W là một không gian véc-tơ kích thước N, là tập các không gian con kích thước của Quả cầu với bán kính có tâm tại không gian V trong được định nghĩa như là tập các không gian con thỏa mãn điều kiện
Số lượng các không gian con trong độc lập với V bằng:
Gọi là môt tập các không gian trong có , * +
Kích thước của C phải thỏa mãn:
Dưới dạng tham số chuẩn hóa, ta có giới hạn về tốc độ mã:
Hình 3.2: Minh họa giới hạn mã Hamming [2]
3.3.2 Giới hạn quả cầu Hilbert
Ngược lại chỉ tồn tại một mã với :
Hình 3.3: Minh họa mã Hilbert [2]
Người ta định nghĩa thêm một loại mã được gọi là mã | | thỏa mãn:
] Tốc độ mã của loại mã này:
Hình 3.4: Minh họa mã Singleton [2]
Tóm lại , ta có thể biểu diễn giới hạn về tốc độ mã hóa trong sơ đồ sau (với trọng số chuẩn hóa ⁄ ):
Hình 3.5: Giới hạn tốc độ mã hóa cho một một mã trong đồ thị Grassmann [2]
Phương pháp xây dựng mã sửa lỗi mạng
Những phần trên đã giới thiệu về các khái niệm như kênh operator để khái quát kênh truyền các không gian véc-tơ, khoảng cách giữa hai không gian, các loại mã cũng như giới hạn về tốc độ mã hóa Phần này sẽ đưa ra phương pháp để xây dựng một loại mã có khả năng sửa lỗi và mất mát trong mạng khi nó đi qua kênh operator Phương pháp xây dựng mã tương tự như phương pháp được đề xuất bởi Wang, Xing và Safavi-Naini [7] Đóng góp chính của phương pháp này thuật toán giải mã
Gọi là một trường hữu hạn, là trường mở rộng của Ta có thể coi là không gian véc-tơ kích thước m trên trường
{ } là tập các phần tử độc lập tuyến tính trong không gian véc-tơ này Những phần tử này tạo ra một không gian véc-tơ trên Ta sẽ có một không gian véc-tơ tổng kích thước { }
Gọi { } là khối các ký tự bản tin, gồm k ký tự trong trường , tương đương với ký tự trong trường [ ] được ký hiệu là tập các đa thức tuyến tính có bậc trên trường Hàm [ ] được định nghĩa:
∑ [ ] (3.9) là một đa thức tuyến tính với các hệ số là các ký tự bản tin
Với thì từng cặp được xem như là một véc-tơ trong Do { } là tập các giá trị độc lập tuyến tính, nên { } cũng là các phần tử độc lập tuyến tính, do vậy nó sẽ tạo ra một không gian véc-tơ
Ta ký hiệu việc ánh xạ từ một đa thức bản tin [ ] sang một không gian tuyến tính | | là Định lý 8: Gọi là ảnh của phép ánh xạ , với | | là một loại mã có dạng [ ]
Ta có thể tóm tắt quá trình mã hóa như sau:
Từ các ký tự của bản tin { } ta có một đa thức tuyến tính
Bộ mã hóa cung cấp một tập các véc-tơ độc lập tuyến tính{ }
Đa thức tuyến tính sẽ được đánh giá tại giá trị độc lập tuyến tính
Các cặp { } tạo ra một không gian véc-tơ con kích thước từ không gian véc-tơ kích thước , tương đương với các ký tự bản tin { }
Giả sử được truyền trên kênh operator và không gian con kích thước được nhận sau khi qua kênh, trong trường hợp này, ta có lỗi và bộ xóa thì khoảng cách giữa hai không gian Từ định nghĩa của kênh operator, nếu muốn khôi phục lại từ không gian nhận được thì ⁄ Để có thể giải mã được không gian véc-tơ từ không gian nhận được, thì phải thỏa mãn điều kiện , hay là bộ thu phải thu được ít nhất là véc-tơ cơ sở để tạo ra không gian , ta thu được hàm cơ sở:
{ } Sau đó, bộ giải mã sẽ sử dụng hàm nội suy để suy ra đa thức tuyến tính sao cho ( )
Từ ( ) nên từ hàm ta có thể ta có thể khôi phục lại đa thức với các ký tự bản tin là các hệ số bằng hàm ( )
Tổng kết
Tóm lại, chương này đã giới thiệu khái niệm về kênh operator cho mô hình truyền tin trong kỹ thuật mã mạng tuyến tinh ngẫu nhiên, đầu vào và đầu ra của kênh là các không gian con của một không gian nào đó Các giới hạn về tốc độ mã hóa cũng được nêu ra Cuối cùng, một bộ mã hóa và giải mã cho việc mã hóa không gian con trong kỹ thuật mã mạng đã được nêu ra Chương sau sẽ giới thiệu các kết quả đạt được cho việc mô phỏng lại bộ mã hóa và giải mã bằng phần mềm NECO với ngôn ngữ lập trình Python.
MÔ PHỎNG
Giới thiệu phần mềm
NECO (NEtwork COding simulator) là một phần mềm mới được đưa ra năm 2009 để đánh giá hiệu năng của kỹ thuật mã mạng dựa vào các giao thức
Phần mềm được viết hoàn toàn trên ngôn ngữ Python và có thể dễ dàng phát triển các module mở rộng
4.1.1 Cài đặt và sử dụng phần mềm
Có hai cách để cài đặt NECO là cài đặt trên máy ảo chạy hệ điều hành Ubuntu trong Windows sử dụng phần mềm VitualBox, hoặc cài đặt trực tiếp trên máy chạy hệ điều hành Ubuntu 10.04 [10]
Phần mềm được chia làm hai module chính: core và gui
Module core gồm các module nhỏ hơn cho việc điều khiển các bước mô phỏng, xây dựng mạng và các giao thức Đồ thị UML biểu diễn module core được chỉ ra trong hình 4.1 Các lớp chính của nó bao gồm các lớp liên quan đến mô phỏng như đồng bộ, đếm thời gian (NecoCore, Scheduler,
SimulatorThread, NodeThread), các lớp liên quan đến sơ đồ mạng (Graph, Link, Node) và các lớp liên quan đến thực hiện các giao thức (Protocol, Routing)
Hình 4.1: Sơ đồ UML cho modulecore
Module gui gồm 4 lớp Lớp uiApplication để tạo ra giao diện người sử dụng Nó sử dụng lớp uiApplication để tạo ra giao diện người sử dụng, lớp Histogram để vẽ các biểu đồ kết quả Lớp BarCurve gồm các phương pháp để vẽ các cột cho biểu đồ
Hình 4.2: Sơ đồ UML cho module gui
Cửa sổ chính của giao diện phần mềm hiển thị như hình vẽ Các tham số cần thiết cho quá trình mô phỏng được hiện thị trong các Tab: Graph, Node, Link, Protocol, Routing, TrafficGenerator và Simulation
Hình 4.3: Giao diện phần mềm NECO
Tab Graph có sẵn một vài sơ đồ mạng điển hình được định nghĩa sẵn, hoặc ta có thể tự định nghĩa một sơ đồ mạng của mình
Tab Node với các tùy chọn là nút đó tĩnh hoặc động Nút tĩnh thì cố định và luôn tồn tại, do đó nó không phải là nguyên nhân mất kết nối với các nút khác Nút động thì có thể thay đổi trạng thái (xuất hiện hoặc ẩn) một cách ngẫu nhiên Điều này có thể làm đứt liên kết giữa các nút, do đó nó được sử dụng để nghiên cứu các giao thức đòi hỏi khôi phục lỗi sau khi mất đường truyền gói tin
Tab Link với việc lựa chọn xác suất để mất đường liên kết do người dùng tự định nghĩa (Link Erasure Probablility) và dung năng của các đường truyền
Tab Protocol với các giao thức có sẵn như Flooding, RLNC, RLNC non- innovative Ta phải định nghĩa một giao thức mới phù hợp với yêu cầu mô phỏng để tích hợp vào tùy chọn này
Tab TrafficGenerator là các bộ tạo dữ liệu cho các gói tin như kích thước gói tin, số lượng gói tin, kiểu dữ liệu.
Mô phỏng
Một giao thức mới được tạo ra cho việc mã hóa không gian con, truyền tin ứng dụng kỹ thuật mã mạng tuyến tính ngẫu nhiên.Các thuật toán mã hóa và giải mã viết bằng ngôn ngữ lập trình Python cùng các hàm của nó được tích hợp trong giao thức [Phụ lục] Giao thức này sau đó được cài đặt vào trong phần mềm NECO
Mô phỏng sử dụng sơ đồ mạng có sẵn random geometric grap (RGG) với 15 nút, bán kính r = 0.8
Một giao thức mới được định nghĩa với tên là dungđược tạo ra và được tích hợp vào trong phần mềm như là một lựa chọn trong tùy chọn Protocol (hình 4.6) Mô hình truyền được áp dụng là mô hình truyền đa điểm nên trong tùy chọn này ta có thể tự chọn nút nguồn cũng như nút đích Phương pháp định tuyến flooding được sử dụng trong mô hình, tức là gói tin lối ra tại một nút sẽ được truyền ra tất cả các cổng lối ra nút đó
Các nút được chọn là các nút động và đường truyền giữa các nút có dung năng đơn vị (hình 4.5)
Hình 4.5: Tùy chọn đường truyền trong mô phỏng
Số gói tin được tạo ra cho nút nguồn được tùy chọn trong TrafficGenerator (hình 4.7) Trong mô phỏng, phương thức Deterministic được chọn với hàm tạo số gói tin là , với là thời gian đếm Kiểu dữ liệu trong gói tin và kích thước dữ liệu được chọn trong các Tab Size of data và Type of data.Mô phỏng trong luận văn được thực hiện với kích thước gói tin bằng 8 byte
Trong giao thức mới được tạo ra, điều ta cần quan tâm là hoạt động của các nút nguồn, nút đích và nút trung gian Trong đó, nút nguồn làm nhiệm vụ mã hóa bản tin hay ánh xạ bản tin sang một không gian véc-tơ và truyền nó đi, các nút trung gian thực hiện kỹ thuật mã mạng tuyến tính ngẫu nhiên các gói tin nhận được, nút đích làm nhiệm vụ giải mã không gian véc-tơ nhận được.
Việc thực hiện kết hợp các gói tin chỉ được thực hiện trong một generation, các nút phải có khả năng phân biệt các gói tin từ các generation khác nhau Vì vậy, trường generation ID được đưa vào trong header của gói tin
Ngoài ra, trong header của gói tin còn có các trường xác định đỉa chỉ nút nguồn, nút đích, và trường chứa véc-tơ mã hóa để phục vụ cho việc giải mã tại bộ thu def init (self, sourceNode, genId, gcv, dl, data): self.sourceNode = sourceNode self.genId = genId self.globalCodingVector = gcv self.destinationList = list(dl)
4.2.2 Hoạt động của nút nguồn
Nút nguồn mã hóa dữ liệu nguồn và truyền các gói tin là các véc-tơ của không gian vừa được mã hóa, các gói tin này có cùng một generation ID
Ta có các bước mã hóa của nút nguồn:
Lấy dữ liệu từ bộ tạo dữ liệu
Tạo ra đa thức tuyến tính ∑ [ ] Một hàm được định nghĩa như sau: def fx(self,x,lst): f=0 i=0 m=len(lst) item=0 for k in range(m): item = lst[m-1-k] * x**(2**(k)) i+=1 f = f+item return f
Đánh giá đa thức trên các giá trị được tạo ra từ trường
Các cặp tạo thành một không gian con Các gói tin truyền đi là các véc-tơ hàng của không gian con Trong mô phỏng, ta sẽ thực hiện việc tạo ra một danh sách các giá trị trước: for i in range(len(alpha)): p.append(alpha[i]) for j in range(10): p.append(self.fx(alpha[i],matrixData[j])) rồi sau đó mới thực hiện tách từng cặp : for i in range(len(alpha)): p.append(alpha[i]) p.append(self.fx(alpha[i],matrix.row(0)))
Gắn cùng một generation ID cho các gói tin này
Thêm địa chỉ nút nguồn, nút đích
4.2.2 Hoạt động của nút trung gian
Nút trung gian gian nhận các gói tin và đưa vào bộ đệm, các gói tin trong cùng một generation phải đảm bảo là độc lập tuyến tính, vì vậy quá trình khử Gauss được tiến hành để biết gói tin nhận được có phải là innovative packets không, nếu sai nó sẽ bị loại bỏ Quá trình kết hợp tuyến tính các gói tin trong cùng một generation cũng được thực hiện Việc kiểm tra gói tin đến có phải là innovative không được thực hiện bởi một hàm: def innovativeFunc(self, pairId, rlncPacket): self.tmpMatrixGCV.put(pairId, rlncPacket.globalCodingVector) m = self.tmpMatrixGCV.get(pairId)
M = self.SAGE.matrix(m) lastRank = self.rankForPairId[pairId] newRank = M.rank() if newRank > lastRank: self.rankForPairId[pairId] = newRank return True else: self.tmpMatrixGCV removeLastInsertedElement(pairId) return False
4.2.3 Hoạt động của nút đích
Nút đích sẽ thu thập các gói tin có cùng generation ID để tạo ra không gian véc-tơ Nếu điều kiện * + được thỏa mãn thì ứng dụng các thuật toán để khôi phục lại đa thức
Sau đó tìm lại bằng thuật toán
Những gói tin được giải mã sẽ được thông báo: self.updateUIInfo.shellAppend("Node"+str(self.nodeId)+" received all packets from node " + str(pairId[0])) self.parent.terminated(self.protocol,pairId[0]) self.sinksTerminated.append(pairId[0])
Mô hình truyền tin là truyền tin đa điểm với nút nguồn là nút 11, các nút đích lần lượt là 14, 10 và 1 Mô phỏng được thực hiện với các tham số: kích thước không gian con , bản tin nguồn được chọn từ trường hữu hạn
Kết quả được hiển thị với xác xuất mất đường truyền lep (link erasure probability) lần lượt là 0.2 và 0.9 Xác suất mất đường truyền trong phần mềm được hiểu theo một nghĩa là với giá trị lep ta đặt thì hệ thống sẽ tự động sinh ra một giá trị ngẫu nhiên và so sánh với nó, nếu giá trị ta đặt lớn hơn giá trị được sinh ra thì đường truyền bị xóa Vì vậy với giá trị ta đặt càng nhỏ thì khả năng đường truyền bị xóa càng lớn và ngược lại
Khi ta đặt lep=0.9 tức là hầu như không xảy ra trường hợp đường truyền bị xóa, quá trình giải mã thành công và được hiện trong tab Shell
Khi một đường truyền nào đó bị mất có thể ảnh hưởng đến việc mất gói tin tại nút đích, dẫn đến điều kiện giải mã không đạt được và không thể nội suy ra không gian véc-tơ đã mã hóa tại nút nguồn từ không gian véc-tơ nhận được
Với một giá trị tiếp theo lep=0.2, thì chỉ có nút 14 đủ điều kiện để giải mã, các nút 1 và 10 do bị mất mát gói tin, không đủ điều kiện giải mã nên không thể giải mã được
Ta thấy rằng với xác suất mất mát đường truyền tăng thì nhiều gói tin bị mất và xác suất không gian nhận có thể giải mã giảm
Hình 4.8: Xác suất mất mát đường truyền 0.2
Hình 4.9: Xác suất mất mát đường truyền 0.9