mirror of
https://github.com/slackhq/nebula.git
synced 2026-08-15 11:27:02 +02:00
drop ECN support for this release
This commit is contained in:
+6
-34
@@ -14,29 +14,9 @@ const MTU = 9001
|
||||
// only costs additional sendmmsg chunks within a single WriteBatch call.
|
||||
const MaxWriteBatch = 128
|
||||
|
||||
// RxMeta carries per-packet metadata extracted from the RX path (ancillary
|
||||
// data, kernel offload state, etc.) and passed to EncReader callbacks.
|
||||
// Backends that do not produce a particular signal leave its zero value.
|
||||
//
|
||||
// OuterECN is the 2-bit IP-level ECN codepoint stamped on the carrier
|
||||
// datagram (extracted from IP_TOS / IPV6_TCLASS cmsg on Linux). Zero
|
||||
// means Not-ECT, which is also the value backends without ECN RX support
|
||||
// supply on every packet.
|
||||
type RxMeta struct {
|
||||
OuterECN byte
|
||||
// QueueCongested is set when the receiving socket's kernel queue depth
|
||||
// exceeded the configured AQM marking threshold (tunnels.ecn_mark_threshold)
|
||||
// when this batch was pulled. The decap path treats it like an outer CE
|
||||
// mark on ECT inner packets — nebula acting as the AQM for the one queue
|
||||
// on the tunnel path no kernel AQM can see. Backends without queue
|
||||
// introspection leave it false.
|
||||
QueueCongested bool
|
||||
}
|
||||
|
||||
type EncReader func(
|
||||
addr netip.AddrPort,
|
||||
payload []byte,
|
||||
meta RxMeta,
|
||||
)
|
||||
|
||||
type Conn interface {
|
||||
@@ -47,23 +27,15 @@ type Conn interface {
|
||||
// Callers use it to flush per-batch accumulators such as TUN write coalescers.
|
||||
// Single-packet backends call flush after each packet. flush must not be nil.
|
||||
ListenOut(r EncReader, flush func()) error
|
||||
// WriteTo sends a single packet to addr.
|
||||
// outerECN is the 2-bit IP-level ECN codepoint to stamp on the packet's outer IP header.
|
||||
// 0 (Not-ECT) is the pass-through value.
|
||||
// Linux attaches it as an IP_TOS / IPV6_TCLASS cmsg. Backends without per-packet ECN support ignore it.
|
||||
WriteTo(b []byte, addr netip.AddrPort, outerECN byte) error
|
||||
WriteTo(b []byte, addr netip.AddrPort) error
|
||||
// WriteBatch sends a contiguous batch of packets, each with its own
|
||||
// destination. bufs and addrs must have the same length. outerECNs may
|
||||
// be nil (treated as all-zero / Not-ECT); when non-nil it must have the
|
||||
// same length as bufs, and outerECNs[i] is the 2-bit IP-level ECN
|
||||
// codepoint to set on packet i's outer header. Linux uses sendmmsg(2)
|
||||
// for a single syscall and attaches the value as IP_TOS / IPV6_TCLASS
|
||||
// cmsg; other backends ignore it.
|
||||
// destination. bufs and addrs must have the same length. Linux uses
|
||||
// sendmmsg(2) for a single syscall.
|
||||
//
|
||||
// Returns the number of packets successfully written. A destination the kernel rejects costs only
|
||||
// its own packet, so a short count means some peers were undeliverable, not that the batch failed.
|
||||
// Not safe for concurrent use on the same Conn.
|
||||
WriteBatch(bufs [][]byte, addrs []netip.AddrPort, outerECNs []byte) (int, error)
|
||||
WriteBatch(bufs [][]byte, addrs []netip.AddrPort) (int, error)
|
||||
ReloadConfig(c *config.C)
|
||||
SupportsMultipleReaders() bool
|
||||
Close() error
|
||||
@@ -83,10 +55,10 @@ func (NoopConn) ListenOut(_ EncReader, _ func()) error {
|
||||
func (NoopConn) SupportsMultipleReaders() bool {
|
||||
return false
|
||||
}
|
||||
func (NoopConn) WriteTo(_ []byte, _ netip.AddrPort, _ byte) error {
|
||||
func (NoopConn) WriteTo(_ []byte, _ netip.AddrPort) error {
|
||||
return nil
|
||||
}
|
||||
func (NoopConn) WriteBatch(bufs [][]byte, _ []netip.AddrPort, _ []byte) (int, error) {
|
||||
func (NoopConn) WriteBatch(bufs [][]byte, _ []netip.AddrPort) (int, error) {
|
||||
return len(bufs), nil
|
||||
}
|
||||
func (NoopConn) ReloadConfig(_ *config.C) {
|
||||
|
||||
Reference in New Issue
Block a user