Internet DRAFT - draft-dmudric-sipcore-sipv6-addr-selection
draft-dmudric-sipcore-sipv6-addr-selection
SIPCORE WG
Internet Draft D. Mudric
Avaya
D. Grebovich
Avaya
Expires: June 2020 January 2020
SIPv6 Headers and SDP Media Line Address Selection on Multihomed Hosts
draft-dmudric-sipcore-sipv6-addr-selection-00
Abstract
In the networks where multihomed hosts can have ULA and GUA addresses
from different ISPs, multiple SIP signaling and media connectivity
issues might arise due to inappropriate address selections. Some of
the problems are described in [RFC5220]. Since SIP and SDP allow IP
addresses to be embedded into their headers and lines, even if proper
addresses are selected initially, SIP is not equipped with the
mechanisms to respond to network events, and transition transport to
reachable addresses. As a result, SIP messages and media might be
filtered by routers, or discarded as unreachable destinations.
SIP protocol (RFC 3261) defines signaling messages and their headers.
This document describes how a multihomed host should select addresses
for SIP headers, like Contact and Via, to be reachable destinations.
Host SHOULD change a default router for uplink failures, remove
prefixes and addresses for unreachable ISP, and update contact
address list.
SDP protocol (RFC 3264) defines how participants in a session select
their parameters. This document describes how an offerer and answerer
on multihomed hosts should select their addresses. If one of the
selected addresses becomes unreachable, the document describes the
mechanism how a new one should be selected and renegotiated.
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026 except that the right to
produce derivative works is not granted.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Mudric Standards Track Expires - July 2020 [Page 1]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust’s Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Conventions used in this document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119 [i].
Table of Contents
1. Introduction...................................................3
2. Terminology....................................................3
3. Problem Statement..............................................4
3.1 Network Topology...........................................4
3.1.1 Ingress filtered signaling source address & Non optimal data
path 6
3.1.2 Unreachable media destination address 7
3.1.3 Ingress filtered media source address 7
3.1.4 Unreachable listening media socket address8
3.1.5 Unreachable signaling ULA destination 8
3.1.6 Unreachable media ULA destination8
3.2 Background: Multi-Homed Hosts..............................8
3.3 Identified Problems........................................9
3.4 Multihomed Host Unreachable due to Uplink Failure..........9
3.5 Multihomed Host INVITE Via Header Address Selection Issue.12
3.6 Multihomed Host SDP Address Selection Issues..............14
4. SIP Headers Address Selection.................................17
Mudric Expires - July 2020 [Page 2]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
4.1 REGISTER Contact Header Address Selection and Re-INVITE...18
5. SDP Address Selection.........................................19
6. Security Considerations.......................................21
7. IANA Considerations...........................................21
8. References....................................................21
9. Acknowledgments...............................................21
Author's Addresses...............................................21
1.
Introduction
It is common for enterprises to use two Internet Service Providers,
ISPs, to access the Internet. When IPv6 is enabled, host in those
networks have at least two IPv6 addresses, one for each ISP prefix.
IPv6 only SIP clients on these hosts register one IPv6 address at
which they can be reached. SIP Proxy forwards incoming INVITEs to the
registered contact address. The address should be reachable. If SIP
client registers all global IPv6 addresses, the list of addresses
should be ordered and SIP Proxy should check the reachability,
starting with the most preferred host IPv6 address.
When call sessions are initiated, the clients select one IPv6 address
for Via header, the address to which 200 OK response will be
delivered. When SIP Proxy forwards 200 OK to the offerers, the Via
address should be reachable.
During media parameters negotiation, offerer and answerer set IPv6
address on which they listen to the media. Media streams should be
able to reach these addresses.
2.
Terminology
IPv6-only: an entity that uses only Internet Protocol version 6,
IPv6, addresses
ISP: Internet Service Provider
SER: Site Edge Router. The router connecting a site to ISP uplink.
IPv6 Multihomed Host: Host with multiple IPv6 addresses
SASA: Source Address Selection (RFC 6724). Used by hosts to select
the best source IPv6 address, given IPv6 destination address.
DASA: Destination Address Selection (RFC 6724). Used to select the
best destination address, based on the available local addresses.
GUA: Global Unicast Address (RFC 3587). Enables hosts to be globally
reachable.
Mudric Expires - July 2020 [Page 3]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
ULA: Unique Local Address (RFC 4193). It is used for local
communication and is not globally reachable.
SLAAC: Stateless Address Autoconfiguration (RFC 4862). An algorithm
to auto-configure IPv6 addresses on hosts.
SDP: Session Description Protocol (RFC 3264 and RFC 6157)
RA: Router Advertisement (RFC 4861). A message multicasted from
router to hosts. Used to assign IPv6 address prefixes to hosts for
SLAAC usage and to announce its presence to hosts, after SER to ISP
uplink recovery.
getsockname():socket API function to get the socket SASA address from
TCP or UDP socket.
connect(): socket API provides the remote IPv6 address to the socket
SASA. (RFC 3493 & RFC 6316)
3.
Problem Statement
A network topology, configuration and transient events can affect SIP
signaling and media reachability. The transport protocols (like TCP
or UDP) caring SIP signaling or RTP media might be unable to reach
SIP hosts. Multihomed SIP hosts can experience:
- Unreachable signaling ULA destination,
- Unreachable signaling destination address,
- Ingress filtered signaling source address,
- Unreachable media ULA destination,
- Unreachable media destination address,
- Ingress filtered media source address,
- Unreachable listening media socket address, or
- Non optimal data path,
if a wrong IPv6 address is selected or, registered and negotiated
addresses are not updated during network failures and recoveries.
3.1
Network Topology
The topology similar to https://tools.ietf.org/html/draft-ietf-rtgwg-
enterprise-pa-multihoming-12#section-4.2 Figure 3, depicts multihomed
SIP hosts Ha and Hb, SIP Proxy, and the IPv6 address assignment. The
impact of uplink failure on Ha source address selection will be
explained. Further analysis will show that algorithms for SIP and SDP
address selection are needed to avoid reachability issues.
SITE-1 and SITE-2 have the same ISP-A and ISP-B service providers.
ISPs assign their prefixes 2000::/64 and 3000::64. Ha, Hb, and SIP
Mudric Expires - July 2020 [Page 4]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
Proxy have GUAs, created using ISP prefixes. R3 provides connectivity
to an isolated local segment (aka a private LAN segment) and
advertises ULA prefix. Ha and Hc have ULA addresses fc00::301 and
fc00::401.
SERa and SERb first-hop routers are selected based on the source
address prefixes [RFC8028]. The choice of Ha source address
determines the selection of the first hop (SERa or SERb) router and
ISP (ISP-A or ISP-B). If Ha selects 2000::201, packets would go over
SERa to ISP-A. If SERa and SERb use ingress filtering, they would
discard packets with source addresses that don't have their prefixes
(e.g. SERa would discard packets with 3000::/64 prefix). The figure
below can be further simplified, with Ha directly connected to SERa
and SERb, similar to SITE-2 topology.
When Ha needs to reach SIP Proxy at another site, it would use SASA
to select the source address, using SIP Proxy preferred address (e.g.
2000::101) as a destination. All traffic to SIP Proxy would leave
SITE-1 over the preferred ISP (e.g. ISP-A).
Mudric Expires - July 2020 [Page 5]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
SITE-1: SITE-2:
ISP-A prefix 2000::/48 ISP-A prefix 2000::/48
ISP-B prefix 3000::/48
+--------- SITE-1 ----------+ +---- SITE-2 ----+
| | | |
Ha addresses:
2000::201 --------
3000::301 ,-----. / \
fc00::301 +--+ +----+ ,' `. : :
+---|R1|---+---|SERa|-+ ISP-A +--+ :
| +--+ | +----+ `. ,' : : SIP Proxy
| | `-----' : Internet : 2000::101
| | 2000::/48 : : 3000::101
| | : : ,----. |
| | : : ,' `. +----+ |
Ha---+ +--+ : +--+ ISP-A +--+SERc+--+
| |R7| : : `. ,' +----+ |
| +--+ : : `-----' |
| | : : |
| | ,-----. : : |
| +--+ | +-----+ ,' `. : : ,----. |
+---|R2|---+--|SERb |-+ ISP-B +--+ : ,' `. +----+ |
| +--+ +-----+ `. ,' : +--+ ISP-B +--+SERd+--+
| `-----' : : `. ,' +----+ |
| 3000::/48 \ / `-----' |
| -------- Hb
+--+ 2000::102
Hc--|R3| ULA prefix fc00::/64 3000::102
+--+
fc00::401
Figure 1: SIPv6 Address Selection Impact on Multihomed Hosts and
Proxy
3.1.1 Ingress filtered signaling source address & Non optimal
data path
In this scenario, SERa uplink to ISP-A fails on SITE-1. Ha uses SERa
as the first hop router, when reaching SIP Proxy 2000::101,[RFC8028].
Ha source address is 2000::201, [RFC6724]. If uplink to ISP-A fails,
and SERa does not redirect packets to SERb, the SIP signaling link
breaks. To maintain the connectivity to SIP Proxy, Ha needs to use
SERb as the first hop router, since SIP Proxy is reachable via SERb,
and select 3000::301 source address to avoid ingress filtering on
SERb. If Ha changes the default route to SERb (when SERa detects the
uplink is down it sends RA with Router Lifetime of 0, indicating it
Mudric Expires - July 2020 [Page 6]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
is no longer the default router) but selects ISP-A based 2000::201
source address (SERa sends RA with Valid Lifetime of 0, but some
hosts don't immediately remove the addresses with the expired
prefix), and ingress filtering is enabled on SERb, SERb would discard
the packets and send a Destination Unreachable message with Code 5
(Source address failed ingress/egress policy) back to Ha. Ha not only
needs to change the default router to SERb, but also to expire
2000::201 and select 3000::301 when reaching SIP Proxy 2000::101.
In the same scenario, SIP Proxy is not aware that the uplink to ISP-A
failed and attempts to send messages to the most preferred registered
contact 2000::201, using its 2000::101 source address. ISP-A is
unusable and would have to re-route packets over Internet to SERb,
taking non-optimal route. Optimal route would be if SIP messages are
sent over ISP-B, which would happen if SIP Proxy knows 2000::201
contact SHOULD NOT be used, and messages should be sent to the next
preferred contact, 3000::301, destination over SERd. The contact list
would be updated if, on the ISP-A uplink failure, Ha Re-REGISTERed
with the new contact list (e.g with 3000::301).
In another scenario, SERc to ISP-A uplink fails on SITE-2. SIP Proxy
does not know the uplink to ISP-A failed and would try to send
messages to the most preferred registered contact 2000::201, using
its 2000::101 source address, over SERc first hop router. The
signaling link is broken. If SIP Proxy changes the default route to
SERd (when it receives RA from SERc), but selects ISP-A based
2000::101 source address to reach 2000::201 contact, and ingress
filtering is enabled, ISP-B would apply ingress filtering to source
address prefix (e.g. 2000::/64) and SIP Proxy would not be able to
talk to Ha.
3.1.2 Unreachable media destination address
If SERc uplink fails, the RTP media from Hb might be lost. Hb would
not detect the uplink failure and would continue sending RTP packets
to SERc, using previously offered Ha address (e.g. 'c'=2000::201).
SERc would not be able to deliver UDP media packets to Ha and would
not notify Hb about the uplink failure.
3.1.3 Ingress filtered media source address
The ingress filtering might happen with Hb media, trying to reach Ha
via ISP-B (SERc uplink failed) while using ISP-A based address (e.g.
RTP SRC = 2000::102) for previously offered Ha address (e.g.
'c'=2000::201). When the uplink fails, SERc can send RA with Router
Lifetime of zero, and 2000::/64 prefix lifetime of zero. Hb can use
this event to change the first hop router to SERd and expire its
2000::/64 address. If Hb still uses SDP negotiated Ha destination
Mudric Expires - July 2020 [Page 7]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
address 2000::201, selects its 2000::102 source address, and sends
RTP to SERd, SERd will ingress filter RTP media.
Hb SHOULD not only change the first hop router but also expire its
2000::102 address, and select its 3000::102 as the source address to
reach Ha over SERd.
3.1.4 Unreachable listening media socket address
Ha can open a listening socket using 2000::201 specific address and
offer SDP 'c'=3000::201. Hb media sent to 3000::201 would not be able
to reach the listening socket.
3.1.5 Unreachable signaling ULA destination
Ha can select fc00::301 for registration or Via header, and SIP Proxy
would not be able to send SIP INVITEs or 200 OK replies to ULA
destination address.
3.1.6 Unreachable media ULA destination
Ha can select fc00::301 for SDP 'c' line and Hb would not be able to
send media to ULA destination address.
3.2
Background: Multi-Homed Hosts
IPv6-only hosts can be assigned multiple IPv6 addresses, based on the
prefixes from multiple ISPs. Socket, sending a packet, uses Source
Address Selection, SASA, algorithm (RFC 6724), Rule 5.5, to select a
source address for the prefix advertised by a default router. RFC
8028 extends the reachability range by selecting the source address
based on the next hop router that can reach the destination. Based on
RFC 8028, by selecting a source address a multi-homed host selects a
first hop router to an ISP, using the source address prefix.
draft-ietf-rtgwg-enterprise-pa-multihoming recommends mechanisms to
detect an uplink to ISP failure and remove the prefix, default
router, and host addresses for unreachable ISP.
Unlike RFC 8028, where the source address selection was used to avoid
BCP 38 source address filtering, several use cases will be analyzed
to illustrate the problems when a wrong destination address is
selected, or unreachable address is still used. Use cases illustrate
Mudric Expires - July 2020 [Page 8]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
how ISPs ingress filtering, or site uplink failures, can cause
signaling or media paths breakages.
3.3
Identified Problems
The Figure 2 below is used to illustrate SIPv6 signaling and media
filtering or packet loss. Packets might not be delivered to GUA,
Global Unicast Address, destination (a site uplink with ISP failed:
draft-ietf-rtgwg-enterprise-pa-multihoming, or ingress filtering) or
ULA destinations.
Multihomed HostA has at least two IPv6 addresses, each one based on
ISP prefixes. A wrong address selection during SDP negotiation might
cause RTP destination unreachability and ingress filtering.
3.4
Multihomed Host Unreachable due to Uplink Failure
In the Figure 2, When HostA registers to SIP Proxy in the same ISP1
domain (using RFC 3261), it selects IPv6 address for the Contact
header. For incoming calls, SIP Proxy forwards the incoming INVITEs
to the IPv6 contact address, provided during the registration. If
HostA registers IPv6 address based on ISP1 prefix (e.g. 2000::/64 in
Figure 1), SIP Proxy forwards INVITEs to HostA address (e.g.
2000::201). HostA can register a list of its preferred addresses, and
SIP Proxy should use the list starting from the most preferred
address.
Mudric Expires - July 2020 [Page 9]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
| INVITE, 200 OK
[Internet] | to HostA
| |
+---------+ v
| |
+------| ISP1 |------+
| |2000::/48| |
uplink X +---------+ |
failed | |
| |
| |
[SITE-1] [SITE-2]
| | INVITE, 200 OK
| | to 2000::201
| | <-------------
+----+----+ +----+----+ +---------+
| | | +--+ |SIP Proxy|
+----| R1 | | R3 | | +---+2000::101|
+---------+ | |2000::/64| |2000::/64| | | |3000::101|
| | | +---------+ +---------+ +--+ +---------+
| HostA |---+ | | HA Contact: 2000::201
|2000::201| | +---------+ +---------+ | |
|3000::301| | | | | | |
+--------+ +----| R2 | | R4 +--+ |
|3000::/64| |3000::/64| | +---------+
+----+----+ +----+----+ +---| HostB |
REGISTER --> | | |2000::102|
Contact: 2000::201 | | |3000::102|
| | +---------+
INVITE --> [SITE 1] [SITE 2] <---------
Via: 2000::201 | +---------+ | 200 OK
| | | |
+------+ ISP2 |------+
|3000::/48|
+----+----+
|
|
[Internet]
Figure 2: SIPv6 INVITE to Failed Uplink
Figure 2 NOTE: HostA and SIP Proxy can be on different geographic
locations serviced by the same ISP1 and ISP2. In case preferred
message path from SIP Proxy to HostA is over ISP1, the destination
address might not be routable, if uplink to ISP1 fails and SIP Proxy
is still using HostA address with ISP1 prefix. Source address
filtering might apply if SIP Proxy changes the default router but not
the source address.
Mudric Expires - July 2020 [Page 10]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
If HostA sends REGISTER over ISP1, using SASA selected ISP1 based
contact (e.g. 2000::201 is selected as the best source address for
SIP Proxy destination 2000::101), and the uplink R1-ISP1 fails after
the registration, INVITE to HostA will be routed over R3-ISP1 and
Internet to ISP1. The uplink R1-ISP1 failed and ISP1 would route
INVITE over Internet to ISP2. The path is not optimal but INVITE
would reach HostA over R2.
If uplink R3-ISP1 fails and SIP Proxy sends INVITE to R3, the INVITE
will be lost.
HostA R1 R2 ISP1 ISP2 R3 R4 Proxy HostB
| | | | | | | | |
| RA(2000::/64) | | | | | | | |
|<---------------+ | | | | | | |
| RA(3000::/64) | | | | | | |
|<-----------------------+ | | | | | |
| | | | | | | |
+ SLAAC | | | | | | |
| (created 2000::201 & | | | | | | |
| 3000::301 ) | | | | | | |
| | | | | | | |
| REGISTER(Contact: 2000::201)| | | | | |
+--------------->+----------->+------->+-------->| |
| | | | | | | | |
| | | |<---X-->| | | |
| | | | | | | | INVITE |
| | | | | | |<-----------+
| | | | | | INVITE | |
| | | X<-------+<--------+ |
| | | | DstIP: 2000::201 | |
Figure 3: SIPv6 INVITE to Failed Uplink Call Flow
If uplink R3-ISP1 fails and INVITE is to be sent to HostA, SIP Proxy
might be able to use RA notification from R3 and change the default
router to R4. If SIP Proxy still uses the old contact preference, it
will select 2000::101 source address and R4 might apply ingress
filtering to INVITE.
Mudric Expires - July 2020 [Page 11]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
HostA R1 R2 ISP1 ISP2 R3 R4 Proxy HostB
| | | | | | | | |
| RA(2000::/64) | | | | | | | |
|<---------------+ | | | | | | |
| RA(3000::/64) | | | | | | |
|<-----------------------+ | | | | | |
| | | | | | | |
+ SLAAC | | | | | | |
| (created 2000::201 & | | | | | | |
| 3000::301 ) | | | | | | |
| | | | | | | |
| REGISTER(Contact: 2000::201)| | | | | |
+--------------->+----------->+------->+-------->| |
| | | | | | | | |
| | | |<---X-->| | RA | |
| | | | | |-------->| |
| | | | | | | | INVITE |
| | | | | | X<----+<-----------+
| | | | | | | DstIP: 2000::201 |
| | | | | | | SrcIP: 2000::101 |
| | | | | | |default via R4 |
Figure 4: SIPv6 INVITE Ingress Filtering Call Flow
The solution for these problems is explained in section 4.1, REGISTER
Contact Header Address Selection.
3.5
Multihomed Host INVITE Via Header Address Selection Issue
In some scenarios, R2 might provide connectivity to a private
network. R2 might use ULA, Unique Local Address, address prefix
0xFC00::/7 (RFC 4193) for SLAAC, Stateless Address Autoconfiguration,
assignments. Multihomed HostA would receive prefixes from both R1 and
R2, and create at least one SLAAC GUA address based on ISP1 prefix,
and at least one SLAAC ULA address, based on R2 prefix. When
communicating with the external hosts, with GUA address, HostA should
be able to select the ISP1 based global address. When talking to
devices in the private network, it should select ULA address.
Mudric Expires - July 2020 [Page 12]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
| INVITE, 200 OK
[Internet] | to HostA
| |
+---------+ v
| |
+------------| ISP1 |----------+
| |2000::/48| |
| +---------+ |
| X ULA |
| ^ ingress |
| | filtering |
| | |
| | |
[SITE-1] | [SITE-2]
| | |
+---------+ | +----------+
| | | | |
+----| R1 | | | R3 |
+-------+ | |2000::/64| | | 2000::/64|
| | | +---------+ | +----------+
| HostA |---+ | | ^
| | | +---------+ | +-----+-----+ |
+-------+ | | | INVITE, 200 OK | | 200
2000::201 +----| R2 | to fc00::301 | | OK
fc00::301 |fc00::/64| +---------+ +-------+
+---------+ | SIP | | HostB |
REGISTER --> | | Proxy | +-------+
Contact: fc00::301 | |2000::101|
| +---------+
INVITE --> |Black LAN HA Contact: fc00::301
Via: fc00::301 +----------+
| |
| HostC |
| fc00::401|
+----------+
Figure 5: SIPv6 ULA Filtering
If HostA makes a call to HostB, it adds its IPv6 address to INVITE
Via header (using RFC 3261). When HostB replies with 200 OK, SIP
Proxy forwards the message to the topmost address in Via header (see
RFC 3261). If HostA selects ULA address (e.g. fc00::301) for Via
header, SIP Proxy forwards 200 OK to SER R3, and the 200 OK gets
discarded sine ULA destination address is not globally routable.
Mudric Expires - July 2020 [Page 13]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
HostA R1 R2 ISP1 ISP2 R3 R4 Proxy HostB
| | | | | | | | |
| RA(2000::/64) | | | | | | | |
|<---------------+ | | | | | | |
| RA(fc00::/64) | | | | | | |
|<-----------------------+ | | | | | |
| | | | | | | |
+ SLAAC | | | | | | |
| (created 2000::201 & | | | | | | |
| fc00::301 ) | | | | | | |
| | | | | | | |
| INVITE(Via: fc00::301) | | | | | | |
+--------------->+----------->+------->+-------->+----------->|
| | | | | | | | |
| | | | | | | | 200 OK |
| | | X<-------+<--------+<-----------+
| | | | (Via: fc00::301)| |
| | | | SrcIP: 2000::101| |
| | | | default via R3 | |
Figure 6: SIPv6 ULA Filtering Call Flow
3.6
Multihomed Host SDP Address Selection Issues
SDP, Session Description Protocol, (RFC 3264 and RFC 6157) Offerer
IPv6 address might not be the best selected address on a multihomed
host.
draft-gont-6man-address-usage-recommendation, section 3, recommends
to bind() a listening socket to a specific address of a given scope,
instead of to the unspecified address, to avoid attacks by narrowing
the address scope. The offerer might open a listening media socket
and selects the socket source address using the socket SASA to SIP
Proxy destination (e.g. listen on 2000::201, instead of listening on
any address). If the Offerer randomly select IPv6 address for SDP 'c'
line (e.g. 3000::301 in Figure 1 or fc00::301 in Figure 2), a
destination answerer might get a different IPv6 address in SDP 'c'
line than the one selected by the offerer's socket SASA, and the
offerer might become unreachable.
Mudric Expires - July 2020 [Page 14]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
HostA R1 R2 Proxy HostB
| | | | |
| RA(2000::/64) | | | |
|<---------------+ | | |
| RA(3000::/64) | | |
|<-----------------------+ | |
| | | |
+ SLAAC | | |
| (created 2000::201 & | | |
| 3000::301 ) | | |
| | | |
+ open media socket | |
| (SASA for dest. Proxy) | |
| (listening IP=2000:2001) | |
| | |
| INVITE ('c'=3000::301) | |
+--------------->+------------->| |
| (Via: 2000::201) | |
| | | | INVITE |
| | | +----------->|
| | | | 200 OK |
| | | |<-----------+
| 200 OK | 200 OK | (Via: 2000::201)
|<---------------+<-------------+ |
| ACK | ACK | |
+--------------->+------------->| |
| | | ACK |
| | | |----------->|
| | | | |
| | MEDIA |
X<===============+<==========================|
| (DstIP: 3000::301 |
Figure 7: Offerer Listening Socket Unreachable
Offerer's socket would apply SASA for SIP Proxy address (e.g.
2000::101 would be passed to the socket connect() API) and select
2000::201 for the socket source address. SDP protocol does not have
an algorithm for 'c' line address selection and might select
unreachable address (e.g. fc00::301) for the 'c' line. If the
answerer sends media to the offered address (e.g. fc00::301), media
might not reach the Offerer, since fc00::301 is not globally
routable.
Mudric Expires - July 2020 [Page 15]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
HostA R1 R2 Proxy HostB
| | | | |
| RA(2000::/64) | | | |
|<---------------+ | | |
| RA(fc00::/64) | | |
|<-----------------------+ | |
| | | |
+ SLAAC | | |
| (created 2000::201 & | | |
| fc00::301 ) | | |
| | | |
+ open media socket | |
| (SASA for dest. Proxy) | |
| (listening IP=2000:2001) | |
| | |
| INVITE ('c'=fc00::301) | |
+--------------->+------------->| |
| (Via: 2000::201) | |
| | | | INVITE |
| | | +----------->|
| | | | 200 OK |
| | | |<-----------+
| 200 OK | 200 OK | (Via: 2000::201)
|<---------------+<-------------+ |
| ACK | ACK | |
+--------------->+------------->| |
| | | ACK |
| | | |----------->|
| | | | |
| | MEDIA |
| X<==========================|
| | DstIP: fc00::301 |
Figure 8: Media to ULA Lost
In addition, if the offerer selects GUA SDP 'c' (e.g. 2000::201 on
Figure 1), the media packets sent from the answerer (e.g. HostB), to
HostA (e.g. 2000::201) address, might be filtered by ISP2. R3-ISP1
uplink fails, R3 sends RA to HB, telling the host R3 should not be
used as default router. If HB does not expire 2000::/64 prefix and
addresses, it might use SASA to select the source address for
'c'=2000::201 destination, and select 2000::102 address. R4 would
ingress filter the media with 2000::102 source address.
Mudric Expires - July 2020 [Page 16]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
HostA R1 R2 ISP1 ISP2 R3 R4 Proxy HostB
| | | | | | | | |
| RA(2000::/64) | | | | | | | |
|<---------------+ | | | | | | |
| RA(3000::/64) | | | | | | |
|<-----------------------+ | | | | | |
| | | | | | | |
+ SLAAC | | | | | | |
| (created 2000::201 & | | | | | | |
| 3000::301 ) | | | | | | |
| | | | | | | |
| INVITE('c'=2000::201) | | | | | | |
+--------------->+----------->+------->+-------->|----------->|
| | | | | | | | |
| | | | | | | | 200 OK |
+<---------------+<-----------+<-------+<--------|<-----------|
| | | |<---X-->| | ('c'=2000:102)|
| | | | | | | | |
| | | | | | RA(Router Lifetime=0)|
| | | | | |--------------------->|
| | | | | | | | media |
| | | | | | X<=================+
| | | | | | | DstIP: 2000::201 |
| | | | | | | SrcIP: 2000::102 |
| | | | | | |default via R4 |
Figure 9: SIPv6 Media Ingress Filtering Call Flow
The solution to this problem is explained in detail in section 6, SDP
Address Selection.
4.
SIP Headers Address Selection
When a multi-homed host selects IPv6 address for a SIP header (e.g.
Contact or Via header), it is important to select the address that
will be reachable via the underlined network. SIP Signaling socket
(e.g. TCP socket) solves the reachability problem by using the Source
Address Selection, SASA, algorithm from RFC 6724, for a known
destination.
For the examples exercised on Figure 1 and Figure 2:
- SIP REGISTER message is sent from HostA to SIP Proxy destination
and the socket applies SASA to that destination, to select the packet
source address, and
Mudric Expires - July 2020 [Page 17]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
- SIP INVITE is sent from HostA to SIP Proxy destination and the
socket applies SASA to that destination to select the packet source
address.
The same socket SASA SHOULD be used to select the addresses for SIP
headers, so SIP messages sent to the selected addresses will not be
filtered out. getsockname() socket API can be used to obtain the SASA
address for a known destination (passed in connect() socket API).
For the examples exercised on Figure 1 and Figure 2:
- SIP REGISTER message: HostA SHOULD use socket SASA to SIP Proxy
destination and set the selected SASA address to REGISTER Contact
header.
- SIP INVITE: HostA SHOULD use socket SASA to SIP Proxy destination
and set the selected SASA address to INVITE Via header.
For the second and third problem in section 3.1.1, SERc SHOULD expire
2000::/64 prefix, so SIP Proxy SHOULD stop using 2000::101 address,
change the default router to SERd, make 3000::301 the preferred Ha
contact, and use 3000::101 as the source address, to talk to Ha
3000::301 over SERd.
The details about SASA improvements and dynamic address updates are
in section 4.1.
4.1
REGISTER Contact Header Address Selection and Re-INVITE
Draft draft-ietf-rtgwg-enterprise-pa-multihoming recommends:
" A host is expected to be able respond
dynamically to the failure of an uplink to a given ISP by no longer
sending packets with the source address corresponding to that ISP."
The current SASA address selection does not solve this problem. The
solution SHOULD update SASA rule 5.5 to check for the reachability
and avoid using a prefix from the router over which destination is
not reachable. That would make HostA select ISP2 based address (e.g.
3000::301) for the REGISTER contact, when the uplink to ISP1 fails
and SIP Proxy address (based on ISP1 prefix) is the destination.
Another solution is provided by routers. When the reachability to a
preferred ISP1 is lost, RA will be received from SERa for the
unreachable ISP-A, with the preferred life time of zero, Router
Lifetime of 0, and HostA SHOULD remove SERa as a default router,
remove ISP1 based address (e.g. 2000::201) and send Re-REGISTER (to
update contact to 3000::301) and Re-INVITE (to renegotiate 3000::301
IPv6 address) over SERb, using ISP-B based source address (e.g.
Mudric Expires - July 2020 [Page 18]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
3000::301). Upon the uplink recovery, the contact and media addresses
SHOULD be updated using SASA for the address selection. Next
paragraph describes in details media address selection and
renegotiation.
The first problem in the section 3.1.1 can be solved by SERa
detecting the uplink failure and instructing R1 to expire ISP-A
prefix. When RA message is received with the Router Lifetime of zero
and 2000::/64 prefix lifetime of zero, Ha SHOULD change the default
router to SERb, expire 2000::201 address, and use 3000::301 as the
source address, while talking to SIP Proxy 2000::101 over SERb. Ha
SHOULD Re-REGISTER the new contact 3000::301. SIP Proxy SHOULD
immediately update its contacts and stop using 2000::201 destination.
SIP messages SHOULD be sent from SIP Proxy address selected for the
HostA reachable destination. A solution might be for HostA to
register a prioritized list of contact addresses, based on SASA and
other policies. SIP Proxy SHOULD probe the contact addresses,
starting from the most preferable one, till it finds a reachable one.
SASA SHOULD be applied to the reachable destination address, and the
selected SASA address would determine the first hop router. Hosts
SHOULD be responsible to update the contact list based on network
failures (a link to the first hop router or uplink to ISP failure)
and recoveries.
5.
SDP Address Selection
SDP 'c' line address selection needs to be defined for the initial
offer from a multihomed host. Initially, the offerer does not have
the answerer address. The selected IPv6 address might not be the best
choice. A subsequent address selection might be needed to get the
right offerer address.
SASA from RFC 6724 SHOULD be used to select the IPv6 address for SDP
'c' lines. If SASA is used it becomes apparent that:
- A destination address needs to be chosen for the initial offer.
SASA SHOULD applied to that address and the result is used for 'c'
line.
- When the offerer receives 200 OK and learns the destination
address, the offerer might find the address selected during the
initial SASA is not the right address.
To reach a destination (SDP answerer), SIP offer must go via SIP
server. That is why SIP server IPv6 address SHOULD be used for the
initial SASA.
Mudric Expires - July 2020 [Page 19]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
When SDP negotiation is done, the offerer learns the answerer IPv6
address. The offerer applies SASA to the answerer preferred address.
The initially offered IPv6 address might not be the best SASA
address. This might cause the source IPv6 socket address in the
subsequent media packets to be different than the initially offered
SDP 'c' line address. To prevent this, the offerer SHOULD do the
second SASA, using the answerer 'c' line address as the destination.
If SASA returns a different source address, the offerer SHOULD send
Re-INVITE to renegotiate media addresses and open a new socket, using
the newly selected source address. The initial socket SHOULD be
closed.
It is equally important for the answerer to apply SASA on the offered
IPv6 address, when selecting the 'c' line address in 200 OK SDP.
If SDP offer has two IPs of different address families (ALTC in RFC
6947), an address selection algorithm is needed to select the address
for the opposite address family. The second media line address SHOULD
be selected using:
- SASA, if the SIP Proxy IP of the opposite address family is known.
- Otherwise, the algorithm for the best 'guess' for the second
address SHOULD be applied:
-- Select the IP of the opposite address family from the same
interface from which the fist IP was selected
-- If the second address is IPv6, prefer an address with a bigger
scope. Prefer global over ULA address.
-- If the second address is IPv4, prefer a public over a private
address.
-- More rules can be added, like if there are multiple addresses of
the same scope, prefer manual over DHCP over stateless addresses.
- Upon receiving of the offer, the answerer responds to the offer
with the acceptance response (200 OK), using a preferred IP address
from the offered SDP (e.g. a preferred 'altc' line) as a destination
address for its SASA address selection. The selected address is set
into preferred 200 OK SDP media line.
- The offerer now has the IP address of the destination host. If the
source address, selected using the IP address from the acceptance
response from the answerer, is the same IP address selected for the
initial offer, the offerer address selection is completed.
- If the selected address in the previous step is different from the
address in the initial offer, the offerer sends Re-INVITE, using the
address selected in the previous step. The second media IP address,
if needed, is selected using the rules above.
Mudric Expires - July 2020 [Page 20]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
The side effect of Re-INVITE is that media path might be different,
and more optimal, than the signaling path.
The offerer can advertise multiple IPv6 addresses in the initial SDP
offer (ICE RFC 5245). The SASA preferred address, for SIP Proxy
destination, SHOULD be the highest priority address. When the
answerer sets SDP media address, or the host candidates, it SHOULD
use Destination Address Selection, DASA, algorithm (RFC 6724) to
select the preferred destination address for a media stream. The
selected destination SHOULD be used during SASA to select the
answerer preferred address. The answerer can offer the preferred
address or the prioritized host candidate list.
6.
Security Considerations
This document recommends the use of existing standards to address the
SIP Signaling and Media address selection. The security
recommendations in outlined standards should be followed.
7.
IANA Considerations
There is no impact on existing SIP and IPv6 messages.
8.
References
9.
Acknowledgments
The author gratefully acknowledges the contributions of: Rifaat
Shekh-Yusef.
Author's Addresses
Dusan Mudric
Avaya
425 Legget Dr.
Ottawa, ON
K2K 3C9
Canada
Email: dmudric@avaya.com
Dragan Grebovich
Avaya
4655 Great America Parkway
Santa Clara, CA
Mudric Expires - July 2020 [Page 21]
Internet-draft SIPv6 Address Selection on Multihomed Hosts January 2020
95054
USA
Email: dgrebovich@avaya.com
Mudric Expires - July 2020 [Page 22]