Giới thiệu về Mạng dựa trên controller
Chương này bao gồm các chủ đề sau:
1.0 Nguyên tắc mạng cơ bản
1.1 Giải thích vai trò và chức năng của các thành phần mạng
1.1.a Điểm cuối
1.1.b Máy chủ
1.2 Mô tả đặc điểm của kiến trúc cấu trúc liên kết mạng
1.2.c Spine-leaf
2.0 Tự động hóa và lập trình
2.1 Giải thích cách tự động hóa tác động đến quản lý mạng
2.2 So sánh các mạng truyền thống với mạng điều khiển
2.3 Mô tả các kiến trúc dựa trên bộ điều khiển và phần mềm được xác định (overlay, underlay, fabric)
2.3.a Chức năng dữ liệu và chức năng điều khiển
2.3.b API Northbound và Southbound
CCNA tập trung vào mô hình truyền thống để vận hành và kiểm soát các mạng, một mô hình đã tồn tại trong nhiều thập kỷ. Bạn cần phải hiểu các giao thức mà các thiết bị sử dụng, cùng với các lệnh để có thể tùy chỉnh cách thức các giao thức đó hoạt động. Sau đó, bạn lập kế hoạch và thực hiện cấu hình cho các thiết bị một cách riêng lẻ.
Những năm 2010 đã chứng kiến sự ra đời của một mô hình hoạt động mạng mới: mạng SDN. SDN sử dụng bộ điều khiển tập trung một số chức năng mạng. Bộ điều khiển (controller) cũng tạo ra nhiều khả năng mới để vận hành các mạng khác nhau; đặc biệt, bộ điều khiển cho phép các chương trình tự động định cấu hình và vận hành mạng thông qua các giao diện lập trình API.
Với mạng truyền thống, các kỹ sư mạng cấu hình các thiết bị khác nhau và các thay đổi cần có khung thời gian dài để lập kế hoạch và triển khai thực hiện. Với mạng SDN dựa trên bộ điều khiển, các kỹ sư và nhà khai thác mạng có thể thực hiện các thay đổi nhanh hơn, tính nhất quán tốt hơn và thường hoạt động tốt hơn.
Chương này giới thiệu các khái niệm về khả năng lập trình mạng và SDN. Phần chính đầu tiên của chương này giới thiệu các khái niệm cơ bản về dữ liệu và miền điều khiển, cùng với các bộ điều khiển và kiến trúc liên quan. Phần thứ hai là các ví dụ sản phẩm riêng biệt về khả năng lập trình mạng bằng các bộ điều khiển, tất cả đều sử dụng các phương pháp khác nhau để thực hiện các tính năng mạng. Phần cuối cùng có một chút cách tiếp cận cụ thể hơn đối với các chủ đề này, so sánh lợi ích của mạng truyền thống với lợi ích của mạng điều khiển.
SDN VÀ CONTROLLER
Chức năng dữ liệu (data plane)
Thuật ngữ data plane đề cập đến các tác vụ mà thiết bị mạng thực hiện để chuyển tiếp dữ liệu. Nói cách khác, bất cứ điều gì để làm với việc nhận dữ liệu, xử lý dữ liệu và chuyển tiếp cùng một dữ liệu đó cho dù bạn gọi dữ liệu là data frame, gói tin packet.
Ví dụ, suy nghĩ về cách các router chuyển tiếp các gói IP, như trong hình 16-1. Nếu bạn tập trung vào hoạt động ở lớp network, máy chủ sẽ gửi gói tin (bước 1) đến router mặc định của nó là R1. R1 thực hiện một số xử lý trên gói đã nhận, thực hiện chuyển tiếp (định tuyến) quyết định và chuyển tiếp gói (bước 2). Router R3 và R4 cũng nhận, xử lý và chuyển tiếp gói (bước 3 và 4).
Hình 16-1 Xử lý miền dữ liệu trên router: Khái niệm cơ bản
Bây giờ hãy mở rộng suy nghĩ của bạn một lát và cố gắng nghĩ về mọi thứ mà router có thể làm khi nhận, xử lý và chuyển tiếp dữ liệu:
Control plane
Router cần các IP routes trong một bảng định tuyến. Các bộ switch lớp 2 cần các địa chỉ trong bảng địa chỉ MAC trước khi chúng có thể chuyển tiếp các khung Ethernet ra một cổng tốt nhất để đến đích. Một router cần một route khớp với địa chỉ đích gói dữ liệu cho router để biết cách định tuyến (chuyển tiếp) gói. Nếu không tìm thấy route nào khớp, router sẽ loại bỏ gói.
Thuật ngữ control plane đề cập đến bất kỳ hành động nào liên quan đến chức năng định tuyến, chức năng điều khiển của router/ switch L3. Hầu hết các hành động này phải thực hiện với việc tạo ra các bảng như bảng định tuyến IP, bảng ARP, bảng địa chỉ MAC, v.v.
Mạng truyền thống sử dụng control plane và data plane theo kiểu phân tán. Nói cách khác, mỗi thiết bị có một control plane và data plane trên từng thiết bị riêng lẻ, như trong ví dụ trong hình bên dưới.
Hình 16-2 Các miền điều khiển và dữ liệu của router
Trong hình, OSPF) được chạy trên mỗi router (nghĩa là, nó được phân phối giữa tất cả các router). Danh sách sau đây bao gồm nhiều giao thức control plane phổ biến:
Management Plane
Chức năng quản lý bao gồm các giao thức cho phép các kỹ sư mạng quản lý các thiết bị. Telnet và Secure Shell (SSH) là hai trong số các giao thức miền quản lý rõ ràng nhất.
Hình 16-3 Miền quản lý cho cấu hình của miền điều khiển và dữ liệu
Controllers and Centralized Control
Hình bên dưới hiển thị một mô hình cho khả năng lập trình mạng và SDN
Hình 16-5 Điều khiển tập trung và dữ liệu phân tán
Southbound Interface- SBI
Trong kiến trúc mạng dựa trên controller, controller cần giao tiếp với các thiết bị mạng. Trong hầu hết các bản vẽ mạng và bản vẽ kiến trúc, các thiết bị mạng đó thường nằm bên dưới bộ điều khiển controller.
SBI: đó là giao diện giữa chương trình (bộ điều khiển) và thiết bị mạng. SBI cho phép hai chương trình giao tiếp với một mục tiêu là lập trình thiết bị mạng.
OpenFlow (từ ONF; www.opennetworking.org)
OpFlex (từ Cisco; được sử dụng với ACI)
CLI (Telnet / SSH) và SNMP (được sử dụng với Cisco APIC-EM)
CLI (Telnet / SSH) và SNMP và NETCONF (được sử dụng với Quyền truy cập được xác định bằng phần mềm của Cisco)
Northbound Interface-NBI
Hình 16-6 API Java: Ứng dụng Java Giao tiếp với Trình điều khiển
REST mô tả một loại API cho phép các ứng dụng trên các máy chủ khác nhau sử dụng các thông điệp HTTP để truyền dữ liệu qua API.
Hình bên dưới cho thấy những ý tưởng về cách hoạt động của REST API. Ở bước 1, nó sẽ gửi yêu cầu HTTP GET đến một URI cụ thể. HTTP GET giống như bất kỳ HTTP GET nào khác, thậm chí giống như những HTTP được sử dụng để truy xuất các trang web. Tuy nhiên, URI không dành cho một trang web, mà là xác định một đối tượng trên bộ điều khiển, điển hình là cấu trúc dữ liệu mà ứng dụng cần tìm hiểu và sau đó xử lý. Ví dụ, URI có thể xác định một đối tượng là danh sách các cổng vật lý trên một thiết bị cụ thể cùng với trạng thái của từng cổng.
Hình 16-7 Ví dụ về quy trình của GET bằng API REST
Ở bước 2, bộ điều khiển gửi lại thông báo phản hồi cho thông điệp HTTP GET với đối tượng. Hầu hết các API REST sẽ yêu cầu và nhận dữ liệu có cấu trúc. Đó là, thay vì nhận dữ liệu là một trang web, thì controller sẽ phản hồi đó giữ tên biến và giá trị của chúng, theo định dạng mà chương trình có thể dễ dàng sử dụng. Các định dạng phổ biến cho dữ liệu được sử dụng là JSON và XML.