” Phân loại gói tin là hoạt động của router nhằm phân gói tin thành các luồng dựa trên các trường trong header của gói tin và bảng định tuyến.. Thuật toán: Tìm kiếm nhị phân the
Trang 1NGHIÊN CỨU CẤU TRÚC DỮ LIỆU
PHỤC VỤ TÌM KIẾM ĐA CHIỀU VÀ ỨNG DỤNG
Trang 3Đặt vấn đề
Trước đây, Internet chỉ cung cấp một dịch vụ nỗ lực tối
đa để xử lý tất cả các gói tin đến cùng một đích đã định rõ
Trang 4Phân loại gói tin
Định nghĩa “ phân loại gói tin. ”
Phân loại gói tin là hoạt động của router nhằm phân gói
tin thành các luồng dựa trên các trường trong header của gói tin và bảng định tuyến.
Tại sao phải phân loại gói tin?
Để xác định gói tin thuộc về luồng nào.
=> Quyết định chúng sẽ nhận ( receive ) dịch vụ ( service )
nào.
Router cần xác định rõ luồng của các gói tin đến và
thực hiện các xử lý đặc biệt phù hợp với từng gói tin.
Trang 5Xử lý đối với các luồng gói tin
Tất cả các gói tin của một luồng đều phải tuân theo luật đã
định trước và được xử lý tương tự nhau bởi router.
Phân loại dựa trên số lượng không định trước các trường
của header của gói tin.
Nghĩa là flow = (src-IP-address, dst-IP-address), hoặc flow
= (dst-IP-prefix, protocol) …
Trang 6Bảng định tuyến
Mỗi luật của bảng định tuyến là một cặp giá trị có dạng (f,a),
với f là một phép lọc và a là một action
Thành phần action là hoạt động được thực hiện khi một gói
tin thoả mãn phép lọc: Chuyển tiếp hay lọc gói tin? Nếu
chuyển tiếp thì chuyển đến đâu? Lớp dịch vụ nhận gói tin
là gì? Chi phí phải trả để vận chuyển gói tin?
Thành phần lọc là bộ k trường, mỗi trường của một bộ k có
thể có thể cụ thể hóa là một giá trị đơn, một dải hoặc một tiền tố
classifier packet
router
action
Trang 8Một số trường header của gói IP
Trong IPv4:
S ource A ddress (32 bits)
D estination A ddress (32 bits)
S ource P ort (16 bits)
D estination P ort (16 bits)
Protocol field (8 bits)
Trang 9Ứng dụng của phân loại gói tin
Định tuyến
Điều khiển truy cập trong firewalls
Lập hóa đơn giao thông mạng - Traffic billing
Virtual Private Networks: Đảm bảo các giao thông thuộc
về các kênh ảo khác nhau được đưa về đúng địa chỉ
Trang 10Thuật toán: Tìm kiếm nhị phân theo mức
Binary Search on Level (BSOL)
Phân loại gói tin đa chiều
Trang 11BSOL môột chiều
Trang 12Mô tả cây
Mỗi node z:
z.int: Một đoạn trong không gian địa chỉ đích
với node gốc z.int = [ ]
z.POList: là danh sách các luâât giao môât
phần với z.int
z.bmr lưu trữ đoạn tốt nhất khớp với z.int
z.bs là đường đi từ gốc cây đến node z.
1
W 2 ,
[3,5]
0011 r2 r3
Trang 13Tạo cây 1 bit cho một tập lọc
Cho là một tập lọc, với mỗi phép lọc
là một đoạn
Để tạo cây 1 bit cho F
Khởi tạo: node z = root, z.int =[ ], z.bs = null.
Thiết lập root.POList = F và root.bmr = null.
Khi phân chia node gốc thành hai node con thì khoảng
z.int được chia thành hai phần bằng nhau:
• Kết hợp với node con trái.
• Kết hợp với node con phải.
1
W 2 ,
, 0 [ W−1 −
] 1 2
, 2 [ W− 1 W −
Trang 14Xây dựng cây 1D
Nếu số lượng các đoạn trong z.POList lớn hơn hằng số T,
node z sẽ bị chia thành node con trái và con phải.
POList, bmr, bs cho cây con trái và cây con phải của z
được xác định từ thông tin kết hợp với z.
Ví dụ, giá trị bs của con trái của z là z.bs||0 (0 được đính
kèm với z.bs) và giá trị bs của cây con phải là z.bs||1.
Cây một bit được xây dựng bằng cách phân chia các node
cho đến khi mỗi lá có một POList đáp ứng ngưỡng T.
Trang 15Thuật toán xây dựng cây BSOL1D
Trang 17Mức 3
Trang 18Xây dựng bảng băm
Khi có cây 1 bit, ta xây dựng tập hợp các bảng băm
để
biểu diễn bảng phân loại gói tin, với h là chiều cao của cây.
Hi chứa các lá ở mức i của cây cùng với các node đánh dấu
cho một số lá ở mức j, j>i.
Cấu trúc của Hi={key, value}.
Key= giá trị bs của node.
Value = leaf nếu là node lá hoặc marker nếu là node
đánh dấu.
h
H H
H0, 1, ,
Trang 19Cấu trúc của bảng băm
Trang 20Thuật toán tìm kiếm (d=1001)
01
r3
000 r1
H3
H4
[8,15]
Trang 21BSOL 2 chiều
Cho là một tập của các bộ lọc 2D Mỗi bộ
lọc là một hình chữ nhật hai chiều và và
theo thứ tự là phép chiếu của fi lên trục x và trục y
) ( f i X
{ 0 , 1 , , −1}
= f f f n
F
) ( f i Y
Trang 22Xây dựng cây BSOL 2 chiều
hợp 1 chiều (trừ trường hợp trường int bị thay thế bởi trường rect).
Khởi tạo , root.bs = null, root.bmr = null,
và root.POList = F.
Một node có POList lớn hơn ngưỡng T thì được chia thành hai node con,
bằng cách chia hình chữ nhật của nó theo trục x hoặc theo trục y.
Với tất cả các node tại cùng một mức thì có cùng hướng chia.
Lưu quá trình phân chia thành một chuỗi phân hoạch.
] 1 2
, 0 [ ] 1 2
, 0 [ rect = W1 − × W2 −
root
Trang 23Xây dựng cây 2D
Trang 24Chọn hướng phân chia
Cho NTP là tập hiện tại của các node lá cần phân chia
Khởi tạo N = {root} nếu |root.POList|>T
Cho NB(z,k) là số lượng phép lọc sẽ bị phá vỡ (nghĩa là đường phân chia
đi qua phép lọc) nếu hướng k được chọn để phân chia node
Cho , thì hướng k được chọn để phân chia tại mức hiện
thời nếu NB(k) là nhỏ nhất
= z N NB z k k
NB( ) ( , )
Trang 25Ví dụ chọn hướng phân chia
f5
4 8 12 15
y
Trang 26Xây dựng giá trị tìm kiếm d
Để xác định phép lọc khớp tốt nhất cho một gói (a,b), ta
xây dựng d dựa trên chuỗi phân hoạch Ví dụ:
Nếu chuỗi phân hoạch là yxyx, ta sử dụng bit 1 của b như là bit 1 của d, bit
1 của a như là bit 2 của d, bit 2 của b như là bit 3 của d, bít 2 của a là bit 4 của d Vì thế d = 1001 cho gói tin (6,11) [(0110,1011)] theo nhị phân
Trang 27Xây dựng giá trị tìm kiếm d
Trang 28Tìm kiếm
Khi ta đã xây dựng được d như mô tả, thì sử dụng thuật
toán tìm kiếm một chiều để xác định phép lọc khớp tốt
nhất cho d.
Trang 29BSOL k chiều (k>2)
Mở rộng BSOL cho số chiều k>2 khá đơn giản.
Ta thu được một tập các bảng băm dựa trên ánh xạ cây của các phép lọc.
Việc tìm kiếm khóa d được xây dựng từ dữ liệu nhận được từ các gói tin được phân loại cũng như từ việc phân chia chuỗi phân hoạch sử dụng để xây dựng cây.
Trang 30Độ phức tạp của thuật toán
Độ phức tạp tìm kiếm của cấu trúc là O(logW), với W là
tổng của độ dài (theo bit) lớn nhất có thể của các trường
của một phép lọc
Trang 31Kết luận
Kết quả đạt được:
Nắm bắt và trình bày được những khái niệm cơ bản về định tuyến và phân
loại gói tin.
Tìm hiểu thuật toán phân loại gói tin đa chiều BSOL và cài đặt chương
trình minh họa thuật toán.
Hướng phát triển:
Tìm hiểu và xây dựng ứng dụng cụ thể của thuật toán BSOL.
Tìm hiểu các thuật toán khác có liên quan để phối hợp và phát triển để
thuật toán có hiệu quả cao nhất