Controller là thành phần điều khiển trung tâm trong mạng SDN, thường
được cung cấp dưới dạng mã nguồn mở, có thể dễ dàng tải về sử dụng, thêm hoặc sửa các thành phần cần thiết của chúng.
39
Hiện nay, trên thịtrường có khá nhiều controller được sử dụng trong SDN
như: OpenDaylight, Floodlight, POX, NOX... Trong đó có 2 controller đang được sử dụng khá phổ biến đó là OpenDaylight và POX.
Bảng 3.1 So sánh một số Controller SDN hiện nay
OpenDaylight Controller được viết bằng ngôn ngữ Java và được hỗ trợ
bởi khá nhiều hãng cùng với đó lại cung cấp nhiều tính năng mới, giao diện web... Tuy nhiên việc làm chủ được Controller này lại rất khó khăn bởi sốlượng mã nguồn là khá lớn cùng với đó là tài nguyên tiêu tốn để vận hành.
Trong khi đó POX controller [6] lại có những ưu điểm lớn đó là việc dễ dàng trong cài đặt, thêm hoặc bớt module người dùng mới, cho phép số lượng flow entry tối đa lên đến hơn 168.000; được lập trình bằng ngôn ngữ Python - một trong các ngôn hỗ trợ tốt nhất hiện nay cho việc thống kê, tính toán, điều khiển và quản lý, đặc biệt cho các dòng thiết bị Networking với số lượng dòng code không nhiều (kiểu ngôn ngữ thông dịch giống Matlab). Việc POX được lập trình bằng Python cũng cho phép kết hợp tốt với môi trường giả lập mạng
Mininet đề cập ở phần trước.
Như đã nói ở mục trước, POX controller đã được tích hợp sẵn trong máy
ảo Mininet, công việc còn lại của chúng ta là xây dựng các module chương trình
thêm vào bằng ngôn ngữ Python để thực hiện các dịch vụ người dùng, cụ thể ở đây là dịch vụ phát hiện, ngăn chặn tấn công DDoS.