mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
TEST: Upgrade pion to v3.2.9. (#3567)
------ Co-authored-by: chundonglinlin <chundonglinlin@163.com>
This commit is contained in:
parent
104cf14d68
commit
df854339ea
1383 changed files with 118469 additions and 41421 deletions
196
trunk/3rdparty/srs-bench/vendor/github.com/pion/stun/README.md
generated
vendored
196
trunk/3rdparty/srs-bench/vendor/github.com/pion/stun/README.md
generated
vendored
|
@ -6,52 +6,21 @@
|
|||
<h4 align="center">A Go implementation of STUN</h4>
|
||||
<p align="center">
|
||||
<a href="https://pion.ly"><img src="https://img.shields.io/badge/pion-stun-gray.svg?longCache=true&colorB=brightgreen" alt="Pion stun"></a>
|
||||
<!--<a href="https://sourcegraph.com/github.com/pion/webrtc?badge"><img src="https://sourcegraph.com/github.com/pion/webrtc/-/badge.svg" alt="Sourcegraph Widget"></a>-->
|
||||
<a href="https://pion.ly/slack"><img src="https://img.shields.io/badge/join-us%20on%20slack-gray.svg?longCache=true&logo=slack&colorB=brightgreen" alt="Slack Widget"></a>
|
||||
<br>
|
||||
<a href="https://travis-ci.org/pion/stun"><img src="https://travis-ci.org/pion/stun.svg?branch=master" alt="Build Status"></a>
|
||||
<a href="https://pkg.go.dev/github.com/pion/stun"><img src="https://godoc.org/github.com/pion/stun?status.svg" alt="GoDoc"></a>
|
||||
<img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/pion/stun/test.yaml">
|
||||
<a href="https://pkg.go.dev/github.com/pion/stun"><img src="https://pkg.go.dev/badge/github.com/pion/stun.svg" alt="Go Reference"></a>
|
||||
<a href="https://codecov.io/gh/pion/stun"><img src="https://codecov.io/gh/pion/stun/branch/master/graph/badge.svg" alt="Coverage Status"></a>
|
||||
<a href="https://goreportcard.com/report/github.com/pion/stun"><img src="https://goreportcard.com/badge/github.com/pion/stun" alt="Go Report Card"></a>
|
||||
<!--<a href="https://www.codacy.com/app/Sean-Der/webrtc"><img src="https://api.codacy.com/project/badge/Grade/18f4aec384894e6aac0b94effe51961d" alt="Codacy Badge"></a>-->
|
||||
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
|
||||
</p>
|
||||
<br>
|
||||
|
||||
### Roadmap
|
||||
The library is used as a part of our WebRTC implementation. Please refer to that [roadmap](https://github.com/pion/webrtc/issues/9) to track our major milestones.
|
||||
|
||||
### Community
|
||||
Pion has an active community on the [Golang Slack](https://invite.slack.golangbridge.org/). Sign up and join the **#pion** channel for discussions and support. You can also use [Pion mailing list](https://groups.google.com/forum/#!forum/pion).
|
||||
|
||||
We are always looking to support **your projects**. Please reach out if you have something to build!
|
||||
|
||||
If you need commercial support or don't want to use public methods you can contact us at [team@pion.ly](mailto:team@pion.ly)
|
||||
|
||||
### Contributing
|
||||
Check out the **[contributing wiki](https://github.com/pion/webrtc/wiki/Contributing)** to join the group of amazing people making this project possible:
|
||||
|
||||
* [Sean DuBois](https://github.com/Sean-Der) - *Original Author*
|
||||
* [Raphael Randschau](https://github.com/nicolai86) - *STUN client*
|
||||
* [Michiel De Backker](https://github.com/backkem) - *Minor fixes*
|
||||
* [Y.Horie](https://github.com/u5surf) - *Fix lint issues*
|
||||
* [Aleksandr Razumov](https://github.com/ernado) - *The v0.3 version*
|
||||
* [songjiayang](https://github.com/songjiayang)
|
||||
* [Adam Kiss](https://github.com/masterada)
|
||||
* [Moises Marangoni](https://github.com/Moisesbr)
|
||||
* [Yutaka Takeda](https://github.com/enobufs)
|
||||
* [Hugo Arregui](https://github.com/hugoArregui)
|
||||
* [Maanas Royy](https://github.com/maanas)
|
||||
* [Atsushi Watanabe](https://github.com/at-wat)
|
||||
* [Cecylia Bocovich](https://github.com/cohosh)
|
||||
* [Christian Muehlhaeuser](https://github.com/muesli)
|
||||
|
||||
# STUN
|
||||
Package stun implements Session Traversal Utilities for NAT (STUN) [[RFC5389](https://tools.ietf.org/html/rfc5389)]
|
||||
Package `stun` implements Session Traversal Utilities for NAT (STUN) ([RFC 5389][rfc5389])
|
||||
protocol and [client](https://pkg.go.dev/github.com/pion/stun#Client) with no external dependencies and zero allocations in hot paths.
|
||||
Client [supports](https://pkg.go.dev/github.com/pion/stun#WithRTO) automatic request retransmissions.
|
||||
|
||||
# Example
|
||||
### Example
|
||||
You can get your current IP address from any STUN server by sending
|
||||
binding request. See more idiomatic example at `cmd/stun-client`.
|
||||
```go
|
||||
|
@ -64,8 +33,14 @@ import (
|
|||
)
|
||||
|
||||
func main() {
|
||||
// Parse a STUN URI
|
||||
u, err := stun.ParseURI("stun:stun.l.google.com:19302")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Creating a "connection" to STUN server.
|
||||
c, err := stun.Dial("udp", "stun.l.google.com:19302")
|
||||
c, err := stun.DialURI(u, &stun.DialConfig{})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@ -88,30 +63,43 @@ func main() {
|
|||
}
|
||||
```
|
||||
|
||||
## Supported RFCs
|
||||
- [x] [RFC 5389](https://tools.ietf.org/html/rfc5389) — Session Traversal Utilities for NAT
|
||||
- [x] [RFC 5769](https://tools.ietf.org/html/rfc5769) — Test Vectors for STUN
|
||||
- [x] [RFC 6062](https://tools.ietf.org/html/rfc6062) — TURN extensions for TCP allocations
|
||||
- [x] [RFC 7064](https://tools.ietf.org/html/rfc7064) — STUN URI
|
||||
- [x] (TLS-over-)TCP client support
|
||||
- [ ] [ALTERNATE-SERVER](https://tools.ietf.org/html/rfc5389#section-11) support [#48](https://github.com/pion/stun/issues/48)
|
||||
- [ ] [RFC 5780](https://tools.ietf.org/html/rfc5780) — NAT Behavior Discovery Using STUN [#49](https://github.com/pion/stun/issues/49)
|
||||
### RFCs
|
||||
#### Implemented
|
||||
- **RFC 5389**: [Session Traversal Utilities for NAT (STUN)][rfc5389]
|
||||
- **RFC 5769**: [Test Vectors for Session Traversal Utilities for NAT (STUN)][rfc5769]
|
||||
- **RFC 6062**: [Traversal Using Relays around NAT (TURN) Extensions for TCP Allocations][rfc6062]
|
||||
- **RFC 7064**: [URI Scheme for the Session Traversal Utilities for NAT (STUN) Protocol][rfc7064]
|
||||
- **RFC 7065**: [Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers][rfc7065]
|
||||
- **RFC 5780**: [NAT Behavior Discovery Using Session Traversal Utilities for NAT (STUN)][rfc5780] via [cmd/stun-nat-behaviour](cmd/stun-nat-behaviour)
|
||||
- (TLS-over-)TCP client support
|
||||
|
||||
# Stability
|
||||
#### Planned
|
||||
- **RFC 5389**: [ALTERNATE-SERVER](https://tools.ietf.org/html/rfc5389#section-11) support [#48](https://github.com/pion/stun/issues/48)
|
||||
|
||||
#### Compatability notes
|
||||
|
||||
[RFC 5389][rfc5389] obsoletes [RFC 3489][rfc3489], so implementation was ignored by purpose, however,
|
||||
[RFC 3489][rfc3489] can be easily implemented as separate package.
|
||||
|
||||
[rfc3489]: https://tools.ietf.org/html/rfc3489
|
||||
[rfc5389]: https://tools.ietf.org/html/rfc5389
|
||||
[rfc5769]: https://tools.ietf.org/html/rfc5769
|
||||
[rfc5780]: https://tools.ietf.org/html/rfc5780
|
||||
[rfc6062]: https://tools.ietf.org/html/rfc6062
|
||||
[rfc7064]: https://tools.ietf.org/html/rfc7064
|
||||
[rfc7065]: https://tools.ietf.org/html/rfc7065
|
||||
|
||||
### Stability
|
||||
Package is currently stable, no backward incompatible changes are expected
|
||||
with exception of critical bugs or security fixes.
|
||||
|
||||
Additional attributes are unlikely to be implemented in scope of stun package,
|
||||
the only exception is constants for attribute or message types.
|
||||
|
||||
# RFC 3489 notes
|
||||
RFC 5389 obsoletes RFC 3489, so implementation was ignored by purpose, however,
|
||||
RFC 3489 can be easily implemented as separate package.
|
||||
|
||||
# Requirements
|
||||
### Requirements
|
||||
Go 1.12 is currently supported and tested in CI.
|
||||
|
||||
# Testing
|
||||
### Testing
|
||||
Client behavior is tested and verified in many ways:
|
||||
* End-To-End with long-term credentials
|
||||
* **coturn**: The coturn [server](https://github.com/coturn/coturn/wiki/turnserver) (linux)
|
||||
|
@ -123,62 +111,76 @@ See [TeamCity project](https://tc.gortc.io/project.html?projectId=stun&guest=1)
|
|||
for more information. Also the Wireshark `.pcap` files are available for e2e test in
|
||||
artifacts for build.
|
||||
|
||||
# Benchmarks
|
||||
|
||||
### Benchmarks
|
||||
Intel(R) Core(TM) i7-8700K:
|
||||
|
||||
```
|
||||
version: 1.16.5
|
||||
version: 1.22.2
|
||||
goos: linux
|
||||
goarch: amd64
|
||||
pkg: github.com/pion/stun
|
||||
PASS
|
||||
benchmark iter time/iter throughput bytes alloc allocs
|
||||
--------- ---- --------- ---------- ----------- ------
|
||||
BenchmarkMappedAddress_AddTo-12 30000000 36.40 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkAlternateServer_AddTo-12 50000000 36.70 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkAgent_GC-12 500000 2552.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkAgent_Process-12 50000000 38.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_GetNotFound-12 200000000 6.90 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_Get-12 200000000 7.61 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkClient_Do-12 2000000 1072.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkErrorCode_AddTo-12 20000000 67.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkErrorCodeAttribute_AddTo-12 30000000 52.20 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkErrorCodeAttribute_GetFrom-12 100000000 12.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkFingerprint_AddTo-12 20000000 102.00 ns/op 430.08 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkFingerprint_Check-12 30000000 54.80 ns/op 948.38 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkBuildOverhead/Build-12 5000000 333.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkBuildOverhead/BuildNonPointer-12 3000000 536.00 ns/op 100 B/op 4 allocs/op
|
||||
BenchmarkBuildOverhead/Raw-12 10000000 181.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessageIntegrity_AddTo-12 1000000 1053.00 ns/op 18.98 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessageIntegrity_Check-12 1000000 1135.00 ns/op 28.17 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_Write-12 100000000 27.70 ns/op 1011.09 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessageType_Value-12 2000000000 0.49 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_WriteTo-12 100000000 12.80 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_ReadFrom-12 50000000 25.00 ns/op 801.19 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_ReadBytes-12 100000000 18.00 ns/op 1113.03 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkIsMessage-12 2000000000 1.08 ns/op 18535.57 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_NewTransactionID-12 2000000 673.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessageFull-12 5000000 316.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessageFullHardcore-12 20000000 88.90 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_WriteHeader-12 200000000 8.18 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_CloneTo-12 30000000 37.90 ns/op 1795.32 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_AddTo-12 300000000 4.77 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkDecode-12 100000000 22.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkUsername_AddTo-12 50000000 23.20 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkUsername_GetFrom-12 100000000 17.90 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkNonce_AddTo-12 50000000 34.40 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkNonce_AddTo_BadLength-12 200000000 8.29 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkNonce_GetFrom-12 100000000 17.50 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkUnknownAttributes/AddTo-12 30000000 48.10 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkUnknownAttributes/GetFrom-12 100000000 20.90 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkXOR-12 50000000 25.80 ns/op 39652.86 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkXORSafe-12 3000000 515.00 ns/op 1988.04 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkXORFast-12 20000000 73.40 ns/op 13959.30 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkXORMappedAddress_AddTo-12 20000000 56.70 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkXORMappedAddress_GetFrom-12 50000000 37.40 ns/op 0 B/op 0 allocs/op
|
||||
ok github.com/pion/stun 76.868s
|
||||
BenchmarkMappedAddress_AddTo-12 32489450 38.30 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkAlternateServer_AddTo-12 31230991 39.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkAgent_GC-12 431390 2918.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkAgent_Process-12 35901940 36.20 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_GetNotFound-12 242004358 5.19 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_Get-12 230520343 5.21 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkClient_Do-12 1282231 943.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkErrorCode_AddTo-12 16318916 75.50 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkErrorCodeAttribute_AddTo-12 21584140 54.80 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkErrorCodeAttribute_GetFrom-12 100000000 11.10 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkFingerprint_AddTo-12 19368768 64.00 ns/op 687.81 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkFingerprint_Check-12 24167007 49.10 ns/op 1057.99 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkBuildOverhead/Build-12 5486252 224.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkBuildOverhead/BuildNonPointer-12 2496544 517.00 ns/op 100 B/op 4 allocs/op
|
||||
BenchmarkBuildOverhead/Raw-12 6652118 181.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_ForEach-12 28254212 35.90 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessageIntegrity_AddTo-12 1000000 1179.00 ns/op 16.96 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessageIntegrity_Check-12 975954 1219.00 ns/op 26.24 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_Write-12 41040598 30.40 ns/op 922.13 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessageType_Value-12 1000000000 0.53 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_WriteTo-12 94942935 11.30 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_ReadFrom-12 43437718 29.30 ns/op 682.87 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_ReadBytes-12 74693397 15.90 ns/op 1257.42 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkIsMessage-12 1000000000 1.20 ns/op 16653.64 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_NewTransactionID-12 521121 2450.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessageFull-12 5389495 221.00 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessageFullHardcore-12 12715876 94.40 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_WriteHeader-12 100000000 11.60 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_CloneTo-12 30199020 41.80 ns/op 1626.66 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkMessage_AddTo-12 415257625 2.97 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkDecode-12 49573747 23.60 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkUsername_AddTo-12 56282674 22.50 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkUsername_GetFrom-12 100000000 10.10 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkNonce_AddTo-12 39419097 35.80 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkNonce_AddTo_BadLength-12 196291666 6.04 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkNonce_GetFrom-12 120857732 9.93 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkUnknownAttributes/AddTo-12 28881430 37.20 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkUnknownAttributes/GetFrom-12 64907534 19.80 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkXOR-12 32868506 32.20 ns/op 31836.66 MB/s
|
||||
BenchmarkXORSafe-12 5185776 234.00 ns/op 4378.74 MB/s
|
||||
BenchmarkXORFast-12 30975679 32.50 ns/op 31525.28 MB/s
|
||||
BenchmarkXORMappedAddress_AddTo-12 21518028 54.50 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkXORMappedAddress_GetFrom-12 35597667 34.40 ns/op 0 B/op 0 allocs/op
|
||||
ok github.com/pion/stun 60.973s
|
||||
```
|
||||
|
||||
### Roadmap
|
||||
The library is used as a part of our WebRTC implementation. Please refer to that [roadmap](https://github.com/pion/webrtc/issues/9) to track our major milestones.
|
||||
|
||||
### Community
|
||||
Pion has an active community on the [Slack](https://pion.ly/slack).
|
||||
|
||||
Follow the [Pion Twitter](https://twitter.com/_pion) for project updates and important WebRTC news.
|
||||
|
||||
We are always looking to support **your projects**. Please reach out if you have something to build!
|
||||
If you need commercial support or don't want to use public methods you can contact us at [team@pion.ly](mailto:team@pion.ly)
|
||||
|
||||
### Contributing
|
||||
Check out the [contributing wiki](https://github.com/pion/webrtc/wiki/Contributing) to join the group of amazing people making this project possible: [AUTHORS.txt](./AUTHORS.txt)
|
||||
|
||||
### License
|
||||
MIT License - see [LICENSE](LICENSE) for full text
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue