Giải thuật cập nhật thông tin bảng lọc vào bộ nhớ

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

Có 3 trường hợp cập nhật thông tin vào bảng lọc, đó là: - Thêm một luật

- Xóa một luật - Sửa một luật

Vì việc cập nhật thông tin này phức tạp nhất là đối với việc cập nhật các trường cổng nguồn và cổng đắch vì cấu trúc dữ liệu phức tạp, nên trong mục này, ta chỉđề cập tới việc cập nhật các tiền tố vào trong RAM theo giải thuật Tree Bitmap.

Ứng với 3 trường hợp trên sẽ có 2 trường hợp cập nhật tiền tố là: - Chèn thêm một tiền tố Block Blọck Count BVptr Blọck Size LastestArrPo Array Block Block Array Size Array Empty Empty BVptr BVptr 15 0 15 7 0 15 0 Node Ptr BitVector 255 0 BitVector BitVector BitVector BitVector BitVector BitVectorPtrRAM BVRAM

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

- Xóa một tiền tố

Chèn thêm một tiền tố

Một tiền tố có dạng (nPrefix, nMask) được chèn vào trong Tree Bitmap. Vắ dụ: 1000 101* **** ****

ƒ Mức của node chứa tiền tố này sẽ là: nPLevel = nMask/4 (Thương của nMask và 4)

ƒ Mức của tiền tố trong node là: nSublevel = div(nMask,4) (Số dư của nMask và 4)

Ta cần thực hiện việc tìm kiếm tiền tố mới này trên cây để xác định vị trắ của nó. Sơ đồ thuật toán được biểu diễn trong hình 3.4.

Hình 3.5: Sơđồ thut toán tìm kiếm tin t

1000 101* **** **** nMask = 7

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

Có các trường hợp:

Ờ Tiền tố này đã có trong Tree Bitmap → Cập nhật lại BitVector

Ờ Tiền tố mới nằm trong một node có sẵn → Xác định mảng trong BVPtrRAM chứa các BitVectorPtr của node này. Tạo một BitVector của tiền tố mới này trong BVRAM và lưu địa chỉ của BVRAM mới này trong mảng đã xác định được (Hàm NewBitVectorPtr()) rồi cập nhật lại thông tin InternalPrefixBitmap của node này

Ờ Tiền tố mới không nằm trong node có sẵn → Xác định và tạo node mới chứa Tiền tố này (hàm NewNode()) bằng cách:

ƒ Nếu node mới nằm trong mảng có sẵn trong NodeRAM → Chèn node mới vào trong mảng

ƒ Nếu node này không nằm trong mảng có sẵn → Tạo node cha của node này,Ầ Node hiện hành = Node gốc nLv = 0 sai Cập nhật BitVector Cập nhật node NewBitVector() nPLevel = nLv ? Node hiện hành = node con Node hiện hành = NewNode() Có node con? đúng sai sai đúng nLv = nLv + 1 đúng NewBitVectorPtr() Kết thúc Tiền tố cần thêm đã tồn tại ? Bắt đầu

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

Hình 3.6: Sơđồ thut toán thêm tin t mi

Chú thắch:

- nLv: biến để lưu trữ mức của node hiện hành. - NewNode(): hàm tạo thêm node mới.

- NewBitVector(): hàm tạo BitVector trong BVRAM

- NewBitVectorPtr(): hàm tạo ra con trỏ BVPtr trỏ tới Bitvector mới được tạo ra.

Các hàm NewBitVectorPtr() và NewNode() được thực hiện theo nguyên tắc được

đưa ra trong phần 3.1.2. Sơđồ giải thuật của hàm NewNode được biểu diễn trong hình 3.6.

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

Hình 3.7: Sơđồ gii thut chèn node mi vào trong NodeRAM

Di chuyển dữ liệu xuống Vùng nhớ hiện hành đầy? Tìm mảng nhỏ nhất trong vùng hiện hành Mảng nhỏ nhât là mảng hiện hành? Tìm vùng nhớ phù hợp đúng đúng sai Tìm vùng nhớ phù hợp sai (adsbygoogle = window.adsbygoogle || []).push({});

Sao mảng nhỏ nhất sang vùng này

Di chuyển lại dữ liệu trong vùng nhớ hiện hành Sao chép mảng hiện hành Thêm node Cập nhật Header của vùng nhớ phù hợp và mảng hiện hành Cập nhật node cha Cập nhật header của vùng nhớ phù hợp và mảng nhỏ nhất Thêm node Cập nhật Header của mảng hiện hành Thêm node Di chuyển dữ liệu trong vùng nhớ hiện hành Cập nhật node cha Cập nhật Node cha Cập nhật Header của vùng nhớ hiện hành Bắt đầu Kết thúc

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

Chương 4 Thc hin 4.1. Xây dng bo mch phn cng [19][20][21]

Bo mạch phần cứng được phát triển để nhúng thuật toán xây dựng FireWall vào trong FPGA . Trên bo mạch bao gồm một chắp FPGA sparten 3 XC3S400 của Xilinx và một chip vi xử lý PIC18F87J60 được dùng đểđiều khiển quá trình nạp luật mới cho FPGA. Ngoài ra chip PIC18F87J60 còn được dùng để nạp cấu hình cho 2 chip giao diện khi khởi tạo.

FireWall dùng để bảo mật cho từng máy với mạng Internet hoặc nội mạng với mạng bên ngoài.

Hình 4.1: Mô hình kết ni mng có ng dng Firewall(FW)

Trên bo mạch ngoài chip FPGA và CPU là nhân chắnh còn có các chắp xử lý giao diện ENC624J600 với tốc độ 100M. Trên ENC624J600 ngoài chức năng làm giao diện Ethernet còn tắch hợp bộ mã hóa và giải mã AES cũng như hỗ trợ các bộ lọc tầng MAC cơ bản.

FW FW

FW FW

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

Hình 4.2: Sơđồ khi ca h thng FireWall

- MAC/PHY interface: Khối này bao gồm 2 chip xử lý giao diện bên ngoài ENC624J600. Khối này sau đó giao tiếp với khối Logic core để thực hiện xử lý giao tiếp với CPU và FireWall core.

- Logic core: Nhận dữ liệu từ MAC/PHY bên ngoài và thực hiện đưa dữ liệu sang khối FireWall core. Ngoài ra còn làm cầu nối giao diện để nạp cấu hình khởi động cho 2 chip ENC624J600.

- Khối CPU: Sử dụng để cập nhật dữ liệu về luật lên RAM.

- FireWall core: thực hiện lọc gói tin theo theo luật nằm trong RAM. - RAM: Lưu trữ luật của các gói tin cần lọc.

- RS232: Giao tiếp với PC để thực hiện cập nhật luật lên bảng lọc bằng phần mềm. RAM CPU PIC18F87J60 MAC/PHY Interface Port0 CPE Port1 RTE

FPGA FireWall core

FireWall core Logic core

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

4.2. Sơđồ chi tiết phn cng

Sau đây là sơđồ khối thực hiện phần mạch cứng

Hình 4.3: Hình v sơđồ thiết kế phn cng

4.3. Phn cng gii thut thc hin trên FPGA

Học viên: Trần Trường Phan Cao học khóa 2008 -2010 69 H ình 4.4: M ch chuy n m ch gói tin

Học viên: Trần Trường Phan Cao học khóa 2008 -2010 70

Phần cứng của đồ án được viết bằng ngôn ngữ VHDL, sử dụng phần mềm thiết kế ISE 9.2 (Integrated Software Environment) của Xilinx[20].

Vì FireWall có 2 giao diện mạng: cổng 0 và cổng 1: cổng 1 được kết nối với máy trạm cần bảo vệ và cổng 0 dùng để kết nối với mạng bên ngoài. Do đó có 2 luồng gói tin trao

đối với FireWall nên ta phải thiết kế bộ lọc gói tin cho cả cổng 1 và cổng 0.

Dữ liệu của bảng lọc về trường cổng nguồn và cổng đắch chỉ được lưu trong 2 cặp RAM: (adsbygoogle = window.adsbygoogle || []).push({});

- Local_port NodeRAM và Local_BVRAM: lưu trữ trường cổng nguồn ứng với dữ

liệu vào từ cổng 1 và trường cổng đắch ứng với dữ liệu vào từ cổng 0.

- Remote_port NodeRAM và Remote_BVRAM: lưu trữ trường cổng đắch ứng với dữ liệu vào từ cổng 1 và trường cổng nguồn ứng với dữ liệu vào từ cổng 0.

Ta thêm các bộ chọn kênh có tắn hiệu chọn là chỉ số (txpid) của cổng Ờ cổng 0 hay cổng 1 để phân chia thời gian truy cập RAM của các bộ lọc.

Trong sơ đồ trên, nửa trên là các khối phục vụ lọc gói tin ở cổng 1, nửa dưới các khối phục vụ lọc gói tin ở cổng 0.

Tắn hiệu rxpid đưa trở lại FPGA là tắn hiệu đảo của txpid vì gói tin vào từ cổng 1 sẽ được đưa ra ngoài mạng ở cổng 0 và ngược lại.

Do dung lượng RAM sẵn có trong FPGA Ờ Spartan 3 XC3S400 là 288Kbit. Lượng RAM không lớn nên để thử nghiệm thiết kế phần cứng, chúng ta lựa chọn các thông số

chắnh sau:

- Số lượng luật lớn nhất của bảng lọc: N = 64. Do vậy TCAM có dung lượng là 64 x 72 bit.

- Dung lượng của Local_port NodeRAM và Remote_port NodeRAM: 512 x 64 bit tức là hỗ trợ tối đa 512 node.

- Dung lượng của Local_port BVRAM và Remote_port BVRAM: 512 x 64 bit tức là hỗ trợ tối đa 512 tiền tố.

Học viên: Trần Trường Phan Cao học khóa 2008 -2010 71

Các bộ nhớ RAM, TCAM, FIFO được tạo ra từ các IP core (intellectual property) do Xilinx cung cấp thông qua chương trình CoreGen.

Chương trình Coregen của Xilinx hỗ trợ tạo FIFO có chuẩn chiều dài là 32, 64, 128,Ầ nên ta chọn chiều dài của FIFO là 128 (phải lớn hơn 96 theo tắnh toán ở mục 2.2.3).

Tần số hoạt động của tất cả các thành phần trong hệ thống đều là 25Mhz để phù hợp với tốc độ truyền dữ liệu từ FPGA sang chắp giao tiếp Ethern

4.4. H thng phn mm để thêm nút vào RAM

Hệ thống phần mềm được xây dựng trên nền tảng dòng chip PIC của hãng Microchip. Mã nguồn của hệ thống được xây dựng trên mã nguồn mở cung cấp miễn phắ TCP/IP stack cùng của hãng Microchip[22]. CPU được dùng ở đây là PIC18F87J60 với 128KB Flash và 3.8KB RAM, 10MIPS và có giao diện mở rộng Ethernet. Ởđây chỉ có tắnh chất giới thiệu module phần mềm với xu hướng ngoài cập nhật node trong Ram còn có thể lập trình để tạo thành một trang webserver để cấu hình firewall từ xa. Trong khuôn khổ luận văn thì phần mềm chưa được viết.

Học viên: Trần Trường Phan Cao học khóa 2008 -2010 72

4.5 Kết qu thc hin

Do thời gian đặt mạch in và các linh kiện đi kèm theo mạch bị trễ nên các kết quả

chỉ dừng lại ở mô phỏng các module và đánh giá.

Sau khi biên dịch chương trình (synthesis) kết quả thu được:

- Tần số hoạt động tối đa của mạch: 64.729 MHz, tức là tần số hoạt động của FPGA : 25 MHz là hoàn toàn chấp nhận được.

Học viên: Trần Trường Phan Cao học khóa 2008 -2010 73

KÊT LUẬN 

Sau thời gian thực hiện luận văn tác giảđã thu được một số kết quả sau: Ớ Nghiên cứu và tìm hiểu về nền tảng mạng và các giao thức, ứng dụng Ớ Nghiên cứu cơ chế và phương thức hoạt động của các FireWall. Ớ Tìm hiểu về FPGA và ngôn ngữ VHDL.

Ớ Tìm hiểu lập trình ứng dụng nhúng cho vi điều khiển (PIC 18)

Ớ Nghiên cứu và ứng dụng giải thuật TCAM và BV-CAM vào trong FPGA để xây dựng FireWall cứng.

Ớ Thiết kế bo mạch phần cứng (nguyên lý) để thực hiện hệ thống nhúng FireWall. Tuy nhiên, hệ thống vẫn còn nhiều thiếu sót như: Chưa thiết kế được bo mạch phần cứng để thực hiện giải thuật đã xây dựng lý thuyết. Cấu trúc tưởng lửa còn đơn giản và thiếu tắnh linh hoạt. Hệ thống được nêu ra ở đây chỉ mang tắnh chất giới thiệu, nếu đưa vào thực tế cần có đầu tư nghiên cứu nhiều hơn.

Học viên: Trần Trường Phan Cao học khóa 2008 -2010 74 (adsbygoogle = window.adsbygoogle || []).push({});

TÀI LIU THAM KHO

Bài báo

[1] Haoyu Song and John W. Lockwood (2005), ỘEfficient Packet Classification for Network Intrusion Detection using FPGAỢ, International Symposium on Field- programmable gate arrays, Montery,CA,(Feb 20-22),1-8.

[2] David E. Taylor, John W. Lockwood, Todd S. Sproull, Jonathan S. Turner, David B. Parlour (2002), ỘScalable IP Lookup for Programmable RoutersỢ, IEEE INFOCOM 2002,1-11.

[3] Marcel Waldvogely, George Varghesez, Jon Turnerz, Bernhard Plattner (1997)

ỘScalable High Speed IP Routing LookupsỢ by. SIGCOMM '97 Proceedings of the ACM SIGCOMM '97 conference on Applications, technologies, architectures, and protocols for computer communication,1-12.

[4] Kai Zheng1 and Hao Che and Zhijun Wang3 and Bin Liu1 4 and Xin Zhang (2006),ỘA TCAM -based distributed parallel IP lookup scheme and performance analysisỢ, IEEE/ACM Transactions on Networking (TON), VOL.14, (4),1-35.

[5] Karthik Lakshminarayanan and Anand Rangarajan and Srinivasan Venkatachary (2005)ỘAlgorithms for Advanced Packet Classification with Ternary CAMsỢ, In Proceedings of SIGCOMM'2005,193-204.

[6] Christopher Hayes and Yatin Singhal ỘRules-based Network Intrusion Detection using a Field Programmable Gate ArrayỢ, 16.671 Advanced Computer Architecture, UMASS Lowell, 1-21.

[7] James Moscola and John Lockwood and Ronald P. Loui and Michael Pachos (2003) ỘImplementation of a Content-Scanning Module for an Internet FirewallỢ, Field- Programmable Custom Computing Machines (FCCM)- Napa- CA, April 9-11, 1-8.

Học viên: Trần Trường Phan Cao học khóa 2008 -2010 75

[8] Shubhash Wasti (2001),ỘHardware Assisted Packet Filtering FirewallỢ

Proceedings of the 2000-2001 Grad Symposium,. CS Dept, University of Saskatchewan, 11 April 2001,1-10.

[9] Long Bu and John A. Chandy (2004), "FPGA Based Network Intrusion Detection using Content Addressable Memories," fccm,12th Annual IEEE Symposium on Field- Programmable Custom Computing Machines (FCCM'04),316-317.

[10] Ioannis Sourdis and Dionisios Pnevmatikatos (2005), ỘFast, Large-Scale String Match for a 10Gbps FPGA-based NIDSỢ. New Algorithms, Architectures, and Applications for Reconfigurable Computing ,Chapter 16, ISBN 1-4020-3127-0,195-207.

[11] W. Eatherton and Z. Dittia and G. Varghese (2004),ỘTree Bitmap : Hardware/Software IP Lookups with Incremental UpdatesỢ, Computer Communication Review 2004, 97-122.

Đồ án

[12] William N. Eatherton (1999), Hardware Ờ based internet protocol prefix lookups, Washington University, department of electrical Engineering.

[13] Weidong Lu (2003), Designing TCP/IP Functions In FPGAs, Faculty of Electrical Engineering, Mathematics and Computer Science, Mekelweg university, Netherlands.

[14] Tinoosh Mohsenin (2004), Design and Evaluation of FPGA-Based Gigabit- Ethernet/PCI Network Interface Card, Rice University.

[15] Christophoros Kachris (2001), Design and Implementation of a TCP/IP core for reconfigurable logic, Technical university of crete.

[16] Joannis Sourdis (2004), Efficient and High-Speed FPGA-based String Matching for Packet Inspection, Technical University of Crete, Electronic and Computer Engineering department.

Học viên: Trần Trường Phan Cao học khóa 2008 -2010 76

Sách tham kho

[17] Libor Dostalek and Alena Kabelova (2006),Understanding TCP/ IP,

Birmingham, [England] : Packt Pub.

[18] Elizabeth D. Zwicky, Simon Cooper & D. Brent Chapman (2000), Building Internet Firewalls , O'Reilly Media.

Website

[19] http://www.arl.wustl.edu

[20] http://www.xilinx.com (adsbygoogle = window.adsbygoogle || []).push({});

[21] http://www.opencores.org

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