Chƣơng 1 : Tổng quan giao thứcTCP và UDP
7. TCP trong giao thức Snoop
Hầu hết các ứng dụng hiện tại của mạng đều có yêu cầu sử dụng truyền dẫn TCP đáng tin cậy. Vì vậy nó mong muốn để đạt đƣợc tất cả những mục tiêu về việc cải thiện hiệu qủa của hệ thống mạng không dây. Để hiểu rõ hơn về giao thức này tôi giả sử truyền dữ liệu từ một máy chủ cố định (FH) tới một máy lƣu trữ di động (MH) thông qua một trạm cơ sở (BS). Trạm cơ sở chính là nơi định tuyến các gói tin chuyển đi sẽ đƣợc gắn thêm một khối gọi là Snoop. Khối Snoop duy trì bộ nhớ đệm (cache) của các gói tin TCP đƣợc gửi từ các FH chƣa đựoc ghi nhận bởi các MH. Khi có một gói tin mới đƣợc chuyển đến từ FH, Snoop thêm vào nó một bộ nhớ đệm và gửi các gói dữ liệu trên vào phần định tuyến của các gói tin, trong khi chức năng định tuyến vẫn thực hiện nhƣ thông thƣờng. Khối Snoop cũng theo dõi tất cả các gói “ACK” đƣợc gửi từ máy trạm lƣu trữ di dộng. Khi một gói đƣợc phát hiện bị mất trong quá trình truyền tin vì bất kỳ một lý do nào đó ngay lập tức khối Snoop này sẽ yêu cầu truyền lại ngay lập tức gói tin bị mất tới đích nhận. Do đó các trạm cơ sở Snoop ẩn mất gói tin đến từ FH với các ACK không trùng lập nhau, vì vậy nó đã làm giảm bớt hiện tƣợng tắc nghẽn và tăng hiệu năng đƣợc trong mạng.
Các khối Snoop bao gồm hai thủ tục kết nối đó là: Snoop Data và Snoop ACK. Snoop Data là quá trình Cache các gói tin trong qua trình truyền dữ liệu. Còn Snoop ACK là quá trình ACK đến từ các MH và ở đĩa lƣu trữ các gói tin cần truyền lại từ các trạm cơ sở đến các máy chủ lƣu trữ di động.
7.1. Snoop Data.
Snoop data là quá trình sử lý các gói tin từ các trạm lƣu trữ cố định. TCP thực hiện một đề án cửa sổ trƣợt để thực hiện quá trình truyền các gói tin dựa trên cửa sổ tắc nghẽn của nó đồng thời kiểm soát dòng chảy của cửa sổ. TCP là một giao thức dòng Byte và mỗi byte của dữ liệu có một số chuỗi liên kết. Mỗi gói tin TCP đƣợc xác định duy nhất bởi số thứ tự của Byte đầu tiên của dữ liệu và kích thƣớc của nó. Tại BS,
Snoop theo dõi những gói tin đƣợc truyền đi trong quá trình kết nối. Một trong số những gói dữ liệu đó có thể đến BS từ FH và Snoop_Data sẽ sử lý chúng theo một vài cách khác nhau:
a. Một gói mới trong một chuỗi TCP bình thƣờng: Đây là trƣờng hợp thông thƣờng khi một gói mới tăng kích cỡ tiếp tục đƣợc gửi tới BS. Trong trƣờng hợp này gói tin sẽ đƣợc thêm vào bộ nhớ cache của Snoop và đƣợc chuyển tiếp vào MH
b. Một chuỗi dữ liệu đƣợc lƣu trữ trong trƣớc đó: Đây là một trƣờng hợp ít phổ biến, nhƣng nó sẽ xảy ra khi gói tin bị qua hạn thời gian tới ngƣời nhận. Nó cũng có thể xảy ra khi một dòng dữ liệu đƣợc ngƣời gửi truyền lại tới ngƣời nhận quá nhanh tới trạm cơ sở. Các hành động này sẽ đƣợc xử lý khác nhau còn tuỳ thuộc vào các gói dữ liệu này lớn hơn hoặc ít hơn các gói vừa nhận cuối cùng. Nếu các gói dữ liệu lớn hơn gói vừa nhận cuối cùng rất có khả năng gói này không phải đến từ MH trƣớc đó và chúng sẽ tiếp tục chuyển gói tin này vào trong mạng. Mặt khác nếu các chuỗi này thấp hơn gói vừa nhận trƣớc đó chứng tỏ chúng vừa đƣợc nhận bởi MH trƣớc đó. Tại thời điểm này Snoop có thể loại bỏ gói tin thừa này và tiếp tục hoạt động bình thƣờng nhƣng việc loại bỏ gói tin không phải là điều tốt nhất đƣợc thực hiện trong TCP. Lý do có sự chênh lệch về kích cỡ của gói tin là ACK ban đầu với một dãy số có thể bị mất do sự tắc nghẽn trong khi đi lại cho các FH. Để tạo thuận lợi cho ngƣời gửi để nhận đƣợc hiện trạng kết nối càng nhanh càng tốt thì TCP sẽ tƣơng ứng với ACK cuối cùng tại BS đƣợc tạo ra bởi Snoop ( với địa chỉ nguồn và cổng tƣơng ứng với MH) và gửi tới FH.
c. Một chuỗi dữ liệu không đƣợc lƣu trữ trƣớc đó:Trong trƣờng hợp này một trong hai gói dữ liệu bị mất sớm do tắc nghẽn trên mạng hoặc đã đƣợc chuyển giao ra khỏi trật tự của mạng. Ngay lập tức các Snoop sẽ báo bằng cách gắn thêm các gói tin và chuyển tới MH, ngay lập tức các gói tin mất này sẽ đƣợc đánh dấu truyền lại cho ngƣời gửi.
7.2. Snoop ACK()
Snoop_ack () giám sát và xử lý các Acks đƣa trở lại của MH và thực hiện các hoạt động khác nhau tùy thuộc vào loại và số lƣợng Ack nó nhận đƣợc. Những Acks rơi vào một trong ba loại:
a. Một ACK mới: Đây là trƣờng hợp phổ biến trong chuỗi gói dữ liệu nhận đƣợc ở các MH. Thừa nhận này sẽ làm sạch bộ nhớ cache của snoop và tất cả các gói dữ liệu nhận đƣợc giải phóng. Vòng tròn thời gian ƣớc tính cho liên kết không dây cũng đƣợc cập nhật vào lúc này. Ƣớc tính này không đƣợc thực hiện cho mỗi gói, nhƣng chỉ cho một gói tin trong mỗi cửa sổ của truyền dẫn, và chỉ khi không có truyền đã xảy ra ở cửa sổ đó. Các điều kiện cuối cùng là cần thiết vì nó không thể nói chung để xác định sự xuất hiện của một sự thừa nhận cho một gói tin đã truyền lại cho các gói dữ liệu gốc hoặc cho việc truyền lại .Cuối cùng, thừa nhận là chuyển tiếp đến các FH.
b. Một ACK loại bỏ: Đây là một sự thừa nhận ít hơn thừa nhận cuối nhìn thấy bởi các Snoop và là một tình huống mà rất hiếm khi xảy ra. Đây là loại bỏ và các giao thức vẫn tiếp tục.
c. Một ACK trùng lặp (DUPACK): Đây là một ACK giống hệt một trƣớc đó đã nhận đƣợc một. Đặc biệt, nó giống nhƣ ACK cuối thấy cho đến nay. Trong trƣờng hợp này các gói tiếp theo chuỗi từ DUPACK đã không đƣợc nhận bởi MH này. Tuy nhiên, một số gói tiếp theo trong chuỗi đã đƣợc nhận, kể từ MH tạo ra một DUPACK cho mỗi phân đoạn TCP đã nhận đƣợc trên chuỗi. Một trong một vài hành động đƣợc lấy phụ thuộc vào loại thừa nhận trùng lặp và nhà nƣớc hiện nay của snoop:
Các trƣờng hợp đầu tiên xảy ra khi chúng tôi nhận đƣợc một DUPACK cho một gói là hoặc không có trong bộ nhớ cache ăn trộm ho ặc đã đƣợc đánh dấu là đã đƣợc truyền lại của ngƣời gửi. Nếu không đƣợc gói trong bộ nhớ cache, nó cần đƣợc gửi lại từ FH, có lẽ sau khi giải toả tắc nghẽn cơ chế kiểm soát cần thiết tại ngƣời gửi. Nếu gói dữ liệu đã đƣợc đánh dấu là một gói đƣợc truyền lại từ ngƣời gửi, DUPACK cần phải đƣợc định tuyến đến FH vì ngăn xếp trên TCP có duy trì nhà nƣớc dựa trên số
lƣợng Ack sao nó nhận đƣợc khi nó truyền lại một gói. Vì vậy, cả các tình huống này đòi hỏi các DUPACK để đƣợc chuyển đến các FH.
Các trƣờng hợp thứ hai xảy ra khi Snoop nhận đƣợc một DUPACK rằng nó không hy vọng sẽ nhận đƣợc cho gói. Điều này thƣờng xảy ra khi các DUPACK đầu tiên đến cho các gói dữ liệu, sau khi một gói tin tiếp theo trong dòng đạt tới MH. Sự xuất hiện của từng gói kế tiếp trong cửa sổ gây ra một DUPACK để đƣợc tạo ra cho các gói dữ liệu bị mất. Để làm cho số lƣợng DUPACKs nhƣ nhỏ nhất có thể, các gói dữ liệu bị mất và đã đựơc truyền lại ngay sau khi bị mất gói tin đƣợc phát hiện, và ở một ƣu tiên cao hơn các gói dữ liệu bình thƣờng. Điều này đƣợc thực hiện bằng việc duy trì hai hàng đợi ở lớp liên kết cho các gói ƣu tiên cao và bình thƣờng. Ngoài ra, Snoop cũng ƣớc tính số lƣợng tối đa của Ack có thể đến cho các gói này. Điều này đƣợc thực hiện bằng cách đếm số lƣợng các gói dữ liệu đƣợc truyền đi sau khi gói dữ liệu bị mất trƣớc khi gói tin đựơc truyền lại.
Trƣờng hợp thứ ba xảy ra khi một "dự kiến" DUPACK đến, dựa trên các ƣớc tính tối đa trên. Các gói tin sẽ bị mất đã đƣợc truyền lại khi DUPACK đầu tiên đã đến (và các ƣớc tính đƣợc số không), do đó thừa nhận điều này là bỏ đi. Trong thực tế, các gói đã đƣợc truyền lại gửi tới MH trƣớc khi hầu hết các gói dữ liệu này chuyển tiếp và BS thấy sự gia tăng trong chuỗi ACK trƣớc khi tất cả các DUPACKs dự kiến sẽ đến nơi. Truyền lại gói tại một ƣu tiên cao hơn bằng cách sử dụng một hàng đợi nhanh chóng cải thiện hiệu suất ở tất cả các tỷ lệ lỗi. Những lợi ích của phƣơng pháp tiếp cận này có thể nhìn thấy ở hầu hết các bít đến. Đây là một hệ quả của độ dài hàng đợi trung bình trong hàng đợi của quá trình truyền lại.Tỷ lệ lỗi tại các bit cao, hầu hết các gói dữ liệu cần phải đƣợc truyền lại, và không có ý nghĩa lợi thế để đƣợc bắt nguồn từ việc duy trì hai hàng đợi. Tuy nhiên hàng đợi cho phép truyền lại nhanh hơn các gói để tiếp cận với máy chủ lƣu trữ di động sớm hơn nếu chỉ có một trong hàng đợi, dẫn đến thông qua cải thiện. Snoop theo dõi những số truyền lại tại một nút cho một gói, nhƣng khởi tạo lai số này về 0, nếu gói đến một lần nữa từ ngƣời gửi sau một thời gian chờ hoặc truyền lại ngày một nhanh. Ngoài ra việc truyền lại gói tin còn phụ thuộc vào
số lƣợng và loại Ack, giao thức Snoop cũng thực hiện việc truyền lại khi thời gian bị qua hạn. Điều này đƣợc mô tả chi tiết hơn trong phần trên