08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 1
Chương 4: Điều khiển liên kết dữ liệu
1. Chia khung dữ liệu
2. Kiểm soát luồng dữ liệu
3. Phát hiện và sửa lỗi
4. Kiểm soát lỗi
5. Giao thức HDLC
6. Các giao thức khác
7. Bài tập
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 2
Điều khiển liên kết dữ liệu
Truyền tín hiệu trên liên kết
vật lý
Truyền dữ liệu trên liên kết
vật lý
Thiết lập liên kết dữ liệu
Truyền dữ liệu
Giải phóng liên kết dữ liệu
Vấn đề cần giải quyết
Chia dữ liệu thành khung
Kiểm soát luồng dữ liệu
Kiểm soát lỗi
Đánh địa chỉ
Gộp dữ liệu điều khiển và dữ
liệu trên cùng một liên kết
Quản lí liên kết
Chưa có vấn đề nào
được giải quyết ở tầng
vật lý
Nội dung chương 4
Chia khung
Kiểm soát lỗi
Kiểm soát luồng dữ liệu
HDLC: Giao thức kiểm
soát dữ liệu bậc cao
Các giao thức khác
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 3
1. Chia khung
Dữ liệu cần chia thành từng khối để
đảm bảo đồng bộ vật lý
Bổ sung các bít kiểm tra để phát hiện và sửa lỗi
Bổ sung các thông tin điều khiển
Tầng vật lý truyền một chuỗi bít không có cấu trúc.
Có thể chia khung sử dụng các bít đặc biệt
Tầng liên kết dữ liệu có thể chia khung sử dụng
Khoảng lặng giữa các khung dữ liệu
Không đảm bảo đồng bộ, dễ bị ảnh hưởng bởi nhiễu
Số đếm ký tự
Ký tự đặc biệt
Chuỗi bít đặc biệt
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 4
Dùng số đếm ký tự
Dữ liệu chia thành nhiều ký tự, mỗi ký tự có từ 5-8 bít (giao
thức hướng ký tự)
Ký tự đầu tiên của một khung dữ liệu chứa số lượng ký tự của
khung dữ liệu
Tại đích, căn cứ vào số đếm để xác địng ranh giới các khung
Khi có 1 lỗi bất kỳ, mất đồng bộ, không có khả năng tái lập lại,
kể cả khi phát hiện ra có lỗi
Dùng để hỗ trợ các phương pháp khác (phát hiện lỗi)
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 5
Dùng ký tự đặc biệt
Dùng một ký tự đặc biệt
FLAG để phân tách các
khung dữ liệu
Nếu trong dữ liệu có ký tự
FLAG, chèn một ký tự đặc
biệt khác vào trước (ESC),
trước khi tạo khung dữ liệu
Nếu trong dữ liệu có ký tự
ESC, chèn tiếp một ký tự
ESC
Tại đích: khi nhận khung dữ
liệu,
Căn cứ vào FLAG đứng riêng
để chia khung
Loại bỏ các ký tự chèn thêm
ESC FLAG=FLAG
ESC ESC=ESC
•
Giới hạn trong một bảng chữ
cái
•
Dùng trong PPP cho liên kết
quay số
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 6
Dùng chuỗi bít đặc biệt
Dùng một chuỗi bít đặc
biệt để phân chia các
khung dữ liệu
Ví dụ 01111110
Khi có chuỗi 01111110
trong dữ liệu
Nếu có 5 bit 1 liền nhau,
chèn 1 bít 0 vào sau
Tại đích
Tách khung
111110 được chuyển
thành 11111
(a) Dữ liệu ban đầu.
(b) Dữ liệu truyền đi.
(c) Dữ liệu tại đích.
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 7
2. Kiểm soát luồng dữ liệu
Đảm bảo trạm nguồn không làm quá tải trạm đích
Trạm đích
lưu trữ các khung dữ liệu trong bộ nhớ đệm
Thực hiện một số thao tác trước khi chuyển dữ liệu lên tầng
trên
Bộ nhớ đệm có thể bị đầy, dẫn tới mất khung dữ liệu
Chưa đặt vấn đề lỗi truyền tin
Các khung dữ liệu luôn luôn được truyền chính xác
Độ trễ truyền tin không xác định
Giải pháp
Cơ chế dừng và chờ
Cơ chế cửa sổ trượt
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 8
Cơ chế dừng và chờ
Nguyên tắc
Nguồn gửi một khung dữ liệu
Đích nhận khung dữ liệu, xử lí, sau đó thông báo sẵn sàng nhận các
khung dữ liệu tiếp theo bằng một thông báo báo nhận
(acknowledgement)
Nguồn chờ đến khi nhận được báo nhận mới truyền tiếp khung dữ liệu
tiếp theo
Ưu điểm
Đơn giản, đặc biệt thích hợp với các khung dữ liệu lớn
Nhược điểm
Với các khung dữ liệu nhỏ, thời gian sử dụng đường truyền bị lãng phí
Không thể sử dụng các khung dữ liệu lớn một cách phổ biến
Bộ nhớ đệm có hạn
Khung dữ liệu dài khả năng lỗi lớn
Trong môi trường truyền tin chia sẻ, không cho phép trạm nào chiếm dụng
lâu đường truyền
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 9
Cơ chế cửa sổ trượt
Cơ chế dừng và chờ: chỉ cho phép truyền một khung
dữ liệu
Cơ chế cửa sổ trượt cho phép truyền nhiều khung dữ
liệu cùng một lúc
Xét hai trạm A, B kết nối bằng một đường truyền song
công
B có bộ nhớ đệm n khung dữ liệu
Như vậy A có thể gửi cùng một lúc n khung dữ liệu mà
không cần báo nhận
Báo nhận
Để ‘nhớ’ các khung dữ liệu đã báo nhận, cần đánh số các
khung dữ liệu
B báo nhận một khung bằng cách báo số khung dữ liệu mà
B đang chờ nhận, ngầm định đã nhận tất cả các khung
trước đó
Một báo nhận có thể dùng cho nhiều khung dữ liệu
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 10
Cơ chế cửa sổ trượt
Cửa sổ
A quản lý một danh sách các số thứ tự khung được
quyền gửi đi (cửa sổ gửi)
B quản lý một danh sách các số thứ tự khung đang
chờ nhận (cửa sổ nhận)
-> cơ chế cửa sổ trượt
Số thứ tự khung dữ liệu có độ dài giới hạn, do đó
cần được lấy modulo. Vd 3 bít-> modulo 8
Cửa sổ bị giới hạn bởi giá trị lớn nhất của số thứ tự
Ví dụ 3 bít, cửa sổ gửi = cửa sổ nhận=8
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 11
Cơ chế cửa sổ trượt
Hình trên
Tại nguồn
Cận dưới của cửa sổ tăng lên khi
gửi một (nhiều) khung dữ liệu
Cận trên của cửa sổ tăng lên khi
nhận một (nhiều) báo nhận
Tại đích
Cận dưới của cửa sổ tăng lên khi
nhận một (nhiều) khung dữ liệu
Cận trên của cửa sổ tăng lên khi
gửi một (nhiều) báo nhận
Hình dưới
A có thể gửi 7 khung dữ liệu cùng
một lúc từ F0
A gửi F0,F1,F2, giảm cửa sổ
xuống còn 4
B có thể nhận 7 khung
B nhận F0,F1,F2 giảm CS còn 4
B xử lí xong F0,F1,F2, RR 3, tăng
CS
A gửi F3,4,5,- giảm CS còn 3
B nhận F3, xử lí, gửi RR 4
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 12
Cơ chế cửa sổ trượt
Kiểm soát luồng dữ liệu
Khi trạm B không có khả năng nhận thêm khung dữ liệu, CS
nhận tin=0, B gửi thông báo RNR 5 Receive Not Ready
Sau khi B xử lí một số các khung dữ liệu trong bộ nhớ đệm,
CS>0, B gửi RR x Receive Ready, báo nhận và chờ nhận
Trong trường hợp truyền tin hai chiều
A và B cùng truyền tin
Khi B cần báo nhận và cần truyền số liệu. B gửi kèm báo
nhận trong khung dữ liệu: Piggybacking
Nếu không, B gửi một khung báo nhận riêng
Sau khi gửi báo nhận, nếu B truyền khung dữ liệu, B vẫn
đặt số báo nhận trong khung dữ liệu
Cơ chế cửa sổ trượt hiệu quả hơn nhiều so với dừng
và chờ!
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 13
3. Phát hiện và sửa lỗi
Vì sao phải phát hiện và sửa
lỗi
Xác suất lỗi của một bít tương
đối nhỏ
(P
1
=10
-6
)
Xác suất một khung dữ liệu
1000 bit không lỗi
(1-P
1
)
1000
~0,999
Xác suất lỗi của một khung dữ
liệu
1- (1-P
1
)
1000
=10
-3
Quá lớn!
Làm thế nào?
Bổ sung một số bít (dư thừa)
để phát hiện lỗi
Tại đích tính lại các bít bổ sung
Nếu hai giá trị bằng nhau:
không có lỗi
Nếu không, có lỗi, căn cứ vào
kết quả để phát hiện lỗi
Một khung dữ liệu m bít, sử dụng thêm r
bít
Một từ dữ liệu m bít được mã hóa bằng
một từ mã m+r bít
Hai loại mã
Mã phát hiện lỗi: Mã Hamming
Mã sửa lỗi
Parity bit (bít chẵn lẻ)
CRC (Cyclic Redundancy Check) mã vòng
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 14
Khoảng cách Hamming
Định nghĩa: Số các bít khác nhau giữa hai từ
Có 2
m+r
từ mã để mã hóa 2
m
từ dữ liệu
Có một số từ mã không sử dụng: từ mã không hợp lệ
Nguyên tắc phát hiện lỗi: khi có lỗi xảy ra, từ mã thu được
không hợp lệ
Ví dụ:
Thêm một bít chẵn lẻ vào sau dữ liệu
Có một tập từ mã với khoảng cách =2
Khi có 1 bit lỗi, có một từ mã không hợp lệ-> phát hiện có lỗi
Nguyên tắc sửa lỗi: khi có lỗi xảy ra, luôn luôn xác định được
từ mã hợp lệ gần nhất.
Ví dụ
Dùng 4 từ mã 0000000000, 0000011111,1111100000, 1111111111
Mã hóa từ dữ liệu 2 bít 00,01,10,11
Khoảng cách giữa các từ mã 5
Sửa được 2 lỗi: khi có 2 lỗi, từ mã hợp lệ tương ứng có khoảng cách gần
nhất
Vd khi nhận chuỗi bít 0000000111, mã hợp lệ là 0000011111 (2 bít lỗi)
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 15
Mã hamming sửa một lỗi
Giới hạn lý thuyết
từ dữ liệu có m bit, mã hóa bằng m+r bit
Có 2m từ mã hợp lệ, mỗi từ mã có m+r bit
Khi có một bít lỗi, có khả năng tạo ra m+r từ mã không hợp lệ có khoảng
cách đến từ mã hợp lệ là 1
Tập hợp của các từ mã không hợp lệ tạo ra bởi 2 từ mã hợp lệ khác
nhau phải rời nhau
Do đó 2
m
(m+r+1)<=2
m+r
hay m+r+1<=2
r
Mã Hamming sửa 1 lỗi có thể đạt được giới hạn trên
Từ mã sử dụng các checkbit ở vị trí 1,2,4,8,16….
Bít ở vị trí 2
K
sẽ là bít chẵn lẻ của tất cả các bít có số thứ tự có vị trí bít
thứ k trong khai triển nhị phân bằng 1
Một bít sẽ tham gia vào quá trình tính toán của các checkbit tương ứng
với tất cả các bit 1 trong khai triển nhị phân của số thứ tự
Khi nhận được từ mã, kiểm tra các checkbit
Nếu có 1 bít nào đó bị sai, thì tất cả các checkbit tương ứng với 1 trong
khai triển nhị phân của số thứ tự bít đó đều bị đảo dấu, các checkbit
khác giữ nguyền
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 16
Mã hamming sửa một lỗi-ví dụ
Từ mã 15 bít, bít 1,2,4,8 là
checkbit (xem bảng). Mã hóa
từ dữ liệu 11 bit
Bất cứ bít nào bị sai, các
check bít tương ứng sẽ bị
đảo
Căn cứ vào đó, đích sẽ biết
được bít nào bị đảo để sửa
lỗi
Thuật toán sửa lỗi
Tổng=0
Kiểm tra lần lượt các checkbit
Nếu checkbit bị đảo, cộng số
thứ tự của checkbit đó vào
tổng
Kết thúc kiểm tra, tổng=0:
không có lỗi, nếu tổng<>0 là số
thứ tự của bít lỗi
Số TT Số TT 1 2 4 8
0001 0010 0100 1000
1 0001 X
2 0010 x
3 0011 X X
4 0100 X
5 0101 X X
6 0110 X X
7 0111 X X X
8 1000 X
9 1001 X X
10 1010 X X
11 1011 X X X
12 1100 X X
13 1101 X X X
14 1110 X x X
15 1111 x X X X
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 17
Mã hamming sửa một chuỗi lỗi liên tiếp
Thường các bit lỗi hay xảy ra
liên tiếp
Mã hamming chỉ sửa được
một lỗi
Để sửa k lỗi liên tục
truyền cùng một lúc k từ mã mã
hóa bằng mã hamming
K từ mã này được xếp thành
ma trận bit
Ma trận này được truyền theo
từng cột.
Tại đích, ma trận được nhận, tái
tạo lại các từ mã
Trường hợp xấu nhất, khi có
k bít liên tiếp bị truyền lỗi, mỗi
từ mã chỉ có đúng 1 bít lỗi
Bằng mã Hamming, sửa
được lỗi cho mỗi từ
Dùng kr checkbit cho km bit dữ
liệu, sửa được một lỗi gồm tối đa
k bít liên tiếp
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 18
Mã phát hiện lỗi
Sửa lỗi đòi hỏi một số bít bổ sung
Nếu tỷ lệ lỗi nhỏ, các bít bổ sung đó bị lãng phí
Khi tỷ lệ lỗi nhỏ, giải pháp tốt hơn là truyền lại cả
khung dữ liệu.
Ví dụ: Tỷ suất lỗi 10
-6
Truyền 1Mb bằng khung dữ liệu mã sửa lỗi hamming độ lớn
1000 bit
Cần 10 checkbit bổ sung cho mỗi khung dữ liệu. Tổng cộng
10.000bit cho 1Mb
Nếu dùng 1 bít chẵn lẻ cho 1000 bít, khi truyền 1Mb có 1 lỗi
Tổng cộng dùng thêm 1x1000+1001=2001 bít
Do đó khi tỷ suất lỗi nhỏ, sử dụng các mã phát hiện lỗi
Parity check (bít chẵn lẻ)
Mã vòng (Cyclic redundancy check-CRC)
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 19
Bít chẵn lẻ (Parity checkbit)
Thêm một bít vào cuối khung dữ liệu.
Giá trị của bit đảm bảo số bít 1 trong khung dữ liệu
luôn là số chẵn
Khi có một bít bị lỗi, tính chẵn lẻ bị thay đổi, phát
hiện ra lỗi
Nếu có một chuỗi bít liên tiếp bị lỗi, xác suất
phát hiện ra lỗi là 0.5
Có thể dùng kỹ thuật ma trận giống như với mã
hamming để phát hiện k lỗi liên tiếp
Khi truyền lại cần truyền cả k khối dữ liệu
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 20
Mã vòng
Nguyên tắc: thêm r bít (FCS Frame Check Sequence)
vào m bít dữ liệu
số nhị phân m+r bít chia hết cho một số nguyên xác định
trước
Khi nhận được khung dữ liệu, chia cho số nguyên
trên. Nếu không còn dư tức là không có lỗi
Trong trường hợp có lỗi, giá trị của dữ liệu bị sai lệch một
số E nào đó
Lỗi luôn được phát hiện, chỉ trừ khi E chia hết cho số
nguyên trên (hiếm)
Giải thuật
Mô tả bằng phép toán nhị phân
Mô tả bằng phép toán đa thức
Mô tả bằng mạch logíc số
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 21
Mã vòng bằng phép toán nhị phân
Phép cộng, trừ nhị phân
không nhớ
X+X=0, X-X=0
Định nghĩa
T=khung dữ liệu k+n bit
M: k bit đầu tiên (dữ liệu) của T
F: n bit cuối cùng (FCS) của T
P: Số nhị phân n+1 bít
T=M 2
n
+F
Mục tiêu: Chọn F để T/P
không dư
Chia M 2
n
cho P được Q dư R.
Vì các phép trừ không nhớ nên
R có <=n bít
Chọn F=R.
T=M 2
n
+R=PQ+R+R=PQ chia
hết cho P
Ví dụ
M=1010001101 (10 bít)
P=110101 (6 bít)
Cần tính F (5 bít)
Thêm 5 số 0 sau M: Mx2
5
=
101000110100000
Chia giá trị thu được cho P
R=01110, F=01110
T=101000110101110
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 22
4. Kiểm soát lỗi
Đảm bảo truyền tin tin cậy
trên môi trường truyền tin
không tin cậy
Điều kiện
Các khung dữ liệu luôn luôn
được truyền chính xác
Độ trễ truyền tin không xác
định
Có hai loại lỗi
Mất khung dữ liệu
Khung dữ liệu bị lỗi
Các kỹ thuật sử dụng:
Phát hiện lỗi (đã học)
Báo nhận
Truyền lại với timeout
Truyền lại với báo không nhận
Các kỹ thuật trên gọi chung
là tự động truyền lại (ARQ
automatic repeat request).
Có 3 phiên bản chuẩn hóa
Dừng và chờ (Stop and
Wait)ARQ
Quay lại N(Go Back N) ARQ
Loại bỏ chọn lọc (Selective
Reject) ARQ
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 23
Dừng và chờ
Dựa trên cơ chế KS luồng
dữ liệu dừng và chờ
Nguồn chỉ có thể truyền tiếp
khi có báo nhận
Hai loại lỗi
Khung dữ liệu bị mất hoặc bị
lỗi: trạm nguồn cần có cơ chế
timeout
Báo nhận bị mất: trạm nguồn
gửi lại khung dữ liệu, trạm đích
cần loại khung dữ liệu lặp
Đánh số các khung bằng 0
và 1
Hai báo nhận tương ứng cho
0 và 1
Ưu điểm: đơn giản
Nhược điểm: không hiệu quả
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 24
Go back-N ARQ
Nguyên tắc
Dựa trên cơ chế cửa sổ trượt
Khi có một khung dữ liệu chưa được nhận, tất cả
các khung có số thứ tự sau đều bị loại bỏ
Trạm nguồn sẽ truyền lại tất cả các khung từ khung
bị lỗi
Sử dụng một khung dữ liệu báo không nhận REJ
08/09/14 @Hà Quốc Trung 2004. Chương 4: Điều khiển liên kết dữ liệu 25
Hoạt động
A gửi khung dữ liệu cho B, khởi động đồng hồ và chờ báo
nhận. Có thể có các trường hợp sau xảy ra
Khung dữ liệu bị lỗi.
–
A gửi khung i. Khung i bị lỗi. B nhận tốt khung i-1. B gửi cho A REJ i và
loại bỏ tất cả các khung nhận được sau đó. A khi nhận được REJ
truyền lại tất cả các khung từ i
–
Khung i bị mất. A đã gửi khung i+1, …. B nhận đuợc i+1 khi đang chờ i.
B gửi REJ i. A truyền lại tất cả khung từ i
–
Khung i bị mất, A không gửi thêm khung nữa. B không trả lời A. Sau
một thời gian, A timeout. A gửi cho B một khung RR đặc biệt, đề nghị B
gửi lại báo nhận cuối cùng. Sau đó A gửi lại khung i
Báo nhận bị lỗi
–
B nhận khung i và gửi RR i+1 bị mất. A có thể nhận được các báo nhận
tiếp theo bao gồm báo nhận i
–
A timeout, A gửi khung RR đặc biệt giống trường hợp trên
REJ bị lỗi: giống trường hợp trên