ĐẠI HỌC DUY TÂN
KHOA SAU ĐẠI HỌC
BÁO CÁO
Mạng và Truyền Dữ Liệu Nâng Cao
Đề Tài:
Tìm hiểu Giao thức Snoop
Người thực hiện: Hoàng Anh Vũ
Lớp : K4MCS
Đà Nẵng, 2012
- 2 -
Mục Lục
Giới Thiệu 3
I. Mạng không dây 3
II. Giao thức truyền thông trên mạng không dây TCP/IP 3
III. Vấn đề trong mạng không dây 4
Nâng Cao Hiệu Suất TCP Trên Mạng Không Dây 5
I. Phương pháp tái truyền mức Data-link 5
II. Giao thức Snoop 5
Cài Đặt Snoop 7
I. Các khái niệm 7
i. Bộ nhớ tạm Snoop (Snoop cache) 7
ii. Bảng dữ liệu kết nối Snoop (Snoop Connection Table) 7
II. Sơ đồ trạng thái 8
1. Trạng thái khởi tạo 9
ii. Trạng thái Đợi 9
iii. Trạng thái Snoop_Data 9
iv. Trạng thái Snoop_Ack 9
v. Trạng thái Time-out 10
Kết Luận 11
- 3 -
Giới Thiệu
I. Mạng không dây
Mạng không dây là hình thức truyền thông sử dụng sóng vô tuyến (băng tầng 2,4GHz
hoặc 5GHz) để truyền dữ liệu trong không gian.
Hình 1 Sơ đồ mạng không dây
Vì truyền bằng sóng nên mạng không dây dễ bị tổn thương bởi các yếu tố thời tiết, khí
hậu, vật cản, nhiễu với sóng khác nên tốc độ truyền cũng như độ ổn định không bằng
mạng có dây. Tuy nhiên mạng không dây có những ưu điểm vượt trội so với mạng không
dây như giá thành rẻ, có thể lắp đặt và truyền sóng ở những nơi mà mạng có dây không
thể thi công được.
II. Giao thức truyền thông trên mạng không dây TCP/IP
TCP là một giao thức truyền thông đáng tin cậy, nó sử dụng giao thức Goback N và
một cơ chế phát lại gói tin dựa trên bộ định thời. Bộ định thời được tính toán dựa vào
ước lượng độ trễ của một vòng truyền gói tin (round-trip delay). Nếu không có một
thông tin nào về gói tin được nhận trong thời gian định thời thì gói tin sẽ được gửi lại.
Thông thường trong việc truyền lại gói tin, TCP giả sử rằng có tắc nghẽn gây mất gói
tin và nó triệu gọi thuật toán điều khiển tắc nghẽn thực thi. Khi kích thước khung cửa
sổ truyền giảm xuống, tỉ lệ truyền gói tin cũng giảm. Việc điều chỉnh cửa sổ này
nhằm ngăn ngừa nguồn phát khỏi việc làm tràn ngập đích nhận bởi số lượng gói tin
vượt quá giới hạn.
TCP lúc khởi động sẽ tăng kích thước khung cửa sổ truyền theo hàm mũ để nhanh
chóng tìm ra tỉ lệ truyền thích hợp. Khi nguồn phát nhận thấy lỗi truyền gói tin, nó sẽ
giảm kích thước cửa sổ truyền xuống một nửa, rồi bắt đầu từ đây nguồn phát sẽ tăng
dần kích thước khung cửa sổ truyền từng đơn vị theo mỗi thời gian Round-trip trung
- 4 -
bình. Khi một gói tin bị mất, kích thước cửa sổ truyền lại bị giảm đi và thuật toán lại
lặp lại.
Hình 2 Kích thước cửa sổ truyền dữ liệu TCP
III. Vấn đề trong mạng không dây
Trong môi trường có tỉ lệ lỗi truyền cao như mạng không dây, TCP thực hiện cùng
cách như trong mạng có dây, nó giảm kích thước cửa sổ truyền trước khi truyền lại
gói tin. Việc điều chỉnh này làm giảm khả năng sử dụng băng thông một cách không
cần thiết, gây ra giảm thiểu hiệu năng hoạt động bởi thông lượng giảm và độ trễ tăng.
Điều này làm ảnh hưởng đến toàn bộ kết nối truyền tín hiệu từ trạm phát đến trạm
nhận.
Hình 3 Tỉ lệ bit lỗi cao trong kênh truyền không dây làm giảm kích thước cửa sổ truyền TCP
- 5 -
Nâng Cao Hiệu Suất TCP Trên Mạng Không Dây
I. Phương pháp tái truyền mức Data-link
Trong phương pháp này, mạng không dây được thiết lập một cơ chế truyền lại gói tin
tại tầng data-link. Mục đích chính của phương pháp này là để nâng cao khả năng truyền
thông của liên kết không dây mà không cần đến những chính sách về truyền lại gói tin và
giảm kích thước cửa sổ truyền tại tầng transport.Phương thức này thử nâng cao hiệu năng
truyền thông bằng cách tái truyền tập tin ở mức local mà không thực hiện ở tầng transport
phía trên. Một cơ chế mà dùng phương pháp này là giao thức Snoop.
II. Giao thức Snoop
Giao thức Snoop được thực thi trên một Snoop Agent, được cài đặt ở trạm phát hay
trên một thiết bị không dây. Nó hướng đến việc cải thiện hiệu năng của giao thức TCP
trên kết nối không dây.
Snoop Agent giám sát các gói tin được truyền quan trạm cơ sở và lưu tạm thời các gió
tin trong một bảng dữ liệu ở bộ nhớ cache. Sau khi lưu, Agent sẽ chuyển tiếp các gói tin
đến trạm đích và giám sát các gói tin ACK phản hồi.
Trong TCP, mỗi ACK được liên kết với một sô thứ tự. Số này dùng để thông báo với
bên gửi gói tin cuối cùng được nhận thành công ở trạm nhận. Nếu trạm gửi nhận được
cùng một số thứ tự hơn một lần, nó sẽ “nghĩ” rằng những dữ liệu được gửi từ số thứ tự
ACK cuối cùng đã bị mất. Hiện tượng gói tin ACK nhận về chứa số thứ tự nhỏ hơn ACK
cuối được gọi là trùng lặp ACK.
Chúng ta hãy xem xét một hệ thống có một Snoop Agent và một TCP gửi các gói tin 1,
2, 3, 4, 5. Giả sử rằng gói tin 2 bị mất vì lỗi trên kết nối không dây. Trạm nhận nhận được
các gói tin 3, 4, 5 liền trả về gói tin ACK với số thứ tự 1 – trùng lặp với số thứ tự của gói
tin cuối cùng trong thứ tự nhận được thành công. Khi trạm gửi nhận được những gói tin
ACK trùng lặp, nó truyền lại các gói tin bắt đầu từ gói tin tiếp theo của gói tin lỗi, với
kích thước cửa sổ truyền bị giảm đi.
- 6 -
Hình 4 Trạm gửi TCP phát lại gói tin
Công việc chính của Snoop Agent là lưu gói dữ liệu vào bộ nhớ tạm, Khi gói dữ liệu bị
phát hiện mất trên đường truyền (dựa vào hiện tượng trùng lặp ACK), Snoop Agent sẽ
truyền lại các gói dữ liệu. Snoop Agent sẽ truyền lại một cách cục bộ mà không cần gửi
ACK đến nguốn phát. Như vậy TCP sẽ không nhận biết được có xảy ra mất gói tin và
thuật toán điều khiển tắc nghẽn không kích hoạt.
Thêm vào đó, Snoop Agent khởi động một bộ định thời truyền lại gói tin cho mỗi kết
nối TCP. Khi vượt quá thời gian hạn định của bộ định thời, Snoop Agent sẽ truyền lại
những gói tin mà không có ACK trả về.
Giao thức Snoop chặn bắt các gói tin TCP, phân tích chúng và truyền lại các gói tin
này nếu cần thiết. Tất yếu, không có định dạng gói tin nào là không tương đồng với giao
thức Snoop và tất cả các gói tin gửi và nhận vẫn phù hợp với giao thức TCP và như vậy
không cần có thay đổi nào đối với các tầng khác trong mô hình TCP/IP. Điều này cực kỳ
quan trọng vì giao thức TCP/IP được thiết kết sử dụng cho mạng có dây, mà đang được
sử dụng rộng rãi hiện nay.
- 7 -
Cài Đặt Snoop
I. Các khái niệm
i. Bộ nhớ tạm Snoop (Snoop cache)
Bộ nhớ tạm Snoop được dùng để lưu giữ tạm thời những gói tin mà nhận được từ tầng
trên. Những gói tin được lưu trữ trong một mảng tuyến tính.
Cấu trúc dữ liệu của bộ nhớ tạm Snoop viết bằng ngôn ngữ C như sau
typedef struct
{
Packet cached_pkp[SNOOP_CACHE_SIZE]; //gói tin lưu
int ici_addr[SNOOP_CACHE_SIZE]; //ICI lưu
int max_cached; //Số gói tin tối đa được lưu tại trong một
thời điểm
int num_cached; //Số gói tin đã được lưu
int num_removed; //Số gói tin đã được xoá
int curr_cached; //Số gói tin hiện thời đang lưu
} struct_snCache;
ii. Bảng dữ liệu kết nối Snoop (Snoop Connection Table)
Snoop Agent lưu giữ một bảng dữ liệu các kết nối của TCP. Bảng này là cần có vì hai
trạm truyền - nhận dữ liệu có thể có nhiều đường kết nối được thiết lập, và mỗi đường kết
nối này lại đòi hỏi cần được duy trì, quản lý một cách độc lập (vì số hiệu của các gói tin
là không duy nhất giữ các kết nối).
Dưới đây là định dạng một bản ghi trong bảng dữ liệu kết nối của Snoop
typedef struct
{
unsigned int src_ip; /* IP Nguồn*/
unsigned int dest_ip; /* IP Đích*/
int src_port; /* Cổng nguồn */
- 8 -
int dest_port; /* Cổng đích*/
unsigned int last_seq_num; /* Số sequence gửi cuối cùng */
unsigned int last_ack_num; /* Số sequence nhận cuối cùng*/
int repeat_ack; /* đánh dấu nếu nhận được trùng lặp ACK */
int fin_flag; /* đánh dấu nếu nhận được gói tin kết thúc */
unsigned fin_seq_num; /* Số sequence của gói tin kết thúc */
Evhandle timeout_evt; /* event handle của sự kiện timeout*/
} struct_snTable;
Mỗi bản ghi chỉ định một kết nối TCP bởi cặp thông tin (IP và cổng) của trạm nhận và
trạm phát. Nó cũng lưu giữ dấu vết của số sequence cuối cùng và số ACK cuối cùng nhận
được. Tham số timeout_evt được dùng cho bộ định thời phát lại gói tin.
II. Sơ đồ trạng thái
Hình 5 Sơ đồ chuyển trạng thái của Snoop
- 9 -
1. Trạng thái khởi tạo
Tiến trình Snoop bắt đầu với trạng thái khởi tạo, trong trạng thái này, bảng dữ liệu tạm
và bảng dữ liệu những kết nối TCP được khởi tạo.
ii. Trạng thái Đợi
Sau khi trạng thái khởi tạo hoàn thành, tiến trình sẽ chuyển sang trạng thái Đợi. Không
có tác vụ nào được thực thi trong trạng thái đợi ngoại trừ việc đợi các sự kiện sau xảy ra:
• Sự kiện gói tin đến từ tầng dưới
• Sự kiện gói tin đến từ tầng TCP/IP ở trên
• Sự kiện hết hạn của bộ định thời
iii. Trạng thái Snoop_Data
Khi một gói tin đến từ tầng TCP/IP phía trên, tiến trình sẽ chuyển từ trạng thái Đợi
sang trạng thái Snoop_Data. Snoop Agent sẽ lưu vết số thứ tự ACK cuối cùng đến từ
tâng cao hơn. Tuỳ thuộc vào số thứ tự này, gói tin được xử lý theo những cách khác nhau.
Một gói tin mới trong dãy tuần tự các gói tin đến
Đây là trường hợp thông thường khi một gói tin với số thứ tự (sequence) lớn hơn đến.
Gói tin được thêm vào trong bộ nhớ tạm và chuyển tiếp đến tầng thấp hơn.
Một gói tin có số thứ tự nằm ngoài dãy tuần tự cần lưu.
Điều nà xảy ra khi gói tin bị mất đã gây ra sự kiện vượt quá thời gian định thời tại nơi
gửi. Nếu số thứ tự là lớn hơn gói tin ACK cuối cùng được nhận diện bởi Snoop Agent, nó
sẽ giả định rằng gói tin tiếp theo trong dãy đã mất. Gói tin hiện đang nhận được sẽ được
chuyển đến trạm nhận. Trái lại nếu số thứ tự gói tin là nhỏ hơn số thứ tự của ACK cuối
cùng, thì gói tin bị bỏ qua.
Sau khi gói tin được xử lý, tiến trình Snoop quay trở lại trạng thái Đợi để đợi sự kiện
tiếp theo.
iv. Trạng thái Snoop_Ack
Khi một gói tin từ tầng dưới đến Snoop Agent, tiến trình sẽ chuyển từ trạng thái Đợi
sang trạng thái Snoop_Ack. Tuỳ thuộc vào số thứ tự của ACK, gói tien được xử lý theo
các cách sau:
Một ACK mới
Đây là một gói tin ACK với số thứ tự lớn hơn cái cuối cùng Snoop Agent đã nhận
được. Snoop Agent sẽ xoá bộ nhớ tạm của ACK cuối, lưu cái hiện thời vào, đồng thời gói
tin ACK sẽ được chuyển tiếp lên tầng TCP/IP cao hơn.
- 10 -
Một ACK lỗi
Đày là khi gói tin ACK có số thứ tự nhỏ hơn cái cuối cùng nhận được. Điều này hiếm
khi xảy ra và trong trường hợp này gói tin ACK bị bỏ qua.
Một ACK trùng lặp
Đây là trường hợp gói tin ACK giống như cái nhận được cuối cùng. Snoop Agent sẽ
nhận định rằng những gói tin đã gửi với số thứ tự cao hơn đã mất. Và snoop sẽ truyền lại
các gói tin từ gói tin bị mất đầu tiên.
v. Trạng thái Time-out
Khi hết hạn thời gian chờ của bộ định thời, tiến trình sẽ chuyển từ trạng thái Đợi sang
trạng thái Timeout. Xử lý trong trạng thái time-out cũng tương tự như trong trạng thái
Snoop_Ack mà nhận được trùng lặp các gói tin. Snoop Agent sẽ truyền lại các gói tin mà
chưa có ACK.
- 11 -
Kết Luận
Cơ chế hoạt động của Snoop: tạo ra một Snoop Agent tại trạm cơ sở (trạm phát) và lưu
trữ các gói tin ở mức local bởi bộ nhớ tạm (cache) của nó. Snoop sao chép các gói tin vào
bộ nhớ cache của nó, đặt thời gian định thời cho việc truyền lại gói tin. Nó truyền lại gói
tin nếu nó nhận được các gói ACK lặp lại hoặc quá thời gian định thời.
Cơ chế này có nhiều tác động tích cực:
• Giảm thiểu việc truyền phát lại nhiều lần giữ trạm gửi và trạm nhận bởi việc
truyền phát cục bộ của Snoop Agent.
• Nhận biết và truyền lại gói tin khi không nhận được ACK nhờ bộ định thời
• Ngăn giao thức TCP không giảm kích thước cửa sổ truyền quá mức làm giảm
hiệu suất kết nối truyền dữ liệu.
- 12 -
TÀI LIỆU THAM KHẢO
[1] IEEE 802.11 Workgroup: />[2] Performance Enhancing Proxy (PEP) Request for Comments (RFC).
/>[3] Improving TCP/IP Performance over Wireless Networks
[4]W.Stevens, TCP/IP Illustrated, Volum 1. Reading, MA: Addision Wesley,
Professional Computing Series, 1984.
[5] A.S.Tanenbaum, Computer Networks, Third edition. Englewood Cliffs, NJ: Prentice-
Hall, 1996.