Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Restconf

    RESTCONF


    Theo RFC 8040, RESTCONF là một giao thức dựa trên HTTP, cung cấp các giao tiếp lập trình để truy cập các dữ liệu được định nghĩa bởi YANG, sử dụng khái niệm datastore được định nghĩa bởi NETCONF. Một cách cơ bản, RESTCONF cung cấp một giao tiếp kiểu REST đến các mô hình dữ liệu NETCONF/YANG. Mặc dù NETCONF có thêm nhiều cải tiến đáng kể so với SNMP, nó không đưa ra một giao tiếp mạng với tương tác REST API tốt. Thay vì phát triển một giao thức hoàn toàn mới và các mô hình dữ liệu, IETF đã mở rộng NETCONF sang thành RESTCONF. RESTCONF không phải là một thay thế cho NETCONF. Thay vào đó, RESTCONF cung cấp API tương thích với các ứng dụng web khác, giúp dễ dàng cho các nhà phát triển phần mềm.

    Cũng giống như các REST API, RESTCONF sử dụng HTTPS để đóng gói và gửi các thông điệp. Tiến trình xác thực được hoàn tất bằng cách dùng các mô hình xác thực tiêu biểu của HTTP chẳng hạn như kiểu xác thực cơ bản. Trong kiểu xác thực cơ bản này, các thông tin người dùng này được mã hóa ở dạng Base64 và truyền từ client đến server trong các header. Hình bên dưới hiển thị chồng giao thức RESTCONF.

    Click image for larger version

Name:	dataurl399057.png
Views:	12
Size:	25.8 KB
ID:	438521

    REST API thường hiện thực các tác vụ CRUD (Create, Retrieve, Update và Delete) thông qua các phương thức có sẵn của HTTP. RESTCONF ánh xạ các tác vụ của NETCONF vào trong các tác vụ của HTTP theo như bảng bên dưới.
    RESTCONF Khi được so sánh với NETCONF
    Options Không
    HEAD Không
    GET <get-config>, <get>
    POST <edit-config> (tác vụ là “create”)
    PUT <edit-config> (tác vụ là tạo, thay thế)
    PATCH <edit-config> tác vụ là trộn cấu hình
    DELETE <edit-config> (tác vụ là xóa)
    Các phương thức có sẵn của REST và các tác vụ NETCONF tương ứng hoạt động như sau:
    Phương thức HTTP GET được gửi dưới dạng RESTCONF bởi máy client để truy xuất dữ liệu và các metadata cho một tài nguyên cụ thể. Nó chuyển đổi thành các tác vụ của NETCONF như <get> và <get-config>. Phương thức GET hỗ trợ tất cả các loại tài nguyên ngoài trừ các loại tài nguyên liên quan đến hoạt động. Các phương thức POST được dùng cho NETCONF RPC và để tạo ra các tài nguyên dữ liệu. Nó tượng trưng cho cùng ngữ nghĩa như tác vụ NETCONF <edit-conf> với thao tác operation = “create”. Phương thức PUT được dùng để tạo ra hay thay thế nội dung của các tài nguyên đích. Phương thức này tương đương với NETCONF <edit-config> với tác vụ operation = “create/replace”. Phương thức PATCH đưa ra một cách thức để cập nhật các tài nguyên. Nó tương đương với NETCONF <edit-config> trong đó tác vụ operation=”merge”. Phương thức HTTP DELETE được dùng để xóa tài nguyên và tương đương với NETCONF <edit-config> với tác vụ operation=”delete”.

    Các dữ liệu của RESTCONF được hiển thị ở định dạng XML hoặc JSON. Khi so sánh với NETCONF, RESTCONF có hỗ trợ thêm JSON. Có hai kiểu định dạng mới được định nghĩa trong RESTCONF: application/yang.api+xml đối với định dạng XML-encoded và
    application/yang.api+json đối với định dạng JSON. Với tất cả các loại REST API, bao gồm cả RESTCONF API, địa chỉ URI giúp định vị dữ liệu đang được truy cập hay đang được cấu hình. Một đặc điểm duy nhất của RESTCONF là nó thiếu các tài liệu kèm theo để các nhà phát triển lập trình ứng dụng có thể tham khảo. Thay vào đó, các mô hình về YANG là các tài liệu về API.

    Tất cả các RESTCONF URI sử dụng định dạng sau:


    https://<ADDRESS>/<ROOT>/data/<[YANG_MODULE:]CONTAINER>/<LEAF>[?<OPTIONS>]


    trong đó

    ADDRESS là địa chỉ IP hoặc tên host của RESTCONF agent.

    ROOT là điểm điểm chính để gọi RESTCONF. Trước khi kết nối đến RESTCONF, phần ROOT phải được xác định. Theo chuẩn của RESTCONF, các thiết bị hiện thực RESTCONF phải đưa ra tài nguyên được truy vấn gọi là /.well-known/host-meta để giúp tìm ra ROOT một cách tự động.
    Kiểu tài nguyên sẵn có để các tác vụ RPC gọi chính là các container đang được dùng [YANG_MODULE:]CONTAINER.

    LEAF là một thành phần đơn lẻ từ bên trong container. [?<OPTIONS>] là các tùy chọn mà một vài thiết bị mạng có thể hỗ trợ. Các tùy chọn này có thể là các thông số truy vấn để ảnh hưởng đến kết quả trả về. Một vài ví dụ của các tùy chọn này là: depth = unbounded: nếu không có giá trị nào được chỉ ra, tùy chọn này là mặc định. Nó chỉ ra rằng các dữ liệu trả về nên tuân theo các mô hình dạng nested đến khi kết thúc. Giá trị số nguyên chỉ ra độ sâu của dữ liệu khi được trả về.
    content = [all, config, nonconfig]: Tùy chọn truy vấn này điều khiển kiểu dữ liệu được trả về. Nếu không có giá trị nào được chỉ ra, giá trị mặc định all sẽ được sử dụng.
    fields = expr: Tùy chọn này giới hạn các lá được trả về trong thông điệp response.

    Hãy xem xét mô hình YANG ietf-interfaces được định nghĩa trong RFC 8343 và được giới thiệu một phần trong hình vẽ bên dưới. Sử dụng các chi tiết của mô hình dữ liệu, phần địa chỉ URI cho các thông điệp RESTCONF requests có thể được xây dựng dễ dàng. Việc tạo ra các đoạn mã để hỗ trợ RESTCONF API và ánh xạ các hàm gọi API này vào trong NETCONF là hoàn toàn có thể tự động được bởi vì việc ánh xạ từ mô hình YANG sang RETCONF URI đã được biết rõ và định nghĩa rõ ràng.

    Click image for larger version

Name:	dataurl399075.png
Views:	10
Size:	23.8 KB
ID:	438522

    RESTCONF giúp hỗ trợ một mô hình lập trình tự động hóa phổ biến dựa trên REST. Để bật RESTCONF trên thiết bị IOS XE thì rất đơn giản và dễ dàng. Đầu tiên, RESTCONF chạy trên HTTPS, vì vậy lệnh ip http secure-server phải được bật trong chế độ cấu hình. Kế tiếp, giao thức RESTCONF được bật bằng câu lệnh restconf trong chế độ cấu hình. Khi hai lệnh này đã thực hiện xong và một tài khoản admin đã tồn tại, RESTCONF đã sẵn sàng để truy cập. Trong ví dụ sau, IOS XE 16.6.3 và Postman 7.13 được sử dụng. Các thiết bị có hỗ trợ RESTCONF phải đưa ra một tài nguyên gọi là /.well-known/host-meta để cho phép tìm ra các tài nguyên gốc. Sau đó, Postman được dùng để thực hiện một hàm gọi requests ở địa chỉ https://{{host}}:{{port}}/.wellknown/host-meta. Kết quả hiển thị trong hình bên dưới:

    Click image for larger version

Name:	dataurl399077.png
Views:	8
Size:	26.8 KB
ID:	438523
    Thuộc tính href trong thông điệp trả về sẽ dẫn đến tài nguyên gốc của REST API: /restconf.
    Nếu tiếp tục tìm kiếm sâu hơn về API và thực hiện tác vụ requests ở địa chỉ https://{{host}}:{{port}}/restconf chúng ta sẽ có các tài nguyên ở mức cao nhất của RESTCONF: data và operations.

    Click image for larger version

Name:	dataurl399079.png
Views:	9
Size:	29.1 KB
ID:	438524
    Tiếp tục khám phá theo cây API và mô hình YANG để truy xuất một danh sách đầy đủ của tất cả các cổng và trạng thái của nó, các thông tin thống kê về lưu lượng thông qua giao tiếp RESTCONF, bạn có thể thực hiện một hàm GET trên địa chỉ https://{{host}}:{{port}}/restconf/data/ietfinterfaces:interfaces-state/. Kết quả trả về từ API phải có dạng tương tự như trong hình bên dưới:
    Click image for larger version

Name:	dataurl399081.png
Views:	10
Size:	28.0 KB
ID:	438525

Working...
X