李春平
(廣東白云學院大數據與計算機學院,廣州 510000)
在基礎設施的資源分配與管理中,目前通常采用虛擬化技術、云計算的方式實現資源池化管理和按需分配。計算資源、存儲資源、網絡資源分別都有相應的虛擬化技術的解決方案,前兩者都有相對成熟的技術,而對于網絡資源的虛擬化解決方案,目前提得最多的是SDN技術,即軟件定義網絡。
SDN的主要思想是將轉控平面分離,轉發平面即數據平面,承擔數據轉發功能,而控制管理功能交由控制平面負責。這樣做的好處是可以通過編程的方式,實現對設備配置、監控和管理的自動化處理,解決傳統手動配置、監管過程中由于人為錯誤導致的網絡失效。另一方面,通過軟件開發的方式定義網絡,還能實時對網絡故障進行定位并及時響應,采取措施處理問題。
在支持SDN的網絡設備中,需要提供編程接口和外部程序進行通信。目前大多數SDN設備提供各種豐富的API接口,其中NETCONF和RESTCONF應用較為普遍。RESTCONF協議是NETCONF的一個功能子集,通過RESTful API提供了一個輕量級的網絡設備訪問方案。RESTCONF具有如下特點:
(1)遵循類似REST的原則,提供對設備配置信息的訪問和控制。
(2)使用HTTP協議傳輸數據,并使用NETCONF中定義的數據格式和訪問方法。
(3)使用XML或JSON等格式的結構化數據,以及YANG模型來提供表征性狀態轉移API,從而實現通過編程方式對設備進行訪問和管理。
盡管RESTCONF比NETCONF更簡便,容易實現,其目的并非完全取代NETCONF,而是提供一個與NETCONF數據格式兼容的HTTP訪問界面,并遵循REST框架原則。RESTCONF和NETCONF操作的主要區別如表1所示。

表1 RESTCONF和NETCONF操作的主要區別
用VMWare作為虛擬機管理平臺,在虛擬機盒子里安裝DEVASC虛擬機、CSR1kv虛擬機。安裝完成后,在主機網絡連接中查看,有一個VMware Network Adapter VMnet1的虛擬網卡,其IPv4地址/掩碼:192.168.56.1/24。
使用SecureCRT遠程登錄工具登錄到CSR1kv虛擬機上,在主機框里填入CSR1kv虛擬機的IP地址192.168.110.130,用戶名cisco,密碼cisco123!。輸入無誤可以遠程登錄到CSR1kv虛擬機。
在使用RESTCONF API訪問虛擬資源時,其數據是通過HTTP協議獲取,因此虛擬設備上需要啟用RESTCONF和HTTP服務。在CSR1kv虛擬機上,部署的HTTP服務是nginx。
2.2.1 啟用RESTCONF服務
在CSR1kv虛擬機上驗證是否開啟了RESTCONF服務。使用show platform software yang-management process命令檢驗與RESTCONF服務關聯的所有服務進程是否都在運行。
打開配置窗口
CSR1kv#show platform software yang-management process

2.2.2 啟用HTTPS服務
nginx服務器采用的是HTTPS協議。如果nginx未在虛擬機上運行,可通過執行下面的命令開啟nginx服務。

配置完成后,使用show platform software yang-management process命令檢查nginx服務是否已正常運行。
2.2.3 Webui測試
CSR1kv虛擬機提供Web管理界面,當CSR1kv虛擬機上nginx服務正常開啟后,使用瀏覽器可以訪問CSR1kv虛擬機。在URL地址欄輸入https://192.168.110.130,輸入正確的用戶名和密碼后將打開CSR1kv的Web界面,如圖1所示。

圖1 CSR1kv虛擬機的Web界面
運行虛擬機devasc,在虛擬機devasc終端上ping CSR1kv虛擬機的IP地址192.168.110.130,測試虛擬機之間的網絡連通性。

結果表明,虛擬機之間網絡連通性正常。
3.1.1 關閉SSL驗證
使用Postman工具來構造請求數據。Post?man是一個模擬HTTP客戶端的API測試工具,可以發送各種HTTP請求。進入DEVASC虛擬機桌面,打開Postman。Postman默認會打開SSL認證驗證,而在這個測試案例中不會用到SSL證書,因此這里需將SSL認證關閉。
3.1.2 憑證檢查
在Postman里構造GET請求,URL地址為https://x.x.x.x/restconf/。這里x.x.x.x為虛擬機的IPv4地址。憑證檢查設置為“Basic Auth”,用戶名和密碼做好相應配置。
3.1.3 定義JSON數據格式
在Postman構造GET請求,在“Headers”區域中需要建立2個字典類型的鍵/值對。第1個鍵/值對的“Key”字段為“Content-type”,Value值為“application/yang-data+json”。這樣設置是通知Postman程序將JSON格式的數據發送到CSR1kv虛擬機API接口上。第2個鍵/值對的“Key”字段為“Accept”,“Value”字段為“ap?plication/yang-data+json”。
3.1.4 測試API請求
現在已經完成GET請求所需的數據內容封裝。當CSR1kv虛擬機上的RESTCONF和HTTP服務均正常工作時,使用Postman發送GET請求,將得到類似下面內容的響應數據。

這說明服務器端JSON響應正常,可以通過Postman發送其他RESTCONF API請求到CSR1kv虛擬機。
3.2.1 查看虛擬機接口參數
使用Postman發送請求數據,這里HTTP服務器地址為192.168.110.130。URL構造為https://192.168.110.130/restconf/data/ietf-interfaces:inter?faces。從csr1kv返回的JSON數據如下:


從返回的結果來看,其中的接口IPv4地址參數是空的,這是由于CSR1kv虛擬機上的IP地址是通過DHCP獲取的,需要將CSR1kv虛擬機上GigabitEthernet1接口地址更改為手動配置,然后在Postman中將GET請求的參數設置為interface=GigabitEthernet1,重新發送GET請求:https://192.168.110.130/restconf/data/ietfinterfaces:interfaces/interface=GigabitEthernet1,返回的JSON數據如下:

從返回的JSON數據來看,已經能夠通過API調用正確獲取網絡設備的IP地址參數,其值為:“ip”:“192.168.110.130”,“netmask”:“255.255.255.0”。
3.2.2 修改虛擬機接口參數
通過API調用修改虛擬機接口參數。在Post?man請求中選擇PUT方法,構造URL為https://192.168.110.130/restconf/data/ietf-interfaces:inter?faces/interface=Loopback0,其 中interface=Loop?back0表示要添加的虛擬接口為Loopback0,構造如下的Body部分的內容。

這個PUT方法是為了在CSR1kv虛擬機上創建一個Loopback0環回接口,并定義接口的IP地址參數,其值為:“ip”:“172.16.10.10”,“net?mask”:“255.255.255.0”。
3.2.3 驗證虛擬機接口參數修改情況
在CSR1kv虛擬機上查看接口摘要信息,可以看見Loopback0接口的IPv4地址已經添加。

表2 CSR1kv#show ip int bri
RESTCONF遵循表征性狀態轉移原則,通過HTTP封裝格式實現API調用。在虛擬資源的訪問中,可以通過Postman工具構造請求數據,并以JSON的數據格式或XML數據格式返回響應。在基于SDN的設備上進行手工配置無疑會增加工作量,而且容易出錯,給網絡資源管理帶來困擾。通過虛擬資源提供的API接口,可以實現對虛擬資源的編程訪問,以及自動化部署、管理和排錯,從而提高虛擬資源訪問的可靠性、可用性以及管理效率。