mirror of
https://github.com/slackhq/nebula.git
synced 2025-11-23 17:04:25 +01:00
why does it work
This commit is contained in:
@@ -313,7 +313,7 @@ func (f *Interface) listenOut(q int) {
|
|||||||
func (f *Interface) listenIn(reader overlay.TunDev, queueNum int) {
|
func (f *Interface) listenIn(reader overlay.TunDev, queueNum int) {
|
||||||
runtime.LockOSThread()
|
runtime.LockOSThread()
|
||||||
|
|
||||||
const batch = 64
|
const batch = 128
|
||||||
originalPackets := make([][]byte, batch) //todo batch config
|
originalPackets := make([][]byte, batch) //todo batch config
|
||||||
for i := 0; i < batch; i++ {
|
for i := 0; i < batch; i++ {
|
||||||
originalPackets[i] = make([]byte, 0xffff)
|
originalPackets[i] = make([]byte, 0xffff)
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ func (u *StdConn) WriteBatch(pkts []*packet.Packet) (int, error) {
|
|||||||
iovs := make([][]iovec, 0, len(pkts))
|
iovs := make([][]iovec, 0, len(pkts))
|
||||||
|
|
||||||
sent := 0
|
sent := 0
|
||||||
|
const maxIovLen = 48
|
||||||
var mostRecentPkt *packet.Packet
|
var mostRecentPkt *packet.Packet
|
||||||
//segmenting := false
|
//segmenting := false
|
||||||
idx := 0
|
idx := 0
|
||||||
@@ -221,7 +221,7 @@ func (u *StdConn) WriteBatch(pkts []*packet.Packet) (int, error) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
lastIdx := idx - 1
|
lastIdx := idx - 1
|
||||||
if mostRecentPkt != nil && pkt.CompatibleForSegmentationWith(mostRecentPkt) && msgs[lastIdx].Hdr.Iovlen < 4 {
|
if mostRecentPkt != nil && pkt.CompatibleForSegmentationWith(mostRecentPkt) && msgs[lastIdx].Hdr.Iovlen < maxIovLen { //todo math this more good
|
||||||
|
|
||||||
msgs[lastIdx].Hdr.Controllen = uint64(len(mostRecentPkt.Control))
|
msgs[lastIdx].Hdr.Controllen = uint64(len(mostRecentPkt.Control))
|
||||||
msgs[lastIdx].Hdr.Control = &mostRecentPkt.Control[0]
|
msgs[lastIdx].Hdr.Control = &mostRecentPkt.Control[0]
|
||||||
@@ -233,7 +233,7 @@ func (u *StdConn) WriteBatch(pkts []*packet.Packet) (int, error) {
|
|||||||
mostRecentPkt.SetSegSizeForTX()
|
mostRecentPkt.SetSegSizeForTX()
|
||||||
} else {
|
} else {
|
||||||
msgs = append(msgs, rawMessage{})
|
msgs = append(msgs, rawMessage{})
|
||||||
iovs = append(iovs, make([]iovec, 1, 8)) //todo
|
iovs = append(iovs, make([]iovec, 1, maxIovLen)) //todo
|
||||||
iovs[idx][0] = iovec{
|
iovs[idx][0] = iovec{
|
||||||
Base: &pkt.Payload[0],
|
Base: &pkt.Payload[0],
|
||||||
Len: uint64(len(pkt.Payload)),
|
Len: uint64(len(pkt.Payload)),
|
||||||
|
|||||||
Reference in New Issue
Block a user