vpp之node节点分析二: qs类型
qs類型適用于進(jìn)入當(dāng)前node處理的數(shù)據(jù)包都轉(zhuǎn)發(fā)到下一個相同的node,vpp通過向量指令進(jìn)行優(yōu)化,提高了處理性能
1.定義該node的下一個node
?可以看出和dual是一樣的,一點(diǎn)點(diǎn)區(qū)別是模板默認(rèn)下一個節(jié)點(diǎn)是error-drop 也就是丟棄
2.數(shù)據(jù)包如何轉(zhuǎn)發(fā)
?
?
?除了最后一個函數(shù)vlib_buffer_enqueue_to_next,其他和dual都是相同的
3.qs和dual的區(qū)別
其實(shí)區(qū)別也能明顯看出,qs類型的節(jié)點(diǎn)不再是一個一個獲取數(shù)據(jù)包的地址,而是一開始就用vlib_get_buffers函數(shù)獲取所有數(shù)據(jù)包的地址,最后通過vlib_buffer_enqueue_to_next函數(shù)統(tǒng)一把數(shù)據(jù)包發(fā)走
最大的差別就在vlib_buffer_enqueue_to_next函數(shù)
通過源碼可以看出
?
?從這些代碼可以看出,vpp是通過向量指令對于相同流程的數(shù)據(jù)包做了指令集優(yōu)化,現(xiàn)在主要是SSE2指令集優(yōu)化,如果不了解的可以看看這篇文章C/C++指令集介紹以及優(yōu)化(主要針對SSE優(yōu)化)
這樣就可以理解了前面說的為什么qs是數(shù)據(jù)包基本走相同節(jié)點(diǎn)的
總結(jié)
以上是生活随笔為你收集整理的vpp之node节点分析二: qs类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android带杜比音效的播放器,杜比音
- 下一篇: Go语言版实现QQ扫码登陆