You are on page 1of 20

TRUYỀN DỮ LIỆU

Để cung cấp một dịch vụ truyền tin cậy đến các ứng dụng, TCP sử dụng giao thức tự động
lặp lại yêu cầu có chọn lọc (ARQ Selective Repeat) với xác nhận tích cực được thực hiện bởi cơ
chế cửa sổ trượt (sliding-window). Sự khác biệt ở đây là của sổ trượt trên cơ sở byte thay cho
gói tin. TCP cũng có thể áp dụng kiểm soát luồng qua kết nối bằng cách quảng cáo linh động
kích thức cửa sổ. Kiểm soát luồng là một quá trình điều tiết giao thông giữa 2 điểm và được sử
dụng để tránh bên gửi quá nhiều dữ liệu một lúc đến bên nhận.
Hình 1 minh họa ví dụ về cách một thực thể TCP có thể kiểm soát luồng. Giả sử rằng tại
thời điểm t 0, mô-đun TCP ở B quảng cáo cửa sổ với kích thước 2048 và mong đợi byte được
nhận tiếp theo có số thứ tự 2000. Cửa sổ đã được quảng cáo cho phép A truyền lên đến 2048
byte dữ liệu chưa được xử lý. Tại thời điểm t 1, A chỉ truyền 1024 byte, vì vậy nó truyền tất cả
dữ liệu bắt đầu bằng byte có thứ tự 2000. Thực thể TCP đã quảng cáo một cửa sổ có kích thức
1024 byte đến B và byte tiếp theo được mong đợi có số tứ tự là 1. Khi một phân đoạn dữ liệu
đến B, B chọn cách trì hoãn ACK để hi vọng rằng ACK có thể truyền không vướng luồng dữ
liệu gửi đến từ A. Trong khi tại thời điểm t2, A gửi 1024 byte khác tới B. Sau khi truyền, cửa sổ
gửi của A đóng hoàn toàn nghĩa là no không cho phép truyền bất kỳ dữ liệu nào thêm cho đến
khi nhận được ACK trở lại từ B.
Tại thời điểm t3, B có 128 byte dữ liệu cần truyền và cũng muốn xác nhận 2 phân đoạn
dữ liệu đầu tiên từ A. B có thể dễ dàng đưa ACK (bằng cách chỉ định ACK_NO là 4048) vào
phân đoạn dữ liệu. Cũng tại thời điểm này, B nhận thấy rằng nó chỉ có thể phân bổ 512 byte của
bộ đệm nhận cho kết nối này vì các kết nối khác cũng đang cạnh tranh bộ nhớ. Vì vậy nó co
kích thước cửa sổ từ 2048 byte xuống 512 byte. Khi A nhận phân đoạn dữ liệu, nó thay đổi kích
thước cửa sổ gửi xuống 512 byte. Chúng ta thấy rằng việc quảng cáo cửa sổ tự động điều khiển
luồng dữ liệu từ bên gửi đến bên nhận và ngăn tràn bộ đệm thu.

Hình 1 Điều khiển luồng cửa sổ TCP


Thảo luận trước đó đã thể hiện TCP có thể trì hoãn việc truyền dữ liệu như thế nào để
ACK có thể đưa vào phân đoạn dữ liệu. Một công dụng khác của trì hoãn truyền tin là giảm
thiểu lãng phí băng thông. Xem xét một phiên đăng nhập trong đó máy khách nhập một ký tự
mỗi lần. Khi ký tự đến từ ứng dụng, mô-đun TCP gửi một phân đoạn gồm một byte dữ liệu đến
đầu kia. Đầu kia (máy chủ đăng nhập) cần gửi một ACK và sau đó một ký tự phản hồi trở lại
phía máy khách. Cuối cùng, máy khách cần gửi một ACK của ký tự vừa phản hồi. Do đó một ký
tự tạo ra 4 trao đổi các gói tin IP giữa máy khách và máy chủ với các kích thước lần lượt:
41byte, 40 byte, 41 byte và 40 byte (giả định header của IP và TCP là 20 byte mỗi cái). Trong
môi trường WAN, lãng phí băng thông thường không được chứng minh.
Một giải pháp để giảm thiểu lãng phí được đề xuất bởi Nagle và được gọi là thuật toán
Nagle. Ý tưởng hoạt động như sau. Khi một ứng dụng tương tác muốn gửi một ký tự, mô-đun
TCP truyền dữ liệu và chờ ACK từ bên nhận. Trong khi chờ đợi, nếu ứng dụng tạo ra nhiều ký
tự hơn trước khi ACK tới, TCP sẽ không truyền mà đưa chúng vào bộ đêm. Khi ACK cuối cùng
cũng đến, TCP truyền tất cả các ký tự mà đã chờ trong bộ đêm vào một phân đoạn.
Trong môi trường LAN nơi mà trễ là tương đối nhỏ và băng thông dồi dào. ACK
thường quay về trước khi ký tự khác đến từ ứng dụng. Do đó thuật toán Nagle cơ bản bị vô hiệu
hóa. Trong môi trường WAN nơi mà ACK có thể bị trì hoãn một cách khó lường thì thuật toán
được tự điều chỉnh. Khi trễ bé, ngụ ý răng mạng đang tải nhẹ, chỉ vài ký tự được lưu trong bộ
đệm trước khi ACK tới. Trong trường hợp này, TCP có khả năng truyền phân đoạn ngắn. Tuy
nhiên, khi trễ cao, thể hiện rằng mạng đang bị tắc nghẽn thì nhiều ký tự sẽ được lưu vào bộ đệm
hơn. Ở đây, TCP phải truyền phân đoạn dài hơn và ít thường xuyên hơn. Trong vài trường hợp,
thuật toán Nagle cần được vô hiệu hóa để đảm bảo tính tương tác của ứng dụng cho dù tiêu tốn
hiệu quả truyền dẫn.
Một vấn đề khác mà lãng phí băng thông mạng xảy ra là khi bên gửi có một khối lượng
dữ liệu lớn cần truyền và bên nhận chỉ có thể làm vơi bộ đệm nhận vài byte mỗi lần. Sớm hay
muộn thì bộ đệm thu trở nên đầy. Khi ứng dụng nhận đọc vài byte từ bộ đệm, TCP nhận sẽ gửi
sang bên gửi một cửa sổ quảng cáo nhỏ mà nó sẽ nhanh chóng truyền một phân đoạn nhỏ và lấp
đầy lại vào bộ đệm nhận. Quá trình này được diễn ra liên tục với nhiều phân đoạn nhỏ được bên
gửi truyền đi đối với một bản tin ứng dụng. Vấn đề này được gọi là hội chứng cửa sổ ngớ ngẩn
(Silly window syndrome). Nó có thể tránh được bằng cách bên nhận không quảng cáo cửa sổ
cho đến khi kích thước cửa sổ ít nhất lớn bằng nửa kích thước bộ đệm hoặc bằng kích thước
phân đoạn tối đa. Bên gửi có thể hợp tác bằng cách ngưng truyền các phân đoạn nhỏ.

VÍ DỤ Kích thước phân đoạn tối đa (MSS) và hiệu quả băng thông

Giá trị của MSS ảnh hưởng tới hiệu quả sử dụng liên kết cho trước. Để thảo luận về ảnh
hưởng của MSS lên hiệu quả băng thông được xem xét ở Hình 2. Mỗi phân đoạn TCP bao gồm
20 byte TCP header và theo sau là khối dữ liệu. Lần lượt phân đoạn dữ liệu được gói gọn trong
một gói tin IP gồm 20 byte header cộng thêm. MSS cho một kết nối là khối dữ liệu lớn nhất của
một phân đoạn được cho phép chứa. TCP cung cấp 16 bit để dành cho tùy chọn MSS, do đó
khối dữ liệu lớn nhất mà có thể mang theo trong phân đoạn là 65,495 byte. Là do 65,535 trừ 20
byte IP header và 20 byte TCP header.
Hình 2 Header overhead

Trong TCP, MSS mặc định là 536 byte và gói tin IP tương ứng là 576 byte. Trong trường
hợp này, 40 byte header trong tổng 576 byte, nghĩa là 7% là phí. Nếu thay vào đó MMS là
65,495 byte thì phí sẽ chỉ 0.06%. Tuy nhiên, trên thực tế, Các mạng lưới khác nhau áp đặt giới
hạn về kích thước khối khác nhau tùy khả năng xử lý. Ví dụ, MSS của Ethernet là 1460.

VÍ DỤ Quấn quanh số thứ tự và timestamp

Thông số kỹ thuật cơ bản của TCP giả định thời gian tồn tại tối đa của phân đoạn (MSL) là
2 phút. Số thứ tự sẽ quấn quanh khi 232 =4,294,967,296 byte được gửi. Vì TCP sử dụng
Selective Repeat ARQ nên window size tối đa cho phép là 231 byte. Đối với đường dây T-1 thì
thời gian yêu cầu là (232∗8)/( 1.544∗10 6) = 6 tiếng. Đối với đường T-3 (45 Mbps) thì quấn
quanh sẽ xảy ra sau 12 phút. Đối với đường dây OC-48 (2.4 Gbps) thì quấn quanh sẽ xảy trong
sau 14 giây. Rõ ràng quấn số thứ tự trở thành một vấn đề cho hệ thống TCP hoạt động trên các
liên kết tốc độ rất cao.
Khi lựa chọn timestamp được sử dụng, TCP sẽ chèn 32 bit timestamp vào một trường 4
byte trong header của mỗi phân đoạn mà nó truyền. TCP phản hồi lại 32 bit timestamp mà nó
nhận được bằng cách chèn timestamp vào trường 4 byte trong header của mỗi phân đoạn ACK.
Bằng cách kết hợp 32 bit timestamp với 32 bit số thứ tự, chúng ta thu được một lượng lớn số thứ
tự 64 bit để giải quyết vấn đề quấn quanh. Để hiệu quả, đồng hồ timestamp nên đánh dấu tiếp
khi ít nhất đã gửi 231 byte. Yêu cầu này đặt một giới hạn dưới cho tần số đồng hồ. Đồng hồ cũng
không nên nhanh quá; nó không nên hoàn thành một chu kỳ trong ít hơn một giai đoạn MSL.
Tần số đồng hồ trong phạm vi mà một tích tắc mỗi nằm trong khoảng 1ms đến 1s đáp ứng các
yêu cầu ràng buộc này. Ví dụ, một chu kỳ đồng hồ loại 1ms hoạt động cho tốc độ truyền lên tới
8 terabit trên một giây thì giá trị 32 bit timestamp sẽ bát đầu lặp lại sau 25 ngày [RFC 1323].
VÍ DỤ Delay-Bandwidth Product và kích thước cửa sổ được báo trước

Xem xét một liên kết mà có thời gian khứ hồi (RTT) là 100 ms. Số byte trong một liên kết
như thế ở đường dây T-1 có tốc độ là 1.544∗106∗100/8=19,300 byte. Cho đường dây T-3
(45Mbps) thì số byte là 526,500 byte và cho đường dây OC-48 thì nó tăng lên là 3 MB. Giả sử
rằng một quy trình TCP đơn cần giữ các liên kết này chiếm toàn bộ việc truyền thông tin của nó.
Cửa sổ đã được cho biết của nó phải ít nhất lớn bằng RTT x Delay-Bandwidth Product. Ở đầu
phần này, chúng ta thấy kích thước tối đa của cửa sổ đã cho biết trước chỉ là 65,535 nên nó
không đủ cho đường dây T-3 và OC-48. Tuy nhiên, tùy chọn mở rộng cửa sổ cho phép kích
thước cửa sổ lên tới 65,535 x 214 = 1 GB đủ để xử lý các trường hợp đó.

KẾT THÚC KẾT NỐI TCP


TCP cung cấp một kết thúc duyên dáng về việc chấm dứt một cách độc lập từng hướng kết
nối. Một kết thúc được thiết lập khi một ứng dụng báo TCP rằng nó không truyền dữ liệu nữa.
Thực thể TCP đã truyền xong dữ liệu của nó và phát ra một phân đoạn với tập bit FIN. Khi nhận
được phân đoạn FIN, thực thể TCP báo cho ứng dụng của nó rằng thực thể khác đã chấm dứt
truyền dữ liệu. Ví dụ, trong Hình 3, thực thể TCP ở A kết thúc truyền đầu tiên bằng cách phát ra
phân đoạn FIN. B gửi một phân đoạn ACK để xác nhận đã nhận phân đoạn FIN từ A. Chú ý
rằng phân đoạn FIN sử dụng 1 byte và ACK là 5087 byte trong ví dụ trên.
Sau khi nhận phân đoạn FIN, luồng từ B đến A vẫn mở. Trong hình, B gửi 150 byte
trong một phân đoạn và theo sau là phân đoạn FIN. A gửi ACK. TCP ở A sau đó vào trạng thái
TIME_WAIT và bắt đầu bộ hẹn giờ TIME_WAIT với giá trị ban đầu được đặt thành 2 lần thời
gian tồn tại tối đa của phân đoạn (2MSL). Phân đoạn hợp lệ duy nhất có thể nhận trong khi A ở
trạng thái TIME_WAIT là phân đoạn FIN truyền lại từ B (ví dụ, nếu ACK của A bị mất và
time-out của B đã hết hạn). Nếu phân đoạn FIN như vậy đến trong khi A ở trạng thái
TIME_WAIT, sau đó phân đoạn ACK được truyền lại và bộ hẹn giờ TIME_WAIT được bắt đầu
lại tại 2MSL. Khi bộ hẹn giờ TIME_WAIT hết hạn thì A sẽ đóng kết nối và sau đó xóa hồ sơ
của kết nối.

Hình 3 Kết thúc của TCP: A gửi phân đoạn với tập bit FIN để đóng phiên kết nối và B xác
nhận đã nhận phân đoạn FIN.
Trạng thái TIME_WAIT phục vụ 2 mục đích. MSL là thời gian dài nhất mà phân đoạn có
thể tồn tại trong mạng trước khi bị loại bỏ. Trạng thái TIME-WAIT ép TCP phải chờ ít nhất 2
lần MSL trước khi thiết lập một kết nối khác giống kết nối cũ. MSL đầu tiên là thời gian tối đa
mà một phân đoạn trong một hướng có thể vẫn còn trong mạng và MSL thứ hai là thời gian tối
đa cho phép trả lời theo hướng khác có thể có trong mạng. Do đó, tất cả các phân đoạn từ kết
nối cũ sẽ bị bỏ khỏi mạng tại thời điểm kết thúc trạng thái TIME_WAIT.
Hình 3 cho thấy một gói tin được bắt của kết thúc TCP trong ví dụ Telnet. Khung 6 và 7
đóng kết nối từ máy khách đến máy chủ. Khung 8 và 9 đóng kết nối từ máy chủ đến máy khách.

KHÓ ĐỂ NÓI LỜI TẠM BIỆT


Dưới điều kiện thông thường, thủ tục đóng TCP bao gồm một hoặc nhiều lần truyền ACK
cuối từ A cho đến khi đến được tới B thành công. B sau đó đóng kết nối TCP. Sau cuối, A đóng
kết nối TCP sau khi hết trạng thái TIME_WAIT. Tuy nhiên, có thể tất cả các phân đoạn FIN
truyền lại từ B có thể bị mất trong mạng do A đóng kết nối trước khi B nhận được ACK cuối
cùng. Giả sử chúng ta khẳng định rằng A không đóng kết nối của nó cho đến khi biết được B đã
nhận ACK cuối cùng. A phải biết điều đó như thế nào? Bằng cách nhận được ACK từ B thừa
nhận việc đã nhận được ACK cuối cùng của A. Nhưng kịch bản này có cùng vấn đề với khi
chúng ta bắt đầu mà vai trò của A và B đổi cho nhau. Do đó, việc hợp lý để làm là cho B truyền
lại vài lần phân đoạn FIN của nó và sau đó thoát mà không càn nhận ACK từ A.

VÍ DỤ Ứng dụng máy khách/máy chủ được xem xét lại

Chúng ta hãy xem xét lại tiến trình kết thúc kết nối được mô tả trong Hình 3 trong hoàn
cảnh một ứng dụng máy khách/máy chủ. Hơn một lần nữa đặt máy khách là A, máy chủ là B.
Máy khách thiết lập một active close bằng cách phát ra một cuộc gọi close thông báo cho máy
chủ răng mô-đun TCP ở A không gửi thêm dữ liệu nữa. Mô-đun TCP ở A phải vẫn được chuẩn
bị nhận dữ liệu từ B. Khi máy chủ truyền dữ liệu xong, nó phát ra cuộc gọi close. Hành động
này làm cho mô-đun của B phát ra phân đoạn FIN của nó.

TCP cung cấp cho việc chấm dứt kết nối đột ngột thông qua phân đoạn thiết lập lại
(RST). Phân đoạn RST là một phân đoạn với tập bit RST. Nếu một ứng dụng quyết định kết
thúc kết nối một cách đột ngột thì nó sẽ phát ra lệnh ABORT mà khiến cho TCP bỏ hết dữ liệu
được xếp hàng chuẩn bị truyền để gửi phân đoạn RST. Mô-đun TCP mà nhận phân đoạn RST
thì sau đó sẽ thông báo cho tiến trình ứng dụng của nó rằng kết nối đã bị chấm dứt.
Phân đoạn RST cũng được gửi khi mô-đun TCP nhận một phân đoạn mà nó không phù
hợp. Ví dụ, một phân đoạn RST được gửi khi một yêu cầu kết nối đến cho tiến trình ứng dụng
mà nó không nghe được trên cổng được cấp. Một ví dụ khác liên quan đến việc A gặp sự cố.
Mô-đun TCP ở B không nhận thấy sự cố nên có thể vẫn gửi một phân đoạn. Khi nhận phân
đoạn này, mô-đun TCP ở A gửi một phân đoạn RST thông báo cho B rằng kết nối đã bị chấm
dứt.

SƠ ĐỒ CHUYỂN TRẠNG THÁI TCP

Một kết nối TCP đi qua một loạt các trạng thái trong suốt thời gian tồn tại của nó. Hình 4
thể hiện sơ đồ chuyển trạng thái. Mỗi mũi tên chỉ sự chuyển trạng thái và nhãn liên quan biểu
thị cho các hành động và sự kiện liên quan. Thiết lập kết nối bắt đầu ở trạng thái CLOSE và
chuyển sang trạng thái ESTABLISHED. Chấm dứt kết nối đi từ trạng thái ESTABLISHED đến
trạng thái CLOSE. Các chuyển đổi bình thường của máy khách được thể hiện bằng các đường
liền nét dày và các chuyển đổi bình thường của máy chủ được ký hiệu bằng các đường nét đứt.
Do đó khi một máy khách thực hiện mở chủ động thì nó đi từ trạng thái CLOSE đến
SYN_SENT và sau đó đến ESTABLISHED. Máy chủ thực hiện mở bị động đi từ trạng thái
CLOSE đến LISTEN, SYN_RCVD và sau đó đến ESTABLISHED.
Thông thường, máy khách thiết lập chấm dứt kết nối bằng cách gửi phân đoạn FIN. Quỹ
đạo trạng thái liên quan đi từ trạng thái ESTABLISHED đến trạng thái FIN_WAIT_1 trong khi
chờ nhận ACK, đến trạng thái FIN_WAIT_2 khi chờ FIN của bên kia và sau đó đến trạng thái
TIME_WAIT sau khi gửi ACK cuối cùng. Khi TIME_WAIT hết hạn, kết nối bị đóng và tất cả
sự thay đổi kết nối TCP đã bị xóa được lưu vào khối điều khiển truyền. Chú ý rằng sơ đồ
chuyển trạng thái không thể hiện tất cả các điều kiện lỗi có thể xảy ra mà đặc biệt liên quan đến
trạng thái TIME_WAIT. Thông thường máy chủ đi từ trạng thái ESTABLISH đến trạng thái
CLOSE_WAIT sau khi nó nhận được FIN, đến trạng thái LAST_ACK khi nó gửi FIN và cuối
cùng đến trạng thái CLOSE khi nó nhận được ACK cuối cùng. Chúng ta sẽ khám phá quỹ đạo
trạng thái có thể khác trong phần vấn đề ở cuối chương.

Hình 4 Sơ đồ dịch chuyển trạng thái. Chú ý: Đường liền nét đậm là quỹ đạo trạng thái bình
thường cho máy khách; đường nét đứt là quỹ đạo trạng thái thông thường cho máy chủ.
8.5.3 Kiểm soát tắc nghẽn TCP

Nhớ lại từ Chương 5 rằng TCP sử dụng giao thức cửa sổ trượt để điều khiển luồng từ đầu
đến cuối. Giao thức này được triển khai bằng cách yêu cầu bên nhận chỉ định trong ACK số
lượng byte mà nó sẵn sàng nhận trong tương lai hay gọi là cửa sổ được báo trước. Cửa sổ được
báo trước chắc chắn rằng bộ đệm nhận sẽ không bao giờ bị tràn vì bên gửi không thể truyền
lượng dữ liệu mà vượt quá kích thước đã chỉ định trong cửa sổ được báo trước. Không may, cửa
sổ được báo trước không ngăn chặn việc bộ đệm ở router trung gian bị tràn dẫn tới tắc nghẽn.
Vì lớp IP không thực hiện cơ chế kiểm soát tắc nghẽn nên phải lên lớp cao hơn để phát hiện tắc
nghẽn và thực hiện hành động thích hợp. Hóa ra cơ chế cửa sổ TCP cũng có thể được dùng để
kiểm soát tắc nghẽn trong mạng.
Nếu bên gửi quá năng nổ bằng cách gửi nhiều gói tin thì mạng cuối cùng sẽ phải gặp tình
trạng tắc nghẽn. Mặt khác, nếu người gửi quá dè dặt thì mạng sẽ được sử dụng chưa đúng mức.
Mục tiêu của kiểm soát tắc nghẽn là mỗi bên gửi chỉ gửi đúng lượng dữ liệu để giữ tài nguyên
mạng được sử dụng hợp lý nhưng không quá tải. Để đạt được mục tiêu đó, giao thức TCP định
nghĩa một cửa sổ khác gọi là cửa sổ tắc nghẽn. Cửa sổ này chỉ định số byte tối đa mà bên gửi
được cho phép truyền với giải thiết rằng với lượng dữ liệu đó sẽ không xảy ra tắc nghẽn. Thuật
toán kiểm soát tắc nghẽn TCP ở bên gửi điều chỉnh một cách linh động cửa sổ tắc nghẽn theo
điều kiện hiện thời của mạng. Để tránh cả tắc nghẽn mạng và tràng bộ đệm nhận thì lượng dữ
liệu tối đa mà bên gửi được cho phép thực lúc nào cũng là kích thước bé nhất của cửa sổ được
báo trước và cửa sổ tắc nghẽn. Chúng ta sẽ thấy rằng, TCP điều chỉnh tốc độ của các phân đoạn
được truyền vào trong mạng. Các phân đoạn lần lượt tạo ra gói tin IP đi qua mạng.
Hoạt động của thuật toán điều khiển tắc nghẽn TCP có thể được chia thành 3 phần (thảo
luận sau đây giả sử rằng tại nguồn luôn có dữ liệu để truyền). Giai đoạn đầu tiên được chạy khi
thuật toán bắt đầu truyền dữ liệu hoặc thuật toán bắt đầu lại sau khi khôi phục từ phân đoạn bị
mất. Kỹ thuật này gọi là khởi động chậm và được thực hiện bằng cách thiệt lập ban đầu cho cửa
sổ tắc nghẽn một giá trị nhỏ (thường là một MSS). Mỗi lần bên gửi nhận ACK từ bên nhận, bên
gửi tăng kích thước cửa sổ tắc nghẽn lên 1 phân đoạn (1 MSS). Do đó, sau khi gửi phân đoạn
đầu tiên, nếu bên gửi nhận ACK trước khi time-out thì bên gửi tăng kích thước cửa sổ tắc nghẽn
lên thành 2 phân đoạn. Sau đó, nếu 2 phân đoạn đó được xác nhận thì cửa sổ tắc nghẽn tăng lên
thành 4 phân đoạn và cứ thế. Như ở Hình 5 kích thước cửa sổ tắc nghẽn tăng theo hàm số mũ
trong suốt giai đoạn khởi động chậm. Lý do của việc tăng theo hàm số mũ là khởi động chậm
cần lấp đầy đường ống nhanh nhất có thể để sử dụng một cách hiệu quả tối đa tài nguyên mạng.
Sau một điểm nhất định, có thể không hay nếu tiếp tục tăng kích thước cửa sổ tắc nghẽn
theo hàm số mũ vì vượt quá mức rất đáng kể. Đặc biệt, giai đoạn khởi động chậm kết thúc khi
kích thước cửa sổ tắc nghẽn đạt tới hoặc vượt qua một giá trị nhất định được chỉ định là ngưỡng
tắc nghẽn (có thể được thiết lập một giá trị cao tùy ý). Tại điểm này, giai đoạn tránh tắc nghẽn
diễn ra. Giai đoạn này giả thiết rằng đường ống gần đạt tới mức sử dụng hiệu quả tối đa. Do đó,
sẽ khôn ngoan nếu thuật toán giảm tốc độ tăng vì sẽ không vượt quá khả năng của đường ống.
Cụ thể, thuật toán tăng kích thước cửa sổ tắc nghẽn tuyến tính thay cho hàm số mũ trong quá
trình tránh tắc nghẽn. Điều đó thể hiện ở chỗ kích thước tắc nghẽn tăng lên một phân đoạn mỗi
vòng.
Hình 5 Sự linh động của cửa sổ tắc nghẽn TCP

Rõ ràng, kích thước cửa sổ tắc nghẽn cũng không thể tăng mãi vì khả năng của mạng là có
hạn. Kích thước cửa sổ tắc nghẽn ngừng tăng khi TCP phát hiện mạng bị tắc nghẽn. Thuật toán
đi vào giai đoạn thứ 3. Giả định rằng kích thước cửa sổ tắc nghẽn hiện tại tương quan với điểm
đường ống đầy, TCP thiết lập ngưỡng tắc nghẽn bằng nửa kích thước cửa sổ tắc nghẽn để thăm
dò đường ống lần sau. Sau đó kích thước cửa sổ tắc nghẽn được thiết lập bằng 1 MSS và thuật
toán được bắt đầu lại với việc sử dụng kỹ thuật khởi động chậm.
Hình 5 minh họa sự linh động của kích thước cửa sổ tắc nghẽn theo thời gian. Ban đầu,
khởi động chậm bắt đầu và bên gửi truyền 1 phân đoạn. Sau lần khứ hồi đầu tiên, bên gửi sẽ
truyền thêm 2 phân đoạn bổ sung. Ở lần khứ hồi thứ 2, bên gửi sẽ truyền thêm 4 phân đoạn bổ
sung và cứ thế cho đến khi đạt mức ngưỡng tắc nghẽn (16 phân đoạn). Sau đó, ở giai đoạn tránh
tắc nghẽn, kích thước cửa sổ được tăng tuyến tính vì bên gửi chỉ tăng 1 phân đoạn mỗi lần khứ
hồi. Khi kích thước cửa sổ tắc nghẽn là 20, một time-out xuất hiện thể hiện mạng bị tắc nghẽn
và sau đó ngưỡng tắc nghẽn được đặt bằng 10 và kích thước cửa sổ tắc nghẽn được đặt lại. Sau
đó thuật toán quay trở lại với bắt đầu chậm.
Tắc nghẽn trong mạng thường do nhiều phân đoạn bị hủy dẫn đến thiếu ACK theo hướng
ngược lại. Bên gửi TCP lợi dụng điều đó và giả định rằng tắc nghẽn xảy ra trong mạng khi ACK
không đến trước khi hết thời gian truyền lại. Tuy nhiên, khi chỉ một phân đoạn bị hủy thì bên
gửi TCP mới có thể khôi phục nhanh hơn. Lý do là các phân đoạn tiếp theo khiến bên nhận
truyền các ACK trùng lặp và các ACK này thường đến bên gửi trước khi hết thời gian truyền
lại. Khi bên gửi nhận được 3 ACK trùng nhau thì nó sẽ thực hiện truyền lại nhanh bằng cách
truyền ngay lập tức phân đoạn bị mất. Sau đó bên gửi thực hiện khôi phục nhanh bằng cách
trước tiên thiết lập ngưỡng tắc nghẽn như đã giải thích ở trên. Sau đó kích thước cửa sổ tắc
nghẽn sẽ được đặt bằng ngưỡng tắc nghẽn cộng với 3 MSS để dành cho 3 phân đoạn có ACK
trùng nhau. Sau đó, bên gửi tiếp tục giai đoạn tránh tắc nghẽn. 7
7
Xem RFC 2581 để thêm thông tin chi tiết.
Một giả định cơ bản trong điều khiển tắc nghẽn TCP là mất phân đoạn do tắc nghẽn hơn là
lỗi. Giả định này khá có giá trị trong mạng có dây nơi mà phần trăm mất gói do lỗi truyền rất
thấp (dưới 106). Tuy nhiên, nên chú ý rằng giả định này có thể không có giá trị trong mạng
không dây nơi mà lỗi truyền có thể tương đối cao. Tương tác giữa kiểm soát tắc nghẽn trong
TCP và kiểm soát liên kết dữ liệu trong liên kết không dây là một chủ đề được quan tâm hiện
nay.
Trong ước lượng của RTT, một sự mơ hồ tồn tại khi một phân đoạn được truyền lại do
thời gian chờ đã hết. Khi ACK cuối cùng cũng quay trở lại thì chúng ta liên kết nó với phân
đoạn đầu tiên hay với phân đoạn được truyền lại? Karn đã đề xuất loại bỏ RTT khi một phân
đoạn được truyền lại vì sử dụng RTT có thể làm sai ước tính. Ý kiến này được gọi chung là
thuật toán của Karn.

8.6 NHỮNG GIAO THỨC ĐỊNH TUYẾN INTERNET

Đồ hình Internet toàn cầu có thể được xem như một tập hợp các hệ thống tự trị. Một hệ
thống tự trị-AS (Autonomous System) được định nghĩa sơ bộ là một tập các bộ định tuyến hoặc
mạng mà được quản lý kỹ thuật bằng một tổ chức đơn lẻ như là mạng lưới công ty lớn, mạng
lưới trường học hoặc mạng lưới cung cấp dịch vụ Internet. Không có hạn chế rằng AS nên chạy
một giao thức định tuyến đơn trong AS. Yêu cầu quan trọng duy nhất là với thế giới bên ngoài,
một AS phải đưa ra một bức tranh nhất quán mà các AS có thể tiếp cận được thông qua nó.
Có 3 loại AS:
1. Stub AS chỉ có một kết nối đơn đến thế giới bên ngoài.
2. Multihomed AS có nhiều kết nối đến thế giới bên ngoài nhưng từ chối mang lưu lượng
quá cảnh (lưu lượng mà bắt nguồn và kết thúc ở thế giới bên ngoài). Multihomed AS chỉ mang
lưu lượng cục bộ (lưu lượng mà bắt nguồn hoặc kết thúc ở trong AS đó).
3. Transit AS có nhiều kết nối đến thế giới bên ngoài và có thể mang lưu lượng quá cảnh
và cục bộ.

Cho mục đích nhận dạng AS, mỗi AS cần được gán một số AS duy nhất toàn cầu (ASN)
mà được đại diện bởi một số nguyên 16 bit nên nó bị giới hạn trong khoảng 65,000 số. Phải cẩn
thận để không làm cạn kiệt không gian AS. Như đã nói, số lượng AS được đăng ký đã vượt quá
10,000. May mắn thay, Stub AS là loại phổ biến nhất và không cần ASN vì các tiền tố liên quan
được đặt ở bảng định tuyến của nhà cung cấp. Mặt khác, Transit AS cần ASN. Hiện tại, một tổ
chức có thể yêu cầu một ASN từ ARIN ở Bắc Mỹ, từ RIPE ở châu Âu hoặc từ APNIC ở châu
Á.
Giao thức định tuyến trong Internet được sắp xếp theo thứ bậc gồm 2 loại: Giao thức định
tuyến nội miền-IGP (Interior Gateway Protocol) và giao thức định tuyến liên miền-EGP
(Exterior Gateway Protocol). IGP được sử dụng cho định tuyến truyền thông trong AS và dựa
vào địa chỉ IP để xây dựng đường đi. EGP được sử dụng cho định tuyến truyền thông giữa các
AS khác nhau và dựa trên số AS để xây dụng đường đi AS. Trong phần này, chúng ta đề cập
đến 2 IGP phổ biến: giao thức định tuyến thông tin-RIP (Routing Information Protocol) và
OSPF (Open Shortest Path First). Chúng ta sẽ thảo luận về tiêu chuẩn thực tế hiện tại cho EGP
chính là giao thức BGP (Border Gateway Protocol) phiên bản 4 (BGP-4). Tương tự, IGP có thể
được coi là cung cấp bản đồ của một quận chi tiết về cách tiếp cận từng tòa nhà (host/router),
trong khi EGP cung cấp bản đồ của quốc gia kết nối mỗi quận (AS).
Hình 6 Định dạng bản tin RIP

8.6.1 Giao thức định tuyến thông tin

Giao thức định tuyến thông tin – RIP (Routing Information Protocol) được dựa trên
chương trình được phân phối trong BSD 8 UNIX được gọi là routed 9 và sử dụng thuật toán véc-
tơ khoảng cách được thảo luận ở chương 7. RIP chạy trên cùng của UDP thông qua cổng 520.
Đơn vị được sử dụng trong tính toán đường đi ngắn nhất thường được cấu hình là số bước nhảy
(hop). Số hop tối đa là 15 vì RIP được thiết kế để sử dụng trong môi trường cục bộ nơi mà
đường kính mạng thường khá nhỏ. Giá trị 16 thường dành riêng để đại diện cho giá trị vô cùng.
Một router triển khai RIP sẽ gửi một bản tin cập nhật tới các hàng xóm mỗi 30 giây trên
danh nghĩa. Để đối phó với vấn đề thay đổi đồ hình mạng như là lỗi liên kết thì router dự kiến sẽ
nhận được bản tin cập nhật từ các hàng xóm với trường hợp tệ nhất là trong vòng 180 giây. Lý
do để chọn giá trị lớn hơn 30 giây là RIP sử dụng UDP – một giao thức không tin cậy. Do đó,
một số bản tin cập nhật có thể bị mất và không bao giờ tới các hàng xóm. Nếu router không
nhận được bản tin cập nhật từ hàng xóm X trong giới hạn đó thì nó sẽ cho rằng kết nối trực tiếp
đến X bị lỗi và thiết lập một chi phí tương ứng nhỏ nhất là 16 (vô cùng). Nếu sau đó router nhận
được một chi phí nhỏ nhất hợp lệ đến X từ một lân cận khác thì router sẽ thay thế giá trị vô cùng
bằng chi phí đó.
8
BSD là viết tắt của Berkeley Software Distribution.
9
Phát âm “route dee” chính là route deamon.
10
Phương thức Split Horizon với biến thể Poision Reverse được thảo luận ở Phần 7.5.1.
RIP sử dụng phương thức Split Horizon với biến thể Poision Reverse để giảm vòng lặp. 10
Trạng thái Convergence được tăng tốc bằng cách yêu cầu router triển khai cập nhật đã kích
hoạt. Tuy nhiên, router có thể muốn trì hoàn một cách ngẫu nhiên bản tin cập nhật được kích
hoạt để tránh tải mạng quá mức.
Bảng 1 Các trường RIP
Trường Mô tả
Command Trường lệnh chỉ ra mục đích của bản tin này. 2 giá trị hiện được định
nghĩa: 1 là yêu cầu hệ thống khác gửi thông tin định tuyến của nó và 2
là cho biết rằng một phản hồi có chứa thông tin định tuyến trong bảng
định tuyến của bên gửi.
Version Trường này chưa phiên bản của giao thức. RIP-1 đặt giá trị này là 1 và
RIP-2 đặt giá trị này là 2.
Address family Trường này được sử dụng để xác định loại địa chỉ. Hiện tại, chỉ địa chỉ
identifier IP được định nghĩa và giá trị 2 là IP.
IP address Trường này cho biết địa chỉ đích mà nó có thể là địa chỉ mạng hoặc
host.
Metric Trường này định ra chi phí (số lượng bước nhảy – hop) đến đích (trong
phạm vi từ 1 đến 15). Giá trị 16 cho biết đích không thể tiếp cận.

Định dạng bản tin RIP được thể hiện ở Hình 6. Bản tin bao gồm một trường Command,
một trường Version, 16 bit 0 và một số lượng khác nhau của thông báo định tuyến được gọi là
các mục RIP (tối đa 25 mục như vậy). Những trường được đặt là 0 không được sử dụng và được
dự trự sẵn cho các tiện ích mở rộng tương lai.

Mỗi mục RIP dài 20 byte và bao gồm một Address family Identifier, một IP address,
metric và vài trường được đặt bằng 0. Bảng 1 liệt kê mục đích của từng trường.
Mặc dù đơn giản rõ ràng là một lợi thế nhưng RIP cũng có vài hạn chế, gồm sử dụng số
liệu hạn chế và tốc độ hội tụ chậm. Với việc đếm hop và phạm vi nhỏ của giá trị đã chỉ định
trong metric, giao thức không thể tính đến các điều kiện tải mạng. Hơn nữa, giao thức không thể
phân biệt được giữa đường truyền tốc độ cao và tốc độ thấp. Dù phân tách theo chiều ngang
giúp tăng tốc độ hội tụ thì giao thức có thể hoạt động kém trong một số loại lỗi nhất định.
RIP-2 cho phép gói tin RIP mang theo nhiều thông tin hơn (ví dụ: subnet mask, hop tiếp
theo và miền định tuyến). RIP-2 cũng cung cấp một thủ tục xác thực đơn giản. Không giống
như RIP-1, RIP-2 có thể được dùng với CIDR. Thông số kỹ thuật đầy đủ được ghi lại trong
RFC-2453.

8.6.2 Open Shortest Path First

Giao thức Open Shortest Path First (OSPF) là một giao thức định tuyến nội miền được
phát triển để khắc phục một số thiếu sót của RIP. Không giống như RIP là mỗi router chỉ được
học từ hàng xóm của nó khoảng cách đến mỗi điểm đích thì OSPF cho phép mỗi router học cả
đồ hình mạng. RFC 2328 miêu tả phiên bản mới nhất của OSPF.
Mỗi router OSPF giám sát chi phí (trạng thái liên kết) của liên kết của mỗi hàng xóm của
nó và sau đó báo thông tin trạng thái liên kết đến các bộ định tuyến khác trong mạng. Việc này
cho phép mỗi router đều xây dựng một cơ sở dữ liệu trạng thái liên kết giống hệt nhau mô tả đồ
hình mạng hoàn chỉnh.
Ở trang thái ổn định router sẽ có cùng cơ sở dữ liệu trạng thái liên kết và do đó chúng sẽ
biết bao nhiêu router trong mạng, trong giao diện và liên kết giữa chúng và chi phí liên kết mỗi
liên kết. Thông tin trong cơ sở dữ liệu trạng thái liên kết cho phép router xây dựng cây đường
ngắn nhất với router được xem là gốc. Tính toán của đường ngắn nhất thường thực hiện bằng
thuật toán Dijkstra mặc dù các thuật toán định tuyến khác có thể áp dụng như nhau. Vì thông tin
trạng thái liên kết cung cấp giàu thông tin hơn véc-tơ khoảng cách nên OSPF thường hội tụ
nhanh hơn RIP khi một lỗi xảy ra trong mạng.

Hình 7 Các vùng OSPF

Một vài tính năng của OSPF gồm:


 Tính toán đa router đến một đích nhất định, một router cho mỗi loại dịch vụ. 11 Chức
năng này cung cấp thêm tính linh hoạt không có sẵn trong RIP
 Hỗ trợ cho mạng con có độ dài thay đổi bằng cách đưa mặt nạ mạng vào bản tin định
tuyến
 Chi phí liên kết linh hoạt hơn, có thể dao động từ 1 đến 65,535. Chi phí có thể dựa trên
bất kỳ tiêu chí nào
 Phân phối lưu lượng trên nhiều đường có chi phí bằng nhau để đến đích. Nhiều đường
chi phí bằng nhau (ECMP) là một dạng đơn giản của kỹ thuật luồng.
 Sơ đồ xác thực chắc chắn rằng router đang trao đổi thông tin với những lân cận tin cậy.
 Phát đa tuyến hơn là phát quảng bá bản tin của nó để giảm tải trên các hệ thống không
hiểu OSPF.
 Sử dụng router được chỉ định (và router được chỉ định dự phòng) trên mạng đa truy
nhập (nơi router có thể nói chuyện trực tiếp với nhau) để giảm số bản tin OSPF được trao đổi.

11
Loại của trường dịch vụ được thảo luận ở phần 8.21.
Để cải thiện khả năng mở rộng, OSPF giới thiệu một hệ thống phân cấp 2 cấp cho phép
AS được phân chia thành vài nhóm gọi là các khu vực. Các khu vực này được kết nối với nhau
bởi khu vực trục chính trung tâm như ở Hình 7. Một khu vực được định danh bởi một số 32 bit
được xem như ID của khu vực. Tiếp tục tương tự như đã nói trước đây, một khu vực có thể xem
như một thành phố hoặc thị trấn trong một đất nước (AS). Khu vực trục chính được định danh
với ID là 0.0.0.0. Cấu trúc liên kết của khu vực được ẩn khỏi các phần còn lại của AS theo
nghĩa là mỗi router trong một khu vực chỉ biết cấu trúc liên kết hoàn chỉnh bên trong khu vực.
Cách tiếp cận này hạn chế lưu lượng tràn đến khu vực và nó giúp cho giao thức mở rộng hơn.
Thông tin từ những khu vực khác được tóm lược bởi những router biên khu vực (ABR) có kết
nối đến nhiều khu vực khác. Khái niệm khu vực cho phép OSPF cung cấp một hệ thống phân
cấp 2 cấp nơi các khu vực khác có thể trao đổi gói tin thông qua khu vực trục chính.

Bốn loại router được định nghĩa trong OSPF. Router nội tuyến là một router với tất cả
liên kết của nó được kết nối với mạng trong cùng khu vực. Router biên khu vực là một router có
các liên kết của nó được kết nối với nhiều hơn 1 khu vực. Router trục chính là router có các liên
kết của nó được kết nối với trục chính. Cuối cùng, router giáp ranh của AS (ASBR) là router có
các liên kết của nó được kết nối với các AS khác. Các ASBR tìm hiểu về các tuyến đường bên
ngoài AS thông qua giao thức liên miền như BGP. Trong Hình 7, các router 1, 2 và 7 là các
router nội miền. Router 3, 6 và 8 là các router biên khu vực. Router 3, 4, 5, 6 và 8 là các router
trục chính. Router 4 là ASBR.
Hai router được coi là lân cân nếu chúng có giao diện đến chung một mạng. Giao thức
Hello cho phép các lân cân được phát hiện tự động. Router lân cân được xem là liền kề khi
chúng đồng bộ cơ sở dữ liệu cấu trúc liên kết thông qua trao đổi thông tin trạng thái liên kết.
Lân cân trên các liên kết điểm-điểm trở thành liền kề. Lân cân trên mạng đa truy nhập trở thành
liền kề với những router được chỉ định như giải thích ở bên dưới. Việc sử dụng những router
được chỉ định giảm kích thước của cơ sở dữ liệu cấu trúc liên kết và lưu lượng mạng được tạo ra
bởi OSPF.
Mạng đa truy nhập đơn giản là một tập các router mà có thể liên lạc trực tiếp với nhau.
(Nghĩ mạng đa truy nhập như một nhóm bạn bè.) Trong mạng đa truy nhập quảng bá, các router
liên lạc với nhau bằng các sử dụng mạng quảng bá như LAN. Mặt khác, trong mạng đa truy
nhập không quảng bá (NBMA), các router liên lạc thông qua một mạng không quảng bá. Ví dụ,
mạng chuyển mạch gói như ATM và frame relay. OSPF sử dụng router được chỉ định (và một
router được chỉ định dự phòng) trên các mạng đa truy nhập. (Nghĩ router được chỉ định như
thành viên phổ biến nhất của nhóm). Số bản tin của OSPF được trao đổi được giảm bởi sự tham
gia của router được chỉ định trong thuật toán thay mặt cho toàn bộ mạng đa truy nhập. Nghĩa là
router được chỉ định tạo ra các báo trước liên kết sẽ liệt kê các router mà được gắn vào trong
mạng đa truy nhập. (Thành viên phổ biến nhất sẽ nhanh chóng cung cấp cho phần còn lại của
nhóm tình trạng mạng thấp.)

HOẠT ĐỘNG CỦA OSPF


Giao thức OSPF chạy trực tiếp trên IP, sử dụng giao thức IP số 89. Định dạng của header
OSPF được thể hiện ở Hình 8. Các trường của nó được định danh ở bảng 8.5. Mỗi gói tin OSPF
bao gồm một header OSPF chung theo sau là phần thân của một loại gói tin củ thể. Có 5 loại gói
tin OSPF: hello, mô tả cơ sở dữ liệu, yêu câu trạng thái liên kết, cập nhật trạng thái liên kết,
ACK của trạng thái liên kết. Gói tin OSPF được gửi đến địa chỉ phát đa hướng 224.0.0.5 mà nó
được nhận diện như địa chỉ AllSPFRouters trên liên kết điểm-điểm và mạng đa truy nhập phát
quảng bá. Gói tin OSPF cần được gửi đến địa chỉ IP củ thể trong mạng đa truy nhập không phát
quảng bá.
Hình 8 Header chung trước mỗi gói OSPF

Hoạt động của OSPF bao gồm các giai đoạn sau:
1. Lân cân được phát hiện thông qua truyền bản tin Hello và router được chỉ định được
bầu trong mạng đa truy nhập.
2. Các liền kề được thiết lập và cơ sở dữ liệu trạng thái liên kết được đồng bộ.
3. Các báo trước trạng thái liên kết (LSA) được trao đổi bởi các router liền kề để cho phép
cơ sở dữ liệu cấu trúc liên kết được duy trì và báo trước cho các router nội vùng và nội
AS. Các router sử dụng thông tin trong cơ sở dữ liệu để tạo bảng định tuyến.
4. Trong thảo luận sau đây, chúng tôi chỉ ra các loại gói tin khác nhau được sử dụng trong
các giai đoạn đó.

Giai đoạn 1: Các gói tin Hello

OSPF gửi các gói tin Hello (loại 1) đến các lân cân của mình theo định kỳ để dò, thiết lập và
duy trì quan hệ lân cân. Các gói tin Hello được truyền theo định kỳ đến mối giao diện thường là
mỗi 10 giây. Định dạng của phần thân của gói tin Hello được thể hiện ở Hình 9, các trường của
nó được định danh ở Bảng 2. Mỗi router phát quảng bá định kỳ 0một gói tin Hello vào trong
mạng của mình. Khi router nhận gói tin Hello, nó gửi trả một gói tin Hello chưa router ID của
mỗi lân cân nó đã thấy. Khi một router nhận gói tin Hello chứa router ID của nó trong một
trường lân cân thì router đảm bảo rằng giao tiếp đến bên gửi là 2 chiều. Các router được chỉ
định được bầu trong mỗi mạng đa truy nhập sau khi lân cân được phát hiện. Bầu cử dựa trên giá
trị cao nhất của sự ưu tiên và trường ID.
Bảng 2 Các trường của header OSPF
Trường Mô tả
Version Trường này chỉ định phiên bản của giao thức. Phiên bản mới nhất
hiện tai là 2.
Type Trường này chỉ định loại gói tin OSPF. Các loại sau được định nghĩa:
hello, mô tả cơ sở dữ liệu, yêu cầu trạng thái liên kết, cập nhật trạng
thái liên kết, xác nhận trạng thái liên kết.
Packet Length Trường này chỉ định kích thước của gói tin OSPF theo byte bao gồm
cả OSPF header.
Router ID Trường này xác định router gửi. Trường này thường được đặt thành
địa chỉ IP của một trong các interface của nó.
Area ID Trường này xác định vùng mà gói tin đó thuộc về. ID vùng 0.0.0.0
được dành riêng cho trục chính
Checksum Trường Checksum được dùng để phát hiện lỗi trong gói tin
Authentication type and Kết hợp của các trường này có thể được sử dụng để xác thực các gói
authentication tin OSPF.

Hình 9 Định dạng gói tin Hello

Giai đoạn 2: Thiết lập các liền kề và đồng bộ cơ sở dữ liệu


OSPF liên quan đến việc thiết lập “liền kề” giữa các tập con của các router trong AS. Chỉ
router thiết lập liền kề tham gia vào trong hoạt động của OSPF. Lần một, 2 router lân cận thiết
lập kết nối giữa chúng, chúng trao đổi gói tin mô tả cơ sở dữ liệu (loại 2) để đồng bộ cơ sở dữ
liệu trạng thái liên kết của chúng. Một router hoạt động như chủ và một router khác như một nô
lệ. Rất nhiều gói tin có thể được sử dụng để mô tả cơ sở dữ liệu trạng thái liên kết.
Hình 10 Gói tin mô tả cơ sở dữ liệu OSPF

Định dạng của gói tin mô tả cơ sở dữ liệu được thể hiện ở Hình 10. Bảng 4 liệt kê các
trường. Chú ý rằng gói tin mô tả cơ sở dữ liệu có thể chứa nhiều LSA header. Các router chỉ gửi
LSA header thay vì gửi tất cả cơ sở dữ liệu. Lân cận sau đó có thể yêu cầu LSA mà nó không
có. Đồng bộ cơ sở dữ liệu trạng thái liên kết của tất cả các router OSPF trong một vùng là cần
thiết để tổng hợp các router chính xác và không có vòng lặp.

Bảng 3 Các trường của gói tin Hello


Trường Mô tả
Network mask Network mask được liên kết với interface mà gói tin gửi đi.
Hello interval Trường này chị định số giây giữa các gói tin Hello.
Options Các tùy chọn được hỗ trợ bởi router.
Priority Trường này chỉ định mức độ ưu tiên của router. Nó được sử dụng để
bầu router được chỉ định. Nếu đặt là 0 thì router này không đủ điều
kiện trở thành router được chỉ định.
Dead interval Trường này chỉ định số giây trước khi tuyên bố một lân cận không
phản hồi.
Designated router Trường này xác định router được chỉ định trong mạng này. Trường
này được đặt thành 0.0.0.0 nếu không có router được chỉ đinh.
Backup designated Giống như designated router.
router
Neighbor Trường này cấp router ID của mỗi lân cận mà các gói tin Hello đã
được nhận gần đây.
Bảng 4 Các trường của gói tin mô ta cơ sở dữ liệu OSPF
Trường Mô tả
Interface MTU Trường này chỉ định đơn vị truyền tối đa của interface được liên kết.
Options Các tùy chọn được hỗ trợ bởi router
I bit Bít Init được đặt là 1 nếu gói tin là gói đầu tiên trong thứ các gói tin
mô tả cơ sở dữ liệu.
M bit Bít More được đặt là 1 nếu theo sau nhiều gói tin mô tả cơ sở dữ liệu
hơn.
MS bit Bít Master/Slave cho biết router là Master. Nếu không, router là
Slave. Router có router ID cao nhất là Master.
Database description Trường này xác định số gói tin một cách tuần tự để bên nhận cho thể
sequence number phát hiện gói bị mất. Router Master sẽ đặt số thứ tự.
LSA header Header LSA mô tả trạng thái của router hoặc mạng. Mỗi header LSA
chưa đủ thông tin để xác định duy nhất một mục trong LSA (type, ID
và advertising router)

Định dạng của LSA header được thể hiện ở Hình 11. Các trường tương ứng được liệt kê
ở Bảng 5. Có vài loại trạng thái liên kết. Báo trước liên kết router được tạo ra bởi tất cả các
router OSPF và nó đưa trạng thái của liên kết router vào trong vùng. Thông tin này chỉ phát0
trong vùng. Báo trước liên kết mạng được tạo ra bởi router được chỉ định. Nó liệt kê các router
đã kết nối tới mạng quảng bá hoặc mạng NBMA và chỉ được phát trong vùng. Báo trước liên
kết tóm lược được tạo ra bởi các router biên khu vực. Nó cung cấp các tuyến đến các đích trong
các khu vực khác và các tuyến đến ASBR. Cuối cùng, báo trước liên kết ngoài AS tạo ra bởi các
router giáp ranh AS. Báo trước này mô tả các tuyến đến đích ngoài mạng OSPF và được phát
trong tất cả các vùng trong mạng OSPF.

Hình 11 Header LSA

Giai đoạn 3: Sự lan truyền của thông tin trạng thái liên kết và xây dựng các bảng định
tuyến
Khi một router muốn cập nhật các phần cơ sở dữ liệu trạng thái liên kết, nó sẽ gửi một gói yêu
cầu trạng thái liên kết (loại 3) cho các lân cận để liệt kê các LSA mà nó cần. Định dạng của bản
tin này được thể hiện ở
. Mỗi yêu cầu LSA được chỉ định bởi link-state type, link-state ID và advertising router.
Ba trường này được lặp lại cho mỗi liên kết.
Trong phản hồi một yêu cầu trạng thái liên kết hoặc khi router thấy trạng thái liên kết
của nó thay đổi, router sẽ gửi thông tin trạng thái liên kết mới, sử dụng bản tin cập nhật trạng
thái liên kết (loại 4). Nội dung của bản tin trạng thái liên kết được soạn bởi các LSA như Hình
13.
OSPF sử dụng phát tin cậy để đảm bảo rằng các LSA được cập nhật chính xác. Giả sử
rằng trạng thái cục bổ của router đã thay đổi vì thế router muốn cập nhật LSA của nó. Sau đó
router phát một gói cập nhật trạng thái liên kết nhờ thủ tục phát tin cậy.

Bảng 5 Các trường header LSA


Trường Mô tả
Link-state age Trường này cho biết LSA đã có bao lâu.
Options Các tùy chọn được hỗ trợ bởi router
Link-state type Trường này chỉ định loại LSA. Các loại hiện có: router, network,
summary (dành cho mạng IP), summary (dành cho các router ASB)
và AS-external.
Link-state ID Trường này xác định phần của miền định tuyến mà được mô tả bởi
LSA. Nội dung của trường này phụ thuộc vào loại trạng thái liên kết.
Advertising router Trường này xác định router ID của router mà khởi nguồn từ LSA.
Link-state sequence Trường này đánh số các LSA một cách tuần tự và có thể được sử
number dụng để phát hiện các LSA cũ hoặc trùng lặp.
Link-state checksum Checksum bao gồm toàn bộ nội dung của LSA ngoại trừ link-state
age.
Length Trường này chỉ định độ dài theo byte của LSA bao gồm header.

Khi nhận được gói tin như vậy, router lân cận xem xét các LSA trong cập nhật. Lân cận
đặt từng LSA trong bản cập nhật gói tin gần đây hơn LSA tương ứng đã có trong cơ sở dữ liệu
của nó và sau đó gửi gói tin xác nhận LSA trở lại router. Gói tin ACK đó bao gồm một danh
sách các header LSA. Lân cận cũng chuẩn bị gói tin cập nhật trạng thái liên kết mới có chứa
LSA và phát gói tin đến tất cả các giao diện khác với giao diện mà LSA đã đến. Tất cả các
router cuối cùng cũng nhận được bản cập nhật LSA. Khi cơ sở dữ liệu trạng thái liên kết được
cập nhật, router cần tính toán lại thuật toán đường đi ngắn nhất và chỉnh sửa bảng định tuyến
theo thông tin đã cập nhật. Router định kỳ truyền lại LSA mà đã gửi đến lân cận cho đến khi
nhận được xác nhận tương ứng từ lân cận.

Hình 12 Gói yêu cầu trạng thái liên kết OSPF


OSPF yêu cầu rằng tất cả LSA phải được làm mới mỗi 30 phút. Việc này chống lại việc
phá hỏng cơ sở dữ liệu router.
Hình 14 thể hiện thứ tự trao đổi gói tin OSPF: Các gói tin Hello theo sau là các gói tin
cập nhật trạng thái liên kết và sau đó là các gói tin xác nhận trạng thái liên kết. Phần ở giữa thể
hiện chi tiết khung 11, là khung chưa gói tin cập nhật trạng thái liên kết. Nó có thể được xem là
gói tin mang 5 bản tin LSA: 2 bản tin đầu tiên là báo trước liên kết tóm lược cung cấp các tuyến
đường đến các khu vực khác và 3 ban tin sau là báo trước liên kết ngoài AS mô tả tuyến đường
đến đích ngoài mạng OSPF. Phần ở giữa cũng thể hiện tất cả các trường của LSA tóm lược đầu
tiên. Cụ thể, nó mô tả tuyến đường đến mạng 172.16.16.0 với mặt nạ mạng 255.255.255.0 và
metric 64.

Hình 13 Gói tin cập nhật trạng thái liên kết OSPF

Hình 14 Ví dụ về gói tin cập nhật trạng thái liên kết OSPF
HỆ THỐNG PHÂN CẤP VÀ KHẢ NĂNG MỞ RỘNG INTERNET
Internet là một tập hợp lớn các mạng mà được liên kết logic bởi không gian địa chỉ duy
nhất toàn cầu và nó cung cấp truyền thông sử dụng bộ giao thức TCP/IP. Giao thức định tuyến
chịu trách nhiệm cho việc xác định kết nối trong Internet và để tạo ra các bảng định tuyến mà
dẫn các gói tin đến đích. Về nguyên tắc, các giao thức định tuyến phải cung cấp kết nối mỗi cặp
router trong Internet. Yêu cầu này đặt ra thách thức về khả năng mở rộng lớn với sự phát triển
bùng nổ của Internet. Cấu trúc hệ thống tự trị - AS giới thiệu hệ thống phân cấp 2 cấp phân tách
vấn đề xác định kết nối Internet thành hai phần: định tuyến trong AS (định tuyến nội miền) và
định tuyến giữa các AS (định tuyến liên miền).
Tại cấp độ thấp hơn trong hệ thống phân cấp, định tuyến nội miền được xử lý bởi các
giao thức định tuyến nội miền – các giao thức xác định các đường đi tối ưu trong một AS. Tuy
nhiên, các AS có thể khác nhau rất nhiều về kích thước. Một AS có thể bao gồm một mạng
trường học như một trường đại học hoặc một mạng lưới vận chuyển lớn như một ISO quốc gia.
Vấn đề mở rộng lại phát sinh trong AS lớn vì giao thức định tuyến nội miền phải giải quyết tất
cả các router trong AS. Để giải quyết định tuyến trong một AS lớn, OSPF giới thiệu một cấp độ
phân cấp khác trong AS thông qua khái niệm khu vực. Sau đó giao thức định tuyến nội miền chỉ
phải giải quyết với các router ở trong một vùng.
Tại cấp độ cao hơn, sự ra đời của hệ thống phân cấp cũng dẫn đến vấn đề xác định kết
nối giữa các AS. Giao thức định tuyến liên miền (EGP) như là BGP giải quyết vấn đề đó. BGP
cho phép các router liên miền báo trước thông tin về cách tiếp cận các mạng khác nhau trên
Internet. Hơn nữa, chúng ta sẽ thấy rằng địa chỉ CIDR cho phép các bộ định tuyến BGP báo
trước các đường dẫn tổng hợp làm giảm lượng thông tin định tuyến toàn cầu cần trao đổi.

You might also like