Mô tả cấu trúc của Tree Bitmap

Một phần của tài liệu Xây dựng firewall trên nền tảng FPGA (Trang 37 - 41)

Các tiền tố phân tắch ra từ bảng lọc sẽ được đưa lên trên cây nhị phân. Một nút là tiền tốđược biểu diễn bằng màu đen. Ngược lại, các nút không phải tiền tốđược biểu diễn bằng màu trắng. Vì dữ liệu cổng là dữ liệu 16 bit nên độ sâu của cây tối đa là 16.

Trong thuật toán Tree Bitmap, cây nhị phân được chia thành các node (vắ dụ như

trong hình mỗi node có chiều sâu là S = 4). Trong cả phần này, để mô tả thuật toán Tree Bitmap, ta thống nhất sử dụng node có chiều sâu là 4.

Hình 2.1: Mô hình Tree Bitmap

Thuật toán Tree Bitmap dựa trên 2 ý chắnh là:

Ờ Thứ nhất, tất cả các dữ liệu về các node con của một node cho trước được lưu trữ

liên tiếp nhau. Như vậy, chỉ cần một con trỏ tham chiếu cho các node con, là con trỏ 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0

Học viên: Trần Trường Phan    37 

trỏ tới node con đầu tiên trong khối dữ liệu các node con liên tiếp này. Nhờ đó mà giảm số lượng con trỏđể kiểm soát các node. Một điều duy nhất không thuận lợi trong ý tưởng này đó là yêu cầu dữ liệu của các node con lưu trữ trong bộ nhớ phải liên tiếp nhau, gây khó khăn khi ta muốn chèn thêm một node mới hay xóa một node đi.

Ờ Thứ hai, mỗi node gồm 2 phần thông tin: thông tin về các tiền tố bên trong node và thông tin về sự tồn tại các node con của node này. Hai thành phần này được biểu diễn dưới dạng các bitmap tương ứng gọi là Internal Prefix Bitmap và Extending Paths Bitmap.

Hình 2.2: Chuyển một node thành bitmap

Internal Prefix Bitmap

Trong một node, một nút là tiền tốđược mã hóa bằng bit 1, một nút không phải tiền tốđược mã hóa bằng bit 0. Như vậy 4 mức trong node sẽđược biểu diễn lại như trong hình vẽ 2.3. Nếu sắp xếp các mức đã mã hóa này theo chiều ngang từ trái sang phải, ta sẽđược 15 bit mã hóa thông tin về các tiền tố bên trong node.

Học viên: Trần Trường Phan    38 

Hình 2.3: Xây dng Internal PrefixBitmap ca node trong hình 2.2

Extending Paths Bitmap

Ứng với mỗi node, có tối đa 16 node con. Thuật toán Tree Bitmap sử dụng 16 bit để

mã hóa thông tin về các node con này. Ở đầu ra của node, ứng với các vị trắ có node con, vị trắ tương ứng trong bitmap được mã hóa bằng bit 1. Nếu không, vị trắ tương

ứng trong bitmap được mã hóa bằng bit 0.

Tắnh toán các thông số

Giả sử ta chia cây nhị phân thành các node có độ sâu là S (S là ước của 16, chẳng hạn S = 4).

Bng 2.1: S bit để mã hóa mt node

Internal Bitmap External Bitmap

BitvectorArrayPtr 16 bit

Internal Prefix Bitmap 2S Ờ 1 bit

ChildNodeArrayPtr 16 bit

Extending Paths Bitmap 2S bit

Với mỗi node, ngoài 2 bitmap ta cần có 2 con trỏ để lưu giữđịa chỉ của node con

đầu tiên của node hiện hành và địa chỉ của tiền tốđầu tiên trong node. Giả sử 2 con trỏ

là 16 bit (có nghĩa là ta quản lý được tới 216 = 65536 = 64K tiền tố và 64K node). Suy ra số bit để mã hóa một node là:

b = 16 + 2S Ờ 1 + 16 + 2S = 31 + 2 x 2S 1 Mức 0 0 0 Mức 1 0 1 1 0 Mức 2 0 0 0 0 0 0 0 0 Mức 3 1 00 0110 00000000 Mức 0 Mức 1 Mức 2 Mức 3 1 00 0110 0000000 (adsbygoogle = window.adsbygoogle || []).push({});

Học viên: Trần Trường Phan    39 

Tắnh toán số node tối đa trên cây

Vì cây có chiều sâu là 16, mỗi node có chiều sâu là S, suy ra có r = 16/S mức node. Mỗi node có a = 2S node con. Vậy số node tối đa trên cây tắnh theo k là:

N = 1 + a + a2 + Ầ + arỜ1 = (ar Ờ 1)/(aỜ1) = (216 Ờ 1)/(2S Ờ 1)

Hình 2.4: Cây có chiu sâu 16

Chú ý: Các nút ở vị trắ sâu nhất trên cây (mức 16) sẽ nằm độc lập, không dùng node

để mã hóa. Thông tin BitVector của nó được xác định từ Extending Paths Bitmap của node cha tương ứng.

Dung lượng bộ nhớ cần thiết để mã hóa hết tất cả các node là: m = N x b (bit)

Tắnh toán số tiền tố tối đa trên cây

Học viên: Trần Trường Phan    40 

P = 1+ 21 + 22 +Ầ + 215 + 216 = 217 Ờ 1 = 131071

Suy ra muốn quản lý hết số tiền tố này, cần sử dụng 17 bit để mã hóa địa chỉ. Ta có bảng thống kê của các thông số thay đổi theo S như sau:

Bảng 2.2: Thống kê các thông số thay đổi theo S

S r a N = node_max b m (bit)

1 16 2 65,535 35 2,293,725 2 8 4 21,845 39 851,955 4 4 16 4,369 63 275,247

8 2 256 257 543 139,551

Tùy thuộc vào dung lượng bộ nhớ có trên từng loại FPGA, ta có thể chọn S khác nhau. Nhưng S càng lớn thì số lần truy cập bộ nhớ càng ắt. Trong thiết kế của này, chúng ta chọn S = 4 với 2 lý do:

Ờ Tuy rằng RAM của FPGA có thể tạo được với độ rộng bus dữ liệu là bất kỳ (≤ 256, không cần là bội của 8), nhưng để thuận tiện cho việc cập nhật dữ liệu vào RAM dưới dạng byte thì cần chọn b là bội của 8. Giá trị 63 là phù hợp vì nó không quá lớn và số bit dư thừa là tối thiểu (chọn b = 64 thì chỉ dư thừa 1 bit).

Ờ Vì số tiền tố tối đa trên cây là P = 217 Ờ 1, do đó cần con trỏ 17 bit để quản lý hết số tiền tố này. Ở trên ta đã giả thiết sử dụng con trỏ 16 bit, vậy có thể sử dụng 1 bit dư thừa này để có thểđánh địa chỉ toàn bộ số tiền tố P.

Một phần của tài liệu Xây dựng firewall trên nền tảng FPGA (Trang 37 - 41)