Improve darwin tun performance
This commit is contained in:
parent
7812930a48
commit
aa1fd4d994
16 changed files with 192 additions and 115 deletions
|
|
@ -49,6 +49,7 @@ type System struct {
|
|||
interfaceFinder control.InterfaceFinder
|
||||
frontHeadroom int
|
||||
txChecksumOffload bool
|
||||
multiPendingPackets bool
|
||||
}
|
||||
|
||||
type Session struct {
|
||||
|
|
@ -74,6 +75,7 @@ func NewSystem(options StackOptions) (Stack, error) {
|
|||
broadcastAddr: BroadcastAddr(options.TunOptions.Inet4Address),
|
||||
bindInterface: options.ForwarderBindInterface,
|
||||
interfaceFinder: options.InterfaceFinder,
|
||||
multiPendingPackets: options.TunOptions.EXP_MultiPendingPackets,
|
||||
}
|
||||
if len(options.TunOptions.Inet4Address) > 0 {
|
||||
if !HasNextAddress(options.TunOptions.Inet4Address[0], 1) {
|
||||
|
|
@ -174,7 +176,7 @@ func (s *System) tunLoop() {
|
|||
return
|
||||
}
|
||||
}
|
||||
if darwinTUN, isDarwinTUN := s.tun.(DarwinTUN); isDarwinTUN && s.mtu < 49152 {
|
||||
if darwinTUN, isDarwinTUN := s.tun.(DarwinTUN); isDarwinTUN && s.multiPendingPackets {
|
||||
s.batchLoopDarwin(darwinTUN)
|
||||
return
|
||||
}
|
||||
|
|
@ -320,6 +322,13 @@ func (s *System) acceptLoop(listener net.Listener) {
|
|||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = acceptConn(conn)
|
||||
if err != nil {
|
||||
s.logger.Error("set buffer for conn: ", err)
|
||||
_ = conn.Close()
|
||||
listener.Close()
|
||||
return
|
||||
}
|
||||
connPort := M.SocksaddrFromNet(conn.RemoteAddr()).Port
|
||||
session := s.tcpNat.LookupBack(connPort)
|
||||
if session == nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue