Chƣơng 1 : Tổng quan giao thứcTCP và UDP
6. Các thuật toán trong TCP
6.1. Thuật toán Slow-Start
Các giao thức TCP sẽ bắt đầu kết nối với nhiều ngƣời gửi tiêm chích phân đoạn vào mạng, cho đến kích thƣớc cửa sổ quảng cáo bằng thu. Trong khi đây là OK khi hai máy trạm trên cùng một mạng LAN, nếu có bộ định tuyến và liên kết chậm hơn giữa ngƣời gửi và các nơi nhận tiếp nhận, các vấn đề có thể nảy sinh. Một số bộ định tuyến trung gian phải xếp hàng các gói dữ liệu, và nó có thể cho rằng các bộ định tuyến để chạy trên không gian cho thấy cách tiếp cận này có thể làm giảm thông lƣợng của TCP kết nối mạng.
Thuật toán để tránh trƣờng hợp này đƣợc gọi là chậm - bắt đầu. Nó hoạt động bằng cách quan sát là tỷ lệ mà tại đó các gói dữ liệu mới nên đƣợc đƣa vào mạng và tỷ lệ gói tin lúc đó sẽ đƣợc trả về đầu kia.
Chậm bắt đầu thêm một cửa sổ để TCP của ngƣời gửi: sự tắc nghẽn cửa sổ, đƣợc gọi là "CWnd". Khi một kết nối mới đƣợc thành lập với một lƣu trữ trên mạng khác, các cửa sổ tắc nghẽn đƣợc khởi tạo một phân đoạn (tức là kích thƣớc phân đoạn công bố vào cuối khác, hoặc các mặc định, thƣờng là 536 hoặc 512). Mỗi một ACK đƣợc nhận, các cửa sổ tắc nghẽn là tăng thêm một phân đoạn. Ngƣời gửi có thể truyền tải lên đến mức tối thiểu của cửa sổ tắc nghẽn và quảng cáo cửa sổ. Cửa sổ tắc nghẽn dòng điều khiển đƣợc áp đặt bởi ngƣời gửi, trong khi các cửa sổ quảng cáo là dòng điều khiển áp đặt bởi máy thu. Điều thứ nhất là dựa trên đánh giá của ngƣời gửi của nhận thức tắc nghẽn mạng; thứ hai là liên quan đến bộ đệm không gian ở cho ngƣời nhận kết nối này.
Ngƣời gửi bắt đầu bằng cách truyền một phân khúc và chờ đợi ACK phản hồi. Khi đó ACK đƣợc nhận, cửa sổ tắc nghẽn là tăng 1-2, và hai phân đoạn có thể đƣợc gửi đi. Khi các phân đoạn đƣợc ghi nhận, cửa sổ tắc nghẽn sẽ tăng lên bốn. Điều này cung cấp một sự tăng trƣởng hàm mũ, mặc dù nó không phải là chính xác theo hàm mũ vì ngƣời nhận có thể làm chậm Acks của nó, thƣờng gửi một ACK cho mỗi hai phân đoạn mà nó nhận đƣợc.
Tại một số điểm năng lực của internet có thể đƣợc đạt tới, và một bộ định tuyến trung gian sẽ bắt đầu gói “discarding”. Này cho các ngƣời gửi rằng cửa sổ tắc nghẽn của nó đã đạt mức quá lớn. Sớm triển khai thực hiện bắt đầu chậm chỉ khi đầu kia là trên một mạng khác nhau.
6.2. Thuật toán tránh nghẽn mạng
Tắc nghẽn có thể xảy ra khi dữ liệu đến trên một đƣờng ống lớn (một mạng LAN nhanh) và đƣợc gửi ra một ống nhỏ hơn (chậm hơn một WAN). Tắc nghẽn có thể cũng xảy ra khi dòng đầu vào nhiều đến một router có đầu ra khả năng sẽ thấp hơn tổng các yếu tố đầu vào. Tránh tắc nghẽn là một cách để đối phó với các gói dữ liệu bị mất.
Giả định của thuật toán là mất gói thiệt hại gây ra bởi là rất nhỏ (ít hơn nhiều so với 1%), do đó những mất mát của một gói tín hiệu tắc nghẽn một nơi nào đó trong mạng giữa các nguồn và đích. Có hai chỉ mất gói: một thời gian chờ xảy ra và biên nhận của Acks trùng lặp.
Tránh tắc nghẽn và bắt đầu chạy chậm là thuật toán độc lập với mục tiêu khác nhau. Nhƣng khi xảy ra tắc nghẽn giao thức TCP phải làm chậm tốc độ truyền dẫn của các gói dữ liệu vào mạng, và sau đó gọi chậm bắt đầu để có đƣợc những điều sẽ trở lại. Trong thực tế chúng là triển khai thực hiện cùng nhau.
Tránh tắc nghẽn và bắt đầu chậm yêu cầu hai biến thể duy trì kết nối nhau: một cửa sổ tắc nghẽn, CWnd, và một chậm bắt đầu ngƣỡng kích thƣớccửa sổ trƣợt. Thuật toán kết hợp hoạt động nhƣ sau:
1. Khởi động cho một kết nối cho bộ CWnd đến một phân đoạn và ngƣỡng kích thƣớc cửa sổ trƣợt đến 65.535 byte.
2. Những thói quen không bao giờ sản lƣợng TCP gửi hơn giá tối thiểu của CWnd và các cửa sổ quảng cáo của ngƣời nhận.
3. Khi tắc nghẽn xảy ra (chỉ định bởi một thời gian chờ hoặc tiếp nhận các của Acks trùng lặp), một nửa kích thƣớc cửa sổ hiện hành (các tối thiểu của CWnd và cửa sổ quảng cáo của ngƣời nhận, nhƣng lúc ít nhất hai phân đoạn) đƣợc lƣu trong ssthresh. Ngoài ra, nếu các tắc nghẽn đƣợc chỉ định bởi một thời gian chờ, CWnd đƣợc thiết lập là một trong những phân khúc (nghĩa là chậm bắt đầu).
4. Khi dữ liệu mới đƣợc ghi nhận vào cuối khác, tăng CWnd, nhƣng cách làm tăng phụ thuộc vào việc giao thức TCP đƣợc thực hiện bắt đầu làm chậm hoặc tránh tắc nghẽn.
Nếu CWnd là nhỏ hơn hoặc bằng kích thƣớc cửa sổ trƣợt, TCP là bắt đầu chậm; mặt khác TCP đang hoạt động tránh tắc nghẽn. Qúa trình chậm bắt đầu tiếp tục cho đến khi TCP sẽ đợi cho đến khi tắc nghẽn không còn xảy ra, và sau đó sẽ tránh ùn tắc trên mạng.
Qua trình chậm bắt đầu có khi CWnd phân đoạn, và đƣợc phân đoạn mỗi khi nhận đƣợc một ACK. Nhƣ đã đề cập trƣớc đó, điều này sẽ mở ra cửa sổ theo cấp số nhân: gửi một đoạn, sau đó hai, sau đó bốn v.v. Đây là một sự tăng trƣởng tuyến tính của CWnd. Việc tăng CWnd nên đƣợc nhiều nhất là thời gian đáp trả đi đƣợc một vòng từ nơi gửi tới nơi nhận. Khi đã nhận đủ thông tin đáp trả từ ACK cũng chính là lúc mạng không còn tắc nghẽn quá trình chuyển gói tin tiếp tuch đƣợc thực hiện.
6.3. Thuật toán truyền lại và phục hồi nhanh
Nhanh chóng truyền lại :
Trƣớc khi miêu tả sự thay đổi, có thể nhận ra rằng TCP tạo ra một sự thừa nhận ngay lập tức (một ACK trùng lặp) khi một out của đoạn thứ tự nhận đƣợc với một ghi chú mà một trong những lý do để làm nhƣ vậy đã đƣợc cho thử nghiệm nhanh truyền lại thuật toán). ACK trùng lặp này không nên bị trì hoãn.
Mục đích của ACK trùng lặp này là để cho đầu kia biết rằng một phân khúc đã đƣợc nhận ra trật tự, và để cho nó những gì dãy số dự kiến.
Kể từ khi TCP không biết liệu một ACK trùng lặp là do bị mất phân đoạn hoặc chỉ cần sắp xếp lại một đoạn, nó đợi cho một số lƣợng nhỏ của Acks sao để đƣợc nhận.
Ngƣời ta cho rằng nếu có chỉ là một sắp xếp lại các phân đoạn, sẽ có chỉ một hoặc hai Acks trùng lặp trƣớc khi phân đoạn sắp xếp lại đƣợc xử lý, mà sẽ sau đó tạo ra một ACK mới. Nếu ba hoặc nhiều bản sao đƣợc Acks nhận đƣợc trong một hàng, đó là một dấu hiệu mạnh rằng một phân đoạn đã đƣợc bị mất. TCP sau đó thực hiện việc truyền lại của những gì hình nhƣ là thiếu phân đoạn, mà không cần chờ đợi cho một giờ để qua trình truyền lại hết hạn.
Nhanh chóng phục hồi
Sau khi truyền lại nhanh chóng gửi những gì hình nhƣ là phân đoạn bị thiếu, tránh tắc nghẽn, nhƣng bắt đầu không chậm đƣợc thực hiện. Đây là thuật toán nhanh chóng phục hồi. Nó là một cải tiến cho phép thông qua dƣới ách tắc vừa phải, đặc biệt là cho các cửa sổ lớn.
Lý do không thực hiện bắt đầu chậm trong trƣờng hợp này là nhận đƣợc Acks sao nói TCP nhiều hơn một gói chỉ có bị mất. Kể từ khi tiếp nhận chỉ có thể tạo ra các ACK trùng lặp khi phân đoạn khác là nhận đƣợc, mà phân khúc đã để lại mạng và là trong bộ đệm của máy thu. Đó là, hiện còn có dữ liệu chảy giữa hai kết thúc, và TCP không muốn giảm bớt dòng chảy đột ngột bằng cách đi vào bắt đầu chậm.
Các thuật toán nhanh chóng truyền lại và phục hồi nhanh chóng thƣờng cùng nhau thực hiện nhƣ sau.
1. Khi lặp ACK thứ ba liên tiếp nhận đƣợc, Khi kích thƣớc cửa sổ đạt một nửa cửa sổ tắc nghẽn hiện nay, CWnd, nhƣng không kém hơn hai phân đoạn. Truyền lại những phân đoạn bị thiếu. Đặt CWnd để kích thƣớc cửa sổ cộng với 3 lần kích thƣớc của phân khúc. Đây là nổ cửa sổ tắc nghẽn bởi số lƣợng các phân đoạn có trái mạng lƣới và đầu kia mà đã lƣu trữ.
2. Mỗi thời gian khác ACK trùng lặp đến, tăng CWnd do kích thƣớc phân đoạn. Điều này nổ cửa sổ tắc nghẽn cho thêm đoạn đó đã để lại mạng. Truyền tải một gói, nếu đƣợc cho phép bởi các giá trị mới của CWnd.
3. Khi ACK tiếp đến là thừa nhận dữ liệu mới, thiết lập CWnd để kích thứoc cửa sổ (giá trị thiết lập trong bƣớc 1). ACK này nên là thừa nhận việc truyền lại từ bƣớc 1, một trong một vòng thời gian sau khi việc truyền lại đã hoàn thành. Ngoài ra, điều này nên ACK thừa nhận tất cả các phân đoạn trung gian gửi giữa nơi mất gói và nơi
nhận của các ACK trùng lặp đầu tiên. Bƣớc này là tránh tắc nghẽn, kể từ TCP giảm xuống một nửa khi gói đã bị mất.