劉敏



摘 ?要:隨著校園網網絡應用的不斷增長,網絡中的流量監控、故障排查、風險預警等問題面臨巨大挑戰。在運用SDN技術對南向基礎網絡進行自動化部署,對北向構建校園網網絡管理節點的基礎上,利用gPRC(Google遠程過程調用)、ERSPAN(封裝遠程端口鏡像)技術設計了校園網絡運維平臺,對網絡中的物理鏈路、TCP質量、業務進行分析,提高了校園網絡的運維效率,對后繼智能化的網絡運維研究具有借鑒意義。
關鍵詞:網絡運維;軟件定義網絡;gRPC;ERSPAN
中圖分類號:TP393 ? ? 文獻標識碼:A
Abstract: With the increasing campus network applications, network traffic monitoring, troubleshooting, risk warning and other issues are facing huge challenges. In this research, SDN (Software Defined Network) technology is used to deploy the basic network automation in the south, and network management node is constructed in the north. On this basis, this paper proposes to design a campus network operation and maintenance platform by using gPRC (Google Remote Procedure Call) and ERSPAN (Encapsulated Remote Port Mirroring) technology. Physical links, TCP (Transmission Control Protocol) quality, and business of the network are analyzed. This platform improves the efficiency of campus network operation and maintenance, and it has provided a reference for subsequent intelligent network operation and maintenance research.
Keywords: network operation and maintenance; software defined network; gRPC; ERSPAN
1 ? 引言(Introduction)
隨著云計算、人工智能、虛擬現實等各種技術在校園網中的應用,網絡規模、數據流量快速增長。傳統的網絡運維方式越來越難以滿足校園網絡的應用需求[1]。
(1)網絡越來越復雜化,采用傳統運維模式帶來的運維成本越來越高。由于校園網信息化程度不斷深入,以及信息化業務不斷上線,不同網絡需求使得網絡傳統運維方式面臨前所未有的挑戰,難度越來越高。
(2)傳統的運維系統大部分是故障驅動,缺少有效的干預手段及事前預測。在傳統運維系統中,只能在網絡出現故障后,采用人工登記報修、電話或口頭等方式告知運維人員,運維人員在接到通知后,通過電話溝通、遠程操作等方法查找故障原因,提出可能的解決方案,故障排除時間長、效率低。
(3)傳統的運維系統是分鐘級數據采集,無法實現實時、精準的數據采集。傳統TCP/IP技術運維采用SNMP協議,從路由器、服務器、交換機等被管設備獲取設備運行的數據,SNMP輪詢的方式必須要在一定的間隔時間內不斷地進行輪詢,間隔時間太短增大了網絡通信擁塞的風險,一般在分鐘級的時間內采集和統計數據,同時MIB II中大量的變量是只讀變量,可寫變量太少。
(4)傳統的運維系統重點在于網絡監控,缺乏網絡關聯分析。網絡監控工具將校園網整張網的布局和設備在網絡監平臺中呈現出來,圖形化顯示當前網絡的連通性和整張網的網絡設備可達情況,無法得到網絡設備網絡質量的詳細信息。
針對校園網中所面臨的運維現狀,基于SDN網絡架構,采用ERSPAN對流量進行實時采集,并進行流量分析,通過推模式主動把設備數據信息上送采集器,從而實現比傳統SNMP查詢方式更實時、更高效的數據采集性能。
2 ? 相關工作(Related work)
2.1 ? SDN(軟件定義網絡)
SDN技術得到了很多開源組織、創業廠商、設備制造商和運營商的認可和推崇,SDN讓網絡運作簡化的思想是當今眾多的網絡平臺所共同認可的。其核心思想是通過標準化技術實現控制平面與轉發平面分離從而簡化網絡管理,采用高性能API Gateway提供符合RESTful標準的北向API,向應用層開放使網絡的轉發功能具有可編程性,南向API支持NetConf、OpenFlow、BGP-LS、PCEP、SNMP等接口標準,實現對網絡流量靈活化、集中化、細粒度的控制,從而為網絡的集中管理和應用創新提供了良好的平臺[2-4]。
2.2 ? gRPC、ERSPAN
gRPC(Google Remote Procedure Call, Google遠程過程調用)[5]是由Google發布的基于HTTP 2.0傳輸層協議承載的高性能開源軟件框架,目標是讓遠程服務調用更加簡單、透明。RPC框架負責屏蔽底層的傳輸方式(TCP或者UDP)、序列化方式(XML/JSON/二進制)和通信細節,遵從server/client模型,客戶端可以像調用本地函數一樣調用server端提供的接口;提供了支持多種編程語言的、對網絡設備進行配置和管理的方法,通信雙方可以基于該軟件框架進行二次開發。
ERSPAN(Encapsulated Remote Switch Port Analyzer, 封裝遠程端口鏡像)[6]是一種三層遠程端口鏡像技術,通過復制指定端口、VLAN或CPU的報文,并通過GRE隧道將復制的報文發送到遠程數據監測設備,使用戶可以利用數據監測設備分析這些報文(稱為鏡像報文),以進行網絡監控和故障排除。
3 ?校園網絡運維平臺研究與設計(Research and design of campus network operation and maintenance platform)
3.1 ? 運維平臺系統架構
如圖1所示,整個系統分為:(1)向北開放的API,為運維應用以及其他上層應用提供分析能力;(2)數據分析平臺,采用Spark、Flink等分布式計算引擎以及AI人工智能模型庫完成數據在線/離線分析任務;(3)基于大數據的數據采集器、分布式部署架構實現數據采集能力的橫向擴展,以滿足不同網絡規模的數據采集需求;(4)通過SDN控制器內的NETCONF等方式向設備下發配置,實現對網絡設備的管理,同時控制器可以根據分析器提供的分析數據,為網絡設備下發配置,對網絡設備的轉發行為進行調整,也可以控制網絡設備有選擇地對數據進行采樣和上報。
3.2 ? 基于EVPN(以太網虛擬專用網絡)的SDN校園網絡運行機制
利用EVPN技術實現SDN在校園網絡中的數據控制平面和數據轉發平面分離[7]。數據控制與轉發分離機制新增五種BGP EVPN消息類型EVPN NLRI(Network Layer Reachability Information, 網絡層可達性信息):Ethernet Auto-discovery Route(RT-1)、MAC/IP Advertisement Route(RT-2)、Inclusive Multicast Ethernet Tag Route(RT-3)、Ethernet Segment Route(RT-4)、IP Prefix Advertisement Route(RT-5)。在數據控制面引入RR(路由反射器),核心設備與分支設備協商ibgp evpn鄰居,所有的分支設備都只和RR建立BGP對等體關系,RR發現并接收分支設備發起的RT-2或者RT-3的路由通告,連接后形成Client列表,分支設備將收到的路由信息反射給其他所有的分支設備,實現控制面的路由轉發。在數據轉發面,依靠RT-3建立BUM廣播表,每個分支設備都通告自己的VNI(虛擬網絡實例)信息,這樣,每個分支設備都有全網的VXLAN信息以及VXLAN和下一跳的關系。分支設備會和那些跟自己有相同VXLAN的下一跳自動建立VXLAN隧道,并將此VXLAN隧道跟這些相同的VXLAN關聯,對每個VXLAN而言,所有這些建立并關聯的VXLAN隧道就構成了BUM廣播,形成了二層廣播域隧道,實現數據轉發[8]。
3.3 ? 校園運維系統數據采集機制
基礎網絡數據采集機制如圖2所示。
gRPC是一次訂閱,多次推送,采集設備管理、接口管理、IP轉發、LLDP、系統日志等業務數據,采集器與設備之間的數據鏈路采用TCP協議,使用TLS協議對通道加密和進行雙向證書認證,進行安全通信。采集器與設備進行安全通信后,應用HTTP 2.0協議使設備指定服務端口等待采集器發起的連接請求,采集器執行相關程序登錄設備并調用proto文件提供的gRPC方法向設備下發配置和發送訂閱需要采集的接口流量統計、CPU、告警等數據信息的請求消息,設備以Protocol Buffer編碼等形式回復應答消息。
ERSPAN是對原始基于字節流的傳輸層流量報文進行鏡像,可以對TCP報文轉發路徑上的下發流匹配規則,將TCP報文鏡像到采集器,實現對應用流的流量統計、路徑還原、延時計算、應用識別等分析處理。
4 ?基于SDN校園網絡運維的實現(Implementation of campus network operation and maintenance based on SDN)
4.1 ? gRPC遠程監控
gRPC采用客戶端/服務器模型,使用HTTP 2.0協議傳輸報文,實現設備自動讀取各種統計信息(CPU、內存、接口等),根據采集器的訂閱要求將采集的信息通過gRPC協議上報給采集器,實現更加實時、高效的數據采集功能。gRPC數據采集如圖3所示。
gRPC的工作機制:(1)服務器通過監聽指定服務端口來等待客戶端的連接請求。(2)用戶通過執行客戶端程序登錄服務器。(3)客戶端調用proto文件提供的gRPC方法發送請求消息。(4)服務器回復應答消息。
設備數據采集模式:設備作為gRPC服務器,采集器作為gRPC客戶端模式。
(1)公共proto文件。公共RPC方法,其內容和含義如下:
syntax ="proto2";
package grpc_service;
message GetJsonReply { //Get方法應答結果
required string result = 1;
}
message SubscribeReply { //訂閱結果
required string result = 1;
}
message ConfigReply { //配置結果
required string result = 1;
}
message ReportEvent { //訂閱事件結果定義
required string token_id = 1; // token_id
required string stream_name = 2; //訂閱的事件流名稱
required string event_name = 3; //訂閱的事件名
required string json_text = 4; //訂閱結果json字符串
}
message GetReportRequest{ //獲取事件訂閱結果請求
required string token_id = 1; //成功后的token_id
}
message SubscribeRequest { //定義事件流名稱
required string stream_name = 1;
}
service GrpcService { //定義gRPC方法
rpc SubscribeByStreamName (SubscribeRequest) returns (SubscribeReply) {} //訂閱事件流
rpc GetEventReport (GetReportRequest) returns (stream ReportEvent) {} //獲取事件結果
}
(2)業務模塊proto文件。支持Device、Ifmgr、IPFW、LLDP、Syslog等多個業務模塊的proto文件,描述具體的業務數據格式。Device模塊數據的RPC方法,其內容和含義如下:
syntax = "proto2";
import "grpc_service.proto";
package device;
message DeviceBase { //獲取設備基本信息結構定義
optional string HostName = 1; //設備的名稱
optional string HostOid = 2; //sysoid
optional uint32 MaxChassisNum = 3; //最大框數
optional uint32 MaxSlotNum = 4; //最大slot數
optional string HostDescription = 5; //設備描述信息
}
message DevicePhysicalEntities { //設備物理實體信息
message Entity {
optional uint32 PhysicalIndex = 1; //實體索引
optional string VendorType = 2; //vendor類型
optional uint32 EntityClass = 3;//實體類型
optional string SoftwareRev = 4; //軟件版本
optional string SerialNumber = 5; //序列號
optional string Model = 6; //模式
}
repeated Entity entity = 1;
}
service DeviceService { //定義的RPC方法
rpc GetJsonDeviceBase(DeviceBase) returns (grpc_service.GetJsonReply) {} //獲取設備基本信息
rpc GetJsonDevicePhysicalEntities(DevicePhysicalEntities) returns
(grpc_service.GetJsonReply) {}
} //獲取設備實體信息
4.2 ? ERSPAN流分析
(1)將鏡像報文封裝為ERSPAN Type II的GRE報文。GRE報文如圖4所示。
(2)TCP會話傳輸的數據流大小:
①請求方向流量:請求方向的FIN-ACK序列號和SYN序列號。
②應答方向流量:應答方向的FIN-ACK序列號和SYN-ACK序列號。
(3)TCP報文在網絡設備中進行三層轉發時,按照IP首部的TTL字段會逐跳遞減原理,先內層匹配內容,然后排序內外層報文的TTL,再匹配識別完成路徑還原;由采集器對每份數據流打時間戳,并根據時間戳信息計算TCP在設備間的逐跳傳輸延時;對TCP內層報文的五元組信息,以及應用層的主機號和端口信息進行應用識別。
5 ?實驗結果與分析(Experimental results and analysis)
5.1 ? gRPC配置
(1)配置Device(gRPC服務器)
開啟gRPC功能。
[Device]grpc enable
創建本地用戶test,配置該用戶的密碼,授權用戶角色為network-admin,可以使用的服務類型為HTTPS服務。
[Device]local-user test
[Device-luser-manage-test]password simple 123456TESTplat&!
[Device-luser-manage-test]authorization-attribute user-role network-admin
[Device-luser-manage-test]service-type https
[Device-luser-manage-test]quit
(2)配置gRPC客戶端
①在gRPC客戶端安裝gRPC環境。
②獲取.proto文件(該文件中已寫入訂閱LLDP事件的配置),并通過protocol buffers編譯器生成特定語言(例如Java、Python、C/C++、Go)的執行代碼。
③編寫客戶端程序,調用上一步生成的代碼。
④執行客戶端程序,登錄gRPC服務器。
5.2 ? ERSPAN配置
(1)配置 Device A
# 配置OSPF協議。
[DeviceA] ospf 1
[DeviceA-ospf-1] area 0
[DeviceA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[DeviceA-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255
# 創建本地鏡像組1。
[DeviceA] mirroring-group 1 local
# 配置本地鏡像組1的源端口為GigabitEthernet1/0/1,
目的端口為GigabitEthernet1/0/2,鏡像報文的目的IP地址為40.1.1.2,源IP地址為20.1.1.1。
[DeviceA] mirroring-group 1 mirroring-port gigabitethernet 1/0/1 both
[DeviceA] mirroring-group 1 monitor-port gigabitethernet 1/0/2 destination-ip 40.1.1.2 source-ip 20.1.1.1
(2)配置Device B
# 配置OSPF協議。
[DeviceB] ospf 1
[DeviceB-ospf-1] area 0
[DeviceB-ospf-1-area-0.0.0.0] network 20.1.1.0 0.0.0.255
(3)驗證配置
# 顯示Device A上所有鏡像組的配置信息。
[DeviceA] display mirroring-group all
Mirroring group 1:
Type: Local
Status: Active
Mirroring port:
GigabitEthernet1/0/1 Both
Monitor port: GigabitEthernet1/0/2
Encapsulation: Destination IP address 40.1.1.2
Source IP address 20.1.1.1
Destination MAC address 000f-e241-5e5b
5.3 ? 分析
gRPC采集數據包括網絡設備的實時資源信息、RDMA統計信息、RDMA告警信息等,如表1所示。
ERSPAN技術采集網絡TCP特征報文,上傳數據采集分析器。分析器通過TCP流分析技術,實現如下功能分析:
(1)分析沿途交換機上報的TCP鏡像報文可獲得應用流量轉發路徑;分析采集TCP報文時間戳可獲得應用建立TCP連接時延及沿途交換機轉發時延,定位應用體驗差是因為網絡慢還是應用本身的問題;分析TCP報文頭可獲取應用TCP連接持續時間及流量大小。(2)根據TCP流生命周期的交互協議報文,結合大數據分析算法,實現TCP連接異常檢測,如TCP連接異常、TTL會話異常。ERSPAN采集到的部分數據分析如圖5所示。
6 ? 結論(Conclusion)
SDN可以通過控制器下發配置使得網絡運維更為方便。本文致力于通過gRPC、ERSPAN技術持續采集設備數據、日志數據、流量數據、拓撲數據等,通過對數據的統計分析,實時洞察整網狀態,結合SDN控制器的網絡運行策略,得出網絡運行過程中產生的問題,快速定位網絡故障位置,方便網絡運維。本文的設計研究也存在一些不足之處:并未結合人工智能、大數據技術進行研究,通過模型,利用歷史數據訓練,預防網絡故障的發生;也未對通過網絡發現的問題自動修改SDN控制器的網絡配置策略,自動解決網絡問題進行研究。
參考文獻(References)
[1] 王關祥.高校網絡運行管理與安全維護研究[J].網絡安全技術與應用,2019(10):92-93.
[2] MCKEOWN N, ANDERSON T, BALARISHNAN H, et al.?? ? Openflow: Enabling innovation in campus networks[J]. ACMSIGCOMM Computer Communication Review, 2008, 38(2):69-74.
[3] 張少軍,蘭巨龍,胡宇翔,等.軟件定義網絡控制平面可擴展性研究進展[J].軟件學報,2018,29(01):160-175.
[4] 左青云,陳鳴,趙廣松,等.基于OpenFlow的SDN技術研究[J].軟件學報,2013,24(5):1078-1097.
[5] 張鳳軍,羅廣軍,邱帆,等.基于SDN的分組傳送網架構設計及實現[J].中國電子科學研究院學報,2020,15(07):665-671.
[6] 潘竹虹,許卓斌.信息采集網絡支撐系統的設計與實現[J].廈門大學學報(自然科學版),2016,55(03):426-433.
[7] 趙俊,包叢笑,李星.基于OpenFlow協議的覆蓋網絡路由器設計[J].清華大學學報(自然科學版),2018,58(02):164-169.
[8] ZHAO Z F, HONG F, LI R P. SDN based VxLAN optimization in cloud computing networks[J]. IEEE Access, 2017(5):23312-23319.
作者簡介:
劉 ? 敏(1977-),男,碩士,講師.研究領域:網絡技術,大數據技術.