SD-WAN là kiến trúc để triển khai kết nối WAN hướng đến phục vụ điện toán đám mây. Các mạng diện rộng đã được triển khai trong một thời gian dài, và nhiều bài học và thực tiễn tốt nhất đã được học trong suốt những năm qua. Áp dụng tất cả các bài học này cho mạng do phần mềm xác định (SDN) dẫn đến việc tạo ra SD-WAN. Một tính năng quan trọng của SDN là sự tách biệt của mặt phẳng điều khiển với mặt phẳng dữ liệu. Mặt phẳng điều khiển bao gồm một tập hợp các giao thức và tính năng mà thiết bị mạng thực hiện để nó có thể xác định đường dẫn mạng nào sẽ sử dụng để chuyển tiếp lưu lượng dữ liệu. Các giao thức như STP và giao thức định tuyến như OSPF, EIGRP và BGP là một số giao thức tạo nên mặt phẳng điều khiển trong các thiết bị mạng. Các giao thức này giúp xây dựng các bảng chuyển mạch hoặc định tuyến trong các thiết bị mạng để cho phép chúng xác định cách chuyển tiếp lưu lượng mạng.
Mặt phẳng dữ liệu bao gồm các giao thức và các tính năng mà thiết bị mạng thực hiện để chuyển tiếp lưu lượng đến đích càng nhanh càng tốt. Cisco Express Forwarding (CEF) là một cơ chế chuyển mạch độc quyền là một phần của mặt phẳng dữ liệu. Nó được phát triển đặc biệt để tăng tốc độ lưu lượng dữ liệu được chuyển tiếp thông qua các thiết bị mạng. Trong lịch sử, mặt phẳng điều khiển và mặt phẳng dữ liệu là một phần của kiến trúc thiết bị mạng và chúng đã làm việc cùng nhau để xác định đường dẫn mà lưu lượng dữ liệu nên đi qua mạng và cách di chuyển lưu lượng này càng nhanh càng tốt từ nguồn của nó sang đích. Như đã đề cập trước đây, mạng SDN có một cách tiếp cận khác. SDN tách biệt chức năng của mặt phẳng điều khiển và mặt phẳng dữ liệu trong các thiết bị khác nhau và một số lợi ích dẫn đến từ việc chia tách này.
Đầu tiên, chi phí của mạng phải thấp hơn vì không phải tất cả các thiết bị mạng đều phải thực hiện các tính năng phần mềm và phần cứng đắt tiền để chứa cả mặt phẳng điều khiển và mặt phẳng dữ liệu. Tính năng thông minh của chức năng tính toán đã được giới hạn chỉ trên một vài thiết bị, được xem là bộ não của mạng, chức năng dữ liệu được xây dựng với các thiết bị rẻ tiền hơn, chỉ dùng để chuyển dữ liệu. Thứ hai, sự hội tụ của mạng mới SDN này, đó là lượng thời gian cần thiết để tất cả các thiết bị đồng ý về một sơ đồ thống nhất của mạng, nên thấp hơn nhiều so với trong trường hợp kiến trúc không phải SDN trong quá khứ. Trong các mạng có kích thước tương tự, những mạng được xây dựng với các thiết bị mạng thực hiện cả mặt phẳng điều khiển và mặt phẳng dữ liệu trong kiến trúc của chúng mất nhiều thời gian hơn để trao đổi tất cả thông tin cần thiết để chuyển tiếp lưu lượng dữ liệu so với các mạng thực hiện chức năng điều khiển và mặt phẳng dữ liệu riêng biệt trong kiến trúc của chúng. Tùy thuộc vào kích thước của mạng, điều này có thể có nghĩa là chờ đợi hàng ngàn thiết bị trao đổi thông tin thông qua các giao thức mặt phẳng điều khiển của chúng. Hoặc đợi hàng chục bộ điều khiển SDN hoàn thành cùng một nhiệm vụ; việc cải thiện thời gian hội tụ là rất lớn.
Cisco hiện có hai dịch vụ SDWAN. Dịch vụ đầu tiên, dựa trên việc mua lại Viptela, được gọi là Cisco SDWAN; cái thứ hai, dựa trên việc mua lại Meraki, được gọi là Meraki SD-WAN. Phần này bao gồm Viptela SDWAN. Bạn đã thấy một số lợi thế mà SDN mang lại cho kết nối WAN.
Dựa trên kiến trúc và mô hình mới này, dịch vụ SD-WAN chứa một số sản phẩm thực hiện các chức năng khác nhau:
vManage là một hệ thống quản lý mạng tập trung cung cấp giao diện GUI và REST API cho SD-WAN fiber. Bạn có thể dễ dàng quản lý, giám sát và cấu hình tất cả các thành phần SD- WAN thông qua khung kính duy nhất này.
vSmart là bộ não của giải pháp SDWAN. Nó duy trì một bảng định tuyến tập trung và chính sách định tuyến tập trung mà nó truyền đến tất cả các thiết bị WanEdge thông qua các đường hầm DTLS thường trực.
vBond là phần mềm điều phối mạng trục SDWAN fiber. Nó xác thực các bộ điều khiển vSmart và các thiết bị vEdge và phối hợp kết nối giữa chúng. vBond là thành phần duy nhất trong SD-WAN cần địa chỉ IP thật để đảm bảo rằng tất cả các thiết bị có thể kết nối với nó.
Các bộ định tuyến vEdge, như tên gọi của nó, là các thiết bị ở lớp biên của SDWAN fiber. Tất cả các thành phần của SD-WAN chạy dưới dạng thiết bị ảo và vEdges cũng có sẵn dưới dạng phần cứng.
Tách biệt các chức năng WAN theo cách này giúp cho hạ tầng mạng dễ dàng mở rộng, hội tụ nhanh và tiết kiệm chi phí để triển khai, bảo dưỡng. Phần mạng truyền dẫn vật lý bên dưới của SDWAN hỗ trợ tất cả các loại đường truyền của mạng WAN (MPLS, DSL, kết nối bang thông rộng, 4G…). Mạng ảo overlay sẽ sử dụng giao thức OMP (Overlay Management Protocol).
Giống như BGP, OMP lan truyền khắp mạng tất cả các thông tin định tuyến cần thiết cho tất cả các thành phần của SDWAN fiber để có thể chuyển tiếp dữ liệu theo các chính sách định tuyến được cấu hình trong vManage. vManage cung cấp REST API để chúng ta có thể lập trình các chức năng phần mềm và phần cứng SD-WAN. API của SDWAN thông qua REST API được chia thành.
Quản trị: Để quản lý người dùng, nhóm người dùng và phiên bản vManage cục bộ.
Quản lý chứng chỉ: Để quản lý chứng chỉ SSL và khóa bảo mật.
Cấu hình: Để tạo các mẫu cấu hình tính năng và thiết bị và tạo và cấu hình các cụm vManage.
Danh sách thiết bị: Để thu thập thông tin thiết bị, bao gồm trạng thái hệ thống.
Giám sát: Để có quyền truy cập vào trạng thái, số liệu thống kê và thông tin hoạt động liên quan về tất cả các thiết bị trong mạng cứ sau 10 phút từ tất cả các thiết bị.
Giám sát thời gian thực: Để thu thập số liệu thống kê giám sát thời gian thực và thông tin giao thông khoảng một lần mỗi giây.
Công cụ khắc phục sự cố: Đối với các lệnh gọi API được sử dụng trong khắc phục sự cố, chẳng hạn như để xác định ảnh hưởng của việc áp dụng chính sách lưu lượng, cập nhật phần mềm hoặc truy xuất thông tin phiên bản phần mềm.
vManage hiển thị giao diện web tự ghi lại cho REST API, dựa trên đặc tả OpenAPI. Giao diện này được bật mặc định và có thể được truy cập tại https://vManage_IP_or_hostname:port/apidocs. vManage_IP_or_hostname là địa chỉ IP hoặc tên máy chủ của vManage và cổng là 8443 theo mặc định.
Thông qua một giao diện duy nhất gọi là vManage, SDWAN cung cấp ba dịch vụ chính đối với mạng diện rộng:
Độc lập với dịch vụ truyền dẫn WAN: Đảm bảo mạng không bị down, SDWAN tự động tính linh động trên nhiều kết nối khác nhau, chẳng hạn như Internet, MPLS và Wireless 4G.
Các dịch vụ mạng: Các dịch vụ mạng và bảo mật có thể được triển khai chỉ bằng vài cú click chuột. Các tính năng tối ưu hóa mạng WAN, bảo mật điện toán đám mây, tường lửa, IPS và lọc URL có thể được triển khai mọi nơi trên SDWAN fabric, chỉ từ một vị trí quản trị duy nhất.
Tính uyển chuyển, linh động của thiết bị đầu cuối: SDWAN có thể đơn giản hóa các kết nối giữa các chi nhánh, campus, các trung tâm dữ liệu hoặc môi trường cloud. Chúng ta có thể mở rộng SDWAN fabric bất cứ nơi nào mà bạn muốn. Cho dù là môi trường ảo hay môi trường thật, các sản phẩm SDWAN khác nhau đều cho các chọn lựa tốt, đảm bảo yêu cầu kinh doanh cụ thể.
Phần còn lại của chương này sử dụng DevNet SDWAN Sandbox, tại https://sandboxsdwan.cisco.com. Tên người dùng cho máy chủ vManage này là devnetuservà mật khẩu là Cisco123!. Sandbox đang chạy SD-WAN phiên bản 18.3. Sau khi bạn chỉ định thông tin đăng nhập, giao diện web tự ghi https://sandboxsdwan.cisco.com:8443/apidocs sẽ như hình bên dưới.
Giao diện web này hiển thị danh sách tất cả các tài nguyên API REST có sẵn, các phương pháp được liên kết với từng tài nguyên và sơ đồ mô hình của các phản hồi. Tùy chọn dùng thử mỗi lệnh gọi API và khám phá dữ liệu trả về cũng có sẵn. Tiếp theo, chúng ta hãy khám phá API vManage REST.
Bạn cần thiết lập kết nối với vManage. Kết nối ban đầu được thiết lập thông qua yêu cầu https://sandboxsdwan.cisco.com:8443/j_security_check. Thông tin được gửi qua cuộc gọi POST này là URL và username/password. Lệnh curl cho yêu cầu xác thực này sẽ có dạng:
curl -c - -X POST -k \
https://sandboxsdwan.cisco.com:8443/j_security_check \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'j_username=devnetuser&j_password=Cisco123!'Tùy chọn –c chỉ ra loại cookies cần được in ra trong kết quả. Tùy chọn –k bỏ qua bước kiểm tra SSL certificate vì certificate cho loại này là tự ký. Kết quả của lệnh nào sẽ có dạng như sau:
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
#HttpOnly_sandboxsdwan.cisco.com. FALSE / TRUE 0
JSESSIONID.v9QcTVL_ZBdIQZRsI2V95vBi7Bz47IMxRY3XAYA 6.4854266f-a8ad-4068-
9651-d4e834384f51
Chuỗi dài sau JSESSIONID là giá trị của cookie, cần thiết trong tất cả các lệnh gọi API tiếp theo.
Mã trạng thái của phản hồi phải là 200 OK, nội dung phải trống và cookie JSESSIONID sẽ được lưu trữ trong tab Cookie. Ưu điểm với Postman là nó tự động lưu cookie JSESSIONID và sử dụng lại nó trong tất cả các lệnh gọi API theo sau yêu cầu ban đầu này. Với curl, ngược lại, bạn phải truyền giá trị cookie theo cách thủ công. Để xem ví dụ, bạn có thể thử lấy danh sách tất cả các thiết bị thuộc SD-WAN fiber. Theo tài liệu, tài nguyên sẽ trả về thông tin này là / dataservice/ device. Nó sẽ phải là một cuộc gọi GET, và cookie JSESSIONID cần được chuyển dưới dạng tiêu đề trong yêu cầu. Lệnh curl để lấy danh sách tất cả các thiết bị có trong SDWAN fabric sẽ có dạng:
curl -X GET -k \
https://sandboxsdwan.cisco.com:8443/dataservice/device \
-H 'Cookie:
JSESSIONID=v9QcTVL_ZBdIQZRsI2V95vBi7Bz47IMxRY3XAYA 6.4
854266f-a8ad-4068-9651-d4e834384f51'
Phản hồi từ vManage sẽ có dạng:
{
... omitted output
"data" : [
{
"state" : "green",
"local-system-ip" : "4.4.4.90",
"status" : "normal",
"latitude" : "37.666684",
"version" : "18.3.1.1",
"model_sku" : "None",
"connectedVManages" : [
""4.4.4.90""
],
"statusOrder" : 4,
"uuid" : "4854266f-a8ad-4068-9651-
d4e834384f51",
"deviceId" : "4.4.4.90",
"reachability" : "reachable",
"device-groups" : [
""No groups""
],
"total_cpu_count" : "2",
"certificate-validity" : "Valid",
"board-serial" : "01",
"platform" : "x86_64",
"device-os" : "next",
"timezone" : "UTC",
"uptime-date" : 1567111260000,
"host-name" : "vmanage",
"device-type" : "vmanage",
"personality" : "vmanage",
"domain-id" : "0",
"isDeviceGeoData" : false,
"lastupdated" : 1567470387553,
"site-id" : "100",
"controlConnections" : "5",
"device-model" : "vmanage",
"validity" : "valid",
"system-ip" : "4.4.4.90",
"state_description" : "All daemons
up",
"max-controllers" : "0",
"layoutLevel" : 1,
"longitude" : "-122.777023"
},
... omitted output
]
}
Kết quả trả về là ở định dạng JSON và chứa các thông tin về tất cả các thiết bị có trong SDWAN fabric. Trong kết quả trên, chúng ta thấy SDWAN fabric bao gồm các thành phần sau:
Một Cisco vManage server
Một Cisco vSmart server
Một Cisco vBond server
Bốn Cisco vEdge routers
Với mỗi thiết bị, kết quả bao gồm trạng thái, vị trí địa lý, vai trò, DEVICEID, thời gian kết nối, trạng thái SSL…Chúng ta có thể sử dụng Postman và gửi nó đến vManage và có kết quả tương tự như cách dùng curl.
Trong khi khảo sát SD-WAN REST API, chúng ta hãy lấy danh sách tất cả các mẫu thiết bị được cấu hình trên máy chủ DevNet vManage. Theo tài liệu API, tài nguyên sẽ trả về thông tin này là /dataservice/template/device. Bạn sẽ truyền giá trị JSESSIONID trong cookie header và xây dựng lệnh curl:
curl -X GET -k \
https://sandboxsdwan.cisco.com:8443/dataservice/template/device
\
-H 'Cookie:
JSESSIONID=v9QcTVL_ZBdIQZRsI2V95vBi7Bz47IMxRY3XAYA 6.48
54266f-a8ad-4068-9651-d4e834384f51'
Kết quả trả về từ vManage ở địa chỉ https://sandboxsdwan.cisco.com phải có dạng
{
"data" : [
{
"templateDescription" : "VEDGE BASIC
TEMPLATE01",
"lastUpdatedOn" : 1538865915509,
"templateAttached" : 15,
"deviceType" : "vedge-cloud",
"templateId" : "72babaf2-68b6-4176-
92d5-fa8de58e19d8",
"configType" : "template",
"devicesAttached" : 0,
"factoryDefault" : false,
"templateName" :
"VEDGE_BASIC_TEMPLATE",
"lastUpdatedBy" : "admin"
}
],
... output omitted
}
Kết quả trả về chứa chi tiết về mẫu thiết bị duy nhất có sẵn trên máy chủ vManage này. Mẫu được gọi là VEDGE_BASIC_TEMPLATE, nó thuộc loại vedge-cloud (nghĩa là nó có thể được áp dụng cho các thiết bị vEdge) và hiện tại nó không có thiết bị nào được gắn vào nó. Thông tin tương tự được trả về bởi vManage khi sử dụng Postman để có được danh sách tất cả các mẫu thiết bị. Như trước đây, cookie JSESSIONID đã được bao gồm trong Postman và không cần phải được chỉ định. Hình bên dưới cho thấy giao diện Postman với tất cả các thông số cần thiết để truy xuất danh sách tất cả các mẫu cấu hình thiết bị có sẵn trên một phiên bản vManage cụ thể.
Tiếp theo, chúng ta hãy sử dụng Python để xây dựng một đoạn mã sẽ trải qua các bước tương tự: đăng nhập vào vManage, lấy danh sách tất cả các thiết bị trong SD-WAN fiber và nhận danh sách tất cả các mẫu thiết bị có sẵn. Không có SDK nào sẽ được sử dụng trong trường hợp này; điều này sẽ giúp bạn thấy sự khác biệt giữa mã này và mã Python bạn đã sử dụng trước đó trong chương này. Vì không có SDK nào được sử dụng, tất cả các tài nguyên API, payload và xử lý dữ liệu sẽ phải được quản lý riêng lẻ.
Thư viện Python request sẽ được sử dụng rộng rãi trong đoạn code mẫu này. Bạn nên làm quen với thư viện này. Ví dụ bên dưới thấy một phiên bản có thể của Python 3 hoàn thành các tác vụ này. Tập lệnh được phát triển bằng Python 3.7.4 và phiên bản 2.2.20 của thư viện request. Thư viện json đi kèm với Python 3.7.4 cũng được sử dụng để chuyển đổi và tải dữ liệu được trả về từ REST API vào một đối tượng Python; trong trường hợp này, đối tượng đó là một danh sách.
Trong mã này, đầu tiên, từ khóa import làm cho hai thư viện request và thư viện json có sẵn để sử dụng trong tập lệnh. Vì kết nối trong tập lệnh được thực hiện với một phiên bản của vManage trong môi trường sandbox và sử dụng chứng chỉ SSL tự ký, dòng thứ ba và thứ tư của tập lệnh sẽ vô hiệu hoá các thông báo cảnh báo được tạo bởi thư viện yêu cầu khi kết nối với điểm cuối REST API được bảo mật bằng chứng chỉ SSL tự ký. Tiếp theo, tập lệnh chỉ định tên máy chủ vManage, tên người dùng và mật khẩu cho phiên bản này; ví dụ này sử dụng cùng một máy chủ vManage được sử dụng trước đó trong chương này. Mã sau đó chỉ định URL cơ sở cho điểm cuối API vManage REST: https://sandboxsdwan.cisco.com:8443. Đoạn chương trình sau đó hiển thị tài nguyên xác thực (j_security_check), thông tin đăng nhập, sau đó URL đăng nhập được xây dựng dưới dạng kết hợp giữa URL cơ sở và địa chỉ phần API xác thực. Trong dòng tiếp theo, một phiên bản request mới được tạo ra và lưu trữ trong biến SESS.
#! /usr/bin/env python
import json
import requests
from requests.packages.urllib3.exceptions
import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(Insecur eRequestWarning)
# Specify Cisco vManage IP, username and password
VMANAGE_IP = 'sandboxsdwan.cisco.com'
USERNAME = 'devnetuser'
PASSWORD = 'Cisco123!'
BASE_URL_STR ='https://{}:8443/'.format(VMANAGE_IP)
# Login API resource and login credentials
LOGIN_ACTION = 'j_security_check'
LOGIN_DATA = {'j_username' : USERNAME,'j_password' : PASSWORD}
# URL for posting login data
LOGIN_URL = BASE_URL_STR + LOGIN_ACTION
# Establish a new session and connect to Cisco vManage
SESS = requests.session()
LOGIN_RESPONSE = SESS.post(url=LOGIN_URL,
data=LOGIN_DATA, verify=False)
# Get list of devices that are part of the fabric and display them
DEVICE_RESOURCE = 'dataservice/device'
# URL for device API resource
DEVICE_URL = BASE_URL_STR + DEVICE_RESOURCE
DEVICE_RESPONSE = SESS.get(DEVICE_URL,verify=False)
DEVICE_ITEMS =json.loads(DEVICE_RESPONSE.content)['data']
print('{0:20s}{1:1}{2:12s}{3:1}{4:36s}{5:1}{6:16s} {7:1}{8:7s}'\
.format("Host-Name", "|", "Device Model","|", "Device ID", \
"|", "System IP", "|", "Site ID"))
print('-'*105)
for ITEM in DEVICE_ITEMS:
print('{0:20s}{1:1}{2:12s}{3:1}{4:36s}{5:1}{6:16s} {7:1}{8:7s}'\
.format(ITEM['host-name'], "|",
ITEM['device-model'], "|", \
ITEM['uuid'], "|", ITEM['systemip'],
"|", ITEM['site-id']))
print('-'*105)
# Get list of device templates and display them
TEMPLATE_RESOURCE = 'dataservice/template/device'
# URL for device template API resource
TEMPLATE_URL = BASE_URL_STR + TEMPLATE_RESOURCE
TEMPLATE_RESPONSE = SESS.get(TEMPLATE_URL,verify=False)
TEMPLATE_ITEMS =json.loads(TEMPLATE_RESPONSE.content)['data']
print('{0:20s}{1:1}{2:12s}{3:1}{4:36s}{5:1}
{6:16s}{7:1}{8:7s}'\
.format("Template Name", "|", "Device Model", "|", "Template ID", \
"|", "Attached devices", "|", "Template Version"))
print('-'*105)
for ITEM in TEMPLATE_ITEMS:
print('{0:20s}{1:1}{2:12s}{3:1}{4:36s}{5:1}{6:<16d }{7:1}{8:<7d}'\
.format(ITEM['templateName'], "|",
ITEM['deviceType'], "|", \
ITEM['templateId'], "|""
ITEM['devicesAttached'], "|", \
ITEM['templateAttached']))
print('-'*105)
Sử dụng phiên mới này, yêu cầu POST request được gửi đến URL đăng nhập, chứa tên người dùng và mật khẩu dưới dạng payload và vô hiệu hóa xác minh xác thực chứng chỉ SSL bằng cách chỉ định verify=False. Tại thời điểm này, một phiên được thiết lập cho phiên bản DevNet Sandbox vManage. Phiên này có thể được sử dụng để tương tác với API vManage REST bằng cách nhận, tạo, sửa đổi và xóa dữ liệu.
Đoạn code đã xác định tài nguyên API sẽ trả về danh sách tất cả các thiết bị trong SD-WAN fabric. Đó là dataservice/device. URL hoàn chỉnh để truy xuất các thiết bị trong SDWAN fiber được xây dựng trên dòng tiếp theo bằng cách kết hợp URL cơ sở với tài nguyên mới. Biến DEVICE_URL sẽ là https://sandboxsdwan.cisco.com:8443/dataservice/device. Tiếp theo, trong một phiên được thiết lập trước đó được sử dụng để thực hiện yêu cầu GET tại device_url mới. Kết quả của yêu cầu này được lưu trữ trong biến có tên DEVICE_RESPONSE, chứa cùng một dữ liệu định dạng JSON thu được trong các yêu cầu curl và Postman trước đó, với thông tin rộng rãi về tất cả các thiết bị là một phần của SD-WAN fabric. Từ dữ liệu JSON đó, chỉ có danh sách các thiết bị là giá trị của khóa data được trích xuất và lưu trữ trong biến DEVICE_ITEMS.
Tiếp theo, tiêu đề của một bảng được tạo. Tiêu đề này chứa các trường Host-Name, DeviceModel, Device ID, System IP và Site ID. Từ danh sách lớn các thông tin chưa trong biến DEVICE_ITEMS, chỉ có 5 trường là được trích xuất và hiển thị ra màn hình cho từng thiết bị có trong fabric. Mã tiếp theo in một loạt các dấu gạch ngang phân tách đến bảngđiều khiển thứe để tăng khả năng đọc của bảng kết quả. Dòng mã tiếp theo có một vòng lặp được sử dụng để lặp lại trên mỗi phần tử của danh sách DEVICE_ITEMS và trích xuất tên máy chủ, kiểu thiết bị, ID thiết bị, địa chỉ IP hệ thống và ID trang web cho từng thiết bị trong SDWAN fabric và sau đó hiển thị thông tin đó ra màn hình.
Đoạn chương trình sau đó in một loạt các dấu gạch ngang cho dễ đọc. Tiếp theo, logic tương tự được áp dụng cho GET dữ liệu từ API nhưng lần này về tất cả các template thiết bị được cấu hình trên phiên bản vManage này. URL được xây dựng bằng cách ghép nối URL cơ sở với địa chỉ phần tài nguyên cho phần template thiết bị, dataservice/template/device. Cùng một phiên truy cập được sử dụng lại một lần nữa để lấy dữ liệu từ REST API. Trong trường hợp template của thiết bị, chỉ có tên của template, template ID, số thiết bị kết nối vào, phiên bản của template là được trích xuất và in ra màn hình. Nếu bạn chạy tập lệnh này trong môi trường ảo Python 3.7.4 với thư viện request phiên bản 2.22.0 được cài đặt, bạn sẽ nhận được kết quả như bên dưới.
Chương này đã khảo sát một số giải pháp của Cisco và API REST. Các phương thức xác thực và ủy quyền đã được giải thích và thông tin cơ bản đã được lấy từ API. Chương này đã cung cấp một giới thiệu cơ bản về các API mở rộng này và các tính năng mà chúng cung cấp. Chúng tôi khuyến khích bạn tiếp tục khám phá các API này và xây dựng các trường hợp sử dụng, tự động hóa và các dự án lập trình mạng của riêng bạn.