發表文章

目前顯示的是 7月, 2021的文章

Rootless Router(Part: 1): wggo-vpp

圖片
RootlessRouter系列: Rootless Router(Part: 0): 用戶態DN42節點 Rootless Router(Part: 1): wggo-vpp Rootless Router(Re: 0): VPP Host stack Rootless Router(Part: 2): BIRD-vpp Rootless Router(Part: 3): EtherGuard Rootless Router(Extra):蒐集的Userspace 網路棧 Rootless Router(Part: 4): 被VPP Host Stack衝康 Rootless Router(Part: 5): 完結 Rootless Router(Fin): UML版本上線啦! Rootless Router(Afterword): Azure App Service真的很靈 也就是memif+tap2tun的部分 tap2tun的部分邏輯很簡單,如下 tap部分邏輯 收到一個封包 if 是ARP request: 回復一個ARP response 加入ARP Table elif 是Neighbor solicitation : 回覆一個Neighbor advertisement 加入Neighbor Table elif 是ARP reply: 加入ARP Table elif 是Neighbor advertisement: 加入Neighbor Table else: 拔掉L2丟去tun對面 tun的部分更簡單 收到一個封包 去ARP/Neighbor Table查表 if 查表成功: 目標Mac=查表結果 elif 需要查表(預先定義了一個要查表的範圍,通常是設定成l2內網範圍): 發送一個ARP request/Neighbor solicitation到tap端 丟棄該封包,返回 else: 目標Mac=Gateway Mac Address 補上l2包頭,發送到tap端 幾經波折,終於完成第一部分。把wireguard-go的tun的 CreateTun/Read/Write 改掉,變成用libmemif+vpp-api和vpp互動 以上指定都是用