You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,6 +25,31 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
25
25
- in case of vulnerabilities.
26
26
-->
27
27
28
+
## [0.3.16] - 2021-03-18
29
+
### Added
30
+
- New simulation code under `cmd/yggdrasilsim` (work-in-progress)
31
+
32
+
### Changed
33
+
- Multi-threading in the switch
34
+
- Swich lookups happen independently for each (incoming) peer connection, instead of being funneled to a single dedicated switch worker
35
+
- Packets are queued for each (outgoing) peer connection, instead of being handled by a single dedicated switch worker
36
+
- Queue logic rewritten
37
+
- Heap structure per peer that traffic is routed to, with one FIFO queue per traffic flow
38
+
- The total size of each heap is configured automatically (we basically queue packets until we think we're blocked on a socket write)
39
+
- When adding to a full heap, the oldest packet from the largest queue is dropped
40
+
- Packets are popped from the queue in FIFO order (oldest packet from among all queues in the heap) to prevent packet reordering at the session level
41
+
- Removed global `sync.Pool` of `[]byte`
42
+
- Local `sync.Pool`s are used in the hot loops, but not exported, to avoid memory corruption if libraries are reused by other projects
43
+
- This may increase allocations (and slightly reduce speed in CPU-bound benchmarks) when interacting with the tun/tap device, but traffic forwarded at the switch layer should be unaffected
44
+
- Upgrade dependencies
45
+
- Upgrade build to Go 1.16
46
+
47
+
### Fixed
48
+
- Fixed a bug where the connection listener could exit prematurely due to resoruce exhaustion (if e.g. too many connections were opened)
49
+
- Fixed DefaultIfName for OpenBSD (`/dev/tun0` -> `tun0`)
50
+
- Fixed an issue where a peer could sometimes never be added to the switch
51
+
- Fixed a goroutine leak that could occur if a peer with an open connection continued to spam additional connection attempts
52
+
28
53
## [0.3.15] - 2020-09-27
29
54
### Added
30
55
- Support for pinning remote public keys in peering strings has been added, e.g.
0 commit comments