Tư tưởng của phương phỏp CRC:
- Chọn trước một đa thức (gọi là đa thức sinh) G(x) với hệ số bậc cao nhất và thấp nhấp đều bằng 1.
- Tỡm tập bit kiểm tra Checksum thoả món điốu kiện: đa thức tương ứng với xõu ghếp (xõu gốc và checksum) phải chia hết (theo modulo 2) cho G(x).
- Khi nhận tin, bờn nhận kiểm tra lỗi bằng cỏch lấy xau bit nhận được chia (modulo 2) cho G(x). Nếu khụng chia hết thỡ cú nghĩa là đó cú lỗi (ngược lại thỡ cũng chưa thể khẳng định là khụng cú lỗi).
Giả sử G(x) cú bậc là r, xõu bit gốc tương ứng với da thức M(x) cú bậc m. Cấc bước tớnh checksum như sau:
(1) Thờm r bit 0 vào cuối xõu bit cần truyền: xõu ghộp sẽ gồm cú m+r bit tương ứng với đa thức xrM(x).
(2) Chia (modulo 2) xõu bit tương ứng cho xõu bit tương ứng với G(x)
(3) Lấy xõu bit bị chia trừ (modulo2) cho số dư. Kết quả là xõu bit được truyền đi (xõu gốc+checksum). Ký hiệu đa thức tương ứng với nú là T(x), rừ ràng T(x) chia hết (modulo 2) cho G(x).
Thớ dụ ỏp dụng: Cho xõu bit 1101010111, đa thức sinh G(x) = x4 + x3 + x + 1, hóy tớnh xõu bit được truyền đi trờn mạng.
Xõu bit gốc 1101010111 tương ứng với đa thức M(x) = x9 + x8 + x6 + x4 + x2 + x + 1. Đa thức sinh G(x) = x4 + x3 + x + 1 tương ứng với xõu bit 11011.
xrM(x) = 11010101110000. Ta tớnh checksum như sau:
Kết quả:
Checksum = 0011.
Xõu bit được truyền đi trờn mạng là: T(x) = 11010101110011.
4.2. ĐIỀU KHIỂN LƯU LƯỢNG VÀ ĐIỀU KHIỂN TẮC NGHẼN 4.2.1. Cỏc khỏi niệm
Điều khiển lưu lượng liờn quan đến việc vận chuyển giữa một người gửi đó biết nào đú và một người nhận. Nhiệm vụ của nú là đảm bảo rằng bờn gửi cú tốc độ nhanh khụng thể tiếp tục truyền dữ liệu nhanh hơn mức mà bờn nhận cú thể tiếp thu được. Điều
1000100001 11011 11010101110000 11011 11011 11011 010000 10011 0011 Checksum
khiển lưu lượng luụn luụn liờn quan đến một sự phản hồi trực tiếp từ phớa người nhận đến người gửi để bỏo cho bờn gửi về khả năng nhận số liệu thực của bờn nhận.
Điều khiển tắc nghẽn thực hiện nhiệm vụ đảm bảo cho mạng cú khả năng vận chuyển lưu lượng đưa vào, đú là một vấn đề toàn cục, liờn quan đến hành vi của mọi nỳt mạng, quỏ trỡnh chứa và chuyển tiếp trong mỗi nỳt mạng và cỏc yếu tố khỏc cú khuynh hướng làm giảm thụng lượng của mạng.
Điều khiển lưu lượng và điều khiển tắc nghẽn là hai khỏi niệm khỏc nhau, nhưng liờn quan chặt chẽ với nhau. Điều khiển lưu lượng là để trỏnh tắc nghẽn, cũn điều khiển tắc nghẽn là để giải quyết vấn đề tắc nghẽn khi nú xuất hiện hoặc cú dấu hiệu sắp xảy ra. Trong thực tế triển khai thực hiện cỏc thuật toỏn điều khiển lưu lượng và điều khiển tắc nghẽn, nhiều khi cả hai thuật toỏn này cựng được cài đặt trong một giao thức, thể hiện ra như là một thuật toỏn duy nhất, thớ dụ trong giao thức TCP.
Cỏc tầng cú thể thực hiện điều khiển lưu lượng
Cú thể thực hiện điều khiển lưu lượng ở một vài tầng trong mạng, thớ dụ:
Điều khiển lưu lượng ở tầng Giao vận: thường được gọi là điều khiển lưu lượng đầu cuối - đầu cuối: nhằm trỏnh cho bộđệm của quỏ trỡnh nhận tại đớch khỏi bị tràn.
Điều khiển lưu lượng trờn từng chặng: nhằm trỏnh cho từng đường truyền khỏi bị tắc nghẽn. Tuy nhiờn, việc điều khiển lưu lượng trờn từng chặng sẽ cú ảnh hưởng đến cỏc chặng khỏc, do đú nú cũng cú tỏc dụng trỏnh tắc nghẽn cho cỏc đường truyền cú nhiều chặng. Trong mụ hỡnh tham chiếu OSI, điều khiển lưu lượng theo từng chặng được thực hiện ở tầng Liờn kết dữ liệu và tầng Mạng.
4.2.2. Điều khiển lưu lượng theo cơ chế cửa sổ trượt
Đõy là một trong cỏc cơ chế điều khiển lưu lượng được sử dụng rộng rói nhất, cú thể ỏp dụng tại một hay nhiều tầng của mạng, thường là tầng Liờn kết dữ liệu, tầng Mạng hay tầng Giao vận.
Cơ chế điều khiển lưu lượng bằng cửa sổ trượt cho phộp bờn gửi phỏt đi liờn tiếp một số gúi số liệu nhất định rồi mới phải dừng lại chờ thụng bỏo về kết quả nhận, gọi là biờn nhận, trước khi tiếp tục phỏt. Bờn nhận điều khiển lưu lượng bằng cỏch kỡm lại hay gửi ngay biờn nhận, đú là một gúi số liệu điều khiển, hoặc một gúi số liệu cú chứa thụng tin điều khiển, mà bờn nhận dựng để bỏo cho bờn gửi biết về việc đó nhận một hay một số gúi số liệu như thế nào. Tại mọi thời điểm, bờn gửi phải ghi nhớ một danh sỏch chứa số thứ tự liờn tiếp cỏc gúi số liệu mà nú được phộp gửi đi, cỏc gúi số liệu này được gọi là nằm trong cửa sổ gửi. Tương tự như vậy, bờn nhận cũng duy trỡ một danh sỏch gọi là cửa sổ nhận, tương ứng với cỏc gúi số liệu mà nú được phộp nhận. Hai cửa sổ gửi và nhận khụng nhất thiết phải cú độ lớn bằng nhau.
Người ta đó đề xuất và sử dụng một số phương thức quản lý cửa sổ khỏc nhau, thớ dụ: biờn nhận riờng rẽ cho mỗi gúi số liệu nhận được, biờn nhận ở cuối cửa sổ, biờn nhận ởđầu cửa sổ v.v. Dưới đõy sẽ trỡnh bày hai cỏch đó được sử dụng phổ biến trong số cỏc cỏch đó được nờu.
Theo cỏch quản lý này, mỗi khi nhận được một gúi số liệu, bờn nhận sẽ gửi một biờn nhận cho bờn gửi. Cửa sổ gửi tương ứng với cỏc gúi số liệu đó gửi đi nhưng chưa được biờn nhận (hỡnh 4.1.a). Khi cú một gúi số liệu mới từ tầng trờn chuyển xuống để gửi đi, nú sẽ được gỏn số thứ tự lớn nhất tiếp theo, do đú mộp trờn của cửa sổ gửi sẽ tăng thờm 1. Nếu cửa sổ tăng tới cực đại thỡ tiến trỡnh truyền ở tầng trờn bị chặn lại, khụng thể truyền cỏc gúi số liệu xuống nữa, cho đến khi cú chỗ trống trong vựng nhớđệm. Mỗi gúi số liệu sau khi đến đớch sẽđược bờn nhận biờn nhận một cỏch riờng rẽ. Khi biờn nhận về đến bờn gửi, mộp dưới của cửa sổ gửi sẽđược tăng thờm 1, làm cho danh sỏch cỏc gúi số liệu đó truyền nhưng cũn chờ biờn nhận giảm đi một phần tử, đồng thời vựng nhớ tương ứng với phần tử đú cũng được giải phúng để cấp phỏt cho một gúi số liệu mới (hỡnh 4.1.b, c). Bằng cỏch này, cửa sổ gửi luụn ghi nhớ được danh sỏch cỏc gúi số liệu cũn chưa được biờn nhận. Vỡ cỏc gúi số liệu trong cửa sổ gửi cú thể bị hỏng hoặc mất trờn đường truyền, nờn bờn gửi phải giữ lại bản sao của chỳng trong bộ nhớ đệm để phỏt lại nếu sau một khoảng thời gian nhất định vẫn khụng nhận được biờn nhận.
Cỏc gúi số liệu nằm ngoài cửa sổ nhận nếu đến sẽ bị loại bỏ. Khi nhận được một gúi số liệu cú số thứ tự bằng mộp dưới của cửa sổ, nú sẽđược truyền cho tầng trờn, bờn nhận sinh ra một biờn nhận gửi tới người gửi và tăng cửa sổ lờn một ụ. Nếu kớch thước cửa sổ nhận bằng 1, cú nghĩa là nú chỉ chấp nhận cỏc gúi số liệu đến theo đỳng thứ tự. Nếu khỏc 1 thỡ khụng phải như vậy, trong trường hợp này, bờn nhận sẽ giữ gúi số liệu đến khụng đỳng thứ tự trong bộ đệm, chờ nhận đủ cỏc gúi số liệu trong cửa sổ rồi mới chuyển cỏc gúi số liệu lờn tầng trờn theo thứ tự mà bờn gửi đó gửi đi. Khoảng thời gian chờ này luụn được giới hạn.
Biờn nhận ở cuối cửa sổ
Đõy là cỏch đơn giản nhất, bờn nhận sẽ phỏt ra một biờn nhận sau khi nhận được tất cả cỏc gúi số liệu trong cửa sổ nhận. Hỡnh 4.2 minh hoạ cho phương phỏp này, trong đú nỳt A truyền thụng với nỳt B, sử dụng một giao thức tựa như giao thức HDLC, kớch thước cửa sổ gửi và cửa sổ nhận ban đầu bằng 3. Cỏc gúi số liệu đi trờn mạng được biểu diễn bằng cỏc mũi tờn, kiểu của gúi số liệu được ghi bờn cạnh mũi tờn, ý nghĩa như sau:
y I n.m: là gúi số liệu, với trường số thứ tự gúi số liệu N(S) = n, trường biờn nhận N(R) = m. Bờn B cho gúi số liệu của nú “cừng” (“piggyback”) biờn nhận tới bờn A, việc này giỳp nõng cao hiệu quả sử dụng đường truyền. Tất nhiờn, bờn A cũng cú thể biờn nhận cỏc gúi số liệu mà B gửi cho nú bằng cỏch trờn.
y RNR 4: là gúi số liệu điều khiển, B bỏo cho A rằng, lỳc này nú khụng thể nhận tiếp
Hỡnh 4.1. Điều khiển lưu lượng bằng cửa sổ trượt, biờn nhận từng gúi số liệu.
bằng 3. Khi nhận được tớn hiệu này, A sẽ phải ngừng gửi, chờ cho đến khi nhận được tớn hiệu cho phộp gửi tiếp của B.
y RR 4: là gúi số liệu điều khiển, B bỏo cho A rằng, lỳc này nú sẵn sàng nhận tiếp cỏc gúi số liệu của A, bắt đầu từ gúi số 4.
4.2.3. Điều khiển tắc nghẽn
4.2.3.1. Hiện tượng tắc nghẽn
Trong mạng mỏy tớnh, tắc nghẽn xảy ra khi số lượng gúi số liệu đến nỳt mạng vượt quỏ khả năng xử lý của nú hoặc vượt quỏ khả năng vận tải của cỏc đường truyền ra, điều đú dẫn đến việc thụng lượng của mạng bị giảm đi khi lưu lượng đến mạng tăng lờn. Hiện tượng tắc nghẽn cú thể xảy ra ở một hoặc một số nỳt mạng, hay trờn toàn mạng và được miờu tả trờn hỡnh 4.3.
Khi số lượng gúi số liệu đến mạng cũn tương đối nhỏ, nằm trong khả năng vận tải của nú, chỳng sẽ được phõn phỏt đi hết, số lượng gúi số liệu được chuyển đi tỉ lệ thuận với số lượng gúi số liệu đến mạng. Do luụn cú một tỉ lệ gúi số liệu phải phỏt lại do bị lỗi trong quỏ trỡnh vận chuyển, lưu lượng mà mạng thực sự phải vận chuyển nhỡn chung lớn hơn lưu lượng đi qua mạng (thụng lượng).
Hỡnh 4.2. Điều khiển lưu lượng bằng cửa sổ trượt, biờn nhận ở cuối cửa sổ. Kớch thước cửa sổ nhận và gửi ban đầu bằng 3.
Khi lưu lượng đến cao quỏ một mức nào đú, cỏc nỳt mạng khụng cũn đủ khả năng chứa và chuyển tiếp cỏc gúi số liệu, do đú cỏc nỳt mạng bắt đầu phải loại bỏ cỏc gúi số liệu. Bờn gửi sẽ phỏt lại cỏc gúi số liệu khụng được biờn nhận sau một khoảng thời gian nhất định, gọi là thời gian hết giờ. Nếu lưu lượng đến mạng tiếp tục tăng lờn nữa, tỉ lệ gúi số liệu phỏt lại trờn tổng số gúi số liệu trong mạng cú thể tăng đến 100%, nghĩa là khụng cú gúi số liệu nào được phõn phỏt đi cả, thụng lượng của mạng giảm xuống bằng khụng, mạng bị nghẹt hoàn toàn.
Một số yếu tố cú thể dẫn đến tắc nghẽn, ngay cả khi lưu lượng đi vào mạng thấp hơn khả năng vận tải của mạng. Chẳng hạn, khi số lượng gúi số liệu đến trờn hai hoặc ba lối vào của một nỳt mạng đều cần đi ra trờn cựng một đường truyền đểđến đớch, chỳng sẽ phải xếp hàng đợi được truyền đi. Nếu tỡnh trạng trờn kộo dài, hàng đợi sẽ dài dần ra và đầy, khụng cũn chỗ cho cỏc gúi số liệu mới đến, chỳng bị loại bỏ và sẽđược phỏt lại, làm tăng tỉ lệ gúi số liệu phỏt lại trong mạng. Biện phỏp khắc phục bằng cỏch tăng kớch thước hàng đợi (bộ nhớ) tại cỏc nỳt mạng trong một chừng mực nào đú là cú ớch, tuy nhiờn, người ta đó chứng minh được rằng, tăng kớch thước hàng đợi quỏ một giới hạn nào đú sẽ khụng mang lại lợi ớch gỡ, thậm chớ cũn cú thể làm cho vấn đề tắc nghẽn tồi tệ hơn. Đú là vỡ cỏc gúi số liệu sẽ bị hết giờ ngay trong quỏ trỡnh xếp hàng, bản sao của chỳng đó được bờn gửi phỏt lại rồi, làm tăng số lượng gúi số liệu phỏt lại trong mạng.
Tốc độ xử lý chậm của cỏc nỳt mạng cũng là một nguyờn nhõn quan trọng gõy nờn tắc nghẽn, bởi vỡ chỳng cú thể sẽ làm hàng đợi bị tràn ngay cả khi lưu lượng gúi số liệu đến nỳt mạng nhỏ hơn năng lực vận tải của đường truyền đi ra. Cỏc đường truyền dung lượng thấp cũng cú thể gõy ra tắc nghẽn. Việc tăng dung lượng đường truyền nhưng khụng nõng cấp bộ xử lý tại nỳt mạng, hoặc chỉ nõng cấp từng phần của mạng đụi khi cũng cải thiện được tỡnh hỡnh đụi chỳt, nhưng thường chỉ làm cỏi “cổ chai”, nơi xảy ra tắc nghẽn, dời đi chỗ khỏc mà thụi. Giải quyết vấn đề tắc nghẽn núi chung, cần đến cỏc giải phỏp đồng bộ.
Tắc nghẽn cú khuynh hướng tự làm cho nú trầm trọng thờm. Nếu một nỳt mạng nào đú bị tràn bộ đệm, gúi số liệu đến sẽ bị loại bỏ, trong khi đú nỳt mạng bờn trờn, phớa người gửi, vẫn phải giữ bản sao của gúi số liệu đó gửi trong hàng đợi, cho đến khi hết giờ để phỏt lại. Việc phải giữ bản sao gúi số liệu trong hàng đợi để chờ biờn nhận, cộng thờm việc cú thể phải phỏt lại gúi số liệu một số lần cú thể làm cho hàng đợi tại chớnh nỳt trờn cũng cú thể bị tràn. Sự tắc nghẽn lan truyền ngược trở lại phớa nguồn phỏt sinh ra gúi số liệu.
4.2.3.2. Cỏc giải phỏp điều khiển tắc nghẽn
Vấn đề điều khiển tắc nghẽn cú thể được giải quyết theo quan điểm của Lý thuyết điều khiển. Theo cỏch tiếp cận này, cú thể chia cỏc giải phỏp thành hai nhúm: cỏc giải phỏp Vũng lặp mở (Open loop) và cỏc giải phỏp Vũng lặp đúng (Closed loop). Theo cỏc giải phỏp vũng lặp mở, tắc nghẽn sẽ được giải quyết bằng việc thiết kế tốt, đảm bảo sao cho tắc nghẽn khụng xảy ra. Một hệ thống như vậy phải cú khả năng quyết định khi nào thỡ nhận thờm cỏc lưu lượng mới vào, khi nào thỡ loại bỏ cỏc gúi số liệu và loại cỏc gúi số liệu nào. Cỏc quyết định này phải theo lịch trỡnh và phải cú ở từng nỳt mạng, chỳng được hệ thống đưa ra mà khụng xem xột đến trạng thỏi hiện thời của mạng.
Trỏi lại, cỏc giải phỏp vũng lặp đúng lại dựa trờn khỏi niệm về vũng phản hồi (feedback loop), chỳng gồm cú ba phần, hay ba bước như sau:
Bước một: theo dừi hệ thống để phỏt hiện tắc nghẽn xảy ra khi nào và ởđõu.
Việc phỏt hiện tắc nghẽn cú thể dựa trờn một sốđộ đo khỏc nhau. Cỏc độđo thường được sử dụng là tỉ lệ gúi số liệu bị loại bỏ do thiếu bộđệm, chiều dài trung bỡnh của hàng đợi, số gúi số liệu phải phỏt lại do bị hết giờ, thời gian trễ trung bỡnh của gúi số liệu khi đi qua mạng v.v. Sự tăng lờn của cỏc số đo này núi lờn rằng tắc nghẽn đang tăng lờn trong mạng.
Bước hai: nơi phỏt hiện ra tắc nghẽn cần phải chuyển thụng tin về sự tắc nghẽn đến những nơi cú thể phản ứng lại. Một cỏch thực hiện rất đơn giản là nỳt mạng phỏt hiện ra tắc nghẽn sẽ gửi gúi số liệu đến cỏc nguồn sinh lưu lượng trờn mạng, bỏo tin về sự cố. Tất nhiờn, việc này sẽ làm tăng thờm lưu lượng đưa vào mạng đỳng lỳc lẽ ra phải giảm đi. Người ta cũng đó đề xuất và thực hiện một số cỏch khỏc nữa. Chẳng hạn, nỳt mạng phỏt hiện ra tắc nghẽn sẽ đỏnh dấu vào một bit hay một trường định trước của mọi gúi số liệu trước khi gúi số liệu được nỳt mạng chuyển tiếp đi, nhằm loan bỏo cho cỏc nỳt mạng khỏc về trạng thỏi tắc nghẽn. Cú thể nờu ra một cỏch thực hiện khỏc nữa, đú là làm cho cỏc nỳt mạng đều đặn gửi đi cỏc gúi số liệu thăm dũ để biết tỡnh trạng của mạng.
Bước ba: điều chỉnh lại hệ thống để sửa chữa sự cố. Cỏc cơ chế thực hiện phản hồi đều nhằm mục đớch là để cỏc mỏy tớnh trờn mạng cú những phản ứng phự hợp nhằm làm giảm tắc nghẽn. Nếu phản ứng xảy ra quỏ nhanh, lưu lượng trong hệ thống sẽ thăng giỏng mạnh và khụng bao giờ hội tụ. Nếu phản ứng quỏ chậm, việc điều khiển tắc nghẽn cú thể khụng cú ý nghĩa thực tế gỡ nữa. Chớnh vỡ vậy, để cơ chế phản hồi cú hiệu quả, cần phải sử dụng một số cỏch tớnh trung bỡnh.
Cỏc thuật toỏn điều khiển tắc nghẽn sẽ được trỡnh bày cụ thể trong chương 5, phần