Tổng quan về SDN và OpenvSwitch
1) Giới thiệu về SDN: SDN hay mạng điều khiển bằng phần mềm (Software Defined Networking) được dựa trên cơ chế tách riêng việc kiểm soát một luồng mạng với luồng dữ liệu (control plane và data plane). SDN dựa trên giao thức luồng mở (Open Flow) và là kết quả nghiên cứu của Đại học Stanford và ...
1) Giới thiệu về SDN:
SDN hay mạng điều khiển bằng phần mềm (Software Defined Networking) được dựa trên cơ chế tách riêng việc kiểm soát một luồng mạng với luồng dữ liệu (control plane và data plane). SDN dựa trên giao thức luồng mở (Open Flow) và là kết quả nghiên cứu của Đại học Stanford và California Berkeley. SDN tách định tuyến và chuyển các luồng dữ liệu riêng rẽ và chuyển kiểm soát luồng sang thành phần mạng riêng có tên gọi là thiết bị kiểm soát luồng (Flow Controller). Điều này cho phép luồng các gói dữ liệu đi qua mạng được kiểm soát theo lập trình. Trong SDN, control plane được tách ra từ các thiết bị vật lý và chuyển đến các bộ điều khiển. Bộ điều khiển này có thể nhìn thấy toàn bộ mạng lưới, và do đó cho phép các kỹ sư mạng làm cho chính sách chuyển tiếp tối ưu dựa trên toàn bộ mạng. Các bộ điều khiển tương tác với các thiết bị mạng vật lý thông qua một giao thức chuẩn OpenFlow. Kiến trúc của SDN gồm 3 lớp riêng biệt: lớp ứng dụng, lớp điều khiển, và lớp cơ sở hạ tầng (lớp chuyển tiếp).
- Lớp ứng dụng: Là các ứng dụng kinh doanh được triển khai trên mạng, được kết nối tới lớp điều khiển thông qua các API, cung cấp khả năng cho phép lớp ứng dụng lập trình lại (cấu hình lại) mạng (điều chỉnh các tham số trễ, băng thông, định tuyến, …) thông qua lớp điều khiển.
- Lớp điều khiển: Là nơi tập trung các bộ điều khiển thực hiện việc điều khiển cấu hình mạng theo các yêu cầu từ lớp ứng dụng và khả năng của mạng. Các bộ điều khiển này có thể là các phần mềm được lập trình.
- Lớp cơ sở hạ tầng: Là các thiết bị mạng thực tế (vật lý hay ảo hóa) thực hiện việc chuyển tiếp gói tin theo sự điều khiển của lớp điểu khiển. Một thiết bị mạng có thể hoạt động theo sự điều khiển của nhiều bộ điều khiển khác nhau, điều này giúp tăng cường khả năng ảo hóa của mạng.
2) Open Flow:
OpenFlow là tiêu chuẩn đầu tiên, cung cấp khả năng truyền thông giữa các giao diện của lớp điều khiển và lớp chuyển tiếp trong kiến trúc SDN. OpenFlow cho phép truy cập trực tiếp và điều khiển mặt phẳng chuyển tiếp của các thiết bị mạng như switch và router, cả thiết bị vật lý và thiết bị ảo, do đó giúp di chuyển phần điều khiển mạng ra khỏi các thiết bị chuyển mạch thực tế tới phần mềm điều khiển trung tâm. Các quyết định về các luồng traffic sẽ được quyết định tập trung tại OpenFlow Controller giúp đơn giản trong việc quản trị cấu hình trong toàn hệ thống. Một thiết bị OpenFlow bao gồm ít nhất 3 thành phần:
- Secure Channel: kênh kết nối thiết bị tới bộ điều khiển (controller), cho phép các lệnh và các gói tin được gửi giữa bộ điều khiển và thiết bị.
- OpenFlow Protocol: giao thức cung cấp phương thức tiêu chuẩn và mở cho một bộ điều khiển truyền thông với thiết bị.
- Flow Table: một liên kết hành động với mỗi luồng, giúp thiết bị xử lý các luồng thế nào.
3) OpenvSwitch:
OpenvSwitch (OVS) là một dự án về chuyển mạch ảo đa lớp (multilayer). Mục đích chính của OpenvSwitch là cung cấp lớp chuyển mạch cho môi trường ảo hóa phần cứng, trong khi hỗ trợ nhiều giao thức và tiêu chuẩn được sử dụng trong hệ thống chuyển mạch thông thường. OpenvSwitch hỗ trợ nhiều công nghệ ảo hóa dựa trên nền tảng Linux như Xen/XenServer, KVM, và VirtualBox.
- OpenvSwitch hỗ trợ các tính năng sau: - VLAN tagging & 802.1q trunking - Standard Spanning Tree Protocol (802.1D) - LACP - Port Mirroring (SPAN/RSPAN) - Tunneling Protocols - QoS
- Các thành phần chính của OpenvSwitch:
- ovs-vswitchd: thực hiện chuyển đổi các luồng chuyển mạch.
- ovsdb-server: là một lightweight database server, cho phép ovs-vswitchd thực hiện các truy vấn đến cấu hình.
- ovs-dpctl: công cụ để cấu hình các switch kernel module.
- ovs-vsctl: tiện ích để truy vấn và cập nhật cấu hình ovs-vswitchd.
- ovs-appctl: tiện ích gửi command để chạy OpenvSwitch.
- Cài đặt OpenvSwitch trên Ubuntu:
- Cài đặt OpenvSwitch: apt-get install openvswitch-datapath-source openvswitch-common openvswitch-switch
- Cài đặt phần mềm máy ảo Oracle VirtualBox: sudo apt-get install virtualbox Sau khi cài đặt xong, chạy ovs-vsctl show để kiểm tra việc cài đặt đã thành công:
22e5b123-3bba-4f5c-8fbe-483fbfeb604f ovs_version: "2.5.2"
- Tạo Bridge: Tạo một bridge mới: ovs-vsctl add-br br0 ifconfig br0 up Add interface vật lý vào bridge mới tạo: ovs-vsctl add-port br0 enp1s0 ifconfig enp1s0 0 dhclient br0 Khi add interface vật lý vào bridge OVS, mọi địa chỉ IP được gán cho interface vật lý đó đều ngừng hoạt động. Địa chỉ IP được gán cho interface vật lý sẽ được gán cho một port khác trên bridge để mọi kết nối sẽ thông qua port này. Kiểm tra trên ovs-vsctl show:
- Tạo các Interface ảo: ip tuntap add mode tap vport1 ip tuntap add mode tap vport2 ifconfig vport1 up ifconfig vport2 up Gán các interface ảo vào bridge: ovs-vsctl add-port br0 vport1 ovs-vsctl add-port br0 vport2 Kiểm tra trên ovs-vsctl show:
- Gán các interface ảo cho máy ảo: Trên Oracle VirtualBox, chọn Network đến 2 interface ảo vport1 và vport2 vừa tạo: Trên 2 máy ảo đã nhận được IP từ DHCP và có thể ping thông đến nhau:
- Kiểm tra routing table:
- Kiểm tra MAC table:
- Kiểm tra thông tin về Bridge:
Vậy là chúng ta đã tạo được Bridge trên OpenvSwitch, tạo được các interface ảo và gán cho máy ảo. Trong bài viết tiếp theo, chúng ta sẽ cùng tìm hiểu về VLAN, flows, Openflows controller trên OpenvSwitch.