Chore: adjust all udp alloc size

Chore: adjust all udp alloc size
This commit is contained in:
yaling888 2021-11-04 00:44:16 +08:00 committed by GitHub
commit 964bbe1957
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 3 deletions

View file

@ -5,6 +5,11 @@ const (
// but the maximum packet size of vmess/shadowsocks is about 16 KiB // but the maximum packet size of vmess/shadowsocks is about 16 KiB
// so define a buffer of 20 KiB to reduce the memory of each TCP relay // so define a buffer of 20 KiB to reduce the memory of each TCP relay
RelayBufferSize = 20 * 1024 RelayBufferSize = 20 * 1024
// RelayBufferSize uses 20KiB, but due to the allocator it will actually
// request 32Kib. Most UDPs are smaller than the MTU, and the TUN's MTU
// set to 9000, so the UDP Buffer size set to 16Kib
UDPBufferSize = 16 * 1024
) )
func Get(size int) []byte { func Get(size int) []byte {

View file

@ -49,7 +49,7 @@ func NewUDP(addr string, in chan<- *inbound.PacketAdapter) (*UDPListener, error)
} }
go func() { go func() {
for { for {
buf := pool.Get(pool.RelayBufferSize) buf := pool.Get(pool.UDPBufferSize)
n, remoteAddr, err := l.ReadFrom(buf) n, remoteAddr, err := l.ReadFrom(buf)
if err != nil { if err != nil {
pool.Put(buf) pool.Put(buf)

View file

@ -57,7 +57,7 @@ func NewUDP(addr string, in chan<- *inbound.PacketAdapter) (*UDPListener, error)
go func() { go func() {
oob := make([]byte, 1024) oob := make([]byte, 1024)
for { for {
buf := pool.Get(pool.RelayBufferSize) buf := pool.Get(pool.UDPBufferSize)
n, oobn, _, lAddr, err := c.ReadMsgUDP(buf, oob) n, oobn, _, lAddr, err := c.ReadMsgUDP(buf, oob)
if err != nil { if err != nil {
pool.Put(buf) pool.Put(buf)

View file

@ -39,7 +39,7 @@ func handleUDPToRemote(packet C.UDPPacket, pc C.PacketConn, metadata *C.Metadata
} }
func handleUDPToLocal(packet C.UDPPacket, pc net.PacketConn, key string, fAddr net.Addr) { func handleUDPToLocal(packet C.UDPPacket, pc net.PacketConn, key string, fAddr net.Addr) {
buf := pool.Get(pool.RelayBufferSize) buf := pool.Get(pool.UDPBufferSize)
defer pool.Put(buf) defer pool.Put(buf)
defer natTable.Delete(key) defer natTable.Delete(key)
defer pc.Close() defer pc.Close()