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,
handler: handler,
}
forwarder.udpNat = udpnat.New(handler, forwarder.PreparePacketConnection, timeout, true)
forwarder.udpNat = udpnat.New(handler, forwarder.PreparePacketConnection, timeout, false)
return forwarder
}

View file

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

View file

@ -43,12 +43,13 @@ func (t *NativeTun) WritePacket(pkt *stack.PacketBuffer) (int, error) {
func (t *NativeTun) NewEndpoint() (stack.LinkEndpoint, stack.NICOptions, error) {
ep, err := fdbased.New(&fdbased.Options{
FDs: []int{t.tunFd},
MTU: t.options.MTU,
RXChecksumOffload: true,
PacketDispatchMode: fdbased.RecvMMsg,
MultiPendingPackets: t.options.EXP_MultiPendingPackets,
SendMsgX: t.options.EXP_SendMsgX,
FDs: []int{t.tunFd},
MTU: t.options.MTU,
ProcessorsPerChannel: 1,
RXChecksumOffload: true,
PacketDispatchMode: fdbased.RecvMMsg,
MultiPendingPackets: t.options.EXP_MultiPendingPackets,
SendMsgX: t.options.EXP_SendMsgX,
})
if err != nil {
return nil, stack.NICOptions{}, err

View file

@ -74,12 +74,13 @@ func (t *NativeTun) WritePacket(pkt *stack.PacketBuffer) (int, error) {
func (t *NativeTun) NewEndpoint() (stack.LinkEndpoint, stack.NICOptions, error) {
if t.vnetHdr {
ep, err := fdbased.New(&fdbased.Options{
FDs: []int{t.tunFd},
MTU: t.options.MTU,
GSOMaxSize: gsoMaxSize,
GRO: true,
RXChecksumOffload: true,
TXChecksumOffload: t.txChecksumOffload,
FDs: []int{t.tunFd},
MTU: t.options.MTU,
ProcessorsPerChannel: 1,
GSOMaxSize: gsoMaxSize,
GRO: true,
RXChecksumOffload: true,
TXChecksumOffload: t.txChecksumOffload,
})
if err != nil {
return nil, stack.NICOptions{}, err
@ -87,10 +88,11 @@ func (t *NativeTun) NewEndpoint() (stack.LinkEndpoint, stack.NICOptions, error)
return ep, stack.NICOptions{}, nil
} else {
ep, err := fdbased.New(&fdbased.Options{
FDs: []int{t.tunFd},
MTU: t.options.MTU,
RXChecksumOffload: true,
TXChecksumOffload: t.txChecksumOffload,
FDs: []int{t.tunFd},
MTU: t.options.MTU,
ProcessorsPerChannel: 1,
RXChecksumOffload: true,
TXChecksumOffload: t.txChecksumOffload,
})
if err != nil {
return nil, stack.NICOptions{}, err