From 21bee37da14776ae4d4d8896ebd21037499264fe Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Tue, 31 Dec 2019 17:28:28 +0800 Subject: [PATCH] tun: revert multiqueue --- cmd/gost/route.go | 2 +- go.mod | 3 ++- go.sum | 8 -------- tun.go | 30 ++++-------------------------- tun_linux.go | 7 +++---- 5 files changed, 10 insertions(+), 40 deletions(-) diff --git a/cmd/gost/route.go b/cmd/gost/route.go index b5c70b4..359e81b 100644 --- a/cmd/gost/route.go +++ b/cmd/gost/route.go @@ -374,7 +374,7 @@ func (r *route) GenRouters() ([]router, error) { case "ohttp": ln, err = gost.ObfsHTTPListener(node.Addr) case "tun": - ln, err = gost.TunListener(node.Addr, node.GetInt("threads")) + ln, err = gost.TunListener(node.Addr) default: ln, err = gost.TCPListener(node.Addr) } diff --git a/go.mod b/go.mod index e49330e..96a3898 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,6 @@ require ( github.com/klauspost/compress v1.4.1 github.com/klauspost/cpuid v1.2.0 // indirect github.com/klauspost/reedsolomon v1.7.0 // indirect - github.com/libp2p/go-reuseport v0.0.1 github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f // indirect github.com/lucas-clemente/quic-go v0.10.0 github.com/lucas-clemente/quic-go-certificates v0.0.0-20160823095156-d2f86524cced // indirect @@ -30,6 +29,7 @@ require ( github.com/milosgajdos83/tenus v0.0.0-20190415114537-1f3ed00ae7d8 github.com/onsi/ginkgo v1.7.0 // indirect github.com/onsi/gomega v1.4.3 // indirect + github.com/pkg/errors v0.8.1 // indirect github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735 github.com/shadowsocks/go-shadowsocks2 v0.0.11 github.com/shadowsocks/shadowsocks-go v0.0.0-20170121203516-97a5c71f80ba @@ -40,6 +40,7 @@ require ( golang.org/x/crypto v0.0.0-20190130090550-b01c7a725664 golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect + golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e // indirect gopkg.in/gorilla/websocket.v1 v1.4.0 gopkg.in/xtaci/kcp-go.v4 v4.3.2 gopkg.in/xtaci/smux.v1 v1.0.7 diff --git a/go.sum b/go.sum index cbd8a0c..41f44a7 100644 --- a/go.sum +++ b/go.sum @@ -12,7 +12,6 @@ github.com/bifurcation/mint v0.0.0-20181105071958-a14404e9a861 h1:x17NvoJaphEzay github.com/bifurcation/mint v0.0.0-20181105071958-a14404e9a861/go.mod h1:zVt7zX3K/aDCk9Tj+VM7YymsX66ERvzCJzw8rFCX2JU= github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dchest/siphash v1.2.0 h1:YWOShuhvg0GqbQpMa60QlCGtEyf7O7HC1Jf0VjdQ60M= github.com/dchest/siphash v1.2.0/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4= github.com/dchest/siphash v1.2.1 h1:4cLinnzVJDKxTCl9B01807Yiy+W7ZzVHj/KIroQRvT4= @@ -47,8 +46,6 @@ github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/reedsolomon v1.7.0 h1:pLFmRKGko2ZieiTGyo9DahLCIuljyxm+Zzhz/fYEonE= github.com/klauspost/reedsolomon v1.7.0/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4= -github.com/libp2p/go-reuseport v0.0.1 h1:7PhkfH73VXfPJYKQ6JwS5I/eVcoyYi9IMNGc6FWpFLw= -github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f h1:sSeNEkJrs+0F9TUau0CgWTTNEwF23HST3Eq0A+QIx+A= github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f/go.mod h1:JpH9J1c9oX6otFSgdUHwUBUizmKlrMjxWnIAjff4m04= github.com/lucas-clemente/quic-go v0.10.0 h1:xEF+pSHYAOcu+U10Meunf+DTtc8vhQDRqlA0BJ6hufc= @@ -66,7 +63,6 @@ github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735 h1:7YvPJVmEeFHR1Tj9sZEYsmarJEQfMVYpd/Vyy/A8dqE= github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/shadowsocks/go-shadowsocks2 v0.0.11 h1:dXloqEhYnZV40jblWTK8kWeC0Eb+dgql4S0tj99e8j0= @@ -75,8 +71,6 @@ github.com/shadowsocks/shadowsocks-go v0.0.0-20170121203516-97a5c71f80ba h1:tJgN github.com/shadowsocks/shadowsocks-go v0.0.0-20170121203516-97a5c71f80ba/go.mod h1:mttDPaeLm87u74HMrP+n2tugXvIKWcwff/cqSX0lehY= github.com/songgao/water v0.0.0-20190725173103-fd331bda3f4b h1:+y4hCMc/WKsDbAPsOQZgBSaSZ26uh2afyaWeVg/3s/c= github.com/songgao/water v0.0.0-20190725173103-fd331bda3f4b/go.mod h1:P5HUIBuIWKbyjl083/loAegFkfbFNx5i2qEP4CNbm7E= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 h1:89CEmDvlq/F7SJEOqkIdNDGJXrQIhuIx9D2DBXjavSU= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b h1:mnG1fcsIB1d/3vbkBak2MM0u+vhGhlQwpeimUi7QncM= @@ -94,8 +88,6 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc h1:WiYx1rIFmx8c0mXAFtv5D/mHyKe1+jmuP7PViuwqwuQ= -golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e h1:ZytStCyV048ZqDsWHiYDdoI2Vd4msMcrDECFxS+tL9c= golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= diff --git a/tun.go b/tun.go index 498a248..1706ef9 100644 --- a/tun.go +++ b/tun.go @@ -9,7 +9,6 @@ import ( "time" "github.com/go-log/log" - "github.com/libp2p/go-reuseport" "github.com/shadowsocks/go-shadowsocks2/core" "github.com/songgao/water" "golang.org/x/net/ipv4" @@ -272,16 +271,13 @@ type tunListener struct { } // TunListener creates a listener for tun tunnel. -func TunListener(addr string, threads int) (Listener, error) { +func TunListener(addr string) (Listener, error) { laddr, err := net.ResolveUDPAddr("udp", addr) if err != nil { return nil, err } - if threads < 1 { - threads = 1 - } - + threads := 1 ln := &tunListener{ addr: laddr, conns: make(chan net.Conn, threads), @@ -289,12 +285,11 @@ func TunListener(addr string, threads int) (Listener, error) { } for i := 0; i < threads; i++ { - conn, err := reuseport.ListenPacket("udp", addr) - // conn, err := net.ListenUDP("udp", laddr) + conn, err := net.ListenUDP("udp", laddr) if err != nil { return nil, err } - ln.conns <- &tunTunnelConn{conn} + ln.conns <- conn } return ln, nil @@ -323,20 +318,3 @@ func (l *tunListener) Close() error { } return nil } - -type tunTunnelConn struct { - net.PacketConn -} - -func (c *tunTunnelConn) Read(b []byte) (n int, err error) { - n, _, err = c.ReadFrom(b) - return -} - -func (c *tunTunnelConn) Write(b []byte) (n int, err error) { - return c.WriteTo(b, nil) -} - -func (c *tunTunnelConn) RemoteAddr() net.Addr { - return nil -} diff --git a/tun_linux.go b/tun_linux.go index 130c1e2..e2764a6 100644 --- a/tun_linux.go +++ b/tun_linux.go @@ -19,8 +19,7 @@ func createTun(cfg TunConfig) (conn net.Conn, ipNet *net.IPNet, err error) { ifce, err := water.New(water.Config{ DeviceType: water.TUN, PlatformSpecificParams: water.PlatformSpecificParams{ - Name: cfg.Name, - MultiQueue: true, + Name: cfg.Name, }, }) if err != nil { @@ -47,8 +46,8 @@ func createTun(cfg TunConfig) (conn net.Conn, ipNet *net.IPNet, err error) { cmd = fmt.Sprintf("ip address add %s dev %s", cfg.Addr, ifce.Name()) log.Log("[tun]", cmd) if er := link.SetLinkIp(ip, ipNet); er != nil { - // err = fmt.Errorf("%s: %v", cmd, er) - // return + err = fmt.Errorf("%s: %v", cmd, er) + return } cmd = fmt.Sprintf("ip link set dev %s up", ifce.Name())