CHƯƠNG 1: TỔNG QUAN 1. Tổng quan về Mạng định nghĩa mềm SDN – Software Defined Networking 1. Nhu cầu và nguyên nhân ra đời Mạng định nghĩa bằng phần mềm (SDN) là một công nghệ mới giúp nâng cao hiệu quả và giảm chi phí cho việc vận hành và quản trị hệ thống mạng cho các tổ chức doanh nghiệp. Đối với một kiến trúc mạng truyền thống, mặt phẳng dữ liệu và mặt phẳng điều khiển đều cùng nằm trên một thiết bị vật lý và mỗi thiết bị độc lập về mặt chức năng với nhau, các chính sách chuyển tiếp lưu lượng hoạt động trên trên mỗi thiết bị riêng và không có giao diện có khả năng hiển thị toàn bộ mạng.
Khi số lượng thiết bị trên mạng lưới càng nhiều, thì càng gây nên sự phức tạp trong mạng và làm khó khăn cho người quản trị mạng trong quá trình vận hành và điều khiển. Cùng với các thay đổi về mô hình mạng, sự gia tăng của các dịch vụ đám mây và nhu cầu phát triển của các nhà khai thác băng thông dịch vụ đưa ra một yêu cầu cần phải phát triển một giải pháp mới. Các nhà nghiên cứu đã phát triển một kiến trúc mạng mà ở đó nhiệm vụ điều khiển mạng được xử lý bởi các bộ điều khiển và các bộ điều khiển đó có thể tác động tới phần cứng, bộ nhớ và các chức năng của các thiết bị định tuyến (router), chuyển mạch (switch) để đạt được mục đích của người sử dụng. Do đó, mạng lưới trở nên linh hoạt hơn, hiệu suất sử dụng cao hơn và dễ quản lý hơn.
Khái niệm về mạng SDN Trên thế giới hiện có nhiều định nghĩa về mạng SDN nhưng theo tổ chức ONF (Open Networking Foundation – một tổ chức hỗ trợ phát triển SDN thông qua việc nghiên cứu các tiêu chuẩn mở phù hợp) thì mạng định nghĩa bằng phần mềm (SDN) là một kiểu kiến trúc mạng mới, năng động, dễ quản lý, chi phí hiệu quả, dễ thích nghi và rất phù hợp với nhu cầu mạng ngày càng tăng hiện nay. Kiến trúc này phân tách chức năng điều khiển mạng (Control Plane) và chức năng vận chuyển dữ liệu (Forwarding Plane/Data Plane), điều này cho phép việc điều khiển mạng có thể lập trình được dễ dàng và hạ tầng mạng vật lý độc lập với các ứng dụng và dịch vụ mạng. Một cách định nghĩa khác theo quan điểm của chuyên gia phân tích Ramesh Marimuthu và Amresh Nandan (Gartner): Mạng được định nghĩa bằng phần mềm (SDN) là một cách tiếp cận kiến trúc để thiết kế, xây dựng và vận hành mạng và cho phép khả năng lập trình của các phần tử mạng. Do đó, các nhà cung cấp dịch vụ có thể đạt được sự linh hoạt và tăng trưởng kinh doanh thông qua các sản phẩm dịch vụ mới với thời gian nhanh hơn để tiếp thị cùng với các hoạt động tự động và hiệu quả về chi phí.
SDN tách mặt phẳng điều khiển khỏi mặt phẳng chuyển tiếp, sự tách biệt này cho phép khả năng lập trình các chức năng điều khiển mạng độc lập với hạ tầng bên dưới [1]. Sự khác biệt giữa SDN với mạng truyền thống 16 Để hiểu rõ sự khác biệt giữa SDN và mạng truyền thống, chúng ta sẽ xem xét trên 2 khía cạnh: kiến trúc và tính năng của chúng. Về kiến trúc Đối với hệ thống mạng truyền thống, các thiết bị mạng lớp 2 và lớp 3 phải đảm nhận nhiều chức năng để đảm bảo hoạt động, ví dụ các chức năng của Layer switch hiện nay như VLAN, Spanning tree, Quality of Service, Security… và đa số các thiết bị mạng và các giao thức này hoạt động độc lập với nhau vì mỗi nhà sản xuất thiết bị cung cấp các giải pháp mạng khác nhau. Điều này tạo ra sự phân mảnh đối với toàn bộ hệ thống mạng đồng thời làm giảm hiệu năng hoạt động.
Đối với mạng điều khiển bằng phần mềm SDN, việc điều khiển được tập trung tại lớp Controller Layer, các thiết bị mạng chỉ có nhiệm vụ chuyển tiếp gói tin do đó sự khác biệt giữa các nhà sản xuất sẽ không ảnh hưởng tới toàn hệ thống mạng. Điều này tương tự như sự phát triển của máy tính hiện nay, mỗi máy tính được sản xuất và cung cấp bởi các hãng khác nhau (như Dell, HP, IBM, Apple, Google.) và chạy các hệ điều hành khác nhau (như Windows, MacOS, Linux, Unix, …) nhưng đều có khả năng truy cập và sử dụng internet dựa trên giao thức mạng TCP/IP [2]. Về phía người quản trị mạng, họ không cần trực tiếp làm việc tại các thiết bị mạng để cấu hình, tích hợp vào hệ thống mà chỉ cần thông qua các API đã được cung cấp cùng với kiến thức cơ bản về TCP/IP đều có thể xây dựng ứng dụng cho toàn hệ thống mạng. Với khả năng quản lý tập trung, SDN mang lại nhiều lợi ích tuy nhiên cũng mở ra nhiều nguy cơ về bảo mật hơn so với hệ thống mạng truyền thống.
Có thể thấy sự khác biệt cơ bản (Hình 1.1) giữa mạng truyền thống và mạng SDN cụ thể qua 3 điểm sau: Hình 1.1 - So sánh kiến trúc mạng truyền thống và SDN 17 Chức năng điều khiển và chức năng chuyển tiếp dữ liệu trên mạng truyền thống đều được tích hợp trong cùng một thiết bị mạng trong khi trong mạng SDN, phần điều khiển được tách riêng khỏi thiết bị mạng và được chuyển đến một thiết bị được gọi là bộ điều khiển SDN. Chức năng thu thập và xử lý các thông tin: Đối với mạng truyền thống, chức năng này được thực hiện ở tất cả các phần tử trong mạng còn trong mạng SDN, nó được xử lý tập trung tại bộ điều khiển SDN. Mạng truyền thống không thể được lập trình bởi các ứng dụng. Việc cấu hình các thiết bị mạng được thực hiện một cách riêng lẻ và thủ công.
Trong khi đối với SDN, mạng sẽ được lập trình bởi các ứng dụng, bộ điều khiển SDN có thể tương tác đến tất cả các thiết bị trong mạng. Phần điều khiển được tách rời và được tập trung ở bộ điều khiển SDN. Điều này có nghĩa là các thiết bị mạng ở lớp thiết bị phần cứng không cần phải hiểu và xử lý các giao thức phức tạp mà chúng chỉ nhận và vận chuyển dữ liệu theo một đường nào đó dưới sự chỉ huy của bộ điều khiển SDN. Dựa vào bộ điều khiển SDN mà các nhà khai thác và quản trị mạng có thể lập trình cấu hình trên đó thay vì phải thực hiện thủ công hàng ngàn câu lệnh cấu hình trên các thiết bị riêng lẻ.
Điều này giúp triển khai các ứng dụng mới và các dịch vụ mạng một cách nhanh chóng. Về tính năng Sự khác biệt căn bản nhất giữa SDN và mạng truyền thống là SDN dựa trên phần mềm trong khi mạng truyền thống thường dựa trên phần cứng. Do dựa trên phần mềm, SDN linh hoạt hơn, cho phép người dùng kiểm soát tốt hơn và dễ dàng quản lý tài nguyên hầu như trên chỉ trên mặt phẳng điều khiển. Ngược lại, các mạng truyền thống sử dụng các bộ chuyển mạch, bộ định tuyến và cơ sở hạ tầng vật lý khác để tạo kết nối và giao tiếp trên mạng [3].
Bộ điều khiển SDN sử dụng giao diện giao tiếp với các API. Với giao diện này, các nhà phát triển ứng dụng có thể lập trình trực tiếp mạng, trái ngược với việc sử dụng các giao thức được yêu cầu bởi mạng truyền thống. SDN cho phép người dùng sử dụng phần mềm để cung cấp các thiết bị mới thay vì sử dụng cơ sở hạ tầng vật lý, do đó, quản trị viên có thể định tuyến đường truyền, lưu lượng cũng như chủ động lập lịch cho các dịch vụ mạng. Không giống như các thiết bị chuyển mạch truyền thống, SDN còn có khả năng giao tiếp tốt hơn với các thiết bị sử dụng mạng.
Ảo hóa là điển hình cho sự khác biệt chính giữa SDN và mạng truyền thống. Khi SDN ảo hóa toàn bộ mạng, nó sẽ tạo một bản sao của mạng vật lý và cho phép cung cấp tài nguyên từ một vị trí tập trung. Ngược lại, với một mạng truyền thống, vị trí vật lý của mặt phẳng điều khiển (nằm phân tán trên các thiết bị mạng) sẽ cản trở khả năng quản trị viên có thể kiểm soát luồng lưu lượng. 18 Với SDN, mặt phẳng điều khiển được xây dựng dựa trên phần mềm, cho phép truy cập thông qua một thiết bị được kết nối.
Quyền truy cập này cho phép quản trị viên quản lý lưu lượng từ giao diện người dùng tập trung (UI) với độ chi tiết và chính xác cao. Vị trí tập trung này cho phép người dùng kiểm soát tốt hơn cách thức hoạt động của mạng và cách cấu hình mạng. Khả năng xử lý nhanh các cấu hình mạng khác nhau từ giao diện người dùng tập trung đặc biệt có lợi thế trong việc phân tách và quản lý các node mạng. SDN trở thành một giải pháp thay thế phổ biến cho mạng truyền thống vì nó cho phép các quản trị viên quản lý tập trung và cung cấp tài nguyên, băng thông khi cần mà không cần đầu tư thêm cơ sở hạ tầng vật lý.
Mạng truyền thống đòi hỏi phần cứng mới để tăng dung lượng mạng. Mô hình cho SDN so với kết nối mạng truyền thống có thể tóm tắt đơn giản như việc với một cái thì yêu cầu nhiều thiết bị hơn để mở rộng và cái còn lại chỉ cần gõ phím và thao tác trên một màn hình! 1. Tìm hiểu kiến trúc của SDN Về cơ bản, SDN được chia làm ba lớp: lớp ứng dụng (Application Layer), lớp điều khiển (Control Layer) và lớp thiết bị hạ tầng (Infrastructure Layer). Các lớp sẽ liên kết với nhau thông qua giao thức hoặc các API (Hình 1.2 - Kiến trúc SDN Lớp ứng dụng SDN là các chương trình giao tiếp với bộ điều khiển SDN thông qua các giao diện lập trình ứng dụng API, cho phép lớp ứng dụng lập trình (cấu hình) mạng (ví dụ như điều chỉnh các tham số trễ, băng thông, định tuyến, …) qua lớp điều khiển để tối ưu hoạt động của mạng lưới theo một yêu cầu cụ thể của người quản trị.
Ngoài ra, các ứng dụng sẽ đưa ra mô hình trực quan về mạng lưới bằng cách thu thập thông tin từ bộ điều khiển cho các mục đích ra quyết định. Các ứng dụng này có thể bao gồm quản lý mạng, phân tích hoặc các ứng dụng kinh doanh được sử dụng để chạy các trung tâm 19 dữ liệu lớn. Ví dụ: Một ứng dụng phân tích có thể được xây dựng để nhận ra hoạt động mạng đáng ngờ vì mục đích bảo mật.