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
Trang 32 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).
Trang 33 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ừ…
Trang 34 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
Trang 35 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
Trang 36 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.