Commit Graph

238 Commits

Author SHA1 Message Date
emir-signal
538ad16d72
Update dependencies 2026-05-01 13:55:34 -04:00
adel-signal
c87dde6a75
Prevent DeviceToSFU recursion and new state before validation 2026-04-21 13:13:29 -07:00
emir-signal
cc3840fd9e
Fix race condition in maximum clients per call check 2026-04-21 14:27:53 -04:00
emir-signal
2998886ee9
Fix ICE error response handling 2026-04-21 14:26:49 -04:00
emir-signal
22086de2bd
Add full dependency descriptor support 2026-03-25 19:41:20 -04:00
Richard Russo
bb13f12743 Tune ack rate calculation
Use smaller windows and try to calculate at least one window per ack packet;
and change to a regular moving average to accumulate windows.  This improves
the timeliness of ack rate estimates, significantly reducing overcorrection
when delay increases at the same time as a large increase in sending
bandwidth.
2026-03-24 12:00:00 -07:00
Richard Russo
12a5ee56c6 Immediately reallocate video streams when target is far below allocated rate 2026-03-24 12:00:00 -07:00
Richard Russo
a70d5a885d
Destreamify the rest of googcc 2026-03-24 11:22:19 -07:00
Richard Russo
8878d6bd2a
Add a load generator
Add a synthetic test client for load testing and testing congestion control scenarios
2026-03-23 11:31:54 -07:00
adel-signal
8230400a6c
Add disconnect reason for clients at the call metadata level 2026-03-05 12:31:56 -08:00
adel-signal
cf05f187cd
Forward limited number of silent audio packets before dropping 2026-03-05 12:31:33 -08:00
adel-signal
501ea94562
Add time decay to active speaker calculations 2026-02-03 16:10:02 -08:00
emir-signal
11e58e3309
Ensure temporal layer rate is sane 2026-02-03 11:27:01 -05:00
Richard Russo
48bdc4c6e7 Revert "Enable fragmentable updates for peek and endorsement support"
This reverts commit b25cbf206d.  With this
commit, peeks from http raced with peeks delivered over RTP, leading to poor
user experiences.
2026-01-26 09:39:19 -08:00
Richard Russo
8a8be89ee6
When processing timer, always schedule the timer fd
Timer FD init errors are now fatal.
2026-01-13 11:24:16 -08:00
adel-signal
b25cbf206d
Enable fragmentable updates for peek and endorsement support 2026-01-12 14:38:23 -08:00
Jim Gustafson
02acea76f5
Update to Rust 1.91.1 and dependencies 2026-01-07 13:50:40 -08:00
Richard Russo
24de0025a2 Load certificates with rustls::pki_types instead of rustls::pemfile 2025-12-15 11:00:00 -08:00
Richard Russo
f1ae5f8ce8 Zero protocol gauges 2025-12-09 14:34:20 -08:00
Richard Russo
baae2c0fe8 Remove tags for protocol gauges, zero fill tagged gauges 2025-11-19 11:29:40 -08:00
adel-signal
c2f32034ab
Add decryption error metrics 2025-10-15 10:16:04 -07:00
emir-signal
7dea8b1430
Suppress invalid ICE transaction events 2025-10-14 16:09:30 -04:00
Richard Russo
12ec741192
Cleanup metrics 2025-10-14 13:07:44 -07:00
Jim Gustafson
34cfb10965 Update to Rust 1.89.0 2025-09-16 09:07:34 -07:00
Richard Russo
fb4ab831a3
Move counting of no output address 2025-09-11 09:41:42 -07:00
Richard Russo
f6f38a27e6 Use rfc5737 example ranges in tests 2025-09-11 09:20:34 -07:00
Richard Russo
2f701f29e5 Use seeded random in tests, so results are consistent 2025-09-11 09:20:34 -07:00
Richard Russo
0b81d8127c
Count rather than log send to unknown addr 2025-09-08 11:18:00 -07:00
Richard Russo
992c64444a
Remove ConnectionState::Closed 2025-09-04 09:59:28 -07:00
Richard Russo
954d349c3f
Fix panic caused by remove_candidate_by_index 2025-09-03 09:59:29 -07:00
Richard Russo
e29a503c66
Refactor to remove connection cache
Remove the IceTransactionTable, track ping ids in Candidate

Change TimerHeap value to be Arc<Connection>

Mark when a Connection is closed and drop packets related to the Connection if they come in late

Packet servers keep the mapping of socket fd (epoll) or socket address (generic) to Arc<Connection> 

Refactor packet_server::epoll::loop into helper functions

When client sends rtp leave, packet server closes connection right away

During tick, SFU informs packet server of connections and candidates to remove

Candidate activity is now inactivity_timeout since the last successful ping and dead candidates are removed
2025-09-02 12:00:31 -07:00
adel-signal
3e1527b777
Add metric for dominant speaker switch delay 2025-09-02 10:28:31 -07:00
emir-signal
d7e65bc287
Avoid call lookups 2025-07-31 17:32:43 -04:00
emir-signal
5a083f9e9d
Re-add missing calling.sfu.close_connection.rtp metric 2025-07-10 15:14:12 -04:00
Richard Russo
6674d75b42 CPU pinning
CPU pin epoll threads, per thread cpu-pinned listen sockets, client sockets epolled by single thread, one TimerHeap per thread

Epoll threads will only check and add dequeue timers into their own
TimerHeap. Tick inserts dequeue timers distributed across all threads.

Also eliminate use of deprecated epoll api
2025-07-08 11:29:11 -07:00
emir-signal
0ba304468b Lock and synchronization work
Simplify making changes to the calling service by moving the responsibility for lock management into the objects that contain the data that needs to be protected.

Reduce lock contention by converting Mutexes to RwLocks where appropriate and by carefully introducing more locks so that a more fine grained locking strategy can be employed.
2025-07-08 11:29:11 -07:00
emir-signal
59d999a1a0
Differentiate between inactive and no-nominee connections 2025-06-23 09:04:14 -04:00
Richard Russo
5cef9eecf2
Set udp sockets to non-blocking, count dropped sends 2025-06-12 13:56:12 -07:00
adel-signal
9df277e4c4
Temporarily disable fragmentable updates 2025-06-10 08:51:44 -07:00
adel-signal
847783ab9a
Send calling endorsement response over SfuToDevice 2025-06-09 12:07:03 -07:00
emir-signal
3a1de3b56d
Remove support for passive candidates 2025-06-09 13:41:55 -04:00
adel-signal
bfa1c69dc4
Remove sending histograms as both histogram and distribution metrics 2025-06-04 09:06:05 -07:00
adel-signal
cd43427f95
Fix chunking of reliable RTP packets 2025-06-02 21:00:48 -07:00
Richard Russo
9b0dbdd34e
Use RwLock for Sfu to allow concurrent table lookups
Additionally, make Sfu::tick more friendly to concurrency by holding the lock in smaller scopes rather than holding a single lock for the entirety of the tick.
2025-06-02 10:51:43 -07:00
emir-signal
ccdaf546ac
Add epoch to call links 2025-05-29 15:44:36 -04:00
Richard Russo
87b7d94767
Set the FD limit to the hard limit
Add metric reporting available file descriptors
2025-05-15 12:40:50 -07:00
Richard Russo
5da09206e8 Add more metrics for sfu errors 2025-05-13 14:11:29 -07:00
Richard Russo
7410403e2b Turn stats update back to non-reliable 2025-05-13 14:10:51 -07:00
Richard Russo
7ecfd71d18 Remove refresh of active speaker; updates are now reliable 2025-05-13 14:10:51 -07:00
adel-signal
8e36d590aa
Add logging for MRP send buffer failures 2025-05-07 10:13:05 -07:00