1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Xây dựng firewall trên nền tảng FPGA

77 312 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 1,9 MB

Nội dung

Học viên: Trần Trường Phan 4 Danh sách các bảng biểu Bảng 1.1 Các địa chỉ multicast dành riêng Bảng 1.2 Các cờ trong TCP header và ý nghĩa của nó Bảng 1.3 Cấu trúc của UDP Header Bảng 1

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

Hà Nội 03 – 2011

Trang 2

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

Mục lục Danh sách chữ viết tắt………

Danh sách các bảng biểu………

Danh sách các hình vẽ, sơ đồ………

Mở đầu 7

Chương 1 Tổng quan 8

1.1 Giao thức mạng TCP/IP [17] 8

1.1.1 Kiến trúc phân tầng OSI 8

1.1.2 Chồng giao thức TCP/IP 10

1.1.4 TCP và UDP 20

1.3 Các vấn đề trong việc lọc gói tin[12][13][14][15][16] 29

1.4 Các giải pháp phân loại gói tin[15][16] 30

Chương 2 Thiết kế phần cứng 36

2.1 Tree Bitmap của Eatherton và Dittia[10] [11] 36

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

2.1.2 Kỹ thuật tìm kiếm trên Tree Bitmap 40

2.2 Mô hình thiết kế phần cứng 45

2.2.1 Ethernet Control Module 46

2.2.2 FPL Module 48

2.2.3 Forward Module 52

2.2.4 TCAM 54

2.2.5 NodeRAM 54

2.2.6 BVRAM 54

Chương 3 Thiết kế phần mềm 55

3.1 Thiết kế mô hình tổ chức bộ nhớ 55

3.1.1 Giải pháp thứ nhất 56

3.1.2 Giải pháp thứ hai 56

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

Chương 4 Thực hiện 66

4.1 Xây dựng bo mạch phần cứng [19][20][21] 66

4.2 Sơ đồ chi tiết phần cứng 68

4.3 Phần cứng giải thuật thực hiện trên FPGA 68

4.4 Hệ thống phần mềm để thêm nút vào RAM……… 68

4.5 Kết quả thực hiện ……….68

KẾT LUẬN 73

TÀI LIỆU THAM KHẢO 74  

Trang 3

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

Danh sách chữ viết tắt

Giao thức quản lý nhóm Multicast

Giao thức quản lý mạng đơn giản

Protocol

Giao thức truyền siêu văn bản (Web)

Gate Array

Mảng cổng lập trình được

Trang 4

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

Memory

Bộ nhớ truy cập ngẫu nhiên

Addressable Memory

Bộ nhớ có khả năng tìm kiếm

Content Addressable Memory

Mảng Vec tơ bit TCAM

RAM

hãng Cisco

Trang 5

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

Danh sách các bảng biểu

Bảng 1.1 Các địa chỉ multicast dành riêng

Bảng 1.2 Các cờ trong TCP header và ý nghĩa của nó

Bảng 1.3 Cấu trúc của UDP Header

Bảng 1.4 Cấu trúc gói số liệu ARP

Bảng 1.5: Ví dụ bảng lọc gói tin

Bảng 1.6: Bảng lọc các luật khác nhau

Bảng 1.7: Các tiền tố của trường cổng nguồn trong bảng lọc ở hình 1.2 và BitVector tương ứng

Bảng 2.1: Số bit để mã hóa một node

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

Trang 6

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

Danh sách các hình vẽ, sơ đồ

Hình 1.1 Cấu trúcphân lớp mô hình OSI

Hình1.2 Các lớp trong chồng giao thức TCP/IP

Hình 1.3 Giao tiếp vật lý và logic giữa các lớp

Hình 1.4 Cấu trúc IP Header

Hình 1.5 Cấu trúc trường Type of Service

Hình 1.6 Cấu trúc trường Flags

Hình 1.7 Nguyên tắc phân mảnh gói số liệu IP

Hình 1.8 Cấu trúc chung của một địa chỉ IP

Hình 1.9 Khuôn dạng địa chỉ các lớp IP

Hình 1.10 Cấu trúc TCP Header

Hình 1.11 Thiết lập một kết nối TCP/IP

Hình1.12 Dịch vụ định tuyến lại (ICMP Redirect)

Hình 1.13: Mô hình tường lửa

Hình 1.14: Kiến trúc đa bộ vi xử lý

Hình 1.15: Mô hình cây quyết định

Hình 1.16: TCAM trong kiến trúc BV - TCAM

Hình 1.17: Chuyển một dải “số hiệu cổng ≥ 1024 ” thành các tiền tố

Hình 1.18: Mô hình Tree Bitmap và BitVector tương ứng của cổng nguồn

Hình 1.19: Sơ đồ khối của bộ lọc gói tin sử dụng kiến trúc BV – TCAM

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

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

Hình 2.3: Xây dựng Internal PrefixBitmap của node trong hình 2.2

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

Hình 2.5: Ví dụ về cây quyết định

Hình 2.6: Thông tin bitmap của node gốc

Hình 2.7: Thông tin của node con tương ứng

Hình 2.8: Ví dụ về Count_Ones

Hình 2.9: Ví dụ về Prefix_Search

Hình 2.10: Sơ đồ giải thuật của Prefix_Search

Hình 2.11: Sơ đồ các mô đun phần cứng

Hình 2.12: Sơ đồ diễn tiến các trạng thái của Ethernet Control Module

Hình 2.13: Sơ đồ nguyên lý của FPL

Hình 2.14: Sơ đồ diễn tiến các trạng thái của FPL

Hình 2.15: Sơ đồ khối của Forward module

Hình 3.1: Chèn một node mới vào trong NodeRAM

Hình 3.2: Mô hình tổ chức bộ nhớ theo kiểu chia vùng bộ nhớ

Hình 3.3: Đề xuất cấu trúc dữ liệu của NodeRAM

Hình 3.4: Đề xuất cấu trúc dữ liệu của BVPtrRAM

Hình 3.5: Sơ đồ thuật toán tìm kiếm tiền tố

Trang 7

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

Hình 3.6: Sơ đồ thuật toán thêm tiền tố mới

Hình 3.7: Sơ đồ giải thuật chèn node mới vào trong NodeRAM

Hình 4.1: Mô hình kết nối mạng có ứng dụng Firewall(FW)

Hình 4.2: Sơ đồ khối của hệ thống FireWall

Hình 4.3: Hình vẽ sơ đồ thiết kế phần cứng

Hình 4.4: Mạch chuyển mạch gói tin

Hình 4.5 : Giao diện MPLAD IDE phát triển phần mềm

Hình 4.6 : Báo cáo tốc độ sau khi thực hiện tổng hợp trên FPGA

Trang 8

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

Mở đầu

Ngày nay, với sự bùng nổ của Internet, dữ liệu truyền qua mạng cũng như tốc độ truyền dữ liệu ngày càng tăng (đến GigaBit/s) Do đó, các thiết bị bảo mật tường lửa (Firewall) thông thường dựa trên các vi xử lý (tường lửa bằng phần cứng (PIX - router) và phần mềm (dựa trên máy tính PC) dần dần sẽ không đáp ứng được với tốc

độ truyền trong mạng Vì vậy, việc thiết kế các thiết bị phần cứng để thiết lập cơ chế bảo mật, nhờ có khả năng xử lý các luồng song song đang là xu hướng mới rất có tiềm năng

Giải pháp sử dụng FPGA cho các thiết bị mạng cũng như các thiết bị bảo mật đang được rất nhiều các trung tâm nghiên cứu, đặc biệt là trung tâm nghiên cứu ứng dụng:

hệ thống mạng và truyền thông đa phương tiện - Network and Multimedia Systems

Research Lab của trường đại học Washington, Saint Louis (http://www.arl.wustl.edu)

cũng như các nhà sản xuất quan tâm tới

Ý tưởng sử dụng mạch cứng để tạo ra cơ chế lọc gói tin cho thiết bị tường lửa nhằm mục đích:

- Tăng tốc độ lọc gói tin, tạo khả năng đáp ứng được tốc độ đường truyền ngày càng cao

- Giảm tải gánh nặng cho CPU của máy trạm

Thêm vào đó, ta có thể thiết kế để có thể ngăn chặn các kiểu tấn công ở tầng thấp (tầng IP) như các kiểu tấn công phân mảnh gói tin IP có thể gây treo máy trạm (ví dụ DoS)

Luận văn này được trình bày trong 4 chương:

Chương 1: Trình bày về tổng quan mạng IP và cơ bản vể tường lửa (firewall) và

đưa ra các phương pháp lựa chọn thiết kế

Chương 2: Trình bày về thiết kế phần cứng (cấu hình cho FPGA)

Chương 3: Trình bày về các thiết kế phần mềm để nạp dữ liệu cho tường lửa

(firewall) Chương 4: Trình bày về các kết quả đạt được (lập trình và mô phỏng)

Trang 9

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

Chương 1 Tổng quan

Trong chương này chúng ta đi từ tổng quan về mạng IP và tường lửa Từ đó chúng

ta nghiên cứu và đề ra phương án thiết kế

1.1 Giao thức mạng TCP/IP [17]

Vì nền FireWall hoạt động chủ yếu dựa trên giao thức mạng TCP/IP nên trước khi đi vào tìm hiểu hoạt động của FireWall ta cần khảo sát các khía cạnh liên quan đến giao thức này

1.1.1 Kiến trúc phân tầng OSI

Để việc tổ chức trao đổi số liệu giữa các ứng dụng trong hệ thống mạng được thuận tiện và không quá phức tạp, người ta phân chia hệ thống thành các chức năng nhỏ, có phân cấp, độc lập và “dựa vào nhau, có tác dụng tương hổ cho nhau” Nguyên tắc tổ chức hệ thống bằng cách phân chia hệ thống thành các chức năng có phân cấp không những cho phép giảm độ phức tạp thiết kế và thực hiện hệ thống thông qua việc xác định các chức năng cấu thành hệ thống và giao diện giữa các chức năng đó mà không qui định bắt buộc phải thực hiện các chức năng đó như thế

nào, mà còn cho phép thực hiện việc kết nối mở các hệ thống không đồng nhất,

nghĩa là kết nối giữa các hệ thống có kiến trúc phần cứng, phần mềm hệ thống và cấu trúc số liệu không giống nhau Mô hình 7 mức OSI là mô hình kết nối mở các hệ thống tính toán được xây dựng trên nguyên tắc phân mức chức năng như vậy

1.Tầng ứng dụng (Application Layer)

Có chức năng cung cấp các phương tiện để người sử dụng có thể truy nhập được vào môi trường OSI Đồng thời cung cấp các dịch vụ mạng

2 Tầng biểu diển thông tin (Presentation Layer)

Tầng này hoạt động như bộ phiên dịch dữ liệu cho mạng Nó thực hiện việc chuyển đổi cú pháp dữ liệu để đáp ứng yêu cầu truyền dữ liệu của các ứng dụng qua môi trường OSI

Trang 10

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

Application Presentation Session Transport Network Datalink Physical

Hình 1.1 Cấu trúcphân lớp mô hình OSI

3 Tầng phiên (Session Layer)

Tầng phiên cung cấp các chức năng quản lý truyền thông giữa các ứng dụng chạy trên các máy tính khác nhau như: Thiết lập, duy trì, đồng bộ hoá và huỷ bỏ các phiên truyền thông giữa các ứng dụng Ngoài ra nó còn thực hiện nhiều chức năng hỗ trợ khác nhau, cho phép các quy trình giao tiếp trên mạng như chứng thực người sử dụng

và bảo vệ truy cập tài nguyên

4 Tầng giao vận (Transport layer)

Thực hiện việc truyền dữ liệu giữa hai đầu giao tiếp, tiến hành kiểm soát lỗi và điều khiển luồng dữ liệu giữa hai đầu mút truyền dữ liệu nếu cần Nó cũng có thể thực hiện việc ghép kênh, cắt hợp dữ liệu nếu cần Nói chung, nhiệm vụ của tầng này đảm bảo cho Datagram được chuyển giao theo thứ tự gửi đi và không bị mất mát hay trùng lặp

5 Tầng mạng ( Network Layer)

Tầng mạng chịu trách nhiệm điều khiển hoạt động của mạng con, nó quyết định dữ liệu sẽ đi theo lộ trình vật lý nào, căn cứ vào điều kiện hiện tại của mạng, độ ưu tiên của dịch vụ và các điều kiện khác Thực hiện cả chức năng cắt hợp dữ liệu nếu cần

6 Tầng liên kết dữ liệu(Datalink Layer)

Tầng này có chức năng cung cấp các phương tiện để truyền thông tin qua liên kết vật lý đảm bảo tin cậy thông qua các cơ chế đồng bộ hoá, kiểm soát lỗi và điều khiển luồng dữ liệu, báo nhận và phục hồi lỗi xảy ra ở tầng vật lý

7 Tầng vật lý(Physical Layer)

Nhìn chung, chức năng của tầng vật lý liên quan tới việc biểu diễn các bit thông tin các giao thức điều khiển việc truyền các bit qua đường truyền vật lý Theo tiêu chuẩn

Trang 11

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

ISO thì tầng vật lý có các chức năng cung cấp các phương tiện điện cơ, chức năng, thủ tục để kích hoạt, duy trì và đình chỉ liên kết vật lý giữa các hệ thống

Mức này đảm bảo các công việc sau:

- Biến đổi số liệu từ dạng song song(Byte/Word) sang dạng nối tiếp(Bit) và ngược lại

- Biến đổi và truyền số liệu dưới dạng bit trên kênh truyền vật lý cụ thể

- Thích ứng về tính chất điện, tính chất cơ học giữa thiết bị cuối với môi trường truyền dẫn(ví dụ: mức tín hiệu điện, ổ nối dây dẫn )

1.1.2 Chồng giao thức TCP/IP

Các mạng máy tính hiện nay và đặc biệt là mạng Internet chủ yếu sử dụng chồng giao thức TCP/IP như là giao thức chuẩn chung Do đó việc tìm hiểu một cách sâu sắc các giao thức trong chồng giao thức TCP/IP cũng như sự hoạt động của nó giúp cho chúng ta thấy được mạng máy tính hoạt động như thế nào, có những đặc trưng, những điểm yếu gì Những kẻ tấn công đã lợi dụng những yếu điểm đó như thế nào

để thực hiện các cuộc tấn công của mình và chúng ta cần phải làm gì để đảm bảo cho mạng máy tính của mình được an toàn trước những cuộc tấn công đó

TCP/IP thực chất là một họ giao thức cùng làm việc với nhau để cung cấp phương tiện truyền thông liên mạng TCP/IP được phân thành 4 lớp và được so sánh với các lớp tương đương trong mô hình tham chiếu hệ thống mở OSI giống như hình sau:

Hình1.2 Các lớp trong chồng giao thức TCP/IP

Trang 12

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

Hình 1.3 Giao tiếp vật lý và logic giữa các lớp

Dữ liệu được đưa xuống từ lớp ứng dụng, sau đó tới lớp transport, tiếp theo tới lớp Internet và cuối cùng là tới lớp network, mỗi giao thức thực hiện chức năng xử lý luồng dữ liệu này bằng cách bao bọc các giao thức ở trên nó và đặt thêm một header điều khiển của mình vào phía trước luồng dữ liệu Hệ thống nhận dòng dữ liệu này theo thứ tự ngược lại, các header được loại bỏ và dòng dữ liệu lại được gửi lên các lớp trên Sự mở rộng này cung cấp sự linh hoạt bởi vì các lớp trên không cần quan tâm đến các công nghệ được sử dụng ở các lớp dưới

1.1.3 Giao thức liên mạng IP

Internet Protocol(IP) là giao thức đầu tiên của mô hình OSI, nó cũng là một phần của TCP/IP Mặc dù trong giao thức IP có từ Internet, nhưng nó không chỉ được sử dụng trên mạng Internet mà nó còn được sử dụng ở các mạng chuyên dụng khác mà không liên quan gì đến Internet IP định nghĩa một giao thức kiểu không kết nối(Connectionless) có nghĩa là không cần có giai đoạn thiết lập trước khi truyền dữ liệu Đơn vị dữ liệu được dùng trong IP gọi là Datagram IP là sự lựa chọn tốt nhất cho bất cứ mạng nào kết nối thông tin theo kiểu từ máy tới máy Mặc dù nó phải cạnh tranh với các giao thức khác như IPX của mạng Novell NetWare trên các mạng cục bộ vừa và nhỏ sử dụng NetWare như là hệ điều hành trên máy PC

Nhiệm vụ chính của IP là đánh địa chỉ các gói dữ liệu của thông tin giữa các máy tính và quản lý các quá trình xử lý các gói dữ liệu này Giao thức IP có một định nghĩa hình thức về cách bố trí các gói dữ liệu và khuôn dạng của phần Header chứa

Trang 13

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

các thông tin về các gói dữ liệu đó IP đảm nhiệm việc định tuyến đường truyền để xác định gói dữ liệu phải đi đến đâu và có khả năng điều chỉnh đường truyền trong trường hợp gặp trục trặc

Một mục đắch quan trọng nữa của IP là làm việc với việc phân phối không tin cậy gói dữ liệu Sự không tin cậy trong trường hợp này có nghĩa là việc phân phối gói dữ liệu không được đảm bảo, có thể do trể trên đường truyền, mất đường truyền,

bị sai hỏng trong quá trình phân chia hoặc lắp ráp lại các bảng thông báo Nếu IP không có chức năng điều khiển dữ liệu đáng tin cậy thì không thể nào đảm bảo được các gói dữ liệu đến nơi nhận một cách chắnh xác

IP không sử dụng mã kiểm tra cho toàn bộ gói dữ liệu mà nó chỉ sử dụng cho thông tin ở phần Header của gói tin Giao thức IP cho phép một gói dữ liệu có kắch thước tối đa là 65.535 byte, kắch thước này là quá lớn để các mạng có thể xử lý được, do đó phải có quá trình phân mảnh các gói dữ liệu để truyền và lắp ráp lại thông tin tại trạm đắch nếu cần thiết

Khi gói dữ liệu đầu tiên được phân mảnh và gửi đến trạm đắch, một bộ đếm thời gian được khởi động ở lớp IP máy thu Nếu bộ đếm thời gian này đã đạt đến một giá trị định trước mà vẫn chưa nhận hết các gói dữ liệu cần thiết thì tất cả các gói dữ liệu đã nhận sẽ bị huỷ bỏ toàn bộ Nhờ những thông tin trong phần Header của gói IP mà máy nhận có thể nhận biết được thứ tự của các gói dữ liệu được gửi đi như thế nào Một hậu quả của quá trình phân mảnh thông tin là các gói dữ liệu được phân mảnh đến chậm hơn một gói tin không bị phân mảnh, vì vậy phần lớn các ứng dụng thường tránh kỹ thuật phân mảnh nếu có thể

1.1.3.1 Cấu trúc Header của IP Datagram

IP được so sánh là phần cứng của mạng như là Ethernet, bởi về cơ bản nó cùng dựa trên sự đóng gói thông tin Khi Ethernet nhận được gói IP, nó đặt phần Header của lớp Ethernet ở phắa trước để tạo khung, quá trình như vậy được gọi là

encapsulation Một trong những vấn đề khác nhau cơ bản giữa các phần Header của

IP và Ethernet là phần Header của Ethernet bao gồm cả địa chỉ vật lý của máy đắch, trong khi đó phần Header của IP chỉ mang địa chỉ IP Sự chuyển đổi giữa hai địa chỉ này được thực hiện bởi một giao thức gọi là ARP(Address Resolution Protocol)

IP sử dụng Datagram làm đơn vị di chuyển Tất cả các giao thức và dịch vụ trong họ giao thức TCP/IP đều phải đảm bảo yêu cầu kỹ thuật, tức là độ dài của phần Header

là 32 bits

Trang 14

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

Hình 1.4 Cấu trúc IP Header

ý nghĩa các tham số:

- VER( Version Number): 4bit, chỉ version hiện hành của IP đang được sử

dụng Hiện nay hầu hết các hệ thống đều đang sử dụng IPv4, mặc dù có một vài hệ thống thử nghiệm IP Version 6 Đối với mạng Internet và hầu hết các mạng LAN IPv6 vẫn chưa được sử dụng

- IHL(Header Length): 4 bit, chỉ độ dài của phần đầu Header của gói dữ liệu,

tính bằng đơn vị WORD(1 WORD=32bit) Độ dài tối thiểu của phần Header

là 5 từ (20 bytes), độ dài tối đa của phần Header là 6 từ (24 bytes)

- Type of Service: 8 bit, chỉ đặc tả các tham số về dịch vụ, có dạng cụ thể như

o Precedence : 3 bit, chỉ thị quyền ưu tiên gửi Datagram:

o D(Delay): 1 bit, chỉ độ trể yêu cầu:

Nếu D=0 độ trể bình thường

o T(Throughtput): 1 bit, chỉ thông lượng yêu cầu:

Nếu T=0 thông lượng bình thường

Trang 15

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

o R(Reliability): 1 bit, chỉ độ tin cậy yêu cầu:

Nếu R=0 độ tin cậy bình thường

- Total Length(Datagram length): 16 bits, chỉ độ dài toàn bộ Datagram(tính

theo đơn vị byte)

- Identification: 16 bit, cùng với các tham số khác như Source Address,

Destication Address dùng để định danh duy nhất cho một Datagram trong khoảng thời gian nó vẫn còn ở trên mạng

Chú ý: Nếu một Datagram bị phân đoạn, thì mỗi đoạn có cùng một số nhận

o Bit 2: MF=0 đây là segment cuối cùng của gói tin bị phân mảnh

MF=1 Đây chưa phải là segment cuối

- Fragment Offset: 13 bit, chỉ vị trí của đoạn (segment) ở trong Datagram, tính

theo đơn vị 64 bit, có nghĩa là mỗi đoạn(trừ đoạn cuối) phải chứa một vùng

dữ liệu có độ dài là bội số của 64 bit

- Time To Live: 8 bits, qui định thời gian tồn tại (tính bằng giây) của Datagram

trong liên mạng để tránh tình trạng một Datagram bị quẩn trên mạng Thời gian này được cho bởi trạm gửi và được giảm đi một đơn vị khi Datagram đi qua mỗi Router trên mạng

- Protocol(Transport Protocol): 8 bit, chỉ ra giao thức tầng trên kết tiếp nó là

gì, TCP, UDP, ICMP, hoặc ARP mà được cài đặt trên IP

- Header Checksum: 16 bit, mã kiểm soát lỗi 16 bit theo phương pháp CRC

(Cyclic Redundancy Code) dùng để kiểm tra lỗi cho vùng Header của Datagram

Trang 16

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

- Source Address: 32 bit, là địa chỉ trạm nguồn

- Destination Address: 32 bit, địa chỉ trạm đích

- Options: độ dài thay đổi, dùng để khai báo các options do người gửi yêu cầu

- Padding: độ dài thay đổi, là vùng đệm được dùng để đảm bảo độ dài của vùng

Header luôn là bội số của 32 bit

- Data: độ dài thay đổi, là vùng dùng để chứa dữ liệu, có độ dài là bội số của 8

bit và tối đa là 65535 byte

1.1.3.2 Quá trình phân mảnh gói dữ liệu

Các gói số liệu IP phải được nhúng trong các khung số liệu của mức liên kết số liệu tương ứng, trước khi chuyển tiếp trong mạng Quá trình nhận một gói số liệu IP diễn ra ngược lại.Ví dụ: Mạng Ethernet ở mức liên kết số liệu, khi gửi một gói IP cho mức Ethernet, IP chuyển cho mức liên kết số liệu các thông số địa chỉ Ethernet đích, kiểu khung Ethernet(0x0800) và cuối cùng là gói IP Mức liên kết số liệu đặt địa chỉ Ethernet nguồn là địa chỉ kết nối mạng của mình và tính toán giá trị tổng kiểm tra (checksum) Trường type chỉ ra kiểu khung là 0x0800 đối với số liệu IP Mức liên kết số liệu sẽ chuyển khung số liệu theo thuật toán truy nhập Ethernet

Một gói IP có độ dài tối đa 65535 byte, trong khi đó hầu hết các mức liên kết số liệu chỉ hổ trợ các khung số liệu nhỏ hơn độ lớn tối đa của gói số liệu IP nhiều lần(ví

dụ độ lớn tối đa cảu một khung số liệu Ethernet là 1500byte) Vì vậy, cần thiết phải

có cơ chế phân mảnh khi phát và hợp nhất mảnh khi thu đối với gói số liệu IP

Người ta định nghĩa độ dài tối đa của một gói số liệu liên kết là MTU (Maximum Transmit Unit) Khi cần chuyển một gói số liệu IP có độ dài lớn hơn MTU của một mạng cụ thể, người ta phải chia gói số liệu IP đó thành những gói IP nhỏ hơn, gọi chung là mảng (fragment) Trong phần tiêu đề của gói số liệu IP có thông tin về phân mảnh và xác định các mảnh có quan hệ phụ thuộc để hợp thành sau này Ví dụ: Ethernet chỉ hỗ trợ các khung có độ dài tối đa 1500 byte Nếu muốn gửi một gói số liệu IP gồm 2000 byte qua Ethernet, phải chia gói IP thành 2 gó nhỏ hơn, mỗi gói vừa với giới hạn MTU của Ethernet

Trang 17

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

Gói tin ban đầu:

Các gói tin sau khi được phân mảnh:

Hình 1.7 Nguyên tắc phân mảnh gói số liệu IP

IP dùng cờ MF (3 bít thấp của trường Flags trong phần đầu gói IP) và trường Fragment Offset của gói IP (đã bị phân đoạn ) để định danh gói IP đó là một phân đoạn và vị trí của phân đoạn này trong gói IP gốc Các gói dùng trong chuỗi phân mảnh đều có trường này giống nhau Cờ MF bằng không nếu là gói đầu của chuỗi phân mảnh và 1 nếu là gói cuối phân mảnh

Quá trình hợp nhất diễn ra ngược lại với quá trình phân mảnh Khi IP nhận được một gói phân mảnh, nó giữ phân mảnh đó trong vùng đệm, cho đến khi nhận được hết các gói IP trong chuỗi phân mảnh có cùng trường định danh Khi phân mảnh đầu tiên được nhận, IP khởi động một bộ đếm thời gian (giá trị ngầm định là 15s) IP

04 05 00 2000

1 1 1 1 0 0 0 0

05 06 checksume 128.83.24.13 192.10.2.5 Data

1980 Byte

Original IP Packet

Trang 18

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

phải nhận hết các phân mảnh kế tiếp trước khi đồng hồ tắt Nếu không, IP phải huỷ tất

cả các phân mảnh trong hàng đợi hiện thời có cùng trường định danh

Khi nhận được hết các phân mảnh, IP thực hiện hợp nhất các gói phân mảnh thành gói IP gốc và sau đó xử lý gói số liệu này như một gói số liệu IP bình thường

IP thường chỉ thực hiện hợp nhất các gói tại hệ thống đích nơi gói số liệu được chuyển đến

Trong quá trình truyền dữ liệu, một gói dữ liệu (Datagram) có thể được truyền qua nhiều mạng khác nhau Một gói dữ liệu nhận được từ một mạng nào đó có thể quá lớn để truyền đi trong một gói đơn ở một mạng khác, bởi vậy mỗi loại cấu trúc mạng

cho phép một đơn vị truyền cực đại MTU (Maximum Tranmission Unit) khác nhau

Hậu quả của việc phân mảnh dữ liệu là các gói tin bị phân mảnh sẽ đến đích chậm hơn so với một gói không bị phân mảnh Vì vậy phần lớn các ứng dụng đều tránh không sử dụng kỹ thuật này nếu có thể Vì sự phân mảnh tạo ra các gói dữ liệu với các header riêng biệt nên quá trình xử lý sẽ làm giảm tính năng của mạng Hơn nữa vì IP là một giao thức không tin cậy nên bất kỳ một gói tin phân mảnh nào bị mất thì tất cả các mảnh khác sẽ phải truyền lại Chính vì lý do này nên phải gửi các gói dữ liệu lớn nhất cho phép để không bị phân mảnh, giá trị này là Path MTU

1.1.3.3 Phương pháp đánh địa chỉ trong TCP/IP

Để có thể thực hiện truyền tin giữa các node trên mạng, mỗi node trên mạng TCP/IP cần phải có một địa chỉ xác định gọi là địa chỉ IP Hiện nay mỗi địa chỉ IP được tạo bởi một số 32 bits(IPv4) và được tách thành 4 vùng, mỗi vùng có một byte

có thể biểu thị dưới dạng nhị phân, thập phân, thập lục phân hoặc bát phân Cách viết phổ biến nhất là dùng cách viết dùng ký tự thập phân Một địa chỉ IP khi đó sẽ được biễu diễn bởi 4 số thập phân có giá trị từ 0 đến 255 và được phân cách nhau bởi dấu chấm(.) Mỗi giá trị thập phân biểu diễn 8 bits trong địa chỉ IP Mục đích của địa chỉ

IP là định danh duy nhất cho một host ở trên mạng

IPv4 sử dụng 3 loại địa chỉ trong trường nguồn và đích đó là:

1 Unicast:Để thể hiện một địa chỉ đơn hướng Địa chỉ đơn hướng là địa chỉ dùng để

nhận dạng từng nút một trên mạng Cụ thể, nếu một gói dữ liệu được gửi tới một địa chỉ đơn hướng sẽ được chuyển tới nút mang địa chỉ đơn hướng đó

2.Multicast: Địa chỉ đa hướng Là địa chỉ dùng để nhận dạng một tập hợp các nút

nhưng không phải là tất cả Gói dữ liệu IP được gửi tới địa chỉ Multicast sẽ được gửi tới tất cả các nút tham dự trong nhóm Multicast này Kỹ thuật multicasting dựa trên một nhóm địa chỉ lớp D từ 224.0.0.0 cho đến 239.255.255.255

Trang 19

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

Một số địa chỉ trong khoảng này được dành riêng cho những mục đích đặc biệt cụ thể:

Bảng 1.1 Các địa chỉ multicast dành riêng

224.0.0.1 Tất cả các máy trên subnet 224.0.0.2 Tất cả các bộ định tuyến trên subnet

3 Broadcast: Thể hiện tất cả các trạm trên mạng Khi một gói IP được gửi đến địa

chỉ này thì tất cả các host trên mạng đều nhận được gói tin này

Các địa chỉ IP được chia làm hai phần, một phần để xác định mạng(netid) và một phần dùng để xác định host(hostid) Các lớp mạng được xác định bởi số bits dành

cho mỗi phần mạng và host Có năm lớp mạng là A,B,C,D và E, trong đó ba lớp đầu

là được dùng cho mục đích thông thường và là ba lớp chính, còn hai lớp D và E được dùng cho những mục đích đặc biệt và những mục đích khác trong tương lai

Cấu trúc một địa chỉ IP có dạng như sau:

Hình 1.8 Cấu trúc chung của một địa chỉ IP

Mỗi lớp địa chỉ được đặc trưng bởi một số bits đầu tiên của byte đầu tiên, cấu trúc chi tiếp của địa chỉ IP các lớp là như sau:

Trang 20

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

- Từ 128 đến 191 là địa chỉ lớp B Hai Bytes đầu xác định địa chỉ mạng, hai Bytes tiếp theo xác định địa chỉ các máy trạm Lớp B là lớp có số mạng và số host vừa phải(16.382 mạng) và (16.382 host)

- Từ 192 đến 223 là địa chỉ lớp C Ba Bytes đầu xác định địa chỉ mạng, Byte cuối xác định địa chỉ các máy trạm Lớp C là lớp có nhiều mạng nhưng mỗi mạng chỉ có thể có đến 254 host

- Các địa chỉ có giá trị byte đầu lớn hơn 223 là các địa chỉ dùng để quảng bá hoặc dùng dự trử cho các mục đích đặc biệt và ta có thể không cần quan tâm Trên mạng Internet, việc quản lý và phân phối địa chỉ IP là được thực hiện bởi NIC(Network Information Center) Với sự bùng nổ của số lượng máy tính kết nối vào mạng Internet, địa chỉ IP đã trở thành một tài nguyên cạn kiệt Hiện nay người ta

đã xây dựng và đưa vào thử nghiệm giao thức IPv6, một giao thức có thể đáp ứng được vấn đề này

1.1.3.4 Định tuyến IP

Định tuyến IP dựa trên nguyên tắc đánh địa chỉ IP như sau:

Trang 21

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

- Các trạm làm việc kết nối trong một mạng “vật lý” phải có cùng phần địa chỉ mạng IP Việc định tuyến IP đồng nghĩa với việc xác định đường tới mạng IP

- Mỗi kết nối mạng phải có một địa chỉ mức liên kết xác định, ứng với một địa chỉ mức liên kết có một địa chỉ IP và ngược lại

Việc định tuyến IP dựa trên bảng định tuyến, được lưu trử tại mỗi trạm làm việc và thiết bị định tuyến Bảng định tuyến cho biết các số liệu sau:

- Địa chỉ mạng đích

- Địa chỉ IP của thiết bị chuyển tiếp(Gateway)

- Cờ cho biết, đối với mỗi địa chỉ mạng đích có thể đạt tới trực tiếp qua kết nối mạng vật lý hay phải qua thiết bị chuyển tiếp khác(Flag)

Căn cứ vào những nguyên tắc nêu trên, thuật toán định tuyến IP được môt tả như sau:

- Giảm trường TTL của gói IP

- Nếu TTL=0 thì:

o Huỷ gói

o Gửi thông điệp ICMP báo lỗi cho thiết bị gửi

- Nếu địa chỉ đích là một trong các địa chỉ IP của các kết nối mạng trên hệ thống, nghĩa là gói số liệu IP được gửi cho chính hệ thống này, thì xử lý gói số liệu IP tại chổ

- Xác định địa chỉ mạng đích bằng cách nhân logic(AND) mặt nạ mạng(network mask) với địa chỉ IP đích

- Nếu địa chỉ mạng đích không tìm thấy trong bảng định tuyến thì huỷ bỏ gói

số liệu này và gửi thông điệp ICMP báo lỗi “mạng đích không đến được” cho thiết bị gửi

- Nếu địa chỉ mạng đích bằng địa chỉ mạng của hệ thống, nghĩa là thiết bị đích được kết nối trong cùng mạng với hệ thống thì tìm địa chỉ mức liên kết tương ứng trong bảng thích ứng địa chỉ IP-MAC, nhúng gói tin trong gói số liệu

mức liên kết và chuyển tiếp gói số liệu đến đích

- Trong trường hợp địa chỉ mạng đích không bằng địa chỉ mạng của hệ thống

thì chuyển tiếp đến thiết bị định tuyến cùng mạng

1.1.4 TCP và UDP

Giao thức Transmission Control Protocol(TCP) và User Datagram Protocol (UDP) là hai giao thức cơ bản hoạt động ở tầng Transport của mô hình TCP

Trang 22

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

1.1.4.1 Giao thức TCP

a Cấu trúc TCP Header

TCP là một giao thức kiểu “có liên kết”(connection oriented), nghĩa là cần phải thiết lập liên kết logic giữa một cặp thực thể TCP trước khi chúng trao đổi dữ liệu với nhau Đơn vị dữ liệu sử dụng trong TCP được gọi là segment(đoạn dữ liệu)

có khuôn dạng như hình sau:

Hình 1.10 Cấu trúc TCP Header

Trong đó:

- Source Port: 16 bits, là số hiệu cổng của trạm nguồn, dùng để định danh cho

người sử dụng TCP cục bộ(thường ứng dụng chương trình ở lớp trên)

- Destinarion Port: 16 bits, là số hiệu cổng của trạm đích Số hiệu này là địa chỉ

thâm nhập dịch vụ lớp giao vận(CCISAP Address) cho biết dịch vụ mà TCP cung cấp là dịch vụ gì TCP có số lượng cổng trong khoảng 0-(216-1), tuy nhiên các cổng nằm trong khoảng 0-1023 là được biết nhiều nhất vì nó được

sử dụng cho việc truy cập các dịch vụ tiêu chuẩn, ví dụ 23 là dịch vụ Telnet,

25 là dịch vụ Mail

- Sequence Number: 32 bits, là số hiệu chỉ dẫn cho vị trí của khối trong toàn bộ

thông báo Đây là số hiệu của Byte đầu tiên của Segment trừ khi bit SYN được thiết lập Nếu bit SYN được thiết lập thì Sequence Number là số hiệu tuần tự khởi đầu(ISN) và Byte dữ liệu dầu tiên là ISN+1

- Acknowledgement Number: 32 bits, là số hiệu chỉ dẫn của segment tiếp theo

mà trạm nguồn đang chờ để nhận Ngầm ý báo đã nhận tốt các Segment mà trạm đích đã gửi cho trạm nguồn

- Data offset: 4 bits, là số lượng của từ 32 bits trong TCP header Tham số này

được sử dụng để chỉ ra vị trí bắt đầu của vùng dữ liệu

Trang 23

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

- Reserved: 6 bits, dành để dùng trong tương lai Các bit này phải được thiết lập

URG Vùng con trỏ khẩn(Urgent Pointer) có hiệu lực

ACK Trường Acknowledgement có hiệu lực

RST Khởi động lại(resets) kết nối

FIN Phía gửi đã kết thúc quá trình gửi dữ liệu

- Window: 16 bit, được dùng để kiểm soát luồng dữ liệu

- Checksum: 16 bit, mã kiểm soát lỗi theo phýõng pháp CRC cho toàn bộ

segment (bao gồm cả phần header và phần dữ liệu)

b Thiết lập và kết thúc kết nối TCP

Như ta đã biết, TCP là một giao thức kiểu có liên kết, tức là cần phải có giai đoạn thiết lập một liên kết giữa một cặp thực thể TCP trước khi truyền dữ liệu và huỷ bỏ liên kết khi không còn nhu cầu trao đổi dữ liệu nữa

Để thiết lập một kết nối TCP, hai thực thể tham gia giao tiếp sẽ thực hiện một quá

trình bắt tay với nhau gọi là three-way hanshake Mỗi gói tin trao đổi trong quá trình

bắt tay này chứa một số thứ tự, các số thứ tự này là duy nhất đối với một kết nối giữa hai thực thể giao tiếp

Hình 1.11 Thiết lập một kết nối TCP/IP

Các bước cho việc thiết lập một kết nối TCP giữa máy tính A(client) và máy tính B(Server) diễn ra như sau:

Trang 24

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

- Bước 1: A gửi một gói yêu cầu kết nối tới B, với bit SYN trong gói này được

đặt là 1 A nói với B rằng trường Sequence Number là hợp lệ và nên được

kiểm tra Bên A thiết lập giá trị trường Sequence Number là số thứ tự khởi đầu của nó

- Bước 2: B đáp ứng lại bằng cách gửi một gói có bit SYN và ACK được bật lên Số thứ tự khởi đầu chính là số thứ tự khởi đầu của A cộng thêm 1

- Bước 3: Bên A xác nhận số thứ tự khởi đầu của bên B bằng việc gửi một gói

có bit ACK được bật lên và số thứ tự của nó là số thứ tự khởi đầu của B cộng thêm 1

Sau khi bên B nhận được gói tin xác nhận ở bên A, một kết nối TCP được thiết lập

và hai bên bắt đầu có thể trao đổi dữ liệu cho nhau

Khi một thực thể tham gia kết nối(ví dụ A) muốn huỷ bỏ một kết nối, nó sẽ gửi cho phía bên kia một gói tin có cờ FIN được bật lên để thông báo nó không còn dữ liệu

để trao đổi nữa Bên B lúc này vẫn có thể tiếp tục truyền dữ liệu nếu còn, và khi không còn dữ liệu để trao đổi nữa thì B sẽ gửi một gói tin có cờ FIN được bật lên và ACK bằng số thứ tự của A cộng thêm 1 để báo cho bên A biết là nó đã nhận được gói tin yêu cầu kết thúc kết nối của bên A Bên A nhận được gói tin này sẽ đáp trả lại bằng một gói tin báo nhận có ACK bằng số thứ tự của B cộng thêm 1 và kết nối TCP giữa hai thực thể sẽ chính thức bị huỷ bỏ

c Giao thức UDP

Giống như TCP, User Datagram Protocol(UDP) là một giao thức lớp transport Tuy nhiên UDP cung cấp dịch vụ kết nối không hướng liên kết(connectionless) và không tin cậy

Bảng 1.3 Cấu trúc của UDP Header

Trang 25

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

1.1.5 Giao thức điều khiển ICMP và ARP

1.1.5.1 Giao thức ICMP

ICMP là một giao thức điều khiển của mức IP, được dùng để trao đổi các thông tin điều khiển dòng số liệu, thông báo lỗi và các thông tin trạng thái khác của

bộ giao thức TCP/IP Ví dụ:

- Điều khiển lưu lượng(Flow Control): khi các gói số liệu đến quá nhanh, thiết

bị đích hoặc thiết bị định tuyến ở giữa sẽ gửi một thông điệp ICMP trở lại thiết bị gửi, yêu cầu thiết bị gửi tạm thời ngừng việc gửi số liệu

- Thông báo lỗi: trong trường hợp địa chỉ đích không tới được thì hệ thống sẽ gửi một thông báo lỗi “Destination Unreachable”

- Định hướng lại các tuyến đường: một thiết bị định tuyến sẽ gửi một thông điệp ICMP định tuyến lại “Redirect Router” để thông báo với một trạm là nên dùng thiết bị định tuyến khác để tới đích Thông điệp này chỉ có thể dùng khi trạm nguồn ở trên cùng một mạng với cả hai thiết bị định tuyến

- Kiểm tra các trạm ở xa: một trạm có thể gửi một thông điệp ICMP “Echo” để kiểm tra xem một trạm ở xa có hoạt động hay không

Hình1.12 Dịch vụ định tuyến lại (ICMP Redirect)

1.1.5.2 Giao thức phân giải địa chỉ ARP

ARP(Address Resolution Protocol) là giao thức được sử dụng để xác định thích ứng địa chỉ mạng IP và địa chỉ mức liên kết số liệu(địa chỉ MAC)

Thông thường, mỗi hệ thống lưu giử và cập nhật bảng thích ứng địa chỉ IP-MAC tại chổ(còn gọi là ARP cache) Bảng thích ứng địa chỉ được cập nhật bởi người quản trị

hệ thống hoặc tự động bởi giao thức ARP sau mỗi lần xác định được một thích ứng địa chỉ mới Cấu trúc gói số liệu ARP được mô tả trong hình sau đây

Source Host

R1

Host R1

(1)IP Diagram

(2)IP Diagram

(3)ICMP Redirect

Trang 26

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

Trong đó:

- Datalink type: cho biết loại công nghệ mạng ở mức liên kết(Ví dụ: đối với

mạng Ethernet, trường này thường có giá trị 01)

Bảng 1.4 Cấu trúc gói số liệu ARP

Sender datalink (6 bytes) Sender Network (4 bytes) Target datalink (6 bytes) Target Network (4 bytes) Checksume

- Network type: cho biết loại mạng(ví dụ với mạng IP, trường này có giá trị

0x800-hexadecimal)

- hlen: cho biết độ dài địa chỉ mức liên kết(6 bytes)

- plen: cho biết độ dãi địa chỉ mạng(4 bytes)

- Opcode: mã lệnh yêu cầu:01; mã lệnh trả lời:02

- Sender datalink: địa chỉ mức liên kết của thiết bị gửi

- Sender Network: địa chỉ IP của thiết bị gửi

- Target datalink: trong yêu cầu, đây là địa chỉ mức liên kết cần tìm(thông

thường được điền 0 bởi thiết bị gửi yêu cầu) Trong trường hợp trả lời, đây là địa chỉ mức liên kết của thiết bị gửi yêu cầu

- Target Network: trong yêu cầu, đây là địa chỉ IP mà địa chỉ mức liên kết

tương ứng cần tìm Trong trường hợp trả lời, đây là địa chỉ IP của thiết bị gửi yêu cầu

Khi cần tìm thích ứng địa chỉ IP-MAC, trước tiên trạm làm việc sẽ tìm ngay trong bảng thích ứng địa chỉ IP-MAC ở tại trạm Nếu không tìm thấy, nó gửi một bản tin ARP(ARP request) đến máy phục vụ ARP Server Máy phục vụ lại tìm trong bảng thích ứng địa chỉ IP-MAC của mình và trả lời lại bằng bản tin ARP Response cho trạm làm việc Nếu không, máy phục vụ chuyển tiếp yêu cầu nhận được dưới dạng quảng bá cho tất cả các trạm làm việc trong mạng Trạm nào có trùng địa chỉ IP được yêu cầu sẽ trả lời với địa chỉ MAC của mình Để thích ứng một địa chỉ IP với

Trang 27

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

một địa chỉ MAC cho trước, người ta sử dụng giao thức RARP(Reverve ARP) Nguyên tắc hoạt động của giao thức RARP hoàn toàn tương tự như giao thức ARP

1.2 Tổng quan về tường lửa [18]

Từ mối lo ngại từ môi trường Internet đến hệ thống nội mạng như đánh cắp thông tin, phá hủy dữ liệu, phá hủy hệ thống,… người ta đặt ra yêu cầu phải xây dựng tường lửa (Firewall)

Tường lửa là một thành phần hoặc một tập các thành phần có nhiệm vụ giới hạn sự truy nhập giữa mạng được bảo vệ và Internet hoặc giữa các tập mạng với nhau Nó thường được cài đặt tại điểm ranh giới mạng nội bộ mà ta muốn bảo vệ với Internet hoặc mạng khác

`

`

Private Network

10.10.10.3

Firewall

131.107.254.3 Internet

Public Network

TCP 1098 TCP 6654

10.10.10.3

Hình 1.13: Mô hình tường lửa

Tường lửa có 2 loại: là tường lửa lọc gói tin và tường lửa proxy

a Tường lửa lọc gói tin (Packet Filttering):

Trong hệ thống tưởng lửa lọc gói lại phân ra tưởng lửa lọc gói state full và state less:

+ Tưởng lửa state full: Chỉ thiết lập kênh thông tin theo một chiều được quy định

từ trước và theo các phiên Hệ thống chỉ cho phép các gói tin được chuyển đi trong một phiên làm việc của quá trình truyền tin trên giao thức TCP/IP Các gói tin khác

Trang 28

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

cho dù có thỏa mãn thông số bảng lọc thì cũng không đi qua được hệ thống khi không cùng trong một phiên làm việc ban đầu

+ Tưởng lửa state less: Chỉ thiết lập lọc gói theo cấu hình cứng đã được đặt trước bởi người dùng Các gói tin có thể đi theo các chiều và không phụ thuốc vào trạng thái trước đó

Trong phạm vi đồ án chỉ nghiên cứu đến tưởng lửa lọc gói tin dạng state less Tưởng lửa thông thường có thể xây dựng bằng phần cứng hoặc phần mềm Hệ thống tường lửa bằng phần cứng có tốc độ cao hơn của phần mềm rất nhiều Đây cũng là mục tiêu của tác giả khi thực hiện đồ án xây dựng tường lửa dựa trên FPGA

b Tưởng lửa proxy : Kiểm soát quản l ý người dùng ở mức cao, có khả năng can thiệp vào các giao thức ở tầng ứng dụng Tường lửa Proxy được xây dựng bằng phần mềm

Lọc gói tin là một cơ chế an toàn mạng, điều khiển dữ liệu nào sẽ được di chuyển qua lại mạng Hiện nay, các thiết bị phần cứng thực hiện chức năng lọc gói tin thường nằm ngay trong router (thiết bị định tuyến, là thiết bị cơ bản kết nối các mạng IP), gọi

là router lọc gói tin

Trong việc quyết định làm sao để chuyển gói tin tới đích, một router thông thường

sẽ chỉ dựa trên địa chỉ đích của gói tin và chỉ cần giải đáp cho câu hỏi “Làm sao để chuyển gói tin này đến đích ?” Ngược lại, một router lọc gói tin sẽ trả lời câu hỏi “Có nên chuyển gói tin này đến đích không ?” Câu trả lời sẽ có dựa trên chính sách bảo mật đã được xác lập cho router thông qua các luật lọc gói tin (rule) do người quản trị đặt ra

Bảng 1.5: Ví dụ bảng lọc gói tin (những gói tin phạm bảng lọc thì không cho qua)

STT Địa chỉ IP nguồn Địa chỉ IP đích Giao thức Cổng nguồn Cổng đích Hướng

Trang 29

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

Hiện nay, các bộ lọc gói tin thường sử dụng các bộ vi xử lý thông dụng (General Processors) hoặc các bộ vi xử lý chuyên dụng (Network Processors) Để tăng tốc độ lọc, người ta thường sử dụng đồng thời nhiều vi xử lý Tuy nhiên, trong quá trình lọc,

có rất nhiều công đoạn độc lập với nhau và có thể xử lý song song Nếu sử dụng vi xử

lý thì các công đoạn này phải làm tuần tự hoặc điều phối tới các CPU khác Nhưng thực chất, các thao tác trên mỗi CPU vẫn là các thao tác tuần tự Giải pháp sử dụng FPGA để làm bộ lọc giải quyết được vấn đề này do có thể xử lý song song các công đoạn Nhiệm vụ của người thiết kế là phải phân tách được càng nhiều công đoạn độc lập trong quá trình lọc càng tốt

Giải pháp phần cứng mà chúng ta thực hiện có thể tìm kiếm và cho kết quả ngay khi gói tin vẫn còn trong quá trình truyền do đó nó hoàn toàn có thể hỗ trợ tốc độ truyền Gbps

Hình 1.14: Kiến trúc đa bộ vi xử lý

Off chip Memory

cache

Dispatch CPU

Trang 30

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

1.3 Các vấn đề trong việc lọc gói tin[12][13][14][15][16]

Việc lọc gói tin thực chất là đối chiếu các thông tin của gói tin (bao gồm địa chỉ nguồn, địa chỉ đích, giao thức, cổng nguồn, cổng đích) với các thành phần trong bảng lọc gói tin

Trong bảng lọc ta thấy có 3 dạng dữ liệu:

“ * ” có nghĩa là bất kể giá trị nào cũng được

– Dữ liệu ở dạng dải số (range), chỉ xảy ra đối với trường cổng nguồn và cổng đích trong bảng lọc Ví dụ:

9 Cổng nguồn ở luật 1: ≥ 1024

9 Cổng đích ở luật 2: 1000:1300

Từ đó, ta có thể nhận thấy rằng: khi có một gói tin cụ thể với các giá trị của địa chỉ

IP nguồn, địa chỉ IP đích, giao thức, cổng nguồn, cổng đích, có khả năng xảy ra 3 kiểu đối chiếu:

– Đối chiếu dạng chính xác (Exact matching): Đối chiếu dữ liệu vào với một giá trị chính xác trong trường của bảng lọc

– Đối chiếu dạng tiền tố (Prefix matching): Đối chiếu dữ liệu vào với một tiền tố trong trường của bảng lọc

– Đối chiếu dạng dải (Range matching): Đối chiếu dữ liệu vào với một dải trong trường của bảng lọc

Trang 31

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

1.4 Các giải pháp phân loại gói tin[15][16]

– Đối chiếu tuần tự:

Khi có một gói tin tới thì nó sẽ kiểm tra tuần tự với từng luật cho tới khi tìm thấy 1 luật phù hợp với trường thông tin của gói tin Phương pháp này đơn giản và sử dụng hiệu quả bộ nhớ Tuy vậy việc tìm kiếm tuần tự tốn rất nhiều thời gian Thời gian này tăng tuyến tính với số lượng luật trong bảng

– Sử dụng TCAM (Ternary Content Addressable Memory):

TCAM là mở rộng của CAM (Content Addressable Memory), là bộ nhớ có khả năng tìm kiếm (lookup table) trong một vài chu kỳ đồng hồ bằng cách sử dụng các mạch so sánh song song

Ternary CAM (TCAM) có thể chứa một từ với 3 giá trị bit: ‘0’, ‘1’ và ‘*’ Nó có thể lưu các dữ liệu có dạng tiền tố như 192.168.*.* dưới dạng một mục trong TCAM TCAM thích hợp cho với kiểu đối chiếu dạng tiền tố và là phương pháp rất phổ biết trong việc phân loại và chuyển tiếp gói tin Tuy nhiên, TCAM sử dụng rất nhiều tài nguyên (trong FPGA, để thiết kế một TCAM có cùng dung lượng với RAM, ta cần số lượng thanh ghi gấp 4 lần số lượng thanh ghi để tạo RAM) và tiêu tốn nhiều năng lượng Khi một ứng dụng cần sử dụng nhiều TCAM thì vấn đề công suất tiêu thụ cần phải được quan tâm đến Do đó ta cần phải tối ưu việc sử dụng TCAM, sử dụng các biện pháp để giảm công suất tiêu thụ

Vì TCAM không hỗ trợ các thao tác như “lớn hơn” và “nhỏ hơn”, hay đối chiếu các giá trị trong một dải nên cần phải chia các dải này thành các dải nhỏ để có thể biểu diễn dưới dạng các tiền tố Chẳng hạn, luật có đặt cổng gửi <513 sẽ phải chuyển thành

2 tiền tố là:

Mục1 : 0000 000* **** **** (0 → 511)

Mục 2: 0000 0010 0000 0000 (= 512)

Vì vậy dung lượng TCAM cần thiết để lưu trữ các tiền tố không tăng tuyến tính với

số lượng luật có trong bảng và khó có thể dự đoán

Do đó việc sử dụng trực tiếp TCAM cho việc đối chiếu dạng dải là kém hiệu quả và người ta thường sử dụng các thuật toán nén kèm theo

Trang 32

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

– Cây nhị phân quyết định (Binary Decision Tree):

Phương pháp này biểu diễn các trường trong luật dưới dạng cây nhị phân Việc đối chiếu sẽ được thực hiện bằng cách tìm kiếm trên cây nhị phân Phương pháp này có thể thực hiện bằng phần cứng Tuy tốc độ tìm kiếm không cao như TCAM, nhưng bù lại nó lại sử dụng bộ nhớ hiệu quả hơn vì dùng RAM Kích thước của của cây nhị phân quyết định cũng không tăng tuyến tính với số lượng tiền tố

Hình 1.15: Mô hình cây quyết định

Mỗi tiền tố có trong bảng lọc sẽ được biểu diễn bằng một nút màu đen trên cây Do

số lượng các nút trên cây là hữu hạn nên dung lượng cần lưu trữ có thể xác định trước được Thời gian tìm kiếm trên cây nhị phân quyết định cũng không phụ thuộc vào số lượng các tiền tố mà phụ thuộc vào độ sâu của cây

Cây quyết định thích hợp cho việc đối chiếu dạng dải

1.5 Các nghiên cứu có liên quan và lựa chọn giải pháp

Qua tìm hiểu, tác giả nhận thấy giải pháp lọc gói tin BV – TCAM do Haoyu Song

và John W.Lockwood của trường đại học Washington, St.Louis – Mỹ năm 2005 [1] là

Trang 33

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

thích hợp nhất vì nó kết hợp được ưu điểm của TCAM và cây nhị phân quyết định.[2][3][4][5][6][7][8][9]

Kiến trúc BV – TCAM

Lọc các trường địa chỉ IP nguồn, địa chỉ IP đích và giao thức: sử dụng TCAM

TCAM thông thường sử dụng kiểu đối chiếu có mức ưu tiên Khi dữ liệu được đưa vào trong TCAM, nó sẽ cho kết quả là vị trí mục trong TCAM có mức ưu tiên cao nhất Nhưng trong kiến trúc này, người ta sử dụng TCAM không có mức ưu tiên Do

đó số lượng bit ở kết quả đầu ra của TCAM chính bằng số lượng mục có trong TCAM Mỗi bit tương ứng với trạng thái của mục có khớp với dữ liệu vào hay không (giá trị 1 tương ứng với khớp và giá trị 0 tương ứng với không khớp) Dữ liệu đầu ra này tạo thành một BitVector có kích thước bằng số mục trong TCAM

Trang 34

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

Hình 1.16: TCAM trong kiến trúc BV - TCAM

TCAM có thể lưu 3 trường đầu của gói tin một cách trực tiếp nhưng để sử dụng hiệu quả hơn, ta phân tích 3 trường này được phân tích và nếu giống nhau sẽ chỉ được lưu vào một mục trong TCAM (giải pháp nén)

Lọc trường cổng nguồn và cổng đích: Sử dụng cây nhị phân quyết định

Các dải số hiệu cổng sẽ được chia thành các miền nhỏ và biểu diễn dưới dạng một chuỗi các tiền tố

Hình 1.17: Chuyển một dải “số hiệu cổng ≥ 1024 ” thành các tiền tố

Mỗi tiền tố này lưu một BitVector chỉ ra tất cả các luật có liên quan đến tiền tố này

Trang 35

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

Bảng 1.7: Các tiền tố của trường cổng nguồn trong bảng lọc ở hình 1.2 và

Hình 1.18: Mô hình Tree Bitmap và BitVector tương ứng của cổng nguồn

Nếu một gói tin có cổng nguồn là 2559 (0x9FF hay b0000 1001 1111 1111), hệ

thống sẽ thực hiện việc tìm kiếm trên cây và đưa ra kết quả là cổng này ứng với tiền tố

“0000 1*** **** ****” Sau đó địa chỉ của BitVector được tính toán ra Giá trị của bit

vector tương ứng là 101010, có nghĩa là gói tin này phạm vào các luật có chỉ số là 1, 3

và 5

Trang 36

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

Vì kích thước của BitVector bằng số luật nên khi số luật tăng lên thì kích thước của bitvector cũng tăng theo Chẳng hạn khi số luật bằng 256 thì cần phải có 256 bit để lưu

1 bit vector Yêu cầu này có thể thực hiện được bằng phần cứng vì trong FPGA có thể tạo ra RAM nội có độ rộng bus dữ liệu lên tới 256 bit Một cách khác là chia BitVector thành nhiều từ trong RAM, nhưng sẽ phải cần một vài truy cập RAM để đọc hết BitVector

Thuật toán cây nhị phân quyết định: Tree Bitmap của Eatherton và Dittia được sử dụng trong kiến trúc BV – TCAM vì tiêu tốn ít bộ nhớ (sẽ được mô tả chi tiết ở chương 2)

Hình 1.19: Sơ đồ khối của bộ lọc gói tin sử dụng kiến trúc BV – TCAM

Thành phần (địa chỉ IP nguồn, địa chỉ IP đích và giao thức) được đưa vào khối TCAM Cổng nguồn và cổng đích được đưa vào 2 khối tìm kiếm theo giải thuật Tree Bitmap Ba BitVector ở đầu ra của 3 khối sẽ được “AND” với nhau theo từng bit để tạo thành một BitVector duy nhất Trong BitVector mới này, các bit có giá trị bằng 1

sẽ tương ứng với luật mà gói tin phạm phải

Trang 37

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

Chương 2 Thiết kế phần cứng

2.1 Tree Bitmap của Eatherton và Dittia[10] [11]

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

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 0 0 0

1 1

1 1 0 0 0

Trang 38

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

Ngày đăng: 22/07/2017, 23:21

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[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 Sách, tạp chí
Tiêu đề: Efficient Packet Classification for Network Intrusion Detection using FPGA”," International Symposium on Field-programmable gate arrays
Tác giả: Haoyu Song and John W. Lockwood
Năm: 2005
[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 Sách, tạp chí
Tiêu đề: 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
Tác giả: David E. Taylor, John W. Lockwood, Todd S. Sproull, Jonathan S. Turner, David B. Parlour
Năm: 2002
[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 Sách, tạp chí
Tiêu đề: “Scalable High Speed IP Routing Lookups
[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 Sách, tạp chí
Tiêu đề: “"A TCAM -based distributed parallel IP lookup scheme and performance analysis”, "IEEE/ACM Transactions on Networking (TON)
Tác giả: Kai Zheng1 and Hao Che and Zhijun Wang3 and Bin Liu1 4 and Xin Zhang
Năm: 2006
[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 Sách, tạp chí
Tiêu đề: Algorithms for Advanced Packet Classification with Ternary CAMs”
[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 Sách, tạp chí
Tiêu đề: Rules-based Network Intrusion Detection using a Field Programmable Gate Array”
[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 Sách, tạp chí
Tiêu đề: Implementation of a Content-Scanning Module for an Internet Firewall”," Field-Programmable Custom Computing Machines (FCCM)- Napa- CA
[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 Sách, tạp chí
Tiêu đề: Hardware Assisted Packet Filtering Firewall” "Proceedings of the 2000-2001 Grad Symposium,. CS Dept, University of Saskatchewan, 11 April 2001
Tác giả: Shubhash Wasti
Năm: 2001
[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 Sách, tạp chí
Tiêu đề: FPGA Based Network Intrusion Detection using Content Addressable Memories
Tác giả: Long Bu and John A. Chandy
Năm: 2004
[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 Sách, tạp chí
Tiêu đề: Fast, Large-Scale String Match for a 10Gbps FPGA-based NIDS”. "New Algorithms, Architectures, and Applications for Reconfigurable Computing
Tác giả: Ioannis Sourdis and Dionisios Pnevmatikatos
Năm: 2005
[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 Sách, tạp chí
Tiêu đề: Tree Bitmap : Hardware/Software IP Lookups with Incremental Updates”," Computer Communication Review 2004, 97-122
Tác giả: W. Eatherton and Z. Dittia and G. Varghese
Năm: 2004
[12] William N. Eatherton (1999), Hardware – based internet protocol prefix lookups, Washington University, department of electrical Engineering Sách, tạp chí
Tiêu đề: Hardware – based internet protocol prefix lookups
Tác giả: William N. Eatherton
Năm: 1999
[13] Weidong Lu (2003), Designing TCP/IP Functions In FPGAs, Faculty of Electrical Engineering, Mathematics and Computer Science, Mekelweg university, Netherlands Sách, tạp chí
Tiêu đề: Designing TCP/IP Functions In FPGAs
Tác giả: Weidong Lu
Năm: 2003
[14] Tinoosh Mohsenin (2004), Design and Evaluation of FPGA-Based Gigabit- Ethernet/PCI Network Interface Card, Rice University Sách, tạp chí
Tiêu đề: Design and Evaluation of FPGA-Based Gigabit-Ethernet/PCI Network Interface Card
Tác giả: Tinoosh Mohsenin
Năm: 2004
[15] Christophoros Kachris (2001), Design and Implementation of a TCP/IP core for reconfigurable logic, Technical university of crete Sách, tạp chí
Tiêu đề: Design and Implementation of a TCP/IP core for reconfigurable logic
Tác giả: Christophoros Kachris
Năm: 2001
[16] Joannis Sourdis (2004), Efficient and High-Speed FPGA-based String Matching for Packet Inspection, Technical University of Crete, Electronic and Computer Engineering department Sách, tạp chí
Tiêu đề: Efficient and High-Speed FPGA-based String Matching for Packet Inspection
Tác giả: Joannis Sourdis
Năm: 2004
[17] Libor Dostalek and Alena Kabelova (2006),Understanding TCP/ IP, Birmingham, [England] : Packt Pub Sách, tạp chí
Tiêu đề: Understanding TCP/ IP
Tác giả: Libor Dostalek and Alena Kabelova
Năm: 2006
[18] Elizabeth D. Zwicky, Simon Cooper &amp; D. Brent Chapman (2000), Building Internet Firewalls , O'Reilly Media.Website Sách, tạp chí
Tiêu đề: Building Internet Firewalls ", O'Reilly Media
Tác giả: Elizabeth D. Zwicky, Simon Cooper &amp; D. Brent Chapman
Năm: 2000

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w