A phát hiện xung đột, huỷ bỏ bức điện
1.5 Bảo toàn dữ liệu
Trong mụi trường cụng nghiệp, truyền thụng chịu ảnh hưởng rất lớn của nhiễu và chất lượng mụi trường truyền dẫn do vậy khụng trỏnh khỏi bị sai lệch. Ngay cả trong trường hợp sử dụng truyền thụng số, sai lệch vẫn cú thể sảy ra. Vấn đề đặt ra là phải hạn chế lỗi tối đa, trong trường hợp sảy ra lỗi phải cú biện phỏp phỏt hiện và khắc phục lỗi. Cú hai biện phỏp thực hiện:
+ Sử dụng cỏc phần cứng cao cấp, cỏc mạch lọc nhiễu và nõng cao biện phỏp bọc lút đường truyền + Sử dụng phương phỏp bảo toàn dữ liệu (xử lý bằng giao thức) để phỏt hiện và khắc phục lỗi.
Biện phỏp thứ nhất chỉ cú thể hạn chế được nhiễu mà khụng loại trừ hoàn toàn được nhiễu do vậy khụng thể đảm bảo chắc chắn lỗi sẽ khụng xảy ra, khụng thể nhận biết và khắc phục lỗi hơn nữa giỏ thành đầu tư cao. Biện phỏp thứ hai cú ưu điểm là giỏ thành đầu tư thấp, cỏch thức linh hoạt tuy nhiờn nú chỉ cú ý nghĩa khi xỏc suất xảy ra lỗi trờn đường truyền thấp, hơn nữa nú ảnh hưởng đến tốc độ xử lý thụng tin của cỏc trạm truyền thụng. Trong thực tế tuỳ từng yờu cầu cụ thể mà ỏp dụng hai phương phỏp trờn một cỏch linh hoạt.
Cú thể phõn biệt cỏc loại lỗi như sau: + Lỗi khụng thể phỏt hiện được.
+ Lỗi phỏt hiện được nhưng khụng sửa được ( khụng cú thụng tin chỉnh sửa ) + Lỗi phỏt hiện được và sửa được.
Nguyờn lý cơ bản của bảo toàn dữ liệu:
Bảo toàn dữ liệu là nhiệm vụ được thực hiện ở lớp 2, theo mụ hỡnh quy chiếu OSI. Trong quỏ trỡnh mó hoỏ nguồn bờn gửi sẽ bổ xung một số thụng tin phụ trợ cho mục đớch bảo toàn dữ liệu vào bức điện cần gửi đi, thụng tin phụ trợ này được tớnh toỏn theo một thuật toỏn nhất định. Bờn nhận sẽ dựa vào phần thụng tin bổ trợ này để phỏt hiện và khắc phục lỗi.
Cỏc biện phỏp khắc phục lỗi chỉ cú thể được thực hiện khi phỏt hiện ra lỗi, Cỏch khắc phục lỗi phụ thuộc vào cỏch thức kiểm soỏt lỗi, trong truyền thụng cú cỏc cỏch khắc phục lỗi sau:
+ Bức điện gửi đi chỉ cú phần thụng tin kiểm soỏt lỗi, khụng cú phần thụng tin khắc phục lỗi. Trường hợp này bờn nhận yờu cầu bờn gửi sẽ gửi lại một bản tin mới .
+ Bức điện gửi đi cú phần thụng tin khắc phục lỗi . Khi đú bờn nhận dựa vào phần thụng tin khắc phục lỗi để chỉnh sửa lại bản tin.
Theo lý thuyết phần thụng tin phụ trợ kiểm soỏt lỗi càng nhiều khả năng phỏt hiện lỗi càng cao. Tuy nhiờn trong quỏ trỡnh truyền thụng, thụng tin nguồn và thụng tin phụ trợ đều được gửi trờn cựng một đường truyền nờn phần thụng tin phụ trợ cũng cú thể bị lỗi do đú phải cõn nhắc quan hệ giữa lượng thụng tin nguồn và lượng thụng tin phụ trợ để đạt được hiệu quả cao nhất.
Bức điện truyền đi càng dài khả năng gặp lỗi trong bức điện càng lớn, đồng thời thời gian và cụng sức để khắc phục lỗi cũng lớn, trong truyền thụng cỏc bức điện được tớnh toỏn cú độ dài hợp lý, Khi lượng thụng tin nguồn lớn, thụng tin nguồn sẽ được cắt nhỏ cho phự hợp với cỏc bức điện và được đỏnh số thứ tự.
Để phõn tớch đỏnh giỏ tỏc dụng của cỏc phương phỏp bảo toàn dữ liệu cần sử dụng cỏc tham số sau: Tỉ lệ bit lỗi
Được tớnh bằng tỉ lệ giữa số bit bị lỗi trờn tổng số bit được truyền đi, nú chớnh là xỏc suất một bit truyền đi bị lỗi
l So p
Tỉ lệ bit lỗi là thước đo độ nhiễu của kờnh truyền dẫn, trong kỹ thuật p=10-4 là một giỏ trị chấp nhận được
Tỉ lệ bit lỗi cũn lại
Là thụng số đặc trưng cho độ tin cậy của một hệ truyền thụng sau khi đó ỏp dụng cỏc biện phỏp bảo toàn dữ liệu.
Tỉ lệ bit lỗi cũn lại phụ thuộc vào tỉ lệ bit lỗi, phương phỏp bảo toàn, chiều dài bức điện. Thời gian trung bỡnh giữa hai lần lỗi
vR n TMTBF
Giả sử truyền một bức điện dài 100 bit với tốc độ 9600bps ta cú mối quan hệ sau:
R TMTBF 10-4 10-6 10-10 104s 2,89h 3,3năm
Khoảng cỏch Hamming(Hamming Distance,HD)
Là thụng số đo độ bền vững của một mó dữ liệu, cú giỏ trị bằng số lượng bit lỗi tối thiểu mà khụng đảm bảo chắc chắn phỏt hiện được trong một bức điện khi ỏp dụng một phương phỏp bảo toàn dữ liệu.
Nếu trong một bức điện cú khả năng phỏt hiện được k bit lỗi một cỏch chắc chắn thỡ HD=k+1; Trong cỏc hệ thống Bus trường HD thường cú giỏ trị 4 hoặc 6
Theo lý thuyết thụng tin số lượng bit lỗi chắc chắn phỏt hiện được bao giờ cũng lớn hơn số lượng bit dựng để kiểm lỗi, do vậy để tăng HD cần tăng lượng thụng tin phụ trợ.
Hiệu suất truyền dữ liệu:
Hiệu suất truyền dữ liệu là một thụng số đặc trưng cho việc sử dụng hiệu quả cỏc bức điện phục vụ chức năng bảo toàn dữ liệu, được tớnh bằng tỉ lệ số bit mang thụng tin nguồn khụng bị lỗi trờn toàn bộ số bit được truyền.
n p m E n ) 1 (
Cỏc phương phỏp bảo toàn dữ liệu:
1. Parity bit
Dựng một bit thụng tin phụ trợ cho mục đớch phỏt hiện lỗi (P). Cú 2 loại P + P chẵn : Khi tổng số bit 1 của nguồn tin là chẵn thỡ bit phụ trợ P=0; + P lẻ: Khi tổng số bit 1 của nguồn tin là lẻ thỡ P=0;
VD: dựng P chẵn
Thụng tin nguồn cần gửi 10000111 Thụng tin gửi đi 100001110
Với phương phỏp P ta thấy nếu sai một bit bất kỳ trong phần thụng tin gửi đi (kể cả P) thỡ bờn nhận đều cú thể phỏt hiện được. Nếu sai 2 bit bất kỳ thỡ bờn nhận khụng thể phỏt hiện được. Như vậy HD=1+1=2.
Phương phỏp Parity cú thể phỏt hiện được sổ lẻ cỏc lỗi. Phương phỏp này được sử dụng chủ yếu cho giao thức UART.
2. Parity 2 chiều.
Đõy là phương phỏp bảo toàn theo khối. Dóy bit mang thụng tin nguồn được chia thành cỏc khối coi như cú 2 chiều. Trong thực tế người ta thường chọn 7x7 hay 8x8. Việc tớnh P được tớnh theo cả hai chiều.
Vớ dụ Parity 2 chiều chẵn 8x8 1 2 3 4 5 6 7 8 P 1 1 1 1 1 1 1 0 0 0 2 1 0 1 1 0 0 0 0 0 3 1 1 1 1 0 0 0 0 0 4 1 1 0 0 1 1 1 0 1 5 0 1 0 1 1 1 0 0 0 6 0 0 0 0 0 0 0 0 0 7 1 1 1 0 0 0 1 1 0 8 1 1 0 0 1 1 1 0 1 P 0 0 0 0 0 0 1 1 0 Theo vớ dụ trờn ta thấy
+ P tớnh cho hàng và cột là như nhau do vậy bit cuối cựng của P cú thể tớnh theo hàng hoặc cột, đối với bờn truyền dữ liệu bit cuối cựng này được tớnh theo P hàng.
+ Trong quỏ trỡnh truyền thụng, nếu sai một bit bất kỳ ( kể cả P) bờn nhận cú thể phỏt hiện được và định vị được chớnh xỏc vị trớ bị sai, như vậy phỏt hiện được và sửa được.
+ Khi sai 2 bit ở vị trớ bất kỳ, bờn nhận luụn phỏt hiện được nhưng khụng thể định vị chớnh xỏc vị trớ xảy ra lỗi, trường hợp này chỉ phỏt hiện được mà khụng sửa được.
+ Khi sai 3 bit luụn phỏt hiện được.
+ Nếu cú 4 bit bị lỗi theo cựng hàng và cột bờn nhận sẽ khụng phỏt hiện được, cỏc trường hợp lỗi 4 bit khỏc đều cú khả năng phỏt hiện được.
Như vậy khoảng cỏch Hamming của dữ liệu trong trường hợp này HD = 3+1 = 4
Về cơ bản phương phỏp này cú khả năng sửa lỗi, tuy nhiờn nú chỉ cú thể sửa khi một khối dữ liệu gửi đi chỉ cú một lỗi, do vậy khả năng sửa lỗi khụng phải là hoàn toàn đỏng tin cậy (sẽ xảy ra sai lệch khi sai 3 lỗi kề nhau). Nếu đường truyền cú độ tin cậy cao kết hợp với một số phương phỏp bảo toàn bức điện khỏc thỡ Parity bit 2 chiều là một biện phỏp cú thể phỏt hiện sai lệch và sửa chữa đỏng tin cậy.
3. CRC (Cyclic Redundancy Check)
Hai phương phỏp bảo toàn dữ liệu trờn hiệu suất truyền dữ liệu khỏ thấp, với Parity một chiều 8 bit tỉ lệ giữa thụng tin phụ trợ và dữ liệu là 1/8. Parity hai chiều là 17/64. CRC được gọi là phương phỏp mó vũng, xuất phỏt từ ý tưởng tỡm ra một phương phỏp bảo toàn dữ liệu nõng cao hiệu suất truyền thụng bằng cỏch giảm tỉ lệ giữa thụng tin phụ trợ kiểm tra lỗi trờn thụng tin dữ liệu cần truyền. í tưởng ở đõy là thụng tin phụ trợ được tớnh bằng một thuật toỏn thớch hợp sao cho cỏc bit dữ liệu được tham gia nhiều lần vào quỏ trỡnh tớnh toỏn, khi đú lượng thụng tin phụ trợ sẽ giảm xuống mà vẫn đảm bảo được yờu cầu bảo toàn dữ liệu
Nội dung phương phỏp
Để tớnh toỏn thụng tin kiểm lỗi người ta dựng một chuỗi bit đặc biệt được gọi là đa thức phỏt G (generator polynominal).Chuỗi bit này được biểu diễn dưới dạng một đa thức nhị phõn bậc n, phần thụng tin phụ trợ cho bảo toàn dữ liệu sẽ cú n bit, n càng lớn khả năng bảo toàn dữ liệu sẽ càng cao nhưng phải trả giỏ bằng khối lượng tớnh toỏn nhiều và lượng thụng tin phụ trợ cho mục đớch bảo toàn dữ liệu tăng. Trong thực tế thường chỉ chọn n=7 hoặc 15.
Vớ dụ : Chuỗi bit 11100101 tương đương với đa thức
G = 1.x7 + 1.x6 +1.x5 + 0.x4 + 0.x3 + 1.x2 + 0.x 1+ 1.x0 là đa thức bậc n=7 Bờn gửi tin tớnh toỏn thụng tin bảo toàn dữ liệu như sau:
Thờm vào phần dữ liệu cần gửi(S) n bit 0 và coi phần dữ liệu mới là một đa thức (P)
Dựng đa thức P chia cho đa thức G, sử dụng phộp chia modulo 2, phộp chia này dựa vào quy tắc trừ khụng nhớ
0-0=0 0-1=1 1-0=1 1-1=0
Khụng cần quan tõm phần nguyờn của phộp chia, chỉ quan tõm đến phần dư (R), phần dư là một chuỗi n bit sẽ được thay thế vào vị trớ n số 0 được bổ xung trong đa thức P để được một đa thức mới D, trong kỹ thuật thường sử dụng phộp toỏn OR tức là D = P OR R.
Đa thức D là nguồn thụng tin đó ỏp dụng phương phỏp bảo toàn dữ liệu sẽ được gửi đi trờn đường truyền. Đối với bờn nhận sẽ thực hiện như sau:
Giả sử nhận được một chuỗi bit tương ứng với đa thức D’.
+ Nếu kết quả phộp chia được phần dư R’=0 thỡ khẳng định rằng xỏc suất rất cao bức điện khụng bị lỗi, cú thể coi D = D’. Bỏ n bit cuối của đa thức D’ sẽ được đa thức S’. S’ chớnh là thụng tin dữ liệu nguồn mà bờn nhận cần. Ta núi xỏc suất cao bởi mỗi bit thụng tin nguồn tham gia nhiều lần vào quỏ trỡnh tớnh toỏn thụng tin bổ trợ nờn khả năng “ dữ liệu sai mà kết quả đỳng “ là rất thấp.
+ Nếu kết quả phộp chia được phần dư R’ khỏc 0 thỡ cú thể khẳng định chắc chắn bức điện D’ nhận được đó bị lỗi, tức là D’ D
Phương phỏp CRC nhỡn qua cú vẻ phức tạp nhưng thực tế việc thực hiện nú lại rất đơn giản. Phộp chia ở đõy được thực hiện thuần tuý bởi phộp logic XOR giữa dữ liệu và đa thức phỏt G kết hợp với cỏc phộp so sỏnh và dịch bit thụng thường. Phương phỏp CRC đa số được thực hiện bằng phần cứng hoặc bằng phần mềm ở giao thức cấp thấp.
Phương phỏp CRC chỉ cú khả năng phỏt hiện lỗi, khụng cú khả năng định vị lỗi nờn nếu phỏt hiện ra lỗi trong một bức điện thỡ chỉ khắc phục được bằng cỏch yờu cầu bờn gửi gửi lại bức điện
Khả năng phỏt hiện lỗi được đặc trưng bằng khoảng cỏch Hamming phụ thuộc hoàn toàn vào đa thức phỏt G. Chiều dài dóy bit mang thụng tin nguồn khụng ảnh hưởng tới khả năng phỏt hiện lỗi nhưng để đạt được hiệu quả truyền thụng tối ưu cần chỳ ý tới quan hệ giữa chiều dài của dóy bit mang thụng tin nguồn trong một bức điện cần gửi với bậc của đa thức G. Bức điện càng dài thỡ xỏc suất gặp lỗi càng tăng, nếu bức điện ngắn thỡ tỉ lệ thụng tin bảo toàn dữ liệu / thụng tin nguồn tăng.
Vớ dụ sau đõy sẽ minh hoạ cỏc bước thực hiện phương phỏp này: Giả sử cần truyền bức điện S=10110100
Chọn đa thức phỏt G=1011(x3 + x + 1) Bờn gửi:
+ Thờm 3 bit 0 vào S để được P=10110100000 + Chia P cho G theo phương phỏp modulo 2
+ Sau phộp chia dóy bit được truyền đi :D = P OR R = 10110100111 Bờn nhận:
Giả sử bờn nhận nhận được D’ =10110100111 Chia D’ cho G
Phần dư R=0, kết luận xỏc suất cao dữ liệu nhận được khụng cú lỗi 1 0 1 1 0 1 0 0 0 0 0 1011 -1 0 1 1 0 0 0 0 0 1 0 0 0 10000100 -1 0 1 1 0 0 1 1 0 0 -1 0 1 1 R= 0 1 1 1 1 0 1 1 0 1 0 0 1 1 1 1011 -1 0 1 1 0 0 0 0 0 1 0 0 1 10000101 -1 0 1 1 0 0 1 0 1 1 -1 0 1 1 R= 0 0 0 0
Khụi phục dữ liệu gốc bằng cỏch bỏ 3 bit cuối của D’ sẽ được S’=10110100 Giả sử bờn nhận nhận được bức điện sai 1 bit D’=10110100011
Chia D’ cho G
Phần dư R0, kết luận bức điện nhận được đó bị lỗi.
4. Nhồi bit (bit Stuffing)
Nhồi bit thực chất khụng phải là một phương phỏp bảo toàn dữ liệu độc lập mà nú là phương phỏp sử dụng cho mục đớch đúng gúi dữ liệu và mó hoỏ bit. Trong một số giao thức, định dạng bức điện dựng một dóy bit đặc biệt làm cờ hiệu khởi đầu hay kết thỳc, dóy bit này sẽ khụng được phộp xuất hiện trong cỏc vị trớ khỏc của bức điện. Để làm được điều này người ta thờm vào dóy bit nguyờn bản một số bit để trỏnh một chuỗi dài cỏc bit 1. Hệ quả là cỏch làm này tạo điều kiện để dễ dàng nhận biết lỗi hơn
Nội dung phương phỏp:
Bờn gửi: Nếu trong bức điện cú n bit 1 đứng liền nhau( trừ dóy bit được dựng làm cờ hiệu) thỡ thờm một bit 0 vào ngay sau đú, dóy bit truyền đi sẽ khụng thể cú n+1 bit 1 liền nhau.
Bờn nhận: Nếu thấy n bit 1 liền nhau mà bit tiếp theo là 0 thỡ tỏch bỏ bit 0, nếu bit tiếp theo là 1 thỡ kiểm tra xem cú phải là cờ hiệu khụng. Nếu khụng phải là cờ hiệu thỡ chắc chắn dữ liệu bị lỗi.
Vớ dụ sau minh hoạ phương phỏp này: Giả sử n chọn =5 (CAN Bus)
Thụng tin nguồn (Khụng phải là cờ hiệu) :0101111101 Thụng tin gửi đi :01011111001
Nếu thụng tin nhận được :01011111001 thỡ coi như khụng cú lỗi, thụng tin nguồn được khụi phục bằng cỏch bỏ bit 0 sau 5 bit 1.
Nếu thụng tin nhận được :01111111001 qua mẫu bit sẽ phỏt hiện ra lỗi.
Trong thực tế hầu hết cỏc lớp giao thức đều ỏp dụng phương phỏp bảo toàn dữ liệu, do đặc thự của mỗi lớp mà cỏc phương phỏp bảo toàn tương ứng được sử dụng vỡ vậy cả 3 phương phỏp cú thể được phối hợp sử dụng. Vớ dụ một thụng tin nguồn ở lớp trờn cú thể sử dụng phương phỏp CRC cho khung bức điện, đến lớp vật lý sẽ được đưa vào khung UART và ỏp dụng phương phỏp Parity.