RootlessRouter(Part: 4): 被VPP Host Stack衝康

前篇: Rootless Router(Part: 3) EtherGuard

當你以為快要搞定,卻突然被衝康,真的不是普通的難受

被vpp host stack衝康了。之前BIRD運作正常,我就接著弄這些
wggo-vpp搞定
eggo-vpp搞定
bird-vpp搞定
bird-vpp-route-sync搞定
結果發現session又不能建立了

測試一番,發現VPP host stack底下,當server沒問題,但是當client大有問題

vpp side: nc -l 8888
linux side: nc 10.127.111.1 8888
連線完全正常

linux side: nc -l 8888
vpp side: nc 172.22.77.33 8888
連線失敗!

之前BIRD正常運作,因為他可以listen 當server,另一邊(linux)連過來,session建立
所以我一直以為它的功能是好的,就接著弄了。
但是當兩邊都是vpp,一定要有一邊當client,就出問題了!
現在終於快搞定的時候,發現這個大問題

如果這個不能解決,真就只能換一個network stack了
記得從6月開始弄這個。在我以為快弄完的時候,發現以前的功夫可能白費,真的...難過...

下一個network stack群友有什麼推薦嗎?我有看到這些候選
1. 用gVisor (基於ptrace)
2. 用gVisor (以socks proxy方式提供,BIRD透過L4 proxy連線wg加入DN42網路)
3. User mode linux (基於ptrace,聽說性能堪慮。因為他提供的API太全了,kernel bypass耗費太多性能。我只要bypass網路相關的就好)
4. LKL (重新編譯,覆寫掉網路相關system call,改走LKL的stack)
5. 其他,大家推薦下?

09/26/2021 Update 問題解決

問題解決了,不要用release分支,直接用最新的原始碼編譯就好了
由此確認,確實是VPP Host stack的問題
雖然偶爾會出現address boundary error,至少BIRD session能建立了

下一篇: RootlessRouter(Part:5) 完結

留言