III: X4 X5 X6 X7 =
1: Pha thiết lập cuộc gọi 2: Pha trao đổi dữ liệu 3: Pha kết thúc cuộc gọ
2.4.2. Cấu trúc khung
Trong giao thức hướng bit, cấu trúc khung đã được chuẩn hoá việc trao đổi thông tin dữ liệu, lệnh và phúc đáp. Cấu trúc khung của HDCL chỉ ra trên hình 2.11. Cờ chiếm một Octet. Trường địa chỉ và trường điều khiển có thể là 1 hay 2 Octet. Độ dài của trường dữ liệu thay đổi, tối thiểu là 0. Bản tin được bảo vệ bằng mã điều khiển lỗi CRC gồm 2 (hoặc 4) octet. Thời gian giữa các lần truyền của các khung thực tế trên kênh được gọi là thời gian lấp đầy giữa khung. Thời gian lấp đầy này được thực hiện bằng các truyền liên tục các cờ giữa các khung.
HDLC định nghĩa 3 loại khung:
- Khung thông tin – khung I: Dùng dể phát dữ liệu tới người dùng. Ngoài ra, còndùng để trao đổi thông tin điều khiển luồng, kiểm soát lỗi khi dùng cơ chế ARQ kèm ngay trên khung thông tin. Nó cũng còn dùng để thực hiện một vài chức năng cụ thể khác như lệnh thăm dò.
- Khung điều khiển – khung S: Thực hiện các chức năng điều khiển để thực hiện ARQ không kèm theo khung thông tin như phúc đáp các khung, yêu cầu phát lại các khung, yêu cầu ngừng lập tức việc truyền các khung việc dùng thực tế khung S phụ thuộc vào các chế độ kết nối (NRM, ABM hay ARM).
- Khung không số – khung U: Dùng cho các mục đích điều khiển phụ Khung U dùng cho khởi tạo kết nối, ngắt kết nối và các chức năng điều khiển khác. Khung dùng 5 bit UN để tạo lệnh, bởi vậy cho phép 32 lệnh hay đáp ứng khác nhau.
Hình 2.11 mô tả dạng khung thông tin. Trong các khung S và nhiều khung U không có trường dữ liệu.
8 bit
8 hay16 bit
8 bit n x 8 bit 32 hay16
bit 8 bit KhungHDLC Khối dữ liệu Cờ Trường địa chỉ Trường điều khiển
Trường thông tin (dữ liệu)
Trường kiểm tra lỗi CRC
Cờ
Hình 2.11 Cấu trúc khung HDLC (khung thông tin I)
Cờ chiếm một Octet, có mẫu bit là 011111110. Cờ đóng đồng thời là cờ mở cho khung tiếp sau. Để duy trì đồng bộ, cờ vẫn sẽ được phát khi kênh ở trạng thái không tích cực. Như đã giải thích ở trước, ở đầu phát dùng kỹ thuật chèn bít (chèn bit 0) vào sau năm số 1 liên tiếp làm cho không thẻ có lớnhn năm số 1 liên tiếp trong luồng dữ liệu phát giữa các cờ. Đầu thu sẽ tự động loại bỏ các bít chèn thêm này. Ngoài ra, dẫy số bít 1 dài còn dùng để thông báo một số tín hiệu đặc biệt nếu số độ dài đoạn logic 1 là lớn hơn 7 song nhỏ hơn 15 sẽ được đầu thu hiểu như tín hiệu “bỏ qua” (abort), còn
khi có độ dài đoạn logic 1 lớn hơn 15 được xem như tínhiệu chỉ rằng kênh đang rỗi (treo).
Như vậy, việc chèn bit đã cho phép dữ liệu truyền có dạng bấtkỳ, đảm bảo “tính trong suốt”. Chèn bit cũng đảm bảo cho các chuyển đổi từ 0 sang 1 và ngược lại sảy ra đủ thường xuyên, giúp cho dễ dàng đồng bộ các mạch thu về mặt vật lý.
Trường địa chỉ:
Trường địa chỉ dùng để xác định hai trạm trong thủ tục điều khiển. Mỗi trạm được kèm theo một địa chỉ duy nhất. Nội dung trường địa chỉ tuỳ thuộc vào loại trạm (trạm sơ cấp hay thứ cấp) và cấu hình kênh. Trong các cấu hình không cân bằng, chỉ cần xác định trạm thứ cấp vì thế trường địa chỉ trong cả khung lệnh và khung dáp ứng đều chứa địa chỉ của trạm thứ cấp. Trong cấu hình cân bằng, khung lệnh chứa địa chỉ trạm đích và khung đáp ứng chứa địa chỉ trạm gửi.
Trường địa chỉ thường dùng 1 octet (8bit) song có thể mở rộng ra nhiều octet để mô tả các địa chỉ dài. Khi này, bít cấp thấp nhất trong mỗi octet sẽ lấy giá trị là 0 hay 1, tuỳ thuộc vào đó có là octet cuối cùng trong trường địa chỉ hay chưa như mô tả trên hình 2.12. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 1 8xn Hình 2.12. Trường đại chỉ mở rộng
Trường điều khiển
Trường điều khiển chiếm 1 hay 2 octet, dùng để xác định chức năng của khung và thực hiện điều khiển logic việc trao đổi, thông tin giữa trạm nhận và trạm gửi. Tương ứng với 3 loại khung, trường này có 3 dạng chỉ ra trên hình 5.13 các bit đầu tiên trong trường điều khiển xác định loại khung tương ứng.
Trong toàn bộ các khung có bit P/F (thăm dò/kết thúc – Poll/Final). Bit này có thể nhận giá trị 0 hay 1. Giá trị 0 có nghĩa là trạng tháy của 2 đối tượng tham gia liên lạc trên đoạn tuyến là không thay đổi. Ngược lại giá trị 1 của bit P/F nghĩa là quyền được phát sẽ được đổi từ trạm phát sang cho trạm thu.
0 N(S) P/F N(R) 0 SC P/F N(R) N(s) P/F N(R) 1 1 1
Khung thông tin (I)
Khung giám sát (II)
Khung thông số (U)
Hình 2.13 Cấu trúc trường điều khiển
Để ví dụ, ta giả sử có 2 trạm A và B. Trạm A đang phát và gửi một khung tới B có bit P/F nhận giá trị 1. Nhờ vậy, nó chuyển quyền được phát về cho B. Nừu B có 5 khung để gửi tới A, thì 4 khung đầu có bit P/F đặt là 0, và chỉ có khung sau cùng có bit P/F đặt là 1. Sau khi gửi khung sau cùng này, quyền được phát lại trả lại cho A.
Cộng thêm vào việc dùng bit P/F, khung I còn thường xuyên có 2 số dãy N(S) và N(R), có giá trị từ 0 tới 7 (từ 0 tới 127 trong chế độ mở rộng). Các giá trị này tăng
Lưu hành nội bộ -85-
từng nấc theo chu trình, sau 7 lại về giá trị 0. N(S) dùng để nhận dạng khung phát còn N(R) dùng để nhận dạng khung thu.
Để hiểu các số này chuyển vận như thế nào, ta xét giả thiết một đường song công A-B và chúng ta đứng ở vị trí A. Khi ta gửi một khung, chúng ta tăng số N(S) của nó lên 1. Theo cách này, mỗi khung có tương ứng một số N(S). Nếu không xảy ra lỗi bit do các tác động thăng giáng hỏng hóc trên đường truyền, chúng ta sẽ thu được số N(R) và số này nói lên rằng toàn bộ các đoạn tin với số nhỏ hơn số N(R) đều đã được B thu và tiếp nhận.
Rõ ràng rằng N(S) và N(R) không được trùm nhau do điều kiện này sẽ gây nên việc trùng lặp nhận dạng. Trong thực tế, đòi hỏi N(S) – N(R) phải vượt quá một giá trị W cụ thể < 8, gọi là giá trị cửa sổ. Giá trị cửa sổ nói cho ta biết số cực đạic ác khung có thể gửi mà chưa được khẳng định là đã tiếp nhận.
Ví dụ, ta giả thiết W = 5, N(S)A = 1, N(R)A = 1 và N(S)B = 5 và N(R)B = 5. Hiện trạm A có “quyền để nói” và chế độ làm việc là NRM.
A gửi 4 khung tin I với trường điều khiển như sau:
00010101 0, NA(S) = 1, 0, N(R)B = 5
00100101 0, N(S)A = 2, 0, N(R)B = 5
00110101 0, N(S)A = 3, 0, N(R)B = 5
01001101 0, N(S)A = 4, 1, N(R)B =5
A gửi liền 4 khung, điều này là được phép vì giá trị cực đại là 5, khung tin cuối cùng đặt P/F = 1, và bởi vậy “quyền được nói” bây giờ chuyền về cho B. Khi này, B chuẩn bị một tin phát cho A (với trường địa chỉ của bản thân nó vì đây là 1 đáp ứng) và gửi đi với trường điều khiển như sau:
01011101 0, N(S)B = 5, 1, N(R)A = 5
Trong đáp ứng này B dùng số N(S) của mình, và gửi N(R) = 5 để phúc đáp rằng toàn bộ các khung tin do A gửi từ trước cho tới khung tin số 4 (kể cả khung số 4) đã được tiếp nhận. Số khung A đã gửi mà chưa phúc đáp bây giờ được giảm tới 0, A có “quyền được nói” và có thể gửi tiếp tối đa tới 5 đoạn tin nữa (= giá trị cửa sổ cực đại).
Ví dụ này trình bày hoạt động luồng trao đổi thông tin khi chế độ làm việc là NRM. Sơ đồ đánh số trên hướng truyền A-B và B-A làm việc một cách tự đọng và không phụ thuộc vào hướng kia. Trong ví dụ trên, sau khi đoạn tin đã được gửi và nhận, các trị số sẽ là N(S)A = 5, N(R)A = 5 , N(S)B = 6, N(R)B = 6
Khung S không chứa số N(S). Bởi vì, nó không thể dùng để gửi thông tin và độ dài của trường dữ liệu là 0. Tuy nhiên, nó chứa số N(R) và có thể dùng để phúc đáp các khung thu được.
SC trong hình 5.12 có thể có các giá trị sau:
SC = 0 0 RR Recejver Ready Đầu thu sẵn sàng
SC = 0 1 REJ Rejeet Loại bỏ
SC = 1 0 RNR Recejver Not Ready Đầu thu không sẵn sàng
Thông báo RR được dùng như một trả lời “mù”, dùng trong trường hợp không có gì đặc biệt phải trao đổi. Điều này thường gặp trong hệ thống điểm - đa điểm khi thăm dò. RNR dùng để nói rằng, đầu thu không sẵn sàng để tiếp nhận dữ liệu.
Ví dụ như thiết bị ở đằng sau đầu cuối dữ liệu không được đấu nối đúng và không sẵn sàng để nhận bất cứ dữ liệu nào. REJ và SREJ được dùng trong hệ thống ARQ để yêu cầu phát lại khung tương ứng với ARQ go-back-N và ARQ phát lại chọn lọc.
Khung U không chứa các số N(S) và N(R) và không dùng để gửi thông tin (theo nghĩa thông thường) hoặc phúc đáp các khung thu nhận. Khung U dùng để trao đổi các lệnh điều khiển phụ. Bảng 2.1 Chỉ ra các lệnh và các đáp ứng trong giao thức HDLC Bảng 2.1. Các lệnh và đáp ứng trong HDLC Tên Lệnh /Đáp ứng Mô tả
Khung thông tin (I) C/R Trao đổi dữ liệu người dùng
Khung điều khiển (S)
Recejver Ready RR C/R Phúc đáp ACK dương, Đầu thu sẵn
sàng thu khung I
Rejeet REJ C/R Phúc đáp âm NAK, dùng cho ARQ
go back N
Recejver Not Ready RNR C/R Phúc đáp ACK dương, Đầu thu
không sẵn sàng thu khung I
Selective Rejeet SREJ C/R Phúc đáp âm NAK, dùng cho ARQ
phát lại chọn lọc Khung không số (U)
Đặt chế độ đáp ứng bình thường/mở rộng SNRM/SNRME C Đặt chế độ NRM bình thường hay mở rộng Đặt chế độ đáp ứng không đồng bộ/mở rộng SARM/SARME C
Đặt chế độ ARM bình thường hay mở rộng
Đặt chế độ cân bằng không đồng
bộ/mở rộng SABM.SABME C
Đặt chế độ ABM bình thường hay mở rộng
Đặt chế độ khởi tạo SIM C Khởi tạo chức năng điều khiển liên
kết với trạm có địa chỉ tương ứng
Ngắt Disconnect (DISC) C Kết thúc cuộc nối liên keets logic
Phúc đáp dương không số
Unnumbered ACK UA R Phúc đáp đã nhận lệnh đặt chế độ
Chế độ Disconnect DM C Kết thúc cuộc nối liên kết logic
Yêu cầu Disconnect RD R Yêu cầu lệnh Disconnect
Yêu cầu chế độ khởi tạo RIM R Yêu cầu khởi tạo, cần thiết cho
Lưu hành nội bộ -87-
Unnumbered Information UI C/R Dùng để trao đổi thông tin điều
khiển
Unnumbered Poll UP C Dùng để trao đổi thông tin điều
khiển
Reset (RSET) C Dùng để hồi phục, RESET các số
N(S), N(R)
Nhận diện trao đổi XID C/R Dùng để yêu cầu/báo cáo trạng
thái
Thử TEST C/R Dùng để trao đổi trường thông tin
nhận dạng cho thử TEST
Loại bỏ Frame R Báo rằng đã thu được Frame lỗi
Các chế độ mở rộng có thể dùng trường điều khiển có độ dài là 2 Octet. ở đây
ta không đi sâu vào chi tiết, song điều này cho phép N(S) và N(R) có thể nhận các giá trị trong dải 0 127, làm tăng đáng kể giá trị cửa sổ trong những trường hợp cần thiết.
Trường thông tin
Trường thông tin chỉ có trong khung I và đôi khi có trong khung U. Dữ liệu truyền trong trường ở dạng bất kỳ, “trong suốt” đối với người dùng. Độ dài trường có thể thay đổi, song phải là số nguyên lần của octet.
Trường kiểm tra lỗi
Trường kiểm tra lỗi chứa 2 hay 4 octet, dùng để kiểm tra, phát hiện lỗi sau khi truyền của khối dữ liệu (tức bao gồm toàn bộ các bit trong khung không kể các bít cờ). Mã kiểm tra thường dùng là 16-bit CRC – CCITT như đã giới thiệu trong chương trước. Cũng có thể dùng CRC – 32 để tăng cường khả năng phát hiện lỗi khi độ dài khung dài. Khi này, độ dài của trường là 4 octet.
2.4.3. Hoạt động
Hoạt động của HDLC là quá trình trao đổi các khung I, khung S và khung U giữa 2 trạm. Quá trình trao đổi được chia làm 3 giai đoạn: thiết lập, trao đổi và kết thúc.
Giai đoạn thiết lập
Yêu cầu thiết lập có thể được thực hiện bởi trạm này hay trạm kia khi dùng 1 trong 6 lệnh đặt chế độ (xem bảng 5.1) các lệnh này nhằm:
* Báo hiệu cho trạm đối biết là đã yêu cầu thiết lập. * Yêu cầu đặt 1 trong 3 chế độ: NRM, ABM hay ARM
* Chọn biểu diễn số dãy bằng 3 hay 7 bit (mở rộng hay không mở rọng).
Sau khi trạm đối đã chấp nhận yêu cầu, khối HDLC tại trạm này sẽ phát khung phúc đáp không số UA tới trạm yêu cầu. Còn nếu trạm đối không chấp nhận yêu cầu thiết lập, nó sẽ gửi khung đặt chế độ ngắt DM.
Giai đoạn trao đổi dữ liệu:
Sau khi yêu cầu thiết lập đã được chấp nhận, một cuộc nối logic sẽ được thiết lập. Cả hai trạm có thể bắt đầu gửi dữ liệu trong các khung I, bắt đầu với số dãy là 0. Trường N(S) và N(R) chứa số dãy phát và thu để hỗ trợ hoạt động điều khiển luồng và điều khiển lỗi. Các modul HDLC sẽ gửi các khung I với số dãy tăng dần theo modul 8