GRUU Mechanism Jonathan Rosenberg Status Draftrosenbergsippinggruureqs01 defines the
GRUU Mechanism Jonathan Rosenberg
Status • Draft-rosenberg-sipping-gruu-reqs-01 defines the problem • Draft-rosenberg-sip-gruu submitted with proposed solution • Needed for – App interaction – Consultative transfer – Presence
Mechanism Summary • Obtaining a GRUU – REGISTER request has Supported: gruu – Each Contact in the response has a gruu parameter with GRUU • Using a GRUU – Place into Contact URI of INVITE/200 – Include Supported: gruu Registrar REGISTER Supported: gruu 200 OK Contact: Sip: a@b; gruu=c@d;
Open Issues • GRUU lifecycle definition • Dialog reuse • Locally generated GRUU
GRUU Lifecycle Management • Can GRUU change during a registration? [N] – What happens if gruu parameter is placed in REG request? [ignored] – What happens if registrar changes gruu in response? [not allowed] – Implication: registrar has to remember gruu for lifetime of registration • Can be different across different registrations of the same contact • GRUU is not randomized across transactions – privacy implications?
Dialog Reuse • GRUU can allow us to eliminate dialog reuse – Many problems with it – Underspecified in RFC 3261 – Bad idea • Do we have GRUU spec say that you should not do dialog reuse if your peer supports GRUU? – Will need to fix REFER for that to work or except REFER – Or do we live with the mistake?
Locally Generated GRUU • Putting a GRUU in the Contact will end direct signaling • A UA can try to generate its own local GRUU and use that – But how does it know that it is reachable at that GRUU? – Proposed solution: ICE
ICE Approach Proxy INVITE Contact: sip: a@domain; alt=sip: a@ip-addr Callee
ICE Approach Proxy Doesn’t RR INVITE Contact: sip: a@domain; alt=sip: a@ip-addr Callee
ICE Approach Proxy 200 OK Contact: sip: b@domain; alt=sip: b@ip-addr 2 Caller Callee
ICE Approach Proxy 200 OK Contact: sip: b@domain; alt=sip: b@ip-addr 2 Caller Callee
ICE Approach Proxy Caller OPTIONS b@ip-addr 2 Callee
ICE Approach B knows that A was able to Reach him @ip-addr 2 So he can now Re-invite to update Contact Caller 200 OK Proxy Callee
ICE Approach Proxy INVITE Contact: sip: b@ipaddr 2; Caller Callee
ICE Approach Proxy INVITE Contact: sip: b@ipaddr 2; Caller Callee
ICE Approach Proxy 200 OK Contact: sip: a@domain; sip: a@ip-addr Callee
ICE Approach Proxy 200 OK Contact: sip: a@domain; sip: a@ip-addr Callee
ICE Approach Proxy Caller OPTIONS a@ip-addr Callee
ICE Approach Proxy Caller 200 OK Callee
Caveats • A and B both have to OPTIONS separately – Connectivity must be tested in each direction • OPTIONS is not on the same dialog as INVITE • Need to have randomization on OPTIONS to avoid glare • Doesn’t work if a proxy record-routed INVITE – Connectivity check would need to be from outermost proxy to UA – no easy way to do this – Source routing would reuse dialog route headers – not allowed
Proposal • Add this as an optional mechanism to the draft • Recommend that this is the ONLY way you can use locally generated GRUU
- Slides: 21