4. Cấu trúc nội dung của luận án
1.6.1. Công nghệ OpenFlow
Các hệ thống và thiết bị mạng đã được thương mại hóa hiện nay có nhược điểm là các hệ thống đóng, không cho phép người sử dụng tùy biến, điều chỉnh các chức năng theo các nhu cầu phát sinh khi triển khai các dịch vụ mạng chuyên biệt. Mặc khác với xu hướng bùng nổ các ứng dụng và dịch vụ mới như hiện nay như các dịch vụ điện toán đám mây,
14
dịch vụ truyền hình số hoặc dịch vụ di động, kiến trúc mạng Internet cần phải mềm dẻo hơn, mang tính tùy biến cao hơn.
Công nghệ OpenFlow [24] là một công nghệ mạng điều khiển bằng phần mềm SDN (Software Defined Networking) [53] cho phép khắc phục được các nhược điểm trên. Ngoài ra công nghệ OpenFlow [43] là phương tiện cho phép các nhà nghiên cứu chạy các giao thức thử nghiệm trên hệ thống mạng mà ta sử dụng hàng ngày. OpenFlow đang được sử dụng rộng rãi bởi nhiều nhà nghiên cứu, các viện nghiên cứu trên thế giới do có tính thực tế dựa trên các ưu điểm: cho phép các nhà nghiên cứu chạy các thử nghiệm trên các chuyển mạch khác nhau theo cùng một cách như nhau, không cần cấu hình triển khai theo cấu hình từng loại chuyển mạch, hoạt động ở tốc độ cao cùng với mật độ cổng lớn, hơn nữa các nhà sản xuất vẫn có thể giữ bí mật về thiết kế các chuyển mạch của họ. Ngoài việc cho phép các nhà nghiên cứu đánh giá các ý tưởng của họ trong môi trường lưu lượng thực tế, công nghệ OpenFlow còn là một công cụ hữu hiệu cho phép các nhà khoa học triển khai các hệ thống thử nghiệm qui mô rộng như trong dự án GENI (Global Environment for Network Innovation) [55]. GENI là kiến trúc mạng có khả năng lập trình được. Mạng có khả năng lập trình cần có các phần tử chuyển mạch có khả năng lập trình để xử lý các gói tin cho nhiều thử nghiệm trên mạng đồng thời không ảnh hưởng lẫn nhau. Công nghệ OpenFlow cho phép ta có thể lập trình được chuyển mạch.
Bộ chuyển mạch OpenFlow dựa trên nguyên tắc của các chuyển mạch Ethernet, bao gồm ba thành phần chính: Bảng Flow (Flow-table), kênh an toàn (Secure Channel), giao thức OpenFlow (OpenFlow Protocol), như trên Hình 1.6.
Bảng Flow: Bảng này bao gồm các bảng ghi (flow-entry) và mỗi bảng ghi có một hành động (Action) đi kèm dùng để xử lý các flow.
Kênh an toàn: Là kênh giao tiếp giữa bộ chuyển mạch và bộ điều khiển. Nó cho phép lệnh và gói tin được truyền qua lại giữa bộ điều khiển và bộ chuyển mạch sử dụng giao thức OpenFlow. Kênh này được thiết lập bởi một phần mềm chạy trên nền tảng hệ điều hành Linux.
Giao thức OpenFlow: Giao thức giữa chuyển mạch OpenFlow và bộ điều khiển cho phép bộ điều khiển có thể chỉnh sửa bảng flow của chuyển mạch. Bằng cách này, các nhà nghiên cứu và những quản trị viên tránh được việc phải lập trình cho từng bộ chuyển mạch. Thay vào đó, họ chỉ cần làm việc trên bộ điều khiển của toàn bộ hệ thống.
15
Hình 1.6. Cấu trúc của chuyển mạch OpenFlow [27]
Hiện nay giao thức OpenFlow được chuẩn hóa bởi tổ chức Open Networking Foundation. Đây là một nhóm các nhà sản xuất bao gồm rất nhiều các thương hiệu nổi tiếng trên thế giới: Cisco, Google, Alcatel, Broadcom, Ericsson, Facebook, Google, vv. có trách nhiệm đề xuất, thử nghiệm và tiến hành thực thi trên các thiết bị để đảm bảo hoạt động giữa thiết bị mạng và phần mềm quản lý từ những nhà sản xuất khác nhau. Kiến trúc mạng OpenFlow hoàn toàn có thể tích hợp vào các thiết bị mạng hiện tại, tiết kiệm chi phí cho các nhà cung cấp dịch vụ.
Để hiểu sâu hơn nữa về OpenFlow, tác giả sẽ đi sâu vào các khái niệm như flow, bảng ghi (flow-entry). Một flow được định nghĩa là các gói tin trùng với một tiêu đề (header) cụ thể bên trong bảng flow. Việc so sánh giữa tiêu đề của gói tin và tiêu đề của một bảng ghi để quyết định gói tin thuộc flow nào và hành động đi kèm với nó, có thể xảy ra hai trường hợp: một là so sánh trùng một cách chính xác tất cả các trường (match exactly), hai là chỉ trùng một trường nào đó (wildcard match).
Bảng 1.1 miêu tả cấu tạo của một bảng ghi. Mỗi một bảng ghi sẽ có một hành động (Action) đi kèm với nó. Đối với chuyển mạch OpenFlow chuyên dụng, có ba loại hành động cơ bản sau:
Chuyển tiếp những gói tin của luồng này tới một cổng cho trước. Hành động
này cho phép những gói tin được định tuyến trong mạng.
Đóng gói và chuyển tiếp những gói tin của luồng này tới một bộ điều khiển.
Gói tin được chuyển tới kênh an toàn nơi mà nó được đóng gói và gửi tới bộ điều khiển. Hành động này được sử dụng đối với gói tin đầu tiên của một luồng mới và bộ điều khiển sẽ quyết định có đưa nó vào trong bảng flow hay không.
16
Hoặc hành động này được sử dụng trong các thí nghiệm nhằm mục đích chuyển tiếp tất cả các gói tin tới bộ điều khiển để xử lý.
Hủy bỏ (Drop) các gói tin của luồng này. Hành động này được sử dụng cho
mục đích an ninh mạng nhằm chống lại tình trạng tấn công từ chối dịch vụ (Denial of Service) hoặc làm giảm các lưu lượng giả được phát tán trên mạng. Thành phần cuối cùng của một bảng ghi là bộ đếm (Counters). Bộ đếm dùng để theo dõi số lượng gói tin hoặc byte và thời gian kể từ khi gói cuối cùng trùng với một bảng ghi trong bảng flow (dùng để xóa đi những luồng không còn hoạt động).
Bảng 1.1. Cấu tạo một bảng ghi
Các bước để định tuyến một flow từ một máy tính nguồn sang một máy tính đích thông qua hai bộ chuyển mạch OpenFlow mô tả như Hình 1.7.
Hình 1.7. Các bước khi một flow mới tới bộ chuyển mạch OpenFlow
Trong sơ đồ bên trái của Hình 1.7, bảng flow của hai bộ chuyển mạch đều không chứa gì. Khi một gói tin đến trong bước 1, nó được chuyển tiếp tới bộ điều khiển trong bước 2. Bộ điều khiển kiểm tra gói tin đến và thêm một bảng ghi (flow A) vào trong bảng flow của các bộ chuyển mạch trong bước 3. Sau đó gói tin được gửi tới máy tính đích trong bước 4 và 5. Trong các bước 6, 7, 8 bất kì gói tin mới nào thuộc về cùng một flow (flow A của gói tin thứ nhất) sẽ được định tuyến trực tiếp tới máy tính đích.
17