Tớnh thời gian khứ hồi một cỏch thụng minh

Một phần của tài liệu Giáo trình tự học Mạng máy tính potx (Trang 108 - 119)

Tớnh thời gian khứ hồi một cỏch thụng minh là cỏch khắc phục nguyờn nhõn thứ hai dẫn tới việc vi phạm nguyờn lý “Bảo toàn cỏc gúi số liệu”, đú là việc đưa vào mạng một gúi tin mới trước khi cú một gúi tin cũ ra khỏi mạng. Như đó được trỡnh bày tại tiểu mục 1.3.2.2, cú hai sai lầm dẫn đến nguyờn nhõn thứ hai này, cỏch giải quyết chỳng được trỡnh bày dưới đõy.

Cỏch gii quyết sai lm th nht: tớnh ước lượng thi gian kh hi bng mt b

lc di thụng thp để trỏnh cho đại lượng này khi thăng giỏng quỏ mnh nhm duy trỡ s cõn bng. Đặc tả cho giao thức TCP, RFC-793 gợi ý tớnh ước lượng thời gian khứ hồi như sau:

RTT ←α.RTT+(1-α).M (1)

Trong đú RTT là ước lượng thời gian khứ hồi trung bỡnh, M là số đo thời gian khứ hồi nhận được từ gúi số liệu đó được biờn nhận gần nhất và α là hệ số làm trơn của bộ lọc, giỏ trị mà người ta gợi ý nờn sử dụng là α=0.9.

Sau khi ước lượng về RTT đó được cập nhật, thỡ thời gian hết giờ để phỏt lại gúi số liệu tiếp theo, RTO (retransmit timeout) được tớnh như sau:

RTO = β.RTT (2)

Cần phải chọn β sao cho việc phỏt lại do hết giờ khụng bị sai lầm do thăng giỏng của thời gian khứ hồi; nghĩa là làm cho xỏc suất thời gian khứ hồi của một gúi tin lớn hơn RTO là rất nhỏ. Chớnh vỡ vậy, β cần được chọn khụng quỏ nhỏ, cú thể sẽ dẫn đến việc phỏt lại vội vàng, khi gúi tin vẫn đang ở trong mạng; β cũng khụng được chọn quỏ lớn, cú thể sẽ dẫn đến việc phỏt lại quỏ chậm trễ, gúi tin bị mất từ lõu, mà bờn gửi vẫn chờ cho hết giờ rồi mới phỏt lại.

Trong cỏc phiờn bản TCP được cài đặt đầu tiờn, người ta thường chọn β là một số cố định bằng 2. Tuy nhiờn, cỏc nghiờn cứu thực nghiệm sau này cho thấy rằng, RTT thăng giỏng trong một miền tương đối rộng, vỡ vậy khụng nờn chọn β theo cỏch đơn giản như trờn. Cụng trỡnh đầu tiờn đề xuất việc cải tiến thuật toỏn tớnh RTO của Jacobson được cụng bố năm 1988. ễng đó đề xuất cỏch làm cho β xấp xỉ tỉ lệ với độ lệch chuẩn của hàm mật độ xỏc suất thời gian đến của biờn nhận. Cụ thể là, sử dụng độ lệch trung bỡnh như một ước lượng rẻ (cheap estimator) của độ lệch chuẩn. Thuật toỏn này đũi hỏi phải tớnh một biến nữa là độ lệch được làm trơn D, như sau:

D = α.D + (1-α).|RTT-M| (3)

Trong đú, cỏc tham số RTT và M hoàn toàn tương tự như trong biểu thức (1), cũn α ở đõy khụng nhất thiết phải cú cựng giỏ trị như tham số α trong biểu thức đú. Jacobson đó chỉ ra rằng, mặc dự D khụng hoàn toàn giống độ lệch chuẩn, nhưng nú cũng là một xấp xỉ đủ tốt. Cỏch tớnh D như trờn nhằm đạt được tốc độ cao nhất, chỉ sử dụng cỏc phộp tớnh cộng, trừ và dịch trờn cỏc số nguyờn. Ngày nay, cỏc phiờn bản TCP đều sử dụng thuật toỏn này và tớnh thời gian hết giờ để phỏt lại như sau:

Sử dụng hệ số 4 cú hai ưu điểm, thứ nhất là việc nhõn với 4 sẽ được thực hiện bởi phộp dịch, cú tốc độ thực hiện cao; thứ hai là, xỏc suất một gúi tin được biờn nhận chậm hơn RTO là rất nhỏ, cú thể bỏ qua.

Cỏch gii quyết sai lm th hai: rỳt lui theo hàm mũ. Đõy là cỏch giải quyết duy nhất đỳng đắn, bởi vỡ theo cơ chế khởi động chậm, cửa sổ gửi tăng lờn theo hàm mũ, cho nờn cũng cần phải rỳt lui theo cỏch này cho đủ nhanh khi đó cú dấu hiệu của tắc nghẽn. TCP sẽ đặt đồng hồ phỏt lại bằng khoảng thời gian rỳt lui và khoảng đú sẽ được tăng gấp đụi cứ mỗi lần bị hết giờ liờn tiếp.

5.3.3.3. Trỏnh tc nghn

Thuật toỏn trỏnh tắc nghẽn (CA, Congestion Avoidance) (hỡnh 4.7) nhằm khắc phục nguyờn nhõn thứ ba dẫn tới việc vi phạm nguyờn lý “Bảo toàn cỏc gúi số liệu”. Một chiến lược rỏnh tắc nghẽn đó được đề xuất bao gồm hai thành phần: th nht là cỏc chớnh sỏch ca mng: mạng phải cú khả năng gửi tớn hiệu đến cho cỏc thực thể cuối của cỏc kết nối (endpoint), bỏo cho chỳng biết là tắc nghẽn đang xảy ra hoặc sắp xảy ra; th hai là cỏc chớnh sỏch ca endpoint: cỏc endpoint phải cú chớnh sỏch giảm lưu lượng đưa vào mạng nếu nhận được cỏc tớn hiệu bỏo và tăng thờm lưu lượng đưa vào mạng nếu khụng nhận được tớn hiệu bỏo này.

Chớnh sỏch ca endpoint đối vi tc nghn: thớch ng vi đường truyn

Đú chớnh là chớnh sỏch tăng theo cấp số cộng, giảm theo cấp số nhõn, chớnh sỏch đú được giải thớch như sau:

− Mỗi khi xảy ra sự kiện hết giờ, đặt giỏ trị cửa sổ tắc nghẽn cwnd bằng một phần hai giỏ trị cửa sổ hiện thời. Đú là sự giảm theo cấp số nhõn.

− Mỗi khi nhận được một biờn nhận cho gúi số liệu mới, tăng cwnd thờm một lượng bằng 1/cwnd, đõy là sự tăng theo cấp số cộng. (Trong giao thức TCP, kớch thước cửa sổ và kớch thước gúi số liệu được tớnh bằng byte, vỡ thế sự tăng núi trờn được

Thuật toỏn Slow Start (SS):

− Thực thể phỏt sử dụng thờm biến:

+ cwnd (congestion window) - kớch thước cửa sổ phỏt

+ ssthresh (ss threshhold) - giới hạn trờn của cwnd, nếu vượt qua ặ tắc nghẽn.

− Bắt đầu phỏt, cwnd := 1, đú là tốc độ “an toàn nhất”

− Nhận được mỗi ack, tăng cwnd lờn 1 để thăm dũ (Additive Increase)

+ Khụng tăng cwnd quỏ Window Size mà bờn nhận thụng bỏo.

+ Thực chất, cwnd tăng lờn theo hàm mũ (theo thời gian). − Khi cwnd ≥ ssthresh, chuyển sang CA

chuyển thành maxseg*maxseg/cwnd, trong đú maxseg là kớch thước gúi số liệu cực đại và cwnd là cửa sổ tắc nghẽn, được tớnh bằng bytes).

− Khi gửi, sẽ gửi đi số gúi số liệu bằng số bộ hơn trong hai số: kớch thước cửa sổ mà bờn nhận đó đề nghị và cwnd.

Trong thực tế, cỏc thuật toỏn Khởi động chậm (SS) và Trỏnh tắc nghẽn (CA) đó được triển khai thực hiện cựng với nhau như là một thuật toỏn, thuật toỏn này được cài đặt trong Tahoe TCP - một phiờn bản của TCP.

Chớnh sỏch ca mng đối vi tc nghn (adsbygoogle = window.adsbygoogle || []).push({});

Đú là cỏc chớnh sỏch làm cho mạng, cụ thể là cỏc gateways gửi tớn hiệu bỏo tắc nghẽn tới cỏc mỏy tớnh trờn mạng càng sớm càng tốt, nhưng đừng quỏ sớm, trỏnh cho mạng khỏi bị thiếu lưu lượng vận chuyển. Gateway chỉ phải làm cụng việc loại bỏ cỏc gúi số liệu để bỏo cho cỏc thực thể đó gửi cỏc gúi số liệu rằng: chỳng đó sử dụng quỏ phần tài nguyờn mạng dành cho chỳng. Chớnh vỡ thế, cỏc thuật toỏn tại gateway sẽ làm giảm tắc nghẽn ngay cả khi khụng phải sửa đổi giao thức giao vận ở cỏc mỏy tớnh trờn mạng, để thực hiện việc trỏnh tắc nghẽn. Đồng thời cỏc mỏy tớnh trờn mạng cú triển khai thực hiện trỏnh tắc nghẽn sẽ nhận được phần dải thụng hợp lý dành cho nú và chỉ bị mất một số lượng tối thiểu cỏc gúi số liệu.

Bởi vỡ tắc nghẽn tăng lờn theo hàm mũ, cho nờn việc phỏt hiện sớm là quan trọng. Nếu tắc nghẽn được phỏt hiện sớm, thỡ chỉ cần một vài điều chỉnh nhỏ đối với cửa sổ của người gửi cũng cú thể giải quyết được vấn đề; ngược lại, sẽ phải điều chỉnh rất nhiều để mạng cú thể chuyển hết đống gúi số liệu tắc nghẽn trong mạng ra ngoài. Tuy nhiờn, do bản chất luụn thăng giỏng mạnh của lưu lượng, phỏt hiện tắcnghẽn sớm một cỏch tin cậy là một việc khú.

Thuật toỏn Congestion Avoidance (CA):

y Dấu hiệu tắc nghẽn:

1. RTT tăng quỏ Timeout, là một giỏ trị mà thực thể gửi sử dụng để phỏn đoỏn là gúi tin đó bị mất.

2. Nhận được nhiều (3) Dup Ack (biờn nhận lặp), điều đú cho biết đó cú nhiều gúi tin khụng đỳng thứ tự đến đớch, nghĩa là đó cú gúi tin bị mất.

y cwnd := cwnd + 1/cwnd với mỗi ack. y Khi phỏt hiện dấu hiệu tắc nghẽn:

+ ssthresh := cwnd/2, cwnd := 1

+ RTO = RTO * 2 (Exponential backoff) + ặ SS

Nhận xột:

1. Trong giai đoạn CA, cwnd tăng tuyến tớnh:

+ Đảm bảo tận dụng băng thụng cú thể sử dụng được

+ Vẫn thăm dũ tiếp khả năng sử dụng băng thụng nhiều hơn

2. cwnd bị giảm theo cấp số nhõn (Multiplicative Decreased)

Thuật toỏn Fast Retransmit (FRTX):

− Sau khi nhận được Dupack (>=3), TCP thực hiện phỏt lại nhanh, khụng chờ bị Timeout, sau đú chuyển ngay về SS.

− Đõy là một cỏch “dự đoỏn thụng minh” rằng, gúi tin đó bị mất.

Hỡnh 5.10. Minh hoạ thuật toỏn SS và CA

Thuật toỏn Fast Recovery (FRCV):

Cải tiến FRTX: thực hiện FRTX xong về CA chứ khụng về SS: − ssthresh := cwnd/2, nhưng khụng nhỏ hơn 2 (gúi tin)

− cwnd := cwnd + 3. Bờn gửi “đoỏn”: 3 dupack ứng với 3 gúi tin đó được nhận đỳng.

− Với mỗi dupack nhận được thờm, tăng cwnd := cwnd + 1

5.3.4. Giao thức UDP (User Datagram protocol)

− Khụng hướng nối (connectionless)

− Khụng bảo đảm (unreliable): khụng cú cơ chế kiểm tra STT phỏt, thu và kiểm soỏt lỗi.

ặ Ưu điểm: đơn giản.

− Dành cho cỏc ứng dụng:

+ Trong đú việc phõn phỏt tin nhanh chúng là quan trọng hơn việc phõn phối tin chớnh xỏc: Email, v.v.

+ Muốn tự cung cấp cỏc chức năng flow control và error control

− Thống kờ thực tế cho thấy: 99% cỏc gúi tin UDP được vận chuyển đến đớch khụng bị lỗi. (adsbygoogle = window.adsbygoogle || []).push({});

Cấu trỳc gúi số liệu UDP

− Tương tự cấu trỳc TCP segment

− “Header giả” giỳp thưc thể IP xõy dựng IP packet.

− Lenght trong Pseudo header: độ dài toàn bộ gúi số liệu UDP, kể cả “Pseudo header” − Lenght trong UDP segment: độ dài UDP

segment, min = 8.

− Checksum: tớnh cho toàn bộ gúi số liệu UDP.

5.4. GIAO THỨC LIấN MẠNG IP 5.4.1. Giới thiệu 5.4.1. Giới thiệu

Đặc trưng cụng nghệ:

Connectionless = Datagram

− Khụng phải thiết lập; giải phúng kết nối

− Packets cú thể đi theo cỏc con đường khỏc nhau − Khụng cú cơ chế phỏt hiện/khắc phục lỗi truyền → Giao thức đơn giản, độ tin cậy khụng cao.

Cỏc chức năng chớnh:

– Định nghĩa khuụn dạng gúi dữ liệu (IP packet) – Định nghĩa phương thức đỏnh địa chỉ IP – Chon đường (Routing)

– Cắt/hợp dữ liệu (Fragmentation/ Reassembly)

5.4.2. Cấu trỳc gúi số liệu IP

• Version (4 bit): IPv4 hoặc IPv6

• IHL (IP packet Header Length) (4 bit): đơn vị word 32 bit. – Min = 5 (khụng cú thờm trường tuỳ chọn)

– Max = 15 (trường tuỳ chọn là 40 byte)

– Đối với một số tuỳ chọn, thớ dụ để ghi con đường mà packet đó đi qua, 40 byte là quỏ nhỏ, khụng thể dựng được.

• Trường Type of service (8 bits): Dịch vụ và mức ưu tiờn.

– í nghĩa của nú được người ta thay đổi chỳt ớt trong cỏc năm qua.

– Cú thể cú nhiều cỏch kết hợp khỏc nhau giữa độ tin cậy và tốc độ. Đối với tiếng núi được số hoỏ, việc phõn phỏt nhanh quan trọng hơn phõn phỏt chớnh xỏc. Đối với FTP, việc truyền khụng cú lỗi quan trọng hơn việc truyền nhanh.

– Bản thõn chớnh trường này lại bao gồm một số trường, tớnh từ trỏi qua phải như sau:

+ Precedence (3 bit đầu tiờn): quyền ưu tiờn; 0 = normal, ... , 7 = network control packet.

+ Cờ D, T và R (3 bit tiếp theo): cho phộp host chỉ ra là nú quan tõm (cần) đến gỡ nhất trong tập hợp {Delay, Throughput và Reliability}.

Trong thực tế, cỏc router hiện nay lờ toàn bộ trường Type of service

+ 2 bit cũn lại hiện nay chưa dựng đến.

• Trường Total Length (16 bits): Tổng chiều dài packet, kể cả header lẫn data, đơn vị = byte.

– Max = 65535 byte

– Hiện nay giới hạn trờn là cú thể chấp nhận được (adsbygoogle = window.adsbygoogle || []).push({});

– Với cỏc mạng Gigabit trong tương lai sẽ cần đến cỏc datagram lớn hơn. • Trường Identification (16 bit): từ định danh của datagram (IP packet)

– Dựng cho host đớch xỏc định được mảnh (fragment) thuộc về datagram nào. – Tất cả cỏc mảnh của một datagram cú cựng một giỏ trị của trường

Identification.

• Trường Flags (2 bits): dựng cho quỏ trỡnh Fragmentation/ Reassembly

– Sau trường Identification là một bit khụng dựng đến. Flags gồm 2 trường 1 bit là DF và MF.

– DF (Don't Fragment): lệnh cho cỏc router đừng cú phõn mảnh datagram. • Datagram phải trỏnh mạng cú kớch thước packet nhỏ.

• Tất cả cỏc mỏy được yờu cầu chấp nhận việc phõn mảnh đến 576 byte hoặc nhỏ hơn.

– MF (More Fragments): Tất cả cỏc mảnh của datagram, trừ mảnh cuối cựng phải cú bit MF=1 → để biết được khi nào tất cả cỏc mảnh của một datagram đó đến đớch.

• Trường Fragment offset (13 bits): cho biết khoảng cỏch tương đối của gúi tin IP trong gúi tin bị phõn mảnh.

– Tất cả cỏc mảnh của một datagram, trừ mảnh cuối cựng phải cú chiều dài là bội số của 8 bytes - đơn vị cơ sở của mảnh.

– 13 bit nờn số mảnh lớn nhất của một datagram là 8192

• Trường Time to live – TTL (8 bits): con đếm thời gian sống của một packet

– Khi TTL= 0, packet bị loại bỏ và một packet cảnh bỏo được gửi cho bờn nguồn → Ngăn chặn cỏc datagram đi lang thang mói (nếu bảng chọn đường cú lỳc bị hỏng)

– Giả thiết đơn vị là giõy → max = 255s; thường được đặt = 30s

– Phải được giảm đi một tại mỗi chặng (hop) và được giảm nhiều lần khi đứng xếp hàng một thời gian dài trong mỗi router.

– Thực tế, nú chỉ đếm cỏc chặng.

• Trường Protocol (8 bits): Chỉ loại số liệu giao thức mức trờn nằm trong trường Data. – Cho biết cần trao datagram cho quỏ trỡnh nào của tầng transport.

+ Một khả năng là TCP

+ Nhưng cũng cú thể là UDP và cỏc quỏ trỡnh khỏc.

– Việc đỏnh số cỏc giao thức là trờn phạm vi toàn cầu, trờn toàn bộ Internet, được định nghĩa trong chuẩn RFC 1700.

• Trường Header checksum (16 bits):

– Tớnh riờng cho header, giỳp phỏt hiện cỏc lỗi phỏt sinh trong bộ nhớ của router. – Được tớnh lại tại mỗi chặng (hop), bởi vỡ sau mỗi chặng cú ớt nhất là một

trường bị thay đổi (trường TTL).

– Cỏch tớnh: cộng tất cả cỏc 16-bit halfwords sử dụng số dạng bự 1; sau đú lấy bự 1 của kết quả (phộp toỏn XOR → tốc độ cao).

• Trường Source address, Destination address (32 bit): – Địa chỉ IP của bờn gửi và nhận

– Mỗi địa chỉ bao gồm: địa chỉ mạng và địa chỉ host trong mạng • Trường Options: Tạo ra lối thoỏt cho cỏc version sau:

– Bổ sung thờm cỏc thụng tin khụng cú trong version đầu tiờn

– Thớ nghiệm thử cỏc ý tưởng mới và để trỏnh việc phải dành (allocate) cỏc bit của header cho cỏc thụng tin hiếm khi cần đến.

– Chiều dài cú thể thay đổi: 0..(15 – 5) x 32 bits

– Mỗi Option bắt đầu bằng một mó 1 byte chỉ ra tuỳ chọn – Hiện thời cú 5 tuỳ chọn (option) đó được định nghĩa (adsbygoogle = window.adsbygoogle || []).push({});

+ Security (an ning): Chỉ ra mức độ bớ mật của datagram + Strict source routing: Chỉ ra con đường đầy đủ để đi theo

+ Loose source routing: Chỉ ra danh sỏch cỏc router khụng được bỏ qua + Record route: Buộc mỗi router gắn địa chỉ IP của nú vào

+ Timestamp: Buộc mỗi router gắn địa chỉ IP và timestamp của nú vào – Tuy nhiờn khụng phải mọi router đều hỗ trợ tất cả cỏc tuỳ chọn này. – Padding: Được chốn thờm sao cho chiều dài Header = bội của 32 bits • Trường Data (32 bits): Số liệu của giao thức tầng trờn.

5.4.3. Cỏc lớp địa chỉ IP

− Mỗi địa chỉ IP (IPv4) gồm 32 bits, được chia thành 3 vựng, đú là Class + Netid + Hostid, mỗi mỏy nối mạng phải cú địa chỉ IP duy nhất trờn Internet

− Những mỏy nối với nhiều mạng cú cỏc địa chỉ IP khỏc nhau trờn từng mạng.

− Được chia thành 4 lớp: A, B, C, D và E (dự trữ), cấu trỳc cỏc lớp địa chỉ được chỉ rừ trong hỡnh trờn.

− Cỏch viết địa chỉ Internet: số thập phõn cú chấm (Dotted Decimal Notation), tức là

cú dạng x.y.z.t, trong đú x, y, z, t cú giỏ trị từ 0-255 (mỗi số tương ứng với 8 bits). − Để trỏnh đụng độ, cỏc địa chỉ mạng được NIC (Network Information Center) gỏn. Theo cấu trỳc trờn:

y Lớp A cho phộp định danh tới 126 mạng, với số mỏy tối đa tới hơn 16 triệu mỏy trờn

Một phần của tài liệu Giáo trình tự học Mạng máy tính potx (Trang 108 - 119)