Fix gVisor process

This commit is contained in:
世界 2026-07-06 16:55:25 +08:00
parent 46aa536b37
commit c569e3e92f
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
5 changed files with 22 additions and 19 deletions

View file

@ -38,7 +38,7 @@ func NewUDPForwarder(ctx context.Context, stack *stack.Stack, handler Handler, t
stack: stack, stack: stack,
handler: handler, handler: handler,
} }
forwarder.udpNat = udpnat.New(handler, forwarder.PreparePacketConnection, timeout, true) forwarder.udpNat = udpnat.New(handler, forwarder.PreparePacketConnection, timeout, false)
return forwarder return forwarder
} }

View file

@ -130,7 +130,7 @@ func (m *Mixed) wintunLoop(winTun WinTun) {
func (m *Mixed) batchLoopLinux(linuxTUN LinuxTUN, batchSize int) { func (m *Mixed) batchLoopLinux(linuxTUN LinuxTUN, batchSize int) {
packetBuffers := make([][]byte, batchSize) packetBuffers := make([][]byte, batchSize)
writeBuffers := make([][]byte, batchSize) writeBuffers := make([][]byte, 0, batchSize)
packetSizes := make([]int, batchSize) packetSizes := make([]int, batchSize)
for i := range packetBuffers { for i := range packetBuffers {
packetBuffers[i] = make([]byte, m.mtu+PacketOffset+m.frontHeadroom) packetBuffers[i] = make([]byte, m.mtu+PacketOffset+m.frontHeadroom)

View file

@ -229,7 +229,7 @@ func (s *System) wintunLoop(winTun WinTun) {
func (s *System) batchLoopLinux(linuxTUN LinuxTUN, batchSize int) { func (s *System) batchLoopLinux(linuxTUN LinuxTUN, batchSize int) {
packetBuffers := make([][]byte, batchSize) packetBuffers := make([][]byte, batchSize)
writeBuffers := make([][]byte, batchSize) writeBuffers := make([][]byte, 0, batchSize)
packetSizes := make([]int, batchSize) packetSizes := make([]int, batchSize)
for i := range packetBuffers { for i := range packetBuffers {
packetBuffers[i] = make([]byte, s.mtu+s.frontHeadroom) packetBuffers[i] = make([]byte, s.mtu+s.frontHeadroom)

View file

@ -45,6 +45,7 @@ func (t *NativeTun) NewEndpoint() (stack.LinkEndpoint, stack.NICOptions, error)
ep, err := fdbased.New(&fdbased.Options{ ep, err := fdbased.New(&fdbased.Options{
FDs: []int{t.tunFd}, FDs: []int{t.tunFd},
MTU: t.options.MTU, MTU: t.options.MTU,
ProcessorsPerChannel: 1,
RXChecksumOffload: true, RXChecksumOffload: true,
PacketDispatchMode: fdbased.RecvMMsg, PacketDispatchMode: fdbased.RecvMMsg,
MultiPendingPackets: t.options.EXP_MultiPendingPackets, MultiPendingPackets: t.options.EXP_MultiPendingPackets,

View file

@ -76,6 +76,7 @@ func (t *NativeTun) NewEndpoint() (stack.LinkEndpoint, stack.NICOptions, error)
ep, err := fdbased.New(&fdbased.Options{ ep, err := fdbased.New(&fdbased.Options{
FDs: []int{t.tunFd}, FDs: []int{t.tunFd},
MTU: t.options.MTU, MTU: t.options.MTU,
ProcessorsPerChannel: 1,
GSOMaxSize: gsoMaxSize, GSOMaxSize: gsoMaxSize,
GRO: true, GRO: true,
RXChecksumOffload: true, RXChecksumOffload: true,
@ -89,6 +90,7 @@ func (t *NativeTun) NewEndpoint() (stack.LinkEndpoint, stack.NICOptions, error)
ep, err := fdbased.New(&fdbased.Options{ ep, err := fdbased.New(&fdbased.Options{
FDs: []int{t.tunFd}, FDs: []int{t.tunFd},
MTU: t.options.MTU, MTU: t.options.MTU,
ProcessorsPerChannel: 1,
RXChecksumOffload: true, RXChecksumOffload: true,
TXChecksumOffload: t.txChecksumOffload, TXChecksumOffload: t.txChecksumOffload,
}) })