Mục Lục Giới Thiệu 2 I. Mạng không dây 2 II. Giao thức truyền thông trên mạng không dây TCPIP 2 III. Vấn đề trong mạng không dây 3 Nâng Cao Hiệu Suất TCP Trên Mạng Không Dây 4 I. Phương pháp tái truyền mức Datalink 4 II. Giao thức Snoop 4 Cài Đặt Snoop 6 I. Các khái niệm 6 1. Bộ nhớ tạm Snoop (Snoop cache) 6 2. Bảng dữ liệu kết nối Snoop (Snoop Connection Table) 6 II. Sơ đồ trạng thái 7 1. Trạng thái khởi tạo 8 2. Trạng thái Đợi 8 3. Trạng thái Snoop_Data 8 4. Trạng thái Snoop_Ack 8 5. Trạng thái Timeout 9 Kết Luận 10 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 TCPIP 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 (roundtrip 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.
Trang 1- -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ũ
Đà Nẵng, 2012
Trang 2Mục Lục
Giới Thiệu 2
I Mạng không dây 2
II Giao thức truyền thông trên mạng không dây TCP/IP 2
III Vấn đề trong mạng không dây 3
Nâng Cao Hiệu Suất TCP Trên Mạng Không Dây 4
I Phương pháp tái truyền mức Data-link 4
II Giao thức Snoop 4
Cài Đặt Snoop 6
I Các khái niệm 6
1 Bộ nhớ tạm Snoop (Snoop cache) 6
2 Bảng dữ liệu kết nối Snoop (Snoop Connection Table) 6
II Sơ đồ trạng thái 7
1 Trạng thái khởi tạo 8
2 Trạng thái Đợi 8
3 Trạng thái Snoop_Data 8
4 Trạng thái Snoop_Ack 8
5 Trạng thái Time-out 9
Kết Luận 10
Trang 3Giớ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
Trang 4bì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
Trang 5Nâ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
Trang 6Hì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
Trang 7Cài Đặt Snoop
I Các khái niệm
1 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;
2 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 */
Trang 8int 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
Trang 9Tiế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
2 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
3 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
4 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
Trang 10Mộ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
5 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
Trang 11Kế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
Trang 12TÀI LIỆU THAM KHẢO
[1] IEEE 802.11 Workgroup: http://grouper.ieee.org/groups/802/11/index.html.
[2] Performance Enhancing Proxy (PEP) Request for Comments (RFC)
http://community.roxen.com/developers/idocs/drafts/draft-ietf-pilc-pep-04.html
[3] Improving TCP/IP Performance over Wireless Networks
http://www2.cs.cmu.edu/~srini/Papers/publications/1995.mobicom/mobibom95.pdf
[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