Opened 17 years ago
Closed 17 years ago
#485 closed enhancement (fixed)
Support for new TURN draft (TURN-07) and latest ICE draft (ICE-19)
Reported by: | bennylp | Owned by: | bennylp |
---|---|---|---|
Priority: | major | Milestone: | release-0.9.0 |
Component: | pjnath | Version: | trunk |
Keywords: | Cc: | ||
Backport to 1.x milestone: | Backported: |
Description
Change History (25)
comment:1 Changed 17 years ago by bennylp
- Status changed from new to assigned
comment:2 Changed 17 years ago by bennylp
In r1812:
- Initial TURN server implementation (not yet compilable)
comment:3 Changed 17 years ago by bennylp
More work in r1850
comment:4 Changed 17 years ago by bennylp
- Summary changed from Support for new TURN draft (TURN-06) and latest ICE draft (ICE-19) to Support for new TURN draft (TURN-07) and latest ICE draft (ICE-19)
In r1852:
- Updated PJNATH with TURN-07
- Added authentication in TURN server (pjturn-srv)
comment:5 Changed 17 years ago by bennylp
In r1854:
- Initial (incomplete) work on TURN client session module
comment:6 Changed 17 years ago by bennylp
In r1862:
- Initial implementation (untested) of UDP TURN client session.
comment:7 Changed 17 years ago by bennylp
In r1867:
- Added TURN client application
comment:8 Changed 17 years ago by bennylp
Huge changes in STUN framework to streamline STUN authentication in r1877:
- server authentication using dynamic credential should not ask for the username from the credential, but rather just verify that the username/password match.
- STUN session now requires short term or long term credential to be specified in pj_stun_session_set_credentials()
- moved pj_stun_create_key() from sip_msg.[hc] to stun_auth.[hc]
- add password_type parameter in pj_stun_create_key(), for calculating key from saved hashed password
- STUN session now reports incoming requests as rdata rather than the plain request message. The rdata contains additional authentication info/credential that is found in the request, to be used to create response.
- added unit test for session authentication
comment:9 Changed 17 years ago by bennylp
comment:10 Changed 17 years ago by bennylp
In r1882:
- updated Makefiles and fixed compilation warnings with gcc
comment:11 Changed 17 years ago by bennylp
In r1885:
- fixed wrong encoding of CHANNEL-NUMBER attribute
comment:12 Changed 17 years ago by bennylp
Huge changeset related to TURN in r1913:
STUN:
- STUN session operations now has something called token, which will be passed back to application in the callbacks. This is very useful if application wants to associate something with the operation, for example, TURN server needs to respond to initial Allocate request using the same transport/socket as where the request came from, and it can put the transport instance as token.
- Fixed bug: STUN requests still get retransmitted even when TCP is used.
TURN:
- Support for TURN UDP over TCP in both server and client
- Merge UDP and TCP TURN client socket abstraction into just one object (turn_sock.c) rather than separately (as turn_udp.c) as they share very similar implementation.
- Testing
- Updated build system for VS6, VS8, CE, GNU, and Symbian
comment:13 Changed 17 years ago by bennylp
comment:14 Changed 17 years ago by bennylp
In r1916:
- Removed pjstun-srv-test project/application and fixed build errors with makefiles
comment:15 Changed 17 years ago by bennylp
In r1917:
- Now really removed pjstun-srv-test (!)
comment:16 Changed 17 years ago by bennylp
In r1923:
- fixed REQUESTED-TRANSPORT endianness
comment:17 Changed 17 years ago by bennylp
In r1924:
- Fixed permission not allowing peer with the same IP address but different port to get through
- Added option to disable FINGERPRINT verification. This is needed in TURN server since it is currently broken when TURN is used with ICE (which has a FINGERPRINT in its Binding Request)
comment:18 follow-up: ↓ 19 Changed 17 years ago by bennylp
Created new branch branches/projects/ice-turn07.
All new checkins will go here.
comment:19 in reply to: ↑ 18 Changed 17 years ago by bennylp
comment:20 Changed 17 years ago by bennylp
Huge changeset in r1926 (ice-turn07 branch):
- Integration and testing of TURN with ICE with PJSUA-LIB with pjsua
- RTCP via TURN is still broken it seems
- Many experimental new options were added in PJSUA-LIB/pjsua
Below are the details.
PJNATH:
- Added relay candidate in ice-strans
- Changes in ice-strans initialization to support TURN, this is accomplished with pj_ice_strans_cfg structure.
- Currently DNS SRV resolution for STUN and TURN is not supported. Application (e.g. PJSUA-LIB) must do the SRV resolution.
- ICE session was also modified to support TURN candidate
PJMEDIA:
- Support TURN in ICE media transport.
- Change ICE media transport initialization to support TURN
PJSUA-LIB:
- Added TURN related settings
- Added more ICE related settings for testing (ice_options, ice_no_rtcp).
pjsua:
- --use-turn: To enable TURN. The configuration is still hard-coded in pjsua_app.c
- --ice-no-host: Disable host candidates in ICE
- --ice-no-srflx: Disable STUN candidates in ICE
- --ice-no-rtcp: Disable RTCP in ICE
comment:21 Changed 17 years ago by bennylp
Merging the changes to trunk
Starts below..
comment:22 Changed 17 years ago by bennylp
In r1988:
- Added STUN socket transport pj_stun_sock
- Integration of TURN-07 to ICE
- Major refactoring in ICE stream transport to make it simpler by reusing existing transport classes.
- Major modification (i.e. API change) in almost everywhere else to support server side authentication, handling/protection of destruction in callback, and generally to make it more robust.
- More elaborate STUN, TURN, and ICE tests in pjnath-test.
comment:23 Changed 17 years ago by bennylp
In r1989:
- major modification in pjmedia's ICE transport to support the new ICE API. The new pjmedia's ICE transport API is much simpler now (only one public API is required).
comment:24 Changed 17 years ago by bennylp
In r1990:
- Added TURN support in PJSUA-LIB API
comment:25 Changed 17 years ago by bennylp
- Resolution set to fixed
- Status changed from assigned to closed
Note: See
TracTickets for help on using
tickets.
In r1811: