Giới hạn mã Singleton

Một phần của tài liệu Sửa lỗi mạng sử dụng mã hóa không gian con (Trang 29)

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 ⁄ ):

3.4 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ã.

3.4.1 Bộ tạo 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 { }

3.4.2 Bộ giải mã.

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 ( ) .

Thuật toán hàm : [2]

3.5 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.

CHƢƠNG IV

MÔ PHỎNG 4.1 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]

4.1.2 Cấu trúc phần mềm

Phần mềm được chia làm hai module chính: coregui.

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 đồ.

4.1.3 Giao diện phần mềm

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.

4.2 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.4: Sơ đồ mạng

Hình 4.6: Tùy chọn Protocol

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 dataType 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.

4.2.1 Cấu trúc gói tin

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:

 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.sinksTerminated.append(pairId[0])

4.3 KẾT QUẢ

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

CHƢƠNG V

KẾT LUẬN 5.1 Kết luận

Luận văn đã trình bày những khái niệm tổng quan về kỹ thuật sửa lỗi mạng sử dụng mã hóa không gian con cho truyền tin ứng dụng mã mạng tuyến tínhngẫu nhiên, một hướng nghiên cứu đang được rất nhiều nhà khoa học quan tâm hiện nay, cách mã hóa cũng như giải mã nó. Đây là một kỹ thuật mã hóa giúp chống lại lỗi và mất mát khi truyền trong mạng.

Do thời gian thực hiện mô phỏng có hạn, khó khăn trong việc tìm hiểu vì phần mềm thực hiện mô phỏng là phần mềm mới, phức tạp nên chưa thể can thiệp sâu hơn vào hệ thống. Luận văn đã cố gắng mô phỏng được thuật toán giải mã và mã hóa của kỹ thuật mã hóa không gian con, chưa thể tính toán được hiệu năng của mạng, chưa thể đếm được số gói tin giải mã thành công trên tổng số gói tin gửi mà chỉ giải mã những gói tin thỏa mãn điều kiện. Công việc này sẽ được nghiên cứu sâu hơn trong những nghiên cứu trong tương lại.

5.2 Hƣớng nghiên cứu trong tƣơng lai

Lấy mẫu nén (compress sensing) là một phương pháp hiện đại cho phép lấy mẫu tín hiệu có tính chất thưa hoặc có thể nén được với số mẫu ít hơn nhiều so với số mẫu lấy theo phương pháp truyền thống Nyquist. Lấy mẫu nén đang được nhiều người quan tâm vì nó có ưu điểm lơn như: giảm dung lượng bộ nhớ, tăng tốc độ lấy mẫu của các bộ ADC, giảm thiểu tiêu hao năng lượng trong các bộ cảm biến…

Hướng phát triển tiếp theo của luận văn là ứng dụng kỹ thuật lấy mẫu nén vào mã hóa không gian con để thu và tái tạo lại một không gian véc-tơ.

TÀI LIỆU THAM KHẢO

[1] R.Alshwede, N.Cai, R.Li, and R.W.Yeung, “Network information flow: Single source” IEEE Trans, Inform. Theory, submitted for publication.

[2] R.Kotter and F.R.Kschischang, “Coding for errors and erasures in random network coding” IEEE Transactions on Information Theory, vol.54, no.8, August 2008.

[3] S.-Y. R. Li, R. W. Yeung, and N. Cai. “Linear network coding”,IEEE Transactions on Information Theory , Februray, 2003.

[4] “Beyond Routing via Network Coding: An Overview of Fundemental Information – Theoric Results”

[5] T.Ho, R.Koetter, M.M’edard, D.R.Karger, M.Effros, J.Shi, and B.Leong, “A random linear network coding approach to multicast”,

IEEE Trans. Inform. Theory, vol. 52, no. 10, pp. 4413-4430, Oct. 2006.

[6] http://www.procul.org/blog/2006/02/10/ly-thuy%e1%ba%bft-ma- m%e1%ba%a1ng-1/

[7] H.Wang, C.Xing, and R.Safavi-Naini, “Linear authentication codes: Bounds and construction,” IEEE Trans. On Inform. Theory,

vol. 49, pp. 866-872, Apr. 2003.

[8] C.Fragouli, E.Soljanin, “Network Coding Fundamental”, now Publishers Inc, 2007.

[9] R.Kotter and M.Medard, “An algebraic approach to network coding”, IEEE/ACM Trans. Networking, vol. 11, no. 5, pp. 782- 795, Oct. 2003.

PHỤ LỤC Hàm đƣợc tạo ra từ bản tin: 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 nghĩa hàm mũ trong thuật toán Interpolate:

def deg(self,fx,fy):

Một phần của tài liệu Sửa lỗi mạng sử dụng mã hóa không gian con (Trang 29)

Tải bản đầy đủ (PDF)

(52 trang)