本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種基于fpga的最短路由實現(xiàn)方法。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,以及云計算、大數(shù)據(jù)等海量數(shù)據(jù)處理技術(shù)的出現(xiàn),使得傳統(tǒng)交換設(shè)備已無法滿足當前網(wǎng)絡(luò)數(shù)據(jù)傳輸及性能需求。sdn(軟件定義網(wǎng)絡(luò))將轉(zhuǎn)發(fā)與控制分離,在快速轉(zhuǎn)發(fā)的同時又能夠靈活控制。然而,sdn集中控制的方式為網(wǎng)絡(luò)數(shù)據(jù)傳輸帶來便利的同時也存在著問題,即當網(wǎng)絡(luò)比較復雜,sdn的網(wǎng)絡(luò)結(jié)構(gòu)會變得非常龐大,使得單一控制器無法高效地控制交換機對數(shù)據(jù)的轉(zhuǎn)發(fā)。使用多個控制器分別控制一個相對簡單的網(wǎng)絡(luò),能夠減少每個控制器的壓力,但也存在著拓撲同步、傳輸路徑選擇等一系列的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的是多個控制器之間協(xié)同以及數(shù)據(jù)傳輸效率的問題,提供一種基于fpga的最短路由實現(xiàn)方法。
為解決上述問題,本發(fā)明是通過以下技術(shù)方案實現(xiàn)的:
一種基于fpga的最短路由實現(xiàn)方法,包括如下步驟:
步驟1、sdn控制器上傳拓撲信息至fpga;
步驟2、fpga接收各個sdn控制器上傳的拓撲信息,根據(jù)每條拓撲信息中的源轉(zhuǎn)發(fā)器得到存儲器地址,每個源轉(zhuǎn)發(fā)器對應(yīng)1個ddr2的存儲空間,將各條拓撲信息逐條存入各拓撲信息中源轉(zhuǎn)發(fā)器所對應(yīng)的ddr2存儲空間中;即具有相同源轉(zhuǎn)發(fā)器的拓撲信息存儲在ddr2的相同存儲空間中,具有不同源轉(zhuǎn)發(fā)器的拓撲信息存儲在ddr2的不同存儲空間中;
步驟3、用戶發(fā)起訪問請求,sdn控制器收到請求并上傳請求信息至fpga;
步驟4、fpga收到用戶請求信息,并根據(jù)該請求信息的源轉(zhuǎn)發(fā)器得到存儲器地址,每個源轉(zhuǎn)發(fā)器對應(yīng)1個ddr2的存儲空間,去訪問該請求信息中的源轉(zhuǎn)發(fā)器所對應(yīng)ddr2的存儲空間;
步驟5、fpga提取ddr2中同一個存儲空間的所有拓撲信息,并將這些拓撲信息中的權(quán)值加上由請求信息中的源轉(zhuǎn)發(fā)器到當前ddr2的存儲空間所對應(yīng)的源轉(zhuǎn)發(fā)器的權(quán)值,得到由請求信息中的源轉(zhuǎn)發(fā)器到當前ddr2的存儲空間中所有拓撲信息中的目的轉(zhuǎn)發(fā)器的權(quán)值,找出更新后的最短路徑;
步驟6、fpga判斷步驟5所找出的最短路徑的目的轉(zhuǎn)發(fā)器是否為請求信息中的目的轉(zhuǎn)發(fā)器;若是則進入步驟7;否則將找出的最短路徑中的目的轉(zhuǎn)發(fā)器作為新的源轉(zhuǎn)發(fā)器,并根據(jù)新的源轉(zhuǎn)發(fā)器得到存儲器地址,每個源轉(zhuǎn)發(fā)器對應(yīng)1個ddr2的存儲空間,去訪問該存儲器地址所對應(yīng)的ddr2的存儲空間,并轉(zhuǎn)至步驟5;
步驟7、fpga生成最短路徑的路徑信息,并發(fā)送至各sdn控制器。
上述方法中,所述拓撲信息包括源轉(zhuǎn)發(fā)器、源端口號、目的轉(zhuǎn)發(fā)器、目的端口號以及該鏈路的性能權(quán)值。
上述方法中,所述請求信息包括源轉(zhuǎn)發(fā)器、源端口號、目標轉(zhuǎn)發(fā)器和目標端口號。
上述步驟5中,對鏈路的性能權(quán)值采用dijkstra算法去找出上述各路徑中的最短路徑。
上述方法中,存儲器地址由高位地址和低位地址組成,高位地址為源轉(zhuǎn)發(fā)器的id,低位地址為根據(jù)存儲空間中已經(jīng)存儲的拓撲信息數(shù)動態(tài)變化。
上述方法中,ddr2的存儲空間由具有相同存儲器地址中的高位地址的所有存儲器地址對應(yīng)的ddr2的存儲單元組成。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:通過本發(fā)明可以利用fpga實現(xiàn)在高速網(wǎng)絡(luò)環(huán)境下通過對sdn控制器的協(xié)調(diào),同步網(wǎng)絡(luò)拓撲,加快數(shù)據(jù)的傳輸,減少因?qū)鬏旀溌沸阅苓M行決策與配置而帶來的對網(wǎng)絡(luò)性能的影響。
附圖說明
圖1為本發(fā)明實現(xiàn)的最短路由算法的整體流程圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實例,并參照附圖,對本發(fā)明進一步詳細說明。
一種基于fpga的最短路由實現(xiàn)方法,如圖1所示,具體包含如下步驟:
步驟s1:sdn控制器通過udp協(xié)議將拓撲信息封裝,向上傳輸至fpga,該拓撲信息包括src_switch(源交換機)、src_port(源端口號)、dst_switch(目的交換機)、dst_port(目的端口號)、weight(權(quán)值);
步驟s2:fpga接收各個sdn控制器發(fā)送的udp數(shù)據(jù),將其進行解封裝提取拓撲信息,以src_switch為ram1的地址ram1_addr(片上ram1的地址),讀取ram1對應(yīng)的write_addr;
步驟s21:write_addr作為ddr2_addr(ddr2地址)的低8位寫地址,并將該地址增加更新ram1數(shù)據(jù),src_switch作為ddr2_addr的高8位寫地址,中間11位取0,將拓撲信息作為ddr2_data[39:0],88’d1234作為判斷拓撲信息的依據(jù)存入ddr2_data[127:40]一并存入ddr2中;
步驟s3:用戶發(fā)起訪問請求,交換機通過openflow協(xié)議上傳用戶信息到sdn控制器,sdn控制器收到請求,控制器通過udp協(xié)議將拓撲信息封裝,并上傳請求信息至fpga(源轉(zhuǎn)發(fā)器、源端口號、目標轉(zhuǎn)發(fā)器、目標端口號);
步驟s4:fpga接受到sdn控制器發(fā)送的udp數(shù)據(jù),將其進行解封裝提取用戶請求信息,請求信息包括src_switch、src_port、dst_switch、dst_port;
步驟s5:將src_switch作為ddr2_addr的高8位地址,read_addr作為ddr2_addr的低7位地址,中間11位取0,獲取ddr2中數(shù)據(jù);
步驟s51:判斷數(shù)據(jù)是否為拓撲信息數(shù)據(jù),即判斷ddr2_data[127:40]是否等于1234,若相等進入步驟s52,若不相等進入步驟s6;
步驟s52:將dst_switch作為ram2_addr(片上ram2的地址)讀取ram2中的數(shù)據(jù);
步驟s53:將拓撲信息中的weight與路徑的權(quán)值和s相加與讀取的數(shù)據(jù)中的weight相比較,并把權(quán)值較小的數(shù)據(jù)存入ram2中;
步驟s54:read_addr增加,重復步驟s5;
步驟s6:獲取ram2中未通過路徑中的最短路徑(即最高位為0),判斷ram2_addr是否為用戶請求信息中的目標交換機。若是,則進入步驟s7,否則將數(shù)據(jù)中的最高位置1,并令src_switch等于ddr2_addr,權(quán)值和s更新為該最短路徑中的權(quán)值,重復步驟s5;
步驟s7:將ram2中讀取的數(shù)據(jù)添加至udp數(shù)據(jù)中等待發(fā)送,判斷ram2數(shù)據(jù)中src_switch是否為用戶源交換機,若是,構(gòu)造udp數(shù)據(jù)包將路徑信息發(fā)送至各交換機。否則進入步驟s8;
步驟s8:將該ram2數(shù)據(jù)的src_switch作為ram2_addr重復步驟s7。
本發(fā)明利用fpga的高速并發(fā)特性,sdn控制器通過udp協(xié)議上傳拓撲信息,fpga解析udp數(shù)據(jù)包獲取拓撲信息,存儲在ddr2中。當用戶發(fā)起訪問請求時,訪問ddr2獲取拓撲信息通過最短路由算法得到最佳傳輸路徑信息,將該信息打包成udp數(shù)據(jù)并下發(fā)至sdn控制器。本發(fā)明能實現(xiàn)在高速網(wǎng)絡(luò)環(huán)境下提高數(shù)據(jù)的傳輸效率。
需要說明的是,盡管以上本發(fā)明所述的實施例是說明性的,但這并非是對本發(fā)明的限制,因此本發(fā)明并不局限于上述具體實施方式中。在不脫離本發(fā)明原理的情況下,凡是本領(lǐng)域技術(shù)人員在本發(fā)明的啟示下獲得的其它實施方式,均視為在本發(fā)明的保護之內(nèi)。