-
Notifications
You must be signed in to change notification settings - Fork 1.2k
add WebRTC transport #1999
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
add WebRTC transport #1999
Changes from 1 commit
Commits
Show all changes
250 commits
Select commit
Hold shift + click to select a range
ef185f4
WebRTC transport implementation
ckousik 60d6e9e
remove bytes.Buffer from datachannel
ckousik d801b5c
fix staticcheck error
ckousik de05336
fix go fmt
ckousik 96c0899
remove deadlines and cleanup
ckousik 2464486
simplify read
ckousik 6d37367
remove comments
ckousik 433437e
rewrite udpmux
ckousik 1c426a2
rewrite mux
ckousik fa8010b
remove default multihash
ckousik e8453ad
go mod tidy
ckousik 1701b89
simplify mux
ckousik 2e65c7d
better deadlines
ckousik cea2557
minor packetbuffer tests
ckousik b1bcf29
add unwrap to error type
ckousik 6632095
add test for stream closure
ckousik b6a33d4
fix gofmt
ckousik 48ab83d
maxbuffersize fix
ckousik c7cc27f
fix
ckousik 7cc271d
fix read
ckousik 3aa333d
fix
ckousik e3228aa
fix deadlock
ckousik 9b51205
added tests
ckousik b8bde3f
start readloop on first read call
ckousik 7d48528
fix issue
ckousik 6081523
update pion
ckousik 5a54581
Add comment
ckousik e0c7f25
remove example
ckousik 1bc7c7e
gofmt
ckousik ee3e979
fix test
ckousik 2c7578b
address review
ckousik 1cfdae8
add reset to packetqueue
ckousik cea86fb
more comments
ckousik cfc5b7f
updated webrtc/v3 with setReadDeadline
ckousik 67683fc
tidy
ckousik 3258011
address regression in pion/datachannel
ckousik aec4b9c
force close
ckousik 6329af2
Workaround for datachannel closure
ckousik 320d047
use buffers from pool for connections
ckousik 99c9659
add test for stream closure
ckousik c7dffaa
fix staticcheck error
ckousik c7c1ed0
address review
ckousik 8409639
stream and connection limiting
ckousik 0f5a089
fix test
ckousik f90c634
revert to uint32
ckousik fdbb178
fixes
ckousik 2aa8e2b
fix receiveMTU
ckousik f59a656
update ice version
ckousik cd5e06a
fix sdp test
ckousik 75ddec6
temporarily skip test
ckousik a125544
simplify packetqueue
ckousik e7bd1e1
fix 1 layer of race conditions
ckousik 99e7c05
cleanup
ckousik cb74d23
more cleanup
ckousik ea5987c
string benchmarks
ckousik 4af5cd1
grow builder
ckousik 9f760b1
benchmark packetqueue and prevent panic on close
ckousik 9ca5597
document lock in packetqueue
ckousik 1bdfea7
explicit arguments in sdp functions
ckousik 00ec1e5
fix default return value of getSupported hashes
ckousik 91634b6
move to go:generate
ckousik ab21d09
polish from load tests
ckousik 648c02a
update go mod
ckousik 33bf244
update testplans go.mod
ckousik 115caff
update protoc version
ckousik f76dfc4
address remarks of myself of original PR
1be11e9
improve state.go
b22eed7
Add notes from ckousik to codebase
5285989
enable transport (webrtc) tests that do work
c6f290e
make DiaerCanCreateStreams test pass again
6b78134
further improve state management
1a9a515
minor code changes
94dbcfa
minor improvements mux.go (webrtc)
a5c45d2
do not pass string by value in mux.go where not needed
50e7394
fix bug in webrtc mux: refactor now passes all tests
624a0f5
fix staticcheck tests
64b60d9
add link to go-libp2p webrtc spec
464fe64
add WebRTC benchmarking tool
aa80e25
disable std transport test on purpose for WebRTC
8c572bf
start cleaning up webrtc bench tool
d000415
implement metrics tracker (stdout or csv file)
9b29f54
fix linting issues
370544d
improve metrics tracking
787de4e
add report metrics cmd
56e4413
add metrics vis and improve reporting + doc
a73e4d7
remove unused pool extra MTU size
f0356a2
document how to profile using the webrtc benchmark tool
91d834c
remove TODO from README of webrtc benchmark
10e00ba
add Benchmark chapter to WebRTC BM tool README
b3acaa0
use correct scripts for benchmark example cmds
a75e179
also keep tracks of bytes read/written in metrics for WebRTC
705706d
bugfix metrics collection client/server (webrtc)
dffbd1c
move visualise to sep dir & support autogen csv metrics file name
bc3b211
make visualise script work with multiple files (e.g. server/client)
8e52e36
include results (CSV) in benchmark results
ac077ce
continue to improve benchmark code
0aa7c6b
define transports for benchmark explicitly
a0c421f
add fork reference and update listrenPort
4bd827e
give back 9999 listen port for benchmark tool as def
624fc78
divide CPU % by total cpu cores as to get actual %
9801531
remove dead code (client sdp (2))
62d698f
support merge on single datapoint for webrtc bench
a636032
refactor metrics script and easily print metric stats as MD table
1d087c9
remove flag dep from lib runner code
3c47f7f
fix linter error
062ebc4
add multirunner tool
cf1c6d8
fix runner: now it works :)
0fc8cf1
update benchmark README: simplify cmds now that we have multinner
3b3b459
add benchmark files for webrtc and other transports
fd7bd8f
add more graphs to webrtc README benchmark
7912d1f
fix cases for ws png image link in README
74cdf10
fix dial cmd multirunner for s2 benchmark
01dae45
go mod tidy
bbcf8d2
fix tests CI (multirunner flag parse)
8423c52
sync SDP messages with Rust version
e4fc599
make sdp tests pass again (webrtc)
bb8aea4
add benchmark results comparing quic to webrtc
26bf7ec
support bench multirunner to use only a single transport
2f4f0c6
update benchmark results to latest webrtc
e177fc6
upgrade pion dependencies (webrtc)
4bb2012
remove webrtc options for dialing that are incompatible
36a4208
fix README cmds
453d6dd
fix open TODOs that can be fixed
bb35fbe
minor improvement, mostly styling
135af07
remove outdated code and remove unneeded string alloc
56cc945
optimise hex conversions further and string allocs
a0a43ec
remove duplicate hex code
ce7e970
avoid even more string allocs
4ed95a0
go mod tidy
e33a05e
update benchmarks based on latest PR branch status
61177e9
avoid more string allocs
13ffbee
add TODO to flaky test
3567409
fix ch leak and minor ux improvements
ca29407
remove TODO regarding flaky test, might have been fixed already
161d12e
log dial error when it occurs in prod
4b79b20
Merge remote-tracking branch 'origin/master' into feat/webrtc
b79924e
go mod tidy
c51ef68
minor improvements and more docs
7d63c7b
go mod tidy testplans
a5aa714
increase dial timeout for MaxInFlightRequests test
ff689f2
resolve data race in muxed_connection.go
64154c8
code cleanup
eea5874
clean up code
a1cb991
simplify code regarding maxInFlight
748519f
refactor stream.go (webrtc)
9a65869
skip broken tests (due to refactor)
0613582
ensure response writer can handle if responseCh is blocked :)
ae5c5ec
swap done check
1fda8b0
remove unused varf
e42c314
split up stream code (webrtc)
0633a90
move util webrtc code to internal package (soc)
898f668
move Signal also to its own internal package for WebRTC
70f33af
add forgotten pointer for ref function
7c246a7
move state back into webrtc stream
ca1a374
more refactor: deadline fix
5be3cdc
simplify/refactor stream code
264ce0c
remove unused props/types of stream
ade34df
Merge remote-tracking branch 'origin/master' into feat/webrtc
0febdbd
fix max in flight conn test
b350d71
sync code with original ckousik code
c06e1a3
re-add closeErr hack defined by ckousik (just to be sure)
dd1f3a8
fix tests: all should pass now
3437272
update benchmarks for webrtc for latest code
e2b107c
update S2 benchmarks (FC)
3df32db
simplify WebRTC reader code (fix deadline bug)
e9a0d49
accept webrtc accept queue better
9545df6
switch establishing conns (webrtc) to worker pool
c201a81
remove benchmark to sep repo
cd47d16
doc hex interpersed + remove async/mutex
82be234
resolve more review comments
cbe1061
give pckt queue ctx done its own err
4f7ecf1
resolve more comments from review
09da05e
update link to new benchmark repo
fb8837c
go mod tidy (remove pidusage dep)
3c43902
handle more review comments
79193f8
fix linter error
dae5b9d
address some more review comments
7e21fa3
improve webrtc by resolving more review comments
957fab9
further clean up code
9bb2578
remove wg from stream
4a55ff7
add more comments and resolve MR review
0b5fcc4
merge stream back into one
62b3b1c
switch to mafmt.UDP to also allow DNS addresses (not just IP)
4981ecb
prevent pkt queue alloc when not used (webrtc)
2039cfc
remove shorter read in packetsQueue::pop
c771813
bugfix muxed_connection.go
40fa481
fix dialMatcher selection + test
f4764d2
skip failing tests to get an idea of what is failing
8fe8727
fix broken TestTransportWebRTC_Read test
fcb4b45
fix last remaining failing unit tests
abe126d
fix unit test (linux) + linter (check)
bd2903b
fix linter (check): unused var
094ed17
fix conns in flight, this is now properly respecting the max
d8ab714
Merge remote-tracking branch 'origin/master' into feat/webrtc
57d3c3d
remove dirty err hack that used to be needed for read errs
d322b52
apply some feeback alreay
c2aa10b
clean up code further and apply feedback
367bcc4
use go-msgio to write prefixe msg on wire
4c3f2c2
add fuzz test for hex interperse util
ed64f22
correctly check if slice in EncodeInterperseHexToBuilder is empty
e2ca309
fix hex webrtc util code based on fuzz tests
cf1dff5
resolve more review comments
f20f40f
max in flight conns with a single worker
cf6093e
handle previously ignored errors
133e9ae
improve testing and code for webrtc
4842b38
more hex tests
bf9e3fc
move awaitPeerConnectionOpen out internal to avoid needing log there
130b2c4
fix lint checks
6db8135
address more review comments
feb2551
Merge remote-tracking branch 'origin/master' into feat/webrtc
db47c11
remove priv key from connection (no longer needed)
4dfc547
address more comments
deb7d7d
address more comments
181fa15
drop custom CondVar sync primitive
6f35a1b
move GetDataChannel to private function in root webrtc pkg
1ba7457
add comment to explain why connection internal setters are required
131c48a
add high level webrtc test
99ba632
use IncludeLoopbackCandidate(true) for webrtc's pion
dfdbb26
Update p2p/transport/webrtc/stream.go
GlenDC 87b988d
do not make ICE timeouts configurable for WebRTC
2b4d03d
Merge remote-tracking branch 'origin/master' into feat/webrtc
2e6eb77
fix more comments
710125a
use tpt.Trasnport in webrtc/connection.go, preparing it for M3
7fd203c
address reviews and improve code further as such
bee6590
correctly indicate FD when opening outbound conn
f7a8a82
add TODOs of open problems with WebRTC (not inclusive)
9df1ef4
more TODOs
348a7b6
Merge remote-tracking branch 'origin' into feat/webrtc
d3ef8c8
add more transport tests for WebRTC
522fa8a
support webrtc as default transport and in integration transport test
a9d5cf2
Merge branch 'master' into feat/webrtc
ckousik 4b31a6e
fix integration suite tests except bigping
ckousik 3b28745
rename /webrtc to /p2p-webrtc-direct
54d2e69
make unit tests webrtc transport pass
408f96c
fix TODO: remove assumption that stream ID won't always exist yet
91c8d2d
add explanation for SetIncludeLoopbackCandidate (transport)
0322515
use gater before making a new connection (fix TODO)
a468717
go mod tidy
ae508c8
fix listener (TODO): improve rate limit design
f79b8ae
address remaining review comments
4dec636
improve code further + fix tests
5be030b
implement more io READ guards
96e744b
remove pre-alloc of 16KiB
bc630cd
fix mistake in edit
2d0e119
passing unit and integration tests
ckousik ee6ab19
Merge pull request #1 from ckousik/feat/webrtc
GlenDC 6888e55
merge master
e94ce99
re-generate message.pb.go
5682b87
fix gen pb go
f98420d
add received data to integration test error
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
simplify mux
- Loading branch information
commit 1701b893323ecf0e1f3f6b9ebd707327a459ca05
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.