[0047]在圖1所示系統(tǒng)架構(gòu)中,現(xiàn)有技術(shù)在應(yīng)用需要定義新的規(guī)則(Rule)的情況下,整個(gè)操作過(guò)程如圖2所示,具體包括:
[0048]210:應(yīng)用首先需要在控制器上為各個(gè)交換機(jī)定義新的規(guī)則,即流表;
[0049]221:交換機(jī)將流表I下發(fā)至新的規(guī)則涉及到的交換機(jī)I ;
[0050]222:交換機(jī)將流表2下發(fā)至新的規(guī)則涉及到的交換機(jī)2 ;
[0051]223:交換機(jī)將流表3下發(fā)至新的規(guī)則涉及到的交換機(jī)3 ;
[0052]230:主機(jī)I向交換機(jī)I發(fā)送能夠滿(mǎn)足新定義的規(guī)則的匹配規(guī)則的數(shù)據(jù)包(Packet);
[0053]241:交換機(jī)I收到從主機(jī)I發(fā)送過(guò)來(lái)的數(shù)據(jù)包,做流表匹配,轉(zhuǎn)發(fā)給交換機(jī)2 ;
[0054]242:交換機(jī)2收到從交換機(jī)I發(fā)送過(guò)來(lái)的數(shù)據(jù)包,做流表匹配,轉(zhuǎn)發(fā)給交換機(jī)3 ;
[0055]243:交換機(jī)3收到從交換機(jī)2發(fā)送過(guò)來(lái)的數(shù)據(jù)包,做流表匹配,轉(zhuǎn)發(fā)給主機(jī)3 ;
[0056]250:在主機(jī)3上查看該數(shù)據(jù)包經(jīng)過(guò)的傳輸路徑。
[0057]上述過(guò)程,是現(xiàn)有技術(shù)中應(yīng)用定義一條新的規(guī)則所需要的全部過(guò)程。
[0058]現(xiàn)有技術(shù)中,上述整個(gè)操作過(guò)程中用戶(hù)都無(wú)法直觀看到數(shù)據(jù)包在網(wǎng)絡(luò)中的傳輸路徑,只能在目標(biāo)機(jī)器,如圖1所示主機(jī)3上來(lái)查看結(jié)果。而一旦出現(xiàn)差錯(cuò),只能在控制器和交換機(jī)1、交換機(jī)2、交換機(jī)3,以及主機(jī)I和主機(jī)3,甚至交換機(jī)4、主機(jī)2和主機(jī)4上,即可能涉及到的所有功能單元上通過(guò)調(diào)取分析日志來(lái)定位分析。整個(gè)調(diào)試環(huán)節(jié)涉及到的功能單元較多,涉及的日志量大,調(diào)試難度相當(dāng)大。而如果通過(guò)日志分析初步定位出問(wèn)題,重新調(diào)試驗(yàn)證必須將整個(gè)流程完整執(zhí)行一遍,需要所有的功能單元來(lái)參與。另外,如果定位不正確,只能不停的重復(fù)整個(gè)過(guò)程,整個(gè)調(diào)試周期不可控。并且,這種復(fù)雜度會(huì)隨著規(guī)則的個(gè)數(shù)、復(fù)雜度的增加而增加。
[0059]在用戶(hù)環(huán)境中,在出現(xiàn)數(shù)據(jù)包沒(méi)有按照流表中預(yù)定義的規(guī)則到達(dá)指定的目標(biāo)主機(jī),需要進(jìn)行問(wèn)題定位的情況下,需要重現(xiàn)整個(gè)定位的過(guò)程,如圖3所示。
[0060]首先,需要在用戶(hù)的環(huán)境中,抓取出現(xiàn)問(wèn)題的數(shù)據(jù)包和流表;同時(shí)搭建調(diào)試環(huán)境,在該調(diào)試環(huán)境中進(jìn)行問(wèn)題定位。
[0061]310:在控制器上加載從用戶(hù)環(huán)境中抓取的為各個(gè)交換機(jī)配置的流表;
[0062]321:控制器將流表I下發(fā)至交換機(jī)I ;
[0063]322:控制器將流表2下發(fā)至交換機(jī)2 ;
[0064]323:控制器將流表3下發(fā)至交換機(jī)3 ;
[0065]330:主機(jī)I加載從用戶(hù)環(huán)境中抓取的數(shù)據(jù)包,并向交換機(jī)I發(fā)送該數(shù)據(jù)包;
[0066]341:交換機(jī)I收到來(lái)自主機(jī)I的數(shù)據(jù)包,做流表匹配,轉(zhuǎn)發(fā)給交換機(jī)2 ;
[0067]342:交換機(jī)2收到來(lái)自交換機(jī)I的數(shù)據(jù)包,做流表匹配,轉(zhuǎn)發(fā)給交換機(jī)3 ;
[0068]343:交換機(jī)3收到來(lái)自交換機(jī)2的數(shù)據(jù)包,做流表匹配,轉(zhuǎn)發(fā)給主機(jī)3 ;
[0069]350:在主機(jī)3上查看數(shù)據(jù)包經(jīng)過(guò)的傳輸路徑。
[0070]整個(gè)操作過(guò)程,需要分析評(píng)估所抓取的數(shù)據(jù)包在所抓取的流表的邏輯控制下所執(zhí)行的路徑,并搭建與用戶(hù)環(huán)境同等邏輯的調(diào)試環(huán)境,并在調(diào)試環(huán)境下做問(wèn)題重現(xiàn)。如果問(wèn)題無(wú)法重現(xiàn),則還需要到用戶(hù)環(huán)境中抓取更多的日志信息等,或者調(diào)整調(diào)試環(huán)境,或者在用戶(hù)環(huán)境中再次等待問(wèn)題重現(xiàn),直到能在調(diào)試環(huán)境中重現(xiàn)該問(wèn)題。而重現(xiàn)該問(wèn)題之后,需要在調(diào)試環(huán)境中,調(diào)取所有可能涉及到的功能單元的日志,進(jìn)行問(wèn)題分析、原因定位,并給出解決方案。在給出解決方案之后,還需要首先在調(diào)試環(huán)境中進(jìn)行驗(yàn)證,再?lài)L試在用戶(hù)環(huán)境中,部署解決方案,重新構(gòu)造觸發(fā)條件,來(lái)驗(yàn)證解決方案。如果解決方案不正確,則需要重新執(zhí)行上述重現(xiàn)分析定位過(guò)程。上述整個(gè)過(guò)程,所涉及到的功能單元多,操作過(guò)程復(fù)雜,工程量大,整個(gè)分析定位解決過(guò)程所需要的時(shí)間不可控。
[0071]下面結(jié)合圖4至圖7,描述根據(jù)本發(fā)明實(shí)施例的確定傳輸路徑的方法。
[0072]應(yīng)理解,本發(fā)明實(shí)施例對(duì)控制器(Controller)形式不做具體限定,例如,控制器還可以為無(wú)線網(wǎng)絡(luò)中的基站(Base Stat1n)或無(wú)線網(wǎng)絡(luò)控制器(Rad1 NetworkController, RNC)等。
[0073]本發(fā)明實(shí)施例對(duì)轉(zhuǎn)發(fā)節(jié)點(diǎn)的形式也不做具體限定,例如,轉(zhuǎn)發(fā)節(jié)點(diǎn)可以是路由器或交換機(jī)。
[0074]本發(fā)明實(shí)施例不僅適用于Openf low協(xié)議下的SDN,也適用于其他協(xié)議下的SDN,本發(fā)明對(duì)此不作限定。
[0075]圖4是根據(jù)本發(fā)明實(shí)施例的確定傳輸路徑的方法400的示意性流程圖。如圖4所示,方法400包括如下內(nèi)容。
[0076]410、控制器生成測(cè)試數(shù)據(jù)包,測(cè)試數(shù)據(jù)包攜帶用于指示測(cè)試數(shù)據(jù)包經(jīng)過(guò)的轉(zhuǎn)發(fā)節(jié)點(diǎn)向控制器發(fā)送反饋信息的指示信息,測(cè)試數(shù)據(jù)包的第一跳轉(zhuǎn)發(fā)節(jié)點(diǎn)為第一轉(zhuǎn)發(fā)節(jié)點(diǎn)。
[0077]具體地,控制器可以直接生成攜帶該標(biāo)識(shí)信息的測(cè)試數(shù)據(jù)包,或者也可以通過(guò)修改從用戶(hù)環(huán)境中抓取的測(cè)試數(shù)據(jù)包生成攜帶該標(biāo)識(shí)信息的測(cè)試數(shù)據(jù)包。應(yīng)理解,本發(fā)明實(shí)施例對(duì)此并不作限定,控制器還可以采用其他方式獲取該數(shù)據(jù)包。
[0078]還應(yīng)理解,該測(cè)試數(shù)據(jù)包用于在數(shù)據(jù)包沒(méi)有按照流表中預(yù)定義的規(guī)則到達(dá)指定的目標(biāo)主機(jī)的情況下確定該數(shù)據(jù)包的傳輸路徑?;蛘撸摐y(cè)試數(shù)據(jù)包還可以用于在控制器定義新的規(guī)則時(shí)驗(yàn)證該新的規(guī)則是否正確。
[0079]420、控制器向第一轉(zhuǎn)發(fā)節(jié)點(diǎn)發(fā)送測(cè)試數(shù)據(jù)包。
[0080]本發(fā)明實(shí)施例對(duì)測(cè)試數(shù)據(jù)包攜帶該指示信息的具體實(shí)現(xiàn)方式也不作限定,例如,可以在測(cè)試數(shù)據(jù)包上設(shè)置標(biāo)簽(Label)標(biāo)記,還可以使測(cè)試數(shù)據(jù)包攜帶的內(nèi)容為不與數(shù)據(jù)業(yè)務(wù)沖突的特定內(nèi)容。另外,還可以使測(cè)試數(shù)據(jù)包使用不與數(shù)據(jù)業(yè)務(wù)沖突的端口進(jìn)行傳輸。
[0081]430、控制器接收測(cè)試數(shù)據(jù)包經(jīng)過(guò)的至少一個(gè)第二轉(zhuǎn)發(fā)節(jié)點(diǎn)發(fā)送的至少一個(gè)反饋信息,其中每個(gè)反饋信息用于指示已收到測(cè)試數(shù)據(jù)包。
[0082]應(yīng)理解,轉(zhuǎn)發(fā)節(jié)點(diǎn)向控制器發(fā)送的反饋信息的形式或內(nèi)容可以是轉(zhuǎn)發(fā)節(jié)點(diǎn)與控制器預(yù)先設(shè)置的。
[0083]440、控制器根據(jù)至少一個(gè)反饋信息確定測(cè)試數(shù)據(jù)包的傳輸路徑,傳輸路徑包括第一轉(zhuǎn)發(fā)節(jié)點(diǎn)和至少一個(gè)第二轉(zhuǎn)發(fā)節(jié)點(diǎn)。
[0084]本發(fā)明實(shí)施例中,通過(guò)向轉(zhuǎn)發(fā)節(jié)點(diǎn)發(fā)送攜帶指示信息的數(shù)據(jù)包,并從轉(zhuǎn)發(fā)節(jié)點(diǎn)接收用于指示已收到該數(shù)據(jù)包的反饋信息,能夠根據(jù)該反饋信息確定該數(shù)據(jù)包的傳輸路徑,使得能夠直觀查看數(shù)據(jù)包的傳輸路徑,進(jìn)而能夠降低定位分析的難度。
[0085]在440中,控制器可以根據(jù)收到至少一個(gè)反饋信息的時(shí)間順序確定測(cè)試數(shù)據(jù)包的傳輸路徑。
[0086]可選地,至少一個(gè)反饋信息中的每個(gè)反饋信息可以包括第二轉(zhuǎn)發(fā)節(jié)點(diǎn)的標(biāo)識(shí)信息。
[0087]控制器在收到反饋信息的同時(shí)能夠獲知發(fā)送該反饋信息的轉(zhuǎn)發(fā)節(jié)點(diǎn)的標(biāo)識(shí)信息,控制器根據(jù)接收到反饋信息的時(shí)間順序以及反饋信息對(duì)應(yīng)的轉(zhuǎn)發(fā)節(jié)點(diǎn)的標(biāo)識(shí)信息,就能夠確定該測(cè)試數(shù)據(jù)包在整個(gè)生命周期內(nèi)在網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)路徑。
[0088]一般而言,控制器收到各個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)的反饋信息的時(shí)間順序與該測(cè)試數(shù)據(jù)包經(jīng)過(guò)各個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)的順序是一致的。但是由于各個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)從收到該測(cè)試數(shù)據(jù)包到發(fā)送的反饋信息到達(dá)控制器所需要的時(shí)間長(zhǎng)度可能不同,有可能存在以下情況:交換機(jī)2收到交換機(jī)I發(fā)送的測(cè)試數(shù)據(jù)包之后,向控制器發(fā)送反饋信息1,同時(shí)將該測(cè)試數(shù)據(jù)包轉(zhuǎn)發(fā)至交換機(jī)3 ;交換機(jī)3收到該測(cè)試數(shù)據(jù)包之后向控制器發(fā)送反饋信息2。由于交換機(jī)2與控制器之間的通信環(huán)境比較惡劣,傳輸時(shí)延較大,使得控制器在收到了反饋信息2之后才收到反饋信息1,此時(shí)控制器收到的反饋信息的時(shí)間順序與該測(cè)試數(shù)據(jù)包經(jīng)過(guò)交換機(jī)的順序是不一致的。
[0089]優(yōu)選地,每個(gè)反饋信息還可以包括第二轉(zhuǎn)發(fā)節(jié)點(diǎn)收到該測(cè)試數(shù)據(jù)包的時(shí)間信息。相應(yīng)地,在440中,控制器根據(jù)該時(shí)間信息確定測(cè)試數(shù)據(jù)包的傳輸路徑。由于控制器能夠根據(jù)轉(zhuǎn)發(fā)節(jié)點(diǎn)收到該測(cè)試數(shù)據(jù)包的時(shí)間信息確定該測(cè)試數(shù)據(jù)包在整個(gè)生命周期內(nèi)在網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)路徑,從而能夠避免上述可能存在的問(wèn)題。
[0090]可選地,每個(gè)反饋信息還可以包括測(cè)試數(shù)據(jù)包的下一跳設(shè)備的標(biāo)識(shí)信息。
[0091]應(yīng)理解,該測(cè)試數(shù)據(jù)包的下一跳設(shè)備可以是轉(zhuǎn)發(fā)節(jié)點(diǎn),也可以是主機(jī)。
[0092]可選地,在410中,控制器生成測(cè)試數(shù)據(jù)包包括:控制器獲取用戶(hù)環(huán)境中的數(shù)據(jù)包;控制器在數(shù)據(jù)包中設(shè)置指示信息生成該測(cè)試數(shù)據(jù)包。
[0093]例如,控制器可以在獲取的用戶(hù)環(huán)境中的數(shù)據(jù)包上設(shè)置標(biāo)簽標(biāo)記,生成該測(cè)試數(shù)據(jù)包。
[0094]在出現(xiàn)數(shù)據(jù)包沒(méi)有按照預(yù)定義的規(guī)則到達(dá)指定的目標(biāo)主機(jī),需要進(jìn)行問(wèn)題定位的情況下,可以?xún)H從用戶(hù)環(huán)境中抓取出現(xiàn)問(wèn)題的數(shù)據(jù)包,在該數(shù)據(jù)包中設(shè)置指示信息生成測(cè)試數(shù)據(jù)包。
[0095]由于本發(fā)明實(shí)施例的攜帶標(biāo)識(shí)信息的測(cè)試數(shù)據(jù)包與用戶(hù)環(huán)境中正常傳輸?shù)臄?shù)據(jù)包不同,不會(huì)對(duì)系統(tǒng)中的數(shù)據(jù)包的正常傳輸帶來(lái)影響,因此根據(jù)本發(fā)明實(shí)施例的調(diào)試過(guò)程可以直接在用戶(hù)環(huán)境中進(jìn)行在線檢測(cè)或調(diào)試,而無(wú)需搭建調(diào)試環(huán)境。同時(shí),由于本發(fā)明實(shí)施中交換機(jī)收到測(cè)試數(shù)據(jù)包之后會(huì)向控制器發(fā)送反饋信息,控制器能夠根據(jù)該反饋信息確定測(cè)試數(shù)據(jù)包的傳輸路徑,因此也無(wú)需從用戶(hù)環(huán)境中抓取規(guī)則。
[0096]本發(fā)明實(shí)施例中,在流表被修改或者通信鏈路發(fā)生故障導(dǎo)致數(shù)據(jù)包沒(méi)有按照預(yù)定義的規(guī)則到達(dá)指定的目標(biāo)主機(jī)或目標(biāo)轉(zhuǎn)發(fā)節(jié)點(diǎn)的情況下,能夠確定數(shù)據(jù)包的傳輸路徑并進(jìn)行在線分析,大大降低了定位分析的難度。
[0097]在系統(tǒng)中的應(yīng)用定義新規(guī)則的場(chǎng)景下,可選地,在410之前還包括:控制器分別向第一轉(zhuǎn)發(fā)節(jié)點(diǎn)和至少一個(gè)第二轉(zhuǎn)發(fā)節(jié)點(diǎn)發(fā)送流表。相應(yīng)地,在410中,控制器根據(jù)流表生成測(cè)試數(shù)據(jù)包。方法400還包括:根據(jù)測(cè)試數(shù)據(jù)包的傳輸路徑判斷流表是否正確。
[0098]應(yīng)理解,控制器根據(jù)流表生成的測(cè)試數(shù)據(jù)包是能夠滿(mǎn)足流表中的規(guī)則的數(shù)據(jù)包。
[0099]本發(fā)明實(shí)施例的確定傳輸路徑的方法,能夠在控制器需要定義新的規(guī)則的情況下,驗(yàn)證新定義的規(guī)則對(duì)應(yīng)的流表是否正確。如果測(cè)試數(shù)據(jù)包沒(méi)有按照預(yù)定義的規(guī)則到達(dá)目標(biāo)節(jié)點(diǎn),由于本發(fā)明實(shí)施例能夠直觀查看測(cè)試數(shù)據(jù)包的實(shí)際傳輸路徑,使得能夠清楚地定位出現(xiàn)問(wèn)題的流表,無(wú)需通過(guò)調(diào)取可能涉及到的所有功能單元的分析