Một trong các xu hướng lớn trong công nghệ hiện nay.

Ứng dụng trong các hạ tầng lớn tầm cỡ cloud và data center

Mục đích chính của SDN là tạo ra một hệ thống mạng open và lập trình được. Nhờ sử dụng các giao thức open hơn nên hệ thống mạng sẽ không bị phụ thuộc vào vendor nào cả. Nhờ có thể lập trình được nên hệ thống mạng có thể đáp ứng được các nhu cầu mới phát sinh.

Một network device thông thường có hai phần: control panel và data panel. Bất kể thiết bị network đó là switch hay router thì cách thức vận hành chung vẫn ra xem xét gói tin nhận được, dựa vào một số bộ quy tắc ứng xử được cài đặt (liệu gói tin có IP như này có nên được chặn, liệu có áp dụng QoS cho gói tin) và các thông tin nó có (như bảng định tuyến, bảng MAC) để thực hiện đẩy gói tin đó theo đường nào đó hoặc từ chối gói tin. Control panel đảm nhận việc quyết định xử lý gói tin còn data panel thì thừa hành việc thực hiện đẩy gói tin đó đến đâu.

Nhược điểm của cách tiếp cận này là bất cứ cài đặt quy tắc ứng xử nào lên thiết bị cũng phụ thuộc vào chính vendor cung cấp thiết bị đó. Bạn không thể nào dùng tập lệnh của Cisco để áp lên các thiết bị do Jupiter sản xuất được. Khắc phục hạn chế này, các kỹ sư đã tách rời control panel và data panel thành hai khối riêng biệt. Thay đổi cơ bản này đã dẫn đến rất nhiều lợi ích khổng lồ:

  • Tách riêng control panel ra giúp các kỹ sư có thể lập trình được khối control panel này độc lập với vendor. Các thiết bị của vendor khi đó sẽ chịu sự điều tác của control panel qua một giao thức mở. Ví dụ là Open flow, một giao thức do Cisco phát triển (Không nên nhầm lẫn open flow là SDN. Nó chỉ là một giao thức nằm bên trong SDN)
  • Control panel là khối ra quyết định, có thể ví nó là bộ não của toàn bộ network. Việc tách riêng nó khiến toàn bộ hệ thống mạng giờ đây có thể quản lý tập trung. Bạn chỉ cần có thể tương tác được với control panel thì toàn bộ quyền quản lý mạng sẽ nằm trong tay bạn. Quản lý tập trung luôn đem lại cảm xúc đặc biệt cho mọi admin. Thử nghĩ đến hai viễn cảnh. Một viễn cảnh bạn phải cấu hình trên từng thiết bị và một viễn cảnh bạn chỉ cần thực hiện cài đặt các thông số cấu hình trên một thiết bị duy nhất. Quá nhàn và rảnh :))
  • Admin có thể định nghĩa các cấu hình qua một SDN program được xây dựng độc lập với control và data panel. Vì control panel có thể được lập trình được khi là một khối riêng rẽ nên các kỹ sư có thể tạo ra một bộ API chuẩn để giao tiếp với nó từ một application quản lý. Thông qua application này, admin có thể định nghĩa tất cả các bộ quy tắc ứng xử của toàn bộ hệ thống mạng và áp bộ quy tắc đó xuống từng thiết bị trong mạng.
  • Hoạt động sẽ đơn giản hơn. Toàn bộ các chỉ thị được tiếp nhận từ control panel sẽ được translate xuống các thiết bị của nhiều vendor qua một chuẩn giao tiếp mở.
  • Khi mà công tác quản trị được giảm tải cùng với hoạt động của hệ thống về mặt logic trở nên đơn giản hơn thì việc mở rộng hệ thống mạng cũng sẽ tự nhiên dễ dàng hơn.

Động lực chính của SDN là nhằm phục vụ cho các công nghệ như cloud và big data. Những công nghệ hiện đại đó luôn đòi hỏi một hệ thống mạng uyển chuyển và linh động.

Bạn có thể xem hình vẽ dưới để thấy được kiến trúc của SDN:

sdn-3layers.gif
SDN Layer

Bạn có thể hình dung SDN giống như một network operating system. Một operating system thông thường sẽ có kiến trúc như sau:

Screenshot%2Bfrom%2B2015-12-24%2B23%253A54%253A38.png
Operating system model

Trong kiến trúc này, operating system sẽ là trung gian giao tiếp giữa tầng app và các low level như CPU, memory, network, storage. Thực hiện translate các yêu cầu của app thành các command mà các thành phần low level có thể hiểu và thực thi được.

Chỉ thay đổi lại tên gọi chút ít, chúng ta sẽ có kiến trúc của SDN. Vai trò các thành phần của hai kiến trúc là tương tự nhau.

Screenshot%2Bfrom%2B2015-12-24%2B23%253A59%253A39.png
SDN Model

Trong mô hình này, network operating system có thể là một IOS, NX-OS hoặc một hệ điều hành nào đó khác.

Luồng xử lý gói tin khi đi qua hệ thống SDN sẽ diễn ra như sau: Khi nhận được packet, forwarding device sẽ hỏi SDN controller xem sẽ phải làm gì. SDN controller sẽ tìm kiếm thông tin để xử lý gói tin từ network app. Mọi policy, rule sẽ được định nghĩa bởi network app. SDN controller sẽ căn cứ vào các tài liệu này để ra quyết định. Quyết định này được truyền đến forwarding device để thừa hành. Tùy vào quyết định mà device sẽ có thể deny packet, sửa đổi header packet, đẩy packet đó theo một route nào đó…

Một điểm yếu của SDN là SDN controller hiển nhiên là một SPOF – Single point of failure. Để khắc phục điểm yếu này, các kỹ sư thường thiết kế nhiều SDN controller gộp chung thành một cluster để đảm bảo high availability và fail over.

Screenshot%2Bfrom%2B2015-12-25%2B00%253A12%253A16.png
Clustering SDN controller

So sánh giữa mô hình mạng truyền thống và mô hình mạng kiểu SDN

  • Control panel nằm cùng với data panel trong một physical devices nên dẫn đến việc cấu hình phải thực hiện trên nhiều thiết bị và bị phụ thuộc vào vendor
  • Không cách nào tương tác trực tiếp với data plan mà không thông qua CLI, nhờ SDN mà nay admin có tùy chọn sử dụng network app.
  • Các policies mà admin cài đặt sẽ phải phụ thuộc vào feature set mà device có. Có thể nghĩ SDN controller là một OS có nhiều chức năng hơn một IOS thông thường nằm trong một physical devices như trong mạng kiểu truyền thống.

(*) Tầng application có thể là SDN application, ứng dụng mà admin chọc vào để thực hiện định nghĩa các rule, policy hoặc cũng có thể là business application mà end user sử dụng. Do sử dụng tập API để giao tiếp nên một business application cũng có thể thao tác với toàn bộ hệ thống mạng. Như vậy, một application trong mạng SDN có thể nhận thức được hệ thống mạng mà nó đang sử dụng.

Comments

comments