李春平
(廣東白云學(xué)院大數(shù)據(jù)與計算機(jī)學(xué)院,廣州 510000)
在基礎(chǔ)設(shè)施的資源分配與管理中,目前通常采用虛擬化技術(shù)、云計算的方式實現(xiàn)資源池化管理和按需分配。計算資源、存儲資源、網(wǎng)絡(luò)資源分別都有相應(yīng)的虛擬化技術(shù)的解決方案,前兩者都有相對成熟的技術(shù),而對于網(wǎng)絡(luò)資源的虛擬化解決方案,目前提得最多的是SDN技術(shù),即軟件定義網(wǎng)絡(luò)。
SDN的主要思想是將轉(zhuǎn)控平面分離,轉(zhuǎn)發(fā)平面即數(shù)據(jù)平面,承擔(dān)數(shù)據(jù)轉(zhuǎn)發(fā)功能,而控制管理功能交由控制平面負(fù)責(zé)。這樣做的好處是可以通過編程的方式,實現(xiàn)對設(shè)備配置、監(jiān)控和管理的自動化處理,解決傳統(tǒng)手動配置、監(jiān)管過程中由于人為錯誤導(dǎo)致的網(wǎng)絡(luò)失效。另一方面,通過軟件開發(fā)的方式定義網(wǎng)絡(luò),還能實時對網(wǎng)絡(luò)故障進(jìn)行定位并及時響應(yīng),采取措施處理問題。
在支持SDN的網(wǎng)絡(luò)設(shè)備中,需要提供編程接口和外部程序進(jìn)行通信。目前大多數(shù)SDN設(shè)備提供各種豐富的API接口,其中NETCONF和RESTCONF應(yīng)用較為普遍。RESTCONF協(xié)議是NETCONF的一個功能子集,通過RESTful API提供了一個輕量級的網(wǎng)絡(luò)設(shè)備訪問方案。RESTCONF具有如下特點:
(1)遵循類似REST的原則,提供對設(shè)備配置信息的訪問和控制。
(2)使用HTTP協(xié)議傳輸數(shù)據(jù),并使用NETCONF中定義的數(shù)據(jù)格式和訪問方法。
(3)使用XML或JSON等格式的結(jié)構(gòu)化數(shù)據(jù),以及YANG模型來提供表征性狀態(tài)轉(zhuǎn)移API,從而實現(xiàn)通過編程方式對設(shè)備進(jìn)行訪問和管理。
盡管RESTCONF比NETCONF更簡便,容易實現(xiàn),其目的并非完全取代NETCONF,而是提供一個與NETCONF數(shù)據(jù)格式兼容的HTTP訪問界面,并遵循REST框架原則。RESTCONF和NETCONF操作的主要區(qū)別如表1所示。
表1 RESTCONF和NETCONF操作的主要區(qū)別
用VMWare作為虛擬機(jī)管理平臺,在虛擬機(jī)盒子里安裝DEVASC虛擬機(jī)、CSR1kv虛擬機(jī)。安裝完成后,在主機(jī)網(wǎng)絡(luò)連接中查看,有一個VMware Network Adapter VMnet1的虛擬網(wǎng)卡,其IPv4地址/掩碼:192.168.56.1/24。
使用SecureCRT遠(yuǎn)程登錄工具登錄到CSR1kv虛擬機(jī)上,在主機(jī)框里填入CSR1kv虛擬機(jī)的IP地址192.168.110.130,用戶名cisco,密碼cisco123!。輸入無誤可以遠(yuǎn)程登錄到CSR1kv虛擬機(jī)。
在使用RESTCONF API訪問虛擬資源時,其數(shù)據(jù)是通過HTTP協(xié)議獲取,因此虛擬設(shè)備上需要啟用RESTCONF和HTTP服務(wù)。在CSR1kv虛擬機(jī)上,部署的HTTP服務(wù)是nginx。
2.2.1 啟用RESTCONF服務(wù)
在CSR1kv虛擬機(jī)上驗證是否開啟了RESTCONF服務(wù)。使用show platform software yang-management process命令檢驗與RESTCONF服務(wù)關(guān)聯(lián)的所有服務(wù)進(jìn)程是否都在運行。
打開配置窗口
CSR1kv#show platform software yang-management process
2.2.2 啟用HTTPS服務(wù)
nginx服務(wù)器采用的是HTTPS協(xié)議。如果nginx未在虛擬機(jī)上運行,可通過執(zhí)行下面的命令開啟nginx服務(wù)。
配置完成后,使用show platform software yang-management process命令檢查nginx服務(wù)是否已正常運行。
2.2.3 Webui測試
CSR1kv虛擬機(jī)提供Web管理界面,當(dāng)CSR1kv虛擬機(jī)上nginx服務(wù)正常開啟后,使用瀏覽器可以訪問CSR1kv虛擬機(jī)。在URL地址欄輸入https://192.168.110.130,輸入正確的用戶名和密碼后將打開CSR1kv的Web界面,如圖1所示。
圖1 CSR1kv虛擬機(jī)的Web界面
運行虛擬機(jī)devasc,在虛擬機(jī)devasc終端上ping CSR1kv虛擬機(jī)的IP地址192.168.110.130,測試虛擬機(jī)之間的網(wǎng)絡(luò)連通性。
結(jié)果表明,虛擬機(jī)之間網(wǎng)絡(luò)連通性正常。
3.1.1 關(guān)閉SSL驗證
使用Postman工具來構(gòu)造請求數(shù)據(jù)。Post?man是一個模擬HTTP客戶端的API測試工具,可以發(fā)送各種HTTP請求。進(jìn)入DEVASC虛擬機(jī)桌面,打開Postman。Postman默認(rèn)會打開SSL認(rèn)證驗證,而在這個測試案例中不會用到SSL證書,因此這里需將SSL認(rèn)證關(guān)閉。
3.1.2 憑證檢查
在Postman里構(gòu)造GET請求,URL地址為https://x.x.x.x/restconf/。這里x.x.x.x為虛擬機(jī)的IPv4地址。憑證檢查設(shè)置為“Basic Auth”,用戶名和密碼做好相應(yīng)配置。
3.1.3 定義JSON數(shù)據(jù)格式
在Postman構(gòu)造GET請求,在“Headers”區(qū)域中需要建立2個字典類型的鍵/值對。第1個鍵/值對的“Key”字段為“Content-type”,Value值為“application/yang-data+json”。這樣設(shè)置是通知Postman程序?qū)SON格式的數(shù)據(jù)發(fā)送到CSR1kv虛擬機(jī)API接口上。第2個鍵/值對的“Key”字段為“Accept”,“Value”字段為“ap?plication/yang-data+json”。
3.1.4 測試API請求
現(xiàn)在已經(jīng)完成GET請求所需的數(shù)據(jù)內(nèi)容封裝。當(dāng)CSR1kv虛擬機(jī)上的RESTCONF和HTTP服務(wù)均正常工作時,使用Postman發(fā)送GET請求,將得到類似下面內(nèi)容的響應(yīng)數(shù)據(jù)。
這說明服務(wù)器端JSON響應(yīng)正常,可以通過Postman發(fā)送其他RESTCONF API請求到CSR1kv虛擬機(jī)。
3.2.1 查看虛擬機(jī)接口參數(shù)
使用Postman發(fā)送請求數(shù)據(jù),這里HTTP服務(wù)器地址為192.168.110.130。URL構(gòu)造為https://192.168.110.130/restconf/data/ietf-interfaces:inter?faces。從csr1kv返回的JSON數(shù)據(jù)如下:
從返回的結(jié)果來看,其中的接口IPv4地址參數(shù)是空的,這是由于CSR1kv虛擬機(jī)上的IP地址是通過DHCP獲取的,需要將CSR1kv虛擬機(jī)上GigabitEthernet1接口地址更改為手動配置,然后在Postman中將GET請求的參數(shù)設(shè)置為interface=GigabitEthernet1,重新發(fā)送GET請求:https://192.168.110.130/restconf/data/ietfinterfaces:interfaces/interface=GigabitEthernet1,返回的JSON數(shù)據(jù)如下:
從返回的JSON數(shù)據(jù)來看,已經(jīng)能夠通過API調(diào)用正確獲取網(wǎng)絡(luò)設(shè)備的IP地址參數(shù),其值為:“ip”:“192.168.110.130”,“netmask”:“255.255.255.0”。
3.2.2 修改虛擬機(jī)接口參數(shù)
通過API調(diào)用修改虛擬機(jī)接口參數(shù)。在Post?man請求中選擇PUT方法,構(gòu)造URL為https://192.168.110.130/restconf/data/ietf-interfaces:inter?faces/interface=Loopback0,其 中interface=Loop?back0表示要添加的虛擬接口為Loopback0,構(gòu)造如下的Body部分的內(nèi)容。
這個PUT方法是為了在CSR1kv虛擬機(jī)上創(chuàng)建一個Loopback0環(huán)回接口,并定義接口的IP地址參數(shù),其值為:“ip”:“172.16.10.10”,“net?mask”:“255.255.255.0”。
3.2.3 驗證虛擬機(jī)接口參數(shù)修改情況
在CSR1kv虛擬機(jī)上查看接口摘要信息,可以看見Loopback0接口的IPv4地址已經(jīng)添加。
表2 CSR1kv#show ip int bri
RESTCONF遵循表征性狀態(tài)轉(zhuǎn)移原則,通過HTTP封裝格式實現(xiàn)API調(diào)用。在虛擬資源的訪問中,可以通過Postman工具構(gòu)造請求數(shù)據(jù),并以JSON的數(shù)據(jù)格式或XML數(shù)據(jù)格式返回響應(yīng)。在基于SDN的設(shè)備上進(jìn)行手工配置無疑會增加工作量,而且容易出錯,給網(wǎng)絡(luò)資源管理帶來困擾。通過虛擬資源提供的API接口,可以實現(xiàn)對虛擬資源的編程訪問,以及自動化部署、管理和排錯,從而提高虛擬資源訪問的可靠性、可用性以及管理效率。