Phát hiện lỗi và điều khiển khắc phục lỗi

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Thuật toán điều khiển tắc nghẽn WLDA + (Trang 29)

1.Tổng quan

Trong mạng máy tính, nếu dữ liệu được truyền từ bên gửi sang bên nhận nhưng bên nhận không thể xử lý được do tín hiệu đã bị biến dạng hoặc bị lỗi là điều không chấp nhận được. Chính vì vậy, việc nắm bắt về các kỹ thuật bảo vệ, phát hiện, khắc phục lỗi là điều rất cần thiết. Nhưng nếu chỉ quan tâm tới việc đảm bảo tính đúng đắn của dữ liệu mà không quan tâm tới khả năng truyền tải của các thiết bị truyền dẫn thì lại là một thiếu sót lớn. Nếu các dữ liệu được gửi vào đường truyền một cách liên tục, không quan tâm đến tình trạng mạng thì tới một thời điểm nào đó, đường truyền sẽ bị quá tải và không có khả năng vận hành tiếp được nữa. Thực tế điều này cũng đã xảy ra, trong lịch sử phát triển của Internet, sự cố nghiêm trọng đầu tiên là sự sụp mạng do tắc nghẽn xảy ra vào tháng 10/1986, thông lượng vận chuyển qua mạng trở về giá trị gần bằng không. Để tránh hiện tượng như vậy, việc nghiên cứu nhằm tránh tắc nghẽn hay điều khiển các lưu lượng dữ liệu được truyền vào trong mạng trở nên cấp thiết. V. Jacobson đã tìm ra nguyên nhân và chỉ rõ [6]: Để có thể tránh tắc nghẽn thì các thực thể gửi và nhận tham gia truyền thông phải tuân theo các cơ chế điều khiển lưu lượng và điều khiển tắc nghẽn thường được gọi chung là điều khiển lưu lượng, đồng thời mạng cũng phải có phản ứng tích cực khi tắc nghẽn xảy ra hoặc có dấu hiệu sắp xảy ra. Vào tháng 11 năm 1988, ông đã công bố kết quả nghiên cứu khoa học trong bài báo có tên là “Congestion Avoidance and control”; sau khi phát biểu “Nguyên lý bảo toàn số lượng gói tin trong mạng”, ông đã chỉ rõ các điều kiện đảm bảo tình trạng cân bằng mạng, nghĩa là tình trạng mạng hoạt động bình thường và ổn định và đã được áp dụng trong giao thức

TCP. Nhờ vậy, mạng Internet vẫn đang hoạt động ổn định và hiệu quả. Tuy nhiên, như luận văn đã đề cập, kỹ thuật này chưa đủ để cung cấp các dịch vụ tốt trong các trường hợp khác nhau mà cụ thể là trong truyền thông Multimedia.

2. Cơ chế bảo vệ, phát hiện và khắc phục lỗi

Như đã đề cập, trong trao đổi số liệu nói chung, vấn đề quan trọng nhất là đảm bảo tính đúng, tính chính xác của số liệu được trao đổi. Trong truyền thông đa phương tiện (Multimedia), một trong các yêu cầu rất quan trọng là tính kịp thời, có thể chấp nhận một tỉ lệ lỗi nhất định trong các thông tin được trao đổi. Thí dụ, trong liên lạc truyền thông, như nói chuyện điện thoại, lỗi của số liệu tiếng nói chỉ được phép ảnh hưởng đến chất lượng tiếng nói ở một mức độ nào đó có thể chấp nhận được, nghĩa là người ta vẫn hiểu được nội dung thông tin cần trao đổi hoặc vẫn có thể biết được người đối thoại với mình là ai. Nếu lỗi số liệu tiếng nói quá lớn, ảnh hưởng nghiệm trọng đến chất lượng tiếng nói, khiến người nghe không hiểu được nội dung thông tin cần trao đổi, thì cuộc gọi đó không chấp nhận được và giá trị truyền tin là bằng không.

Vậy thì bản chất lỗi dữ liệu là gì? Như chúng ta đã biết số liệu máy tính là những số nhị phân 0 hoặc 1 và được gọi là các bit. Giá trị của một bit bị thay đổi trong quá trình trao đổi số liệu từ “0” sang “1” hoặc ngược lại, đã có thể làm sai toàn bộ việc nhận đúng một gói số liệu. Ví dụ: nếu một bít trong chuỗi bit đồng bộ bị thay đổi giá trị thì chuỗi bit đồng bộ không được nhận đúng là chuỗi bit đồng bộ nữa, khiến cho ký tự đầu tiên của gói số liệu không được nhận đúng, và điều đó cũng có nghĩa là toàn bộ gói số liệu không được nhận đúng và coi như gói số liệu đã bị “mất” (packet lost). Như vậy, bản chất lỗi truyền số liệu chính là “lỗi bit” (bit error).

Có nhiều nguyên nhân gây ra lỗi truyền số liệu như nhiễu trong môi trường truyền, lỗi do các thực thể tham gia mạng gây ra... Trong đó nguyên nhân chính là ảnh hưởng của môi trường truyền dẫn đến chất lượng của tín hiệu được truyền trên môi trường truyền dẫn đó. Tín hiệu được xét đến ở đây là tín hiệu nhị phân. Mỗi đường truyền có một giới hạn về băng thông (frequency band). Trong trường hợp lý tưởng, đường truyền không có nhiễu, giữa băng thông của một đường truyền và tốc độ truyền số liệu trên đường truyền đó có quan hệ ràng buộc theo công thức Nyquist sau đây: V=2*B*log2M, trong đó V là tốc độ truyền số liệu, tính bằng bit/s, B là độ lớn băng thông của đường truyền, tính bằng Hz, M là số mức tín hiệu (điện) biểu diễn thông tin. Nếu sử dụng 2 mức tín hiệu điện, thì công thức trở thành V=2*B. Tín hiệu được truyền “trung thực” trong giới hạn băng thông của một đường truyền, nghĩa là tuân thủ theo ràng buộc trên. Tín hiệu được truyền “trung thực” được hiểu theo nghĩa là: tín hiệu được đưa vào ở đầu vào của đường truyền (tín hiệu phát) cũng chính là tín hiệu nhận được ở đầu ra của đường truyền đó (tín hiệu thu). Nếu tín hiệu được truyền với tốc độ v > 2B thì tín hiệu sẽ bị biến dạng, còn gọi là tín hiệu bị méo. Và vì vậy không được tái tạo lại một cách chính xác như tín hiệu phát ra ở thiết bị cuối nguồn. Lỗi tín hiệu thu được trong trường hợp này tạo ra lỗi bit. Ngoài ra, năng lượng của tín hiệu bị suy giảm khi tín hiệu được truyền dẫn trên đường truyền cũng là một nguyên nhân dẫn đến sự biến dạng của tín hiệu. Thông thường, năng lượng của tín hiệu trên đường truyền giảm theo hàm logarit, phụ thuộc vào tần số, khoảng cách trên đường truyền đó. Sự suy giảm năng lượng của tín hiệu không chỉ làm giảm mức tín hiệu thu được ở thiết bị cuối đích, mà còn làm gảm tỷ số tín hiệu/tạp âm (S/N), khiến cho tín hiệu không được tái tạo lại đúng như tín hiệu phát ở thiết bị cuối nguồn. Những yếu tố khác, ví dụ: nhiệt độ, độ ẩm, năng lượng, sống điện từ…

gọi chung là nhiễu của môi trường, cũng là những nguyên nhân làm ảnh hưởng đến chất lượng truyền dẫn tín hiệu trên một đường truyền cụ thể.

Để đánh giá chất lượng truyền dẫn của một đường truyền, người ta xác định “tỷ lệ lỗi bit” BER (Bit Error Rate), còn gọi là xác suất lỗi bit pb, được định nghĩa là tỷ lệ số lượng tổng các bit bị lỗi trên tổng số các bit được truyền.

Một đường truyền tốt là đường truyền có tỷ lệ lỗi bit pb ≤ 10-9 , nghĩa là có không quá 1 bit bị lỗi trong tổng số 109

bit được truyền. Một đường truyền có thể chấp nhận được là đường truyền có tỷ lệ lỗi bit BER hay xác suất lỗi bit pb ≤ 10-4, nghĩa là: có 1 bit bị lỗi trong tổng số 10-4

bit được truyền. Dựa trên xác suất lỗi bit pb, người ta có thể xác định được xác suất lỗi gói số liệu pf.

pf = 1 – (1 – pb )N

trong đó N là độ dài của gói số liệu. Trong trường hợp Npb<<1 ta có: pf  Npb

Có hai loại lỗi bit là lỗi bit đơn (single bit error) và lỗi bit chùm (error burst). Lỗi bit đơn là lỗi từng bit riêng biệt, xuất hiện một cách ngẫu nhiên trong cả gói số liệu. Lỗi bit chùm là tập hợp nhóm các bit bị lỗi với một tỉ lệ vượt quá một ngưỡng xác định, xuất hiện liên tiếp trong cả gói số liệu. Một nhóm bit bị lỗi bắt đầu bằng một bit lỗi và kết thúc bằng một bit bị lỗi, các bit trong nhóm có thể bị lỗi liên tục hoặc không liên tục; giữa các nhóm bit bị lỗi phải tồn tại ít nhất là (B+1) bit không bị lỗi, trong đó B có độ dài là nhóm bit bị lỗi.

Để bảo vệ số liệu và phát hiện lỗi bit trong quá trình truyền số liệu, người ta thêm vào số liệu cần phát một số thông tin dư thừa theo một quy luật nhất định khi phát và tái tạo lại các thông tin dư thừa này theo cùng quy luật khi thu. Nếu thông tin dư thừa được bên nhận tái tạo lại không thay đổi so với thông tin dư thừa do bên gửi gửi đi, thì số liệu thu được không có lỗi; ngược lại, số liệu thu được có lỗi. Việc khắc phục lỗi được

thực hiện hoặc: a) tại thiết bị cuối đích, nếu phát hiện chính xác bit số liệu bị lỗi, bằng cách thay đổi giá trị của bit số liệu bị lỗi; hoặc b) thiết bị cuối đích không báo kết quả nhận số liệu bị lỗi và thiết bị cuối nguồn phát lại (bản sao) gói số liệu bị lỗi. Phương pháp a) có tên gọi là “Điều khiển khắc phục lỗi trước (FEC - Forward Error Correction)” thường được áp dụng cho đường truyền có độ trễ lan truyền tín hiệu lớn, ví dụ: đường truyền vệ tinh. Việc sửa lỗi tại chỗ sẽ làm giảm đáng kể thời gian khắc phục lỗi do không phải phát lại gói số liệu bị lỗi. Một số phương pháp điều khiển khắc phục lỗi trước thông dụng hiện nay là: phương pháp Hamming code, phương pháp Convolution code, phương pháp Reed- Solomom code. Phương pháp “Điều kiện khắc lỗi sau (Backward Error Correction)” là phương pháp điều khiển khắc phục lỗi thường được áp dụng cho hệ thống truyền dẫn hữu tuyến, bao gồm hai bước: Bảo vệ, phát hiện lỗi và khắc phục, sửa lỗi trên cơ sở phát lại gói số liệu bị lỗi.

Việc phát hiện lỗi ngày nay được sử dụng bởi một số phương pháp phổ biến như:

- Kiểm tra chẵn lẻ (Parity) theo ký tự - Kiểm tra chẵn lẻ theo khối

- Mã dư vòng CRC (Cyclic Redundancy Code)

- Thông báo kết quả nhận số liệu: Yêu cầu thực thể phát phải đợi biên nhận của gói số liệu vừa gửi mới được phát gói số liệu tiếp theo. Thông thường thực thể thu biên nhận cho từng gói số liệu. Nếu nhận đúng nó sẽ biên nhận (Acknowledgement) gọi là biên nhận tích cực (positive acknowledgement) - ACK. Còn ngược lại sẽ thông báo NACK (negative acknowledgement) gọi là thông báo “không tích cực”. Tuy nhiên, việc quản lý này lại gây ra trễ trong việc truyền tin và quản lý phức tạp trong bộ đệm.

- Phương pháp sử dụng số tuần tự: Trong hệ thống mạng, các gói tin có thể được truyền theo nhiều đường khác nhau nên đến thực

thể thu vào các thời điểm khác nhau, vì vậy việc sử dụng số tuần tự (secquence number) được gắn cho từng gói số liệu là điều rất cần thiết.

- Phương pháp sử dụng đồng hồ quản lý phát time-out: Nếu các gói tin được truyền đi mà không có biên nhận trở về thì thực thể phát sẽ phải truyền lại gói tin. Do đó quản lý đồng hồ phát là một việc không thể thiếu. Đồng hồ quản lý phát là một bộ đếm nhị phân đếm ngược được thiết lập một giá trị định trước sau khi gửi đi một gói tin, giá trị đồng hồ sẽ giảm dần đến 0 – time-out; Khi đó đồng hồ tạo ra ngắt (interrupt) và kích hoạt một hành động nào đo. Đồng hồ time-out được tính lại sau mỗi lần nhận ACK hoặc NACK. Việc xác định thời gian time-out cũng ảnh hưởng rất lớn, quyết định hiệu suất hoạt động của cơ chế điều khiển khắc phục lỗi.

Vậy nguyên nhân gây lỗi, hay tắc nghẽn trong các hệ thống mạng là do đâu? Có thể kể ra một số nguyên nhân:

- Thiết bị mạng có thể không xử lý được hết yêu cầu do bộ đệm nhỏ

- Tốc độ dữ liệu đầu vào lớn hơn tốc độ dữ liệu đầu ra - Thời gian xếp hàng xử lý quá lớn

- Đường truyền kém chất lượng…

Chính vì những nguyên nhân gây ra sự tắc nghẽn này người ta phải đưa vào khái niệm về điều khiển tắc nghẽn hay điều khiển lưu lượng tránh tắc nghẽn.

II. Điều khiển lưu lượng, tránh tắc nghẽn 1. Cơ chế điều khiển lưu lượng 1. Cơ chế điều khiển lưu lượng

Là tập hợp các biện pháp nhằm giám sát và điều khiển tốc độ phát số liệu của thực thể phát sao cho thực thể nhận luôn nhận đúng tất cả các

gói số liệu mà không bị tràn bộ đệm, ví dụ một cơ chế điều khiển lưu lượng được sử dụng phổ biến là cơ chế cửa sổ (windows-based).

Có thể kể ra một số các giao thức điều khiển khắc phục lỗi như: Giao thức “Dừng và chờ”, sau khi phát một gói số liệu thực thể phát dừng lại và chờ nhận được ACK, NACK hay time-out để có biện pháp thích hợp và sử dụng số tuần tự để thực thể nhận biết thứ tự các gói tin. Giao thức cửa sổ trượt Go-back-N sử dụng cơ chế cửa sổ gửi và cửa sổ nhận, gửi đi cùng một lúc một số gói tin rồi mới dừng lại chờ biên nhận cho từng gói tin đó, đồng thời sử dụng đồng hồ time – out cho từng gói tin. Tại bên nhận nếu có một gói tin thứ N bị lỗi, các gói tin được nhận sau đó sẽ bị loại bỏ cho dù các gói này có thể không bị lỗi. Thực thể phát gửi lại từ gói tin thứ N bị lỗi trở đi. Giao thức cửa sổ trượt phát lại có chọn lọc (Selective Repeat) xử lý khá hiệu quả bằng cách chỉ phát lại những gói tin bị hỏng.

Cơ chế cửa sổ trượt giới hạn số byte được phát và quá trình phát lại và sửa lỗi được giới hạn ngay trong mỗi khung cửa sổ.

Kỹ thuật hàng đợi nhằm quản lý và cấp phát băng thông có sự ưu tiên cho các kênh truyền theo các tiêu chí khác nhau.

Ngoài ra còn có phương pháp điều khiển ở mức ứng dụng, thực hiện trong các tiến trình tại hai đầu cuối, bên nhận và bên gửi.

Xét một số kỹ thuật điều khiển lưu lượng trong giao thức TCP:

1.1 Một số khái niệm và thông số cơ bản

- Gói dữ liệu: Đơn vị cơ bản trong kỹ thuật truyền số liệu

- ACK: Thông tin xác nhận gói dữ liệu đã được truyền đến đích. - W(t): Độ lớn cửa sổ phát tại thời điểm t

- SMSS (Sender maximum segment size): Kích cỡ tối đa của một gói dữ liệu được gửi

- RMSS (receiver maximum segment size) : Kích cỡ tối đa của gói dữ liệu mà thiết bị nhận có thể nhận, không bao gồm dữ liệu tiêu đề và các trường lựa chọn.

- RWND (Received window): Giá trị cửa sổ bên nhận tại thời điểm đang xét.

- CWND (Congestion window): Cửa sổ tắc nghẽn hay giá trị W(t) trong trường hợp có tắc nghẽn.

- Flight Size : Số gói dữ liệu đã gửi nhưng chưa nhận được xác nhận bởi gói xác nhận ACK tương ứng.

- Time out : Khoảng thời gian xác định gói tin có lỗi.

- RTT : Thời gian khứ hồi, hay độ trễ toàn phần, đó là khoảng thời gian để một gói tin đi đến đích và nhận lại ACK.

- Slow Start : Cơ chế khởi động chậm trong điều khiển lưu lượng

- Congestion Avoidance : Giai đoạn tránh tắc nghẽn trong cơ chế điều khiển lưu lượng

- Threshold : Ngưỡng chuyển đổi từ giai đoạn khởi động chậm sang giai đoạn tránh tắc nghẽn.

1.2 Điều khiển lưu lượng trong TCP

Việc sử dụng ACK để xác nhận gói tin đã đến đích hay chưa, ảnh hướng lớn đến hiệu suất mạng vì nhiều gói số liệu sẽ có nhiều gói ACK .

Giao thức TCP cung cấp dịch vụ trao đổi dữ liệu tin cậy sử dụng cơ chế điều khiển lưu lượng kiểu đầu cuối - đầu cuối (end-to-end) không phục thuộc vào cơ chế điều khiển tắc nghẽn của mạng ở các mức thấp thấp hơn. Giao thức này điều khiển tần suất truyền bằng cách giới hạn số gói xác nhận ACK được truyền. Trong mỗi phiên làm việc, độ lớn cửa sổ phát W là số gói dữ liệu có thể truyền đi liên tiếp mà chưa có gói xác nhận ACK trả lời tương ứng. Xét về mặt lý thuyết thì độ lớn cửa sổ phát càng lớn càng tốt, tuy nhiên thực tế thì không như vậy, độ lớn của sổ truyền ban đầu là thấp khi một kết nối được thiết lập, sau đó tăng dần lên

nhằm tránh tắc nghẽn (cơ chế khởi động chậm). Quá trình sẽ tăng lên liên

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Thuật toán điều khiển tắc nghẽn WLDA + (Trang 29)

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

(99 trang)