1 介紹
網(wǎng)絡(luò)功能(NFs),或中間件是以復(fù)雜方式檢測(cè)和更改數(shù)據(jù)包和流的系統(tǒng)。比如:入侵檢測(cè)系統(tǒng)(IDSs),負(fù)載均衡器,緩存代理等。NFs在確保安全性,提高性能和提供其他新網(wǎng)絡(luò)功能方面起著關(guān)鍵性的作用。
最近,我們發(fā)現(xiàn)利用運(yùn)行在通用計(jì)算資源上的基于軟件的NFs來(lái)替代專用網(wǎng)絡(luò)功能硬件越來(lái)越引起人們的興趣,即被稱為網(wǎng)絡(luò)功能虛擬化(NFV)的趨勢(shì)。同時(shí),SDN被用來(lái)通過(guò)適當(dāng)?shù)腘Fs引流,從而執(zhí)行決策和共同管理網(wǎng)絡(luò)和網(wǎng)絡(luò)負(fù)載。
結(jié)合NFV和SDN可以實(shí)現(xiàn)一類重要的管理應(yīng)用,這類應(yīng)用需要在多個(gè)網(wǎng)絡(luò)功能實(shí)例(如網(wǎng)絡(luò)負(fù)載均衡,彈性網(wǎng)絡(luò)伸縮)之間進(jìn)行動(dòng)態(tài)分組包處理。在此類應(yīng)用場(chǎng)景下,“NFV+SDN”可以幫助實(shí)現(xiàn)以下三個(gè)重要目標(biāo):(1)、在NF性能和可用性方面滿足嚴(yán)格的服務(wù)等級(jí)協(xié)議(SLAs);(2)、精確地監(jiān)控和處理網(wǎng)絡(luò)流,比如,對(duì)所有包含惡意軟件的網(wǎng)絡(luò)流,IDS都應(yīng)該報(bào)警;(3)、最小化NF運(yùn)營(yíng)成本。然而,目前同時(shí)實(shí)現(xiàn)三個(gè)目標(biāo)是不可能的,從根本上說(shuō)需要比“NFV+SDN”能提供的更多的控制功能。
要知道為何?我們考慮這樣一個(gè)場(chǎng)景,一個(gè)IDS過(guò)載,為了在吞吐量上滿足SLAs,必須進(jìn)行網(wǎng)絡(luò)擴(kuò)展(圖1)。通過(guò)NFV,我們可以輕易地創(chuàng)建一個(gè)新的IDS實(shí)例,通過(guò)SDN,我們可以將一些正在進(jìn)行的流網(wǎng)絡(luò)路由到新創(chuàng)建的實(shí)例。然而,由于內(nèi)部NF狀態(tài)是不可見(jiàn)的,可能發(fā)現(xiàn)不了攻擊。為了解決這個(gè)問(wèn)題,SDN控制應(yīng)用可以等待現(xiàn)有流的終止,且只重新路由新的流,但這樣就延遲了過(guò)載的緩解,并且增加了破壞SLA的可能性。由于一些NF內(nèi)部狀態(tài)的不可復(fù)制或共享性,NF精確度也可能被破壞。
?
圖1 需要擴(kuò)展和負(fù)載均衡來(lái)滿足吞吐量的SLAs和最小化運(yùn)營(yíng)成本的場(chǎng)景
在這個(gè)例子中,為了避免NF精確度和性能之間的權(quán)衡,唯一的辦法就是允許一個(gè)控制應(yīng)用能快速并且安全地對(duì)一些流的內(nèi)部IDS狀態(tài)從原始實(shí)例轉(zhuǎn)移到新的實(shí)例,同時(shí)更新網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)。類似的需求也出現(xiàn)在其他依賴動(dòng)態(tài)重分配和分組處理的應(yīng)用場(chǎng)景中,比如,快速升級(jí)NF和遠(yuǎn)程處理的動(dòng)態(tài)調(diào)用。
在本文中,我們提出一種控制平面架構(gòu)OpenNF,它提供內(nèi)部NF狀態(tài)和網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)的高效、協(xié)作控制,使得NF實(shí)例之間的流能夠快速、安全和細(xì)粒度的重分配。采用OpenNF,運(yùn)營(yíng)商能夠創(chuàng)建豐富的重分配處理控制應(yīng)用,這些應(yīng)用能最佳地滿足性能、可用性、安全性和成本目標(biāo),這樣就避免了麻煩的權(quán)衡決策。
設(shè)計(jì)OpenNF的三個(gè)主要挑戰(zhàn)如下:
C1: 解決競(jìng)爭(zhēng)條件。這是重分配在線流時(shí)產(chǎn)生的最基本問(wèn)題:當(dāng)一些內(nèi)部NF狀態(tài)被轉(zhuǎn)移時(shí),數(shù)據(jù)包可能在轉(zhuǎn)移開(kāi)始后到達(dá)源實(shí)例,或者在狀態(tài)轉(zhuǎn)移完成之前到達(dá)目的源。除非特別小心,不然,基于這些可能丟失的或者亂序的數(shù)據(jù)包來(lái)更新NF狀態(tài),破壞了轉(zhuǎn)移安全性。同樣地,當(dāng)從NF實(shí)例間復(fù)制狀態(tài)時(shí),同時(shí)發(fā)生的更新可能導(dǎo)致?tīng)顟B(tài)不一致,這些問(wèn)題都可能降低NF的精確度。
為了說(shuō)明競(jìng)爭(zhēng)條件,我們引入兩個(gè)新的結(jié)構(gòu):(1)、一個(gè)從外部觀察的抽象事件,防止內(nèi)部NFs的本地狀態(tài)改變。(2)、一個(gè)用于更新網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)的兩階段方案。我們展示了如何將兩者結(jié)合起來(lái)以確保狀態(tài)更新不會(huì)丟失,或者在狀態(tài)轉(zhuǎn)移時(shí)重新排序和共享狀態(tài)保持一致。
C2:限制開(kāi)銷。第二個(gè)問(wèn)題是保證重分配是高效的。NF實(shí)例之間的狀態(tài)轉(zhuǎn)移和共享會(huì)消耗NF CPU和網(wǎng)絡(luò)資源。此外,為了避免丟失,重排和狀態(tài)不一致,需要數(shù)據(jù)包緩沖,這會(huì)引入延遲和內(nèi)存消耗。如果這些性能和資源消耗是無(wú)限制的,就無(wú)法滿足嚴(yán)格的SLAs和有限的運(yùn)營(yíng)成本。
為了限制開(kāi)銷,我們提出了一個(gè)靈活的北向接口,用于控制應(yīng)用明確地指定哪些狀態(tài)進(jìn)行轉(zhuǎn)移,復(fù)制和共享,以及哪些保證執(zhí)行(例如,無(wú)損耗)。
C3:以最小變化適應(yīng)各種NFs。最后一個(gè)問(wèn)題是確保我們的架構(gòu)能適應(yīng)以大量非入侵方式的各種各樣的NFs。給NFs提供接口來(lái)創(chuàng)建/更新?tīng)顟B(tài)是一種方法,但是這種方法限定了內(nèi)部NFs轉(zhuǎn)態(tài)的結(jié)構(gòu),可能也不適合需要一些數(shù)據(jù)包處理邏輯的狀態(tài)分配/訪問(wèn)。相反,我們?yōu)镹Fs設(shè)計(jì)了一種新的南向接口,允許控制器請(qǐng)求NF狀態(tài)的進(jìn)出口,而不改變NFs內(nèi)部是如何管理狀態(tài)的。
我們使用Floodlight實(shí)現(xiàn)了我們的北向接口API,利用這個(gè)API,我們開(kāi)發(fā)了幾個(gè)控制應(yīng)用。我們也增加了四個(gè)NFs—Bro, Squid, iptables, 和PRADS,用于支持南向接口API。
? ? ?
我們對(duì)OpenNF評(píng)估表明:(1)、OpenNF可以消除虛假警報(bào),并且和使用電流控制框架需要的數(shù)十分鐘相比,我們能及時(shí)縮減NF規(guī)模;(2)、狀態(tài)可以高效地轉(zhuǎn)移,復(fù)制和共享,即使是需要一些特定的要求,比如:對(duì)于500規(guī)模的流進(jìn)行無(wú)丟失狀態(tài)轉(zhuǎn)移,在這個(gè)操作過(guò)程中,只需要215ms加上50ms的包接收延遲;(3)、添加對(duì)OpenNF南向接口API的支持,最多只增加9.8%的代碼量,在NFs狀態(tài)進(jìn)出的過(guò)程中,包處理時(shí)間增加將少于6%。
2 為何使用 OpenNF?
當(dāng)分組處理是被一個(gè)NF的多個(gè)實(shí)例統(tǒng)一進(jìn)行處理時(shí),NF的部署通常需要滿足以下三個(gè)重要目標(biāo):(1)、在性能和可用性上滿足嚴(yán)格的SLAs——比如,大部分時(shí)間的總吞吐量應(yīng)該超過(guò)1Gbps,用于處理流的宕機(jī)時(shí)間應(yīng)該少于10分鐘/每年;(2)、精確地監(jiān)控和處理網(wǎng)絡(luò)流量,比如,對(duì)所有包含惡意軟件包流的HTTP流,IDS應(yīng)該發(fā)起警報(bào),RE解碼器應(yīng)該能夠正確地恢復(fù)由RE編碼器消除的冗余;(3)、最小化運(yùn)營(yíng)成本。例如,當(dāng)不需要額外的容量時(shí),資源應(yīng)該關(guān)閉。
目前,同時(shí)實(shí)現(xiàn)這三個(gè)目標(biāo)是不可能的,除了結(jié)合NFV和SDN能提供的功能之外,我們需要更多的控制機(jī)制。下面,我們描述若干個(gè)具體實(shí)例,并突出以上三大目標(biāo)是如何轉(zhuǎn)化成控制平面需求的。我們也會(huì)討論當(dāng)前的一些NFV和SDN控制框架,以及如何簡(jiǎn)化和增加它們以滿足需求。
2.1 動(dòng)機(jī)實(shí)例
總是選擇最新的NFs。為了最大程度的保證安全,移動(dòng)手機(jī)用戶可能希望本次的數(shù)據(jù)能夠被最新的NF軟件處理。舉個(gè)例子說(shuō),SLA要求流量每年被過(guò)時(shí)的NF實(shí)例處理的時(shí)間不超過(guò)10分鐘。幸運(yùn)的是,NFV允許在我們幾毫秒內(nèi)使用更新的NF實(shí)例,同時(shí)SDN允許我們?cè)谙嗤臅r(shí)間內(nèi)重新路由到那個(gè)更新的NF實(shí)例。然而由于缺少新實(shí)例的內(nèi)部NF狀態(tài),這種簡(jiǎn)單重路由流量可能會(huì)降低NF準(zhǔn)確性:舉例來(lái)說(shuō),將一個(gè)活躍的HTTP流重新路由到一個(gè)新的IDS,由于缺少流中先前報(bào)文的原數(shù)據(jù),會(huì)造成入侵檢測(cè)系統(tǒng)錯(cuò)過(guò)對(duì)一些惡意軟件的檢測(cè)。為了克服這個(gè)問(wèn)題,我們可以等到正在處理的流終止,只對(duì)新的流重新路由。然而,由于流的持續(xù)時(shí)間是不受控制的,這個(gè)方法不能保證滿足SLA,舉個(gè)例子,蜂窩網(wǎng)絡(luò)中超過(guò)40%的流的超過(guò)10分鐘。同時(shí)滿足SLA協(xié)議以及維持網(wǎng)路功能正確性的唯一方法就是控制面提供將NF狀態(tài)和它的更新轉(zhuǎn)化為網(wǎng)絡(luò)傳遞狀態(tài)的功能。此外,操作必須在限定的時(shí)間內(nèi)完成。
為了保證NF在狀態(tài)傳輸期間以及狀態(tài)傳輸之后的正確(目標(biāo)2),沒(méi)有數(shù)據(jù)包或者更新在傳輸過(guò)程中丟失以及沒(méi)有重新排序的更新發(fā)生是很重要的兩點(diǎn)。舉個(gè)例子,IDS對(duì)一個(gè)復(fù)制的報(bào)文處理,此時(shí)如果一個(gè)復(fù)制的流量在狀態(tài)傳遞時(shí)丟失,IDS實(shí)例將沒(méi)有機(jī)會(huì)請(qǐng)求重傳該報(bào)文。這個(gè)可能會(huì)導(dǎo)致沒(méi)有進(jìn)行安全報(bào)警,因?yàn)镮DS在一個(gè)連接上僅僅收到部分用于惡意軟件檢測(cè)的數(shù)據(jù)。同樣的,IDS可能會(huì)錯(cuò)誤報(bào)警如果它沒(méi)有按順序收到請(qǐng)求建立報(bào)文(SYN)和數(shù)據(jù)處理報(bào)文。因此,控制面必須提供對(duì)于諸如無(wú)損傳輸和順序保持傳輸?shù)闹匾WC。(我們將在5.1節(jié)正式定義無(wú)損傳輸和保持順序)。
高效的網(wǎng)絡(luò)控制。移動(dòng)電話用戶也很關(guān)心網(wǎng)絡(luò)的性能。舉個(gè)例子,SLA可能要求NF部署吞吐量在大多數(shù)時(shí)刻超過(guò)1Gbps。由于數(shù)據(jù)包處理的復(fù)雜性,僅僅依靠單一的NF實(shí)例去滿足SLA的要求困難太大。幸運(yùn)的是, NFV允許NF在網(wǎng)絡(luò)負(fù)載增加的時(shí)候動(dòng)態(tài)擴(kuò)展,同時(shí)SDN允許流被重新路由到新的NF。然而,正如在第一個(gè)方案中說(shuō)的那樣,流必須被快速重新路由—一直等到流的終止會(huì)導(dǎo)致網(wǎng)絡(luò)功能持續(xù)負(fù)載過(guò)重并且破壞SLA(目標(biāo)1),而關(guān)于安全性,不移動(dòng)內(nèi)部NF狀態(tài)的重新路由方式會(huì)降低NF的正確性(目標(biāo)2).(以一種不丟失和不亂序的方式)。相似的,在事先考慮快速重路由和安全性的情況下,當(dāng)網(wǎng)絡(luò)的負(fù)載降低時(shí),網(wǎng)絡(luò)功能應(yīng)該收縮來(lái)減少操作消耗(目的3)。為了達(dá)到這個(gè)目的,我們還是需要將NF狀態(tài)以及它的狀態(tài)更新轉(zhuǎn)化為網(wǎng)絡(luò)傳遞狀態(tài),并且這種轉(zhuǎn)化必須在限定時(shí)間內(nèi)完成并且有重要保證。
當(dāng)重新平衡負(fù)載時(shí),我們可能要考慮到NFs用于多個(gè)流的情況。舉個(gè)例子, IDS為每個(gè)終端主機(jī)保持連接計(jì)數(shù)器。如果以主機(jī)或者子網(wǎng)為粒度,網(wǎng)絡(luò)是平衡的,一個(gè)主機(jī)所有的流經(jīng)過(guò)相同的IDS實(shí)例,計(jì)數(shù)器可以交給這個(gè)實(shí)例。然而,當(dāng)主機(jī)上的流被平衡到不同的實(shí)例,所有的實(shí)例必須有該計(jì)數(shù)器。更進(jìn)一步的說(shuō),如果一個(gè)處理流的實(shí)例終止了,主機(jī)的在該實(shí)例上的流被移動(dòng)其它剩余的實(shí)例上,那么這兩個(gè)實(shí)例的計(jì)數(shù)器需要合并。因此,控制面必須提供轉(zhuǎn)移、復(fù)制或者共享、以及合并到多個(gè)流相關(guān)的NF狀態(tài)。
網(wǎng)絡(luò)功能故障只占用少量資源快速恢復(fù)。當(dāng)一個(gè)NF實(shí)例發(fā)生故障時(shí),我們可以通過(guò)重路由正在處理的流到一個(gè)正常的實(shí)例來(lái)減少故障時(shí)間。為了讓這些流能夠正確的被處理,被選中的實(shí)例必須能夠獲得關(guān)鍵的NF狀態(tài)。達(dá)到這個(gè)目的的方法之一就是為所有的NF實(shí)例周期性的備份;這對(duì)于在該NF實(shí)例的CPU和存儲(chǔ)帶寬的消耗不可忽略(目標(biāo)3),由于各個(gè)備份之間的延時(shí)會(huì)導(dǎo)致備份中有大量的過(guò)時(shí)狀態(tài)。第二種方法只備份NF狀態(tài)更新的部分。這種方法會(huì)消除過(guò)時(shí)狀態(tài)的問(wèn)題,并且資源的占用和狀態(tài)更新的頻率以及被備份狀態(tài)的數(shù)量成比例增長(zhǎng)。為了支持這種方式,我們需要能夠復(fù)制NF狀態(tài),同時(shí)需要能夠跟蹤狀態(tài)何時(shí)以及如何更新。
基于對(duì)本地NF的前期觀察,一個(gè)企業(yè)可能想對(duì)當(dāng)前正在處理的流的某個(gè)子集進(jìn)行更深層次更高級(jí)的處理(目標(biāo)2的變體)。舉個(gè)例子,當(dāng)IDS檢測(cè)到內(nèi)部的主機(jī)正在向一個(gè)被列入黑名單的域名發(fā)送HTTP請(qǐng)求,企業(yè)要啟用對(duì)惡意軟件的分析會(huì)進(jìn)行回復(fù)的數(shù)據(jù)包處理功能。由于本地IDS的資源限制,企業(yè)可能會(huì)利用云端更加強(qiáng)大的遠(yuǎn)程IDS.更進(jìn)一步說(shuō),為了避免將所有流量重定向到云端的帶來(lái)的消耗(目標(biāo)3),其它主機(jī)的流量必須在本地處理。這個(gè)需要在先前的例子強(qiáng)調(diào)的特性的支持(例如將特定流的狀態(tài)無(wú)損耗傳輸)。除此之外,更高級(jí)的處理實(shí)際上需要獲得更多的狀態(tài)細(xì)節(jié):舉例來(lái)說(shuō),云端的IDS可能要為與一些已經(jīng)眾所周知的攻擊庫(kù)比較簽名,為新的流創(chuàng)建額外的狀態(tài)。因此,網(wǎng)絡(luò)控制面不能限制NF創(chuàng)建額外狀態(tài)的能力。更進(jìn)一步說(shuō),如果這個(gè)被處理的流之后會(huì)傳回到原來(lái)的NF實(shí)例,那么這個(gè)額外的狀態(tài)必須要能夠被自動(dòng)捕獲。
2.2 相關(guān)工作
現(xiàn)有的控制平面,如PLayer, SIMPLE, Stratos, FlowTags, 和一些連接技巧,僅僅提供控制,協(xié)調(diào)和流量轉(zhuǎn)發(fā)。如已經(jīng)討論過(guò)的,在不降低NF精度的條件下,單獨(dú)的轉(zhuǎn)發(fā)變化是不能滿足各種各樣需求目標(biāo)的。
VM或者進(jìn)程的復(fù)制只允許一整個(gè)地克隆NF實(shí)例。額外的,包含于克隆中的不需要的狀態(tài)不僅浪費(fèi)內(nèi)存,而且更為嚴(yán)重的是能導(dǎo)致不良的NF行為。比如,IDS可能產(chǎn)生錯(cuò)誤的警報(bào)。此外,這種方法阻止了多種NF實(shí)例的狀態(tài)的轉(zhuǎn)移和合并,妨礙了快速?gòu)椥允湛s。由于他們固有的限制,結(jié)合現(xiàn)有的控制平面和VM遷移/過(guò)程復(fù)制技術(shù)不能滿足上述的需求。
供應(yīng)商提供的控制器在多個(gè)NF實(shí)例之間進(jìn)行狀態(tài)轉(zhuǎn)移,復(fù)制和共享時(shí),可能影響NFs的內(nèi)部工作信息。但是,他們不能以一種方式控制網(wǎng)絡(luò)狀態(tài)來(lái)滿足所有的目標(biāo)。例如,很難通過(guò)網(wǎng)絡(luò)鏈路提供優(yōu)化的負(fù)載均衡。
拆分/合并和輕量復(fù)制是唯一提供一些對(duì)內(nèi)部NF狀態(tài)和網(wǎng)絡(luò)狀態(tài)控制的系統(tǒng)。他們提供一個(gè)共享庫(kù),NFs使用這個(gè)共享庫(kù),可通過(guò)預(yù)先定義的API來(lái)創(chuàng)建,訪問(wèn),和更改內(nèi)部狀態(tài)。編排器通過(guò)調(diào)用一個(gè)簡(jiǎn)單的遷移操作(重新路由流f并轉(zhuǎn)移相應(yīng)的NF狀態(tài))來(lái)協(xié)調(diào)負(fù)載均衡。在輕量復(fù)制中,NF加進(jìn)一些模塊來(lái)管理進(jìn)出各個(gè)實(shí)例的分組流,并且根據(jù)預(yù)先定義的頻率進(jìn)行狀態(tài)的克隆。
不幸的是,遷移操作可能會(huì)導(dǎo)致NF狀態(tài)更新的丟失和亂序,因?yàn)檫w移之后到達(dá)NF實(shí)例的分組將被丟棄,應(yīng)用網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)更新和重新恢復(fù)網(wǎng)絡(luò)流之間仍然存在競(jìng)爭(zhēng)。此外,編排器和NF模塊式針對(duì)特定問(wèn)題的,使得他們不能很好地支持復(fù)雜的控制應(yīng)用。最后,NFs必須使用API來(lái)創(chuàng)建和訪問(wèn)狀態(tài),通過(guò)使用不是基于流狀態(tài)的秘鑰,使得當(dāng)流被重新路由時(shí),很難知道存在狀態(tài)的轉(zhuǎn)移和復(fù)制。API值允許每種流一種狀態(tài)分配,需要重建一些內(nèi)部NF狀態(tài)和分組處理邏輯。我們?cè)诒疚牡暮竺嬲鹿?jié)更詳細(xì)地討論這些問(wèn)題。
3 OpenNF概述
OpenNF是一種新的控制平面架構(gòu)(圖2),這種架構(gòu)滿足上述需求和挑戰(zhàn)。本節(jié)中,我們將列出關(guān)鍵思想,§4 和 §5中詳述細(xì)節(jié)。
?
圖2 OpenNF架構(gòu)
OpenNF允許控制應(yīng)用直接管理NFs的行為和性能,以滿足高標(biāo)準(zhǔn)的要求。基于NF輸出和外部輸入,控制應(yīng)用:(1)、確定特定NF實(shí)例應(yīng)該處理的流集,(2)、指示控制器提供每個(gè)實(shí)例所必須的狀態(tài),包括流特定狀態(tài)和流之間的共享狀態(tài),(3)、讓控制器提供狀態(tài)和狀態(tài)操作的特定保障。
相應(yīng)地,OpenNF控制器封裝了分布式狀態(tài)控制的復(fù)雜性,當(dāng)被請(qǐng)求的時(shí)候,為狀態(tài)和狀態(tài)操作保證不丟失、不亂序和一致性。我們?cè)O(shè)計(jì)了兩個(gè)新的方案來(lái)克服潛在的競(jìng)爭(zhēng)條件:(1)、一個(gè)抽象的事件,控制器用來(lái)直接監(jiān)視狀態(tài)的更新,或者阻止更新但是知道哪些更新是預(yù)期的,(2)、一個(gè)兩階段的轉(zhuǎn)發(fā)狀態(tài)更新方案。使用前者,控制器可以確保轉(zhuǎn)移操作部丟失,和狀態(tài)副本最終的一致性。通過(guò)利用方案2中的步驟,仔細(xì)測(cè)序狀態(tài)更新或更新一致性(方案1),控制器可以確保轉(zhuǎn)移操作的不丟失和不亂序;我們?cè)诩夹g(shù)報(bào)告中提供了正式的證明。最后,通過(guò)緩沖與預(yù)期更新相應(yīng)的事件,并一次一個(gè)地處理狀態(tài)的副本,控制器可以確保狀態(tài)副本的嚴(yán)格一致性。
OpenNF的南向接口API為控制器定義了一個(gè)標(biāo)準(zhǔn)的NF接口,用于請(qǐng)求事件和內(nèi)部NF狀態(tài)的進(jìn)出。通過(guò)一個(gè)出口調(diào)用,NFs用它來(lái)完成所有狀態(tài)的過(guò)濾器匹配,和確定如何將現(xiàn)有狀態(tài)和進(jìn)口調(diào)用提供的狀態(tài)合并。這需要對(duì)NFs進(jìn)行適當(dāng)?shù)墓δ芴砑?,關(guān)鍵的是不能限制,或者需要對(duì)NFs維持的狀態(tài)數(shù)據(jù)結(jié)構(gòu)進(jìn)行更改。此外,我們使用已定義好的流的概念(比如,TCP連接)作為基礎(chǔ),來(lái)指定哪個(gè)狀態(tài)進(jìn)和出。這就自然和NFs已經(jīng)創(chuàng)建,讀取和更新的狀態(tài)保持一致了。
評(píng)論