← Về danh sách
Mạng
#SDN#오픈플로우#제어평면#네트워크가상화#프로그래머블#127회
Cập nhật lần cuối · 2026-09-20

Mạng định nghĩa bằng phần mềm (SDN, Software Defined Networking)

1. Tổng quan

A. Định nghĩa

SDN (Software Defined Networking) là kiến trúc tách biệt về mặt vật lý và logic chức năng điều khiển (Control Plane) và chức năng chuyển tiếp dữ liệu (Data Plane) của thiết bị mạng, để phần mềm tập trung (bộ điều khiển – controller) trừu tượng hóa toàn bộ mạng và điều khiển nó theo cách có thể lập trình được. Cốt lõi là bộ điều khiển trực tiếp định nghĩa quy tắc chuyển tiếp của các thiết bị bên dưới thông qua giao diện mở (OpenFlow, v.v.).

Ý tưởng gốc của SDN là ‘điều khiển mạng một cách linh hoạt và tập trung như phần mềm’. Để hiểu điều này, trước hết cần chỉ ra giới hạn của mạng truyền thống. Router và switch hiện có chứa cả ‘bộ não quyết định gửi gói tin đi đâu (mặt phẳng điều khiển)’ và ‘tay chân thực sự đẩy gói tin đi (mặt phẳng dữ liệu)’ trong cùng một thiết bị. Vì vậy, muốn thay đổi một chính sách định tuyến hay kiểm soát truy cập thì phải truy cập từng thiết bị trong hàng chục đến hàng trăm thiết bị để cấu hình riêng (CLI), và mỗi nhà cung cấp có hệ lệnh khác nhau nên khó quản lý tích hợp. Dù mạng là một hệ thống khổng lồ duy nhất, về mặt quản lý nó lại được đối xử như tập hợp các thiết bị riêng lẻ hoạt động tự trị.

SDN đảo ngược căn bản cấu trúc này. Bộ não phán đoán ‘gửi đi đâu’ được tách khỏi từng thiết bị và gom về bộ điều khiển trung tâm, còn các thiết bị còn lại trở thành động cơ chuyển tiếp (forwarding engine) đơn giản (mặt phẳng dữ liệu) chỉ chuyển gói tin theo chỉ thị của bộ điều khiển. Kết quả là người quản trị có thể nhìn toàn bộ mạng trong một cái nhìn từ phần mềm của bộ điều khiển trung tâm (khả năng quan sát toàn cục), định nghĩa chính sách như lập trình, và áp dụng ngay thay đổi đó cho toàn mạng cùng lúc. Việc sắp xếp lại lưu lượng theo thời gian thực để tránh tắc nghẽn trên một tuyến cụ thể, hay điều khiển tích hợp nhiều thiết bị qua giao diện chuẩn mà không bị phụ thuộc vào một nhà cung cấp, đều trở nên khả thi.

B. Bối cảnh ra đời và sự cần thiết

Bối cảnh quyết định khiến SDN nổi lên là sự lan rộng của đám mây và ảo hóa máy chủ. Trên một máy chủ vật lý chạy hàng chục máy ảo (VM) và container, và khi chúng liên tục được tạo, di chuyển, hủy bỏ qua auto-scaling và live migration, quy mô và tần suất thay đổi cấu hình mà mạng phải đảm đương tăng bùng nổ. Cách con người cấu hình thủ công VLAN và định tuyến trên từng thiết bị không thể theo kịp tốc độ này. Thêm vào đó là nhu cầu tối ưu hóa chi tiết lưu lượng của chính mình từ các nhà vận hành trung tâm dữ liệu quy mô lớn (Google, Amazon, v.v.), khiến mạng có thể lập trình (programmable network) điều khiển bằng mã trở nên cấp thiết. Trong dòng chảy này, SDN đã trở thành khái niệm chuẩn công nghiệp qua các nghiên cứu của Stanford và Berkeley (bài báo OpenFlow khoảng năm 2008) và quá trình chuẩn hóa của ONF (Open Networking Foundation).

2. Cấu trúc phân lớp của SDN và đặc điểm mặt phẳng điều khiển

Như hình dưới đây, SDN gồm 3 lớp lớp ứng dụng – mặt phẳng điều khiển – mặt phẳng dữ liệu, và các lớp được kết nối bằng API chuẩn. Giao diện phía trên gọi là northbound, phía dưới gọi là southbound.

flowchart TB
  A["Lớp ứng dụng<br/>(ứng dụng tường lửa, cân bằng tải, kỹ thuật lưu lượng)"] -->|"Northbound API (REST)"| C["Mặt phẳng điều khiển<br/>Bộ điều khiển SDN"]
  C -->|"Southbound API (OpenFlow/OVSDB)"| D["Mặt phẳng dữ liệu<br/>Switch, router (chuyển tiếp)"]
  C <-->|"East-West API"| C2["Bộ điều khiển khác<br/>(phân tán, dự phòng)"]
  style C fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px
  style D fill:#f0fdf4,stroke:#16a34a,stroke-width:1px

Mặt phẳng điều khiển (bộ điều khiển) là bộ não của SDN. Nó nắm toàn bộ topo mạng, quyết định mỗi luồng (flow) sẽ đi theo đường nào và gửi quy tắc đó xuống các thiết bị bên dưới. Các bộ điều khiển mã nguồn mở tiêu biểu gồm OpenDaylight, ONOS; sản phẩm thương mại có APIC của Cisco (dựa trên ACI), v.v. Đặc điểm của bộ điều khiển được tóm tắt thành ba điểm. Điều khiển tập trung (Centralized control) gom trí tuệ điều khiển vốn phân tán về một chỗ để bảo đảm tính nhất quán của chính sách; góc nhìn toàn cục (Global view) quan sát trạng thái toàn mạng theo thời gian thực, cho phép tính toán đường đi tối ưu; và khả năng lập trình (Programmability) cho phép định nghĩa và tự động hóa hành vi mạng bằng API phần mềm.

Lớp ứng dụng triển khai bằng phần mềm các dịch vụ mạng như tường lửa, cân bằng tải, kỹ thuật lưu lượng (traffic engineering), phát hiện xâm nhập trên nền northbound API (chủ yếu là REST) mà bộ điều khiển cung cấp. Nhà phát triển không cần biết chi tiết thiết bị vật lý vẫn có thể viết ứng dụng chính sách nhắm vào góc nhìn mạng đã được trừu tượng hóa do bộ điều khiển cung cấp. Đây chính là ‘ứng dụng hóa mạng’.

Mặt phẳng dữ liệu (thiết bị) chỉ đảm nhận vai trò chuyển tiếp, loại bỏ hoặc sửa đổi các gói tin đến theo quy tắc (flow entry) mà bộ điều khiển gửi xuống. Vì không tự phán đoán đường đi nên phần cứng được đơn giản hóa và tăng tốc, còn trí tuệ được tập trung vào phần mềm bộ điều khiển.

Lớp Vai trò Công nghệ, giao diện tiêu biểu
Ứng dụng Chính sách, dịch vụ mạng (tường lửa, LB, TE) Northbound REST API
Mặt phẳng điều khiển (bộ điều khiển) Nắm topo, quyết định và gửi quy tắc chuyển tiếp OpenDaylight, ONOS
Mặt phẳng dữ liệu (thiết bị) Chuyển tiếp gói tin theo quy tắc (forwarding) Switch OpenFlow, OVS

3. Giao thức OpenFlow và quy trình hoạt động

OpenFlow là giao thức southbound chuẩn tiêu biểu giữa bộ điều khiển SDN và switch (mặt phẳng dữ liệu). Bộ điều khiển gửi xuống bảng luồng (Flow Table) của switch các mục luồng (Flow Entry) kiểu “gói tin có đặc điểm như thế này thì xử lý như thế này”, và switch đối chiếu (match) gói tin đến với bảng này để thực hiện hành động (action) đã định. Mỗi mục gồm chủ yếu trường khớp (cổng vào, địa chỉ MAC/IP, số cổng, v.v.), hành động (chuyển tới cổng cụ thể, loại bỏ, gửi lên bộ điều khiển, sửa header) và bộ đếm, thời gian chờ (timeout).

Quy trình xử lý gói tin như sau. Khi gói tin của một luồng chưa từng thấy đến switch, vì không có mục khớp, switch hỏi bộ điều khiển bằng thông điệp Packet-In kèm gói tin đó (hoặc header). Bộ điều khiển dựa vào góc nhìn toàn cục để tính đường đi, rồi cài đặt mục mới vào bảng luồng của các switch liên quan bằng thông điệp Flow-Mod. Sau đó, các gói tin cùng luồng không đi qua bộ điều khiển mà switch chỉ xem bảng và chuyển tiếp ngay, nên chỉ gói tin đầu tiên đi theo đường điều khiển còn phần còn lại chảy qua đường dữ liệu tốc độ cao.

sequenceDiagram
  participant P as Gói tin(luồng mới)
  participant S as Switch OpenFlow
  participant C as Bộ điều khiển SDN
  P->>S: Gói tin đến
  S->>S: Tra cứu bảng luồng
  alt Không có mục khớp
    S->>C: Packet-In (gửi header)
    C->>C: Tính đường đi bằng góc nhìn toàn cục
    C->>S: Flow-Mod (cài đặt mục)
    S->>P: Chuyển tiếp theo quy tắc
  else Có mục khớp
    S->>P: Chuyển tiếp ngay(đường tốc độ cao)
  end

Lợi ích thực tiễn của cấu trúc này rất rõ ràng. Thay đổi chính sách được thực hiện ở một nơi là logic phần mềm của bộ điều khiển và tự động phân phối đến các switch liên quan, nên công việc cấu hình riêng lẻ hàng trăm thiết bị được thay bằng một lần gọi API. Ứng dụng tiêu biểu là khi VM mới khởi chạy trong trung tâm dữ liệu, bộ điều phối (orchestrator, ví dụ: OpenStack Neutron) cấp phát ngay đường mạng và chính sách bảo mật cần thiết qua API của bộ điều khiển.

Thành phần Nội dung
Bảng luồng Kho lưu quy tắc xử lý gói tin (khớp–hành động)
Mục luồng Điều kiện khớp + hành động (chuyển, loại bỏ, sửa) + bộ đếm, timeout
Packet-In Hỏi bộ điều khiển về gói tin không khớp
Flow-Mod Bộ điều khiển cài đặt, sửa, xóa mục

4. So sánh với mạng truyền thống và khác biệt với NFV

Để hiểu chính xác giá trị của SDN, cần thấy cái gì thay đổi và vì sao. Trong mạng truyền thống, điều khiển và chuyển tiếp gắn với một thiết bị vì mỗi thiết bị tự chạy giao thức (OSPF, BGP, v.v.) để tự học đường đi; tính tự trị này vững chắc nhưng bất lợi cho tối ưu hóa toàn cục và thay đổi chính sách hàng loạt nhanh chóng. SDN gom trí tuệ về trung tâm để có được tối ưu hóa toàn cục và tự động hóa, nhưng đổi lại phải gánh rủi ro mới là phụ thuộc vào bộ điều khiển trung tâm. Tức là khác biệt giữa hai bên không phải là hơn kém đơn thuần mà xuất phát từ sự đánh đổi trong triết lý điều khiển: tự trị phân tán so với tập trung.

Phân loại Mạng truyền thống SDN
Điều khiển, chuyển tiếp Gắn trong thiết bị Tách biệt (điều khiển = bộ điều khiển)
Thay đổi chính sách Cấu hình thủ công từng thiết bị Lập trình và phân phối hàng loạt từ trung tâm
Khả năng quan sát Theo đơn vị thiết bị Góc nhìn toàn mạng
Phụ thuộc nhà cung cấp Cao Giảm nhờ API chuẩn
Rủi ro chính Quản lý phức tạp, thay đổi chậm Điểm lỗi đơn ở bộ điều khiển

Mặt khác, khái niệm thường bị nhầm lẫn với SDN là NFV (Network Function Virtualization). Hai công nghệ bổ trợ nhau nhưng giải quyết các vấn đề khác nhau. SDN tập trung vào ‘tách điều khiển và chuyển tiếp để lập trình mạng từ trung tâm’, còn NFV tập trung vào việc tách các chức năng mạng như tường lửa, router, bộ cân bằng tải khỏi phần cứng chuyên dụng (appliance) để triển khai thành phần mềm (VNF) trên máy chủ đa dụng. Các nhà mạng viễn thông (Telco) kết hợp hai công nghệ, dùng SDN để kết nối và điều khiển linh hoạt các chức năng mạng đã được ảo hóa bằng NFV, qua đó xây dựng lõi 5G và hạ tầng biên. Ví dụ, network slicing là trường hợp tiêu biểu chia một hạ tầng vật lý thành các mạng logic theo mục đích sử dụng trên nền kết hợp SDN và NFV.

Sự đánh đổi này cũng thể hiện ở cách triển khai. Tùy vào thời điểm bộ điều khiển cài đặt quy tắc luồng, chia thành chủ động (Proactive) và phản ứng (Reactive). Chủ động là cách cài sẵn quy tắc cho các luồng dự kiến vào switch từ trước, nên ngay cả gói tin đầu tiên cũng không đi qua bộ điều khiển, độ trễ thấp và tải bộ điều khiển nhỏ, nhưng tốn nhiều dung lượng bảng. Phản ứng là cách cài đặt quy tắc khi luồng xuất hiện lần đầu như phương thức Packet-In đã thấy ở trên, tiết kiệm bảng và linh hoạt nhưng độ trễ gói đầu tiên và tải bộ điều khiển tăng. Các trung tâm dữ liệu quy mô lớn thường vận hành theo kiểu lai, dùng chủ động cho lưu lượng lớn dự đoán được và phản ứng cho các luồng ngoại lệ.

5. Chuyên sâu — Ứng dụng thực tiễn và xu hướng mới nhất

SDN đã vượt ra ngoài khái niệm nghiên cứu để trở thành nền tảng của hạ tầng thương mại quy mô lớn. Trường hợp nổi tiếng nhất là B4 của Google, được báo cáo là đã nâng đáng kể hiệu suất sử dụng liên kết khi áp dụng SDN cho WAN kết nối các trung tâm dữ liệu trên toàn thế giới (khác với WAN truyền thống để trống nhiều dung lượng liên kết phòng sự cố, nhờ điều khiển trung tâm mà lưu lượng được lấp đầy dày đặc, được biết là đã nâng mạnh hiệu suất sử dụng). Bên trong trung tâm dữ liệu, các giải pháp thương mại như VMware NSX, Cisco ACI cung cấp ảo hóa mạng (overlay) áp dụng nguyên lý SDN, và ở phía mã nguồn mở, Open vSwitch (OVS) được dùng như switch phần mềm tiêu chuẩn trên thực tế.

Trong lĩnh vực nhà mạng viễn thông, việc áp dụng cũng sôi động. Mạng lõi 5G đã áp dụng cấu trúc CUPS (Control and User Plane Separation) tách mặt phẳng điều khiển và mặt phẳng người dùng, có thể xem là trường hợp tư tưởng tách mặt phẳng điều khiển và dữ liệu của SDN được phản ánh vào kiến trúc thông tin di động chuẩn. Kết hợp thêm các chức năng mạng ảo hóa bằng NFV, network slicing được hiện thực hóa, chia một hạ tầng vật lý thành các mạng logic theo mục đích như độ trễ cực thấp, dung lượng lớn, IoT quy mô lớn.

Hướng tiến hóa công nghệ cũng rõ ràng. Thứ nhất là phát triển sang mạng dựa trên ý định (IBN, Intent-Based Networking). Thay vì người quản trị chỉ định chi tiết đường đi và quy tắc, chỉ cần khai báo ý định (intent) như “dịch vụ A chỉ giao tiếp với dịch vụ B và bảo đảm độ trễ trong 10ms”, hệ thống sẽ tự động chuyển nó thành cấu hình cụ thể và liên tục kiểm chứng, hiệu chỉnh. Thứ hai là sự đào sâu lập trình mặt phẳng dữ liệu, với sự xuất hiện của ngôn ngữ P4 và switch có thể lập trình, cho phép lập trình chính pipeline xử lý gói tin, vượt ra ngoài các trường khớp cố định mà OpenFlow xử lý. Thứ ba, trong lĩnh vực WAN, SD-WAN đã lan rộng nhanh chóng bằng cách áp dụng nguyên lý SDN cho kết nối chi nhánh doanh nghiệp, giảm phụ thuộc vào đường thuê riêng MPLS và kết hợp dùng Internet, LTE dựa trên chính sách.

Đồng thời, cũng cần nhìn nhận cân bằng rằng tầm nhìn SDN ban đầu lấy OpenFlow thuần túy làm trung tâm đã được điều chỉnh đáng kể trong thực tế. Do khó thay thế cùng lúc các giao thức định tuyến và hệ sinh thái thiết bị hiện có, cùng gánh nặng lớn về hiệu năng và khả năng mở rộng của bộ điều khiển, việc triển khai thương mại thực tế có xu hướng dịch chuyển trọng tâm sang phương thức overlay (ảo hóa mạng dựa trên VXLAN) — giữ nguyên mạng vật lý và đặt mạng logic lên trên — hoặc sang tự động hóa và khả năng lập trình mạng tận dụng API chuẩn của thiết bị hiện có (NETCONF/YANG, gNMI). Tức là, chính xác hơn khi xem rằng giá trị bản chất của SDN “định nghĩa và tự động hóa mạng bằng phần mềm” đang được kế thừa và lan rộng dưới nhiều hình thức, hơn là nguyên mẫu “tách hoàn toàn điều khiển và chuyển tiếp”.

Dòng chảy chung của các xu hướng này là ‘chuyển vận hành mạng từ can thiệp thủ công của con người sang tự động hóa khai báo bằng phần mềm’, điều này khớp chính xác với triết lý vận hành cloud native và IaC (Infrastructure as Code) quản lý hạ tầng bằng mã. Rốt cuộc, SDN không phải là khái niệm được đánh giá bằng thắng thua của một giao thức cụ thể, mà phải được hiểu là sự chuyển đổi của chính lối tư duy coi mạng là tài nguyên có thể lập trình.

6. Lưu ý và hàm ý

Từ góc nhìn Kỹ sư chuyên nghiệp (Professional Engineer), SDN phải được hiểu là sự chuyển đổi mô hình vận hành mạng chứ không phải một giao thức riêng lẻ, và khi áp dụng cần thiết kế đồng thời các đánh đổi sau.

  1. Nhất thiết phải giải quyết điểm lỗi đơn (SPOF) của bộ điều khiển trung tâm. Vì trí tuệ điều khiển tập trung vào một chỗ, sự cố bộ điều khiển dẫn thẳng đến tê liệt điều khiển mạng. Do đó, clustering và dự phòng bộ điều khiển, cấu hình bộ điều khiển phân tán qua API east-west, và thiết kế fail-safe duy trì chuyển tiếp bằng các luồng hiện có ngay cả khi mất kết nối với bộ điều khiển là bắt buộc.

  2. Bảo đảm bảo mật và hiệu năng của kênh điều khiển. Nếu kênh bộ điều khiển–switch bị chiếm quyền thì toàn mạng bị đe dọa, nên cần bảo vệ kênh bằng TLS, v.v., và thiết kế chính sách cài đặt luồng (chủ động so với phản ứng) cùng giới hạn tốc độ để lượng lớn Packet-In dồn về bộ điều khiển không trở thành nút thắt xử lý hay DoS.

  3. Áp dụng chiến lược chuyển đổi dần dần và lai. Vì khó thay thế cùng lúc các thiết bị truyền thống hiện có, di chuyển từng bước — bắt đầu từ các lĩnh vực rủi ro thấp như ảo hóa mạng dựa trên overlay (VXLAN) hay SD-WAN và cho cùng tồn tại với hệ thống cũ — là thực tế.

  4. Tích hợp với tự động hóa, điều phối và các công nghệ liên kết. Giá trị thực sự của SDN không phát huy khi đứng riêng mà khi kết hợp với NFV, bộ điều phối đám mây, IaC và vận hành dựa trên ý định. Bảo đảm API chuẩn (northbound REST), khả năng tương tác đa nhà cung cấp, và năng lực phần mềm, API của nhân lực vận hành là tiền đề cho việc áp dụng thành công.

  5. Xem xét đồng thời hiệu quả đầu tư và mức trưởng thành vận hành. Áp dụng SDN kéo theo chi phí ban đầu như thay thiết bị, xây dựng bộ điều khiển, đào tạo lại nhân lực, nên hợp lý là ưu tiên áp dụng cho các lĩnh vực có hiệu quả tự động hóa rõ rệt như trung tâm dữ liệu và môi trường đa đám mây có quy mô lớn, thay đổi mạng thường xuyên. Ngược lại, trong các mạng nhỏ, mạng khép kín ít thay đổi và ưu tiên hàng đầu là tính ổn định, phương thức truyền thống vẫn có thể hữu hiệu, nên cần áp dụng có chọn lọc phù hợp với mức trưởng thành vận hành và đặc tính lưu lượng của tổ chức.

Tài liệu tham khảo


Tóm tắt một câu: SDN là kiến trúc tách mặt phẳng điều khiển và mặt phẳng dữ liệu để bộ điều khiển trung tâm điều khiển mạng như phần mềm bằng góc nhìn toàn cục và khả năng lập trình, dùng OpenFlow gửi quy tắc xuống bảng luồng của thiết bị; nó là nền tảng cho ảo hóa mạng, NFV và tự động hóa dựa trên ý định, nhưng điểm lỗi đơn của bộ điều khiển và bảo mật kênh điều khiển là những thách thức cốt lõi.