2.2.2.16 XOR Mapped Address

This section follows the product behavior as described in the product behavior note <14>

The XOR Mapped Address attribute is specified in [IETFDRAFT-STUN-02] section 10.2.12. This protocol uses the XOR Mapped Address attribute to indicate to the protocol client its reflexive transport address. The protocol client can use this to help identify the type of NAT it is behind.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Attribute Type

Attribute Length

Reserved

Family

X-Port

X-IP Address

Attribute Type (2 bytes): The TURN attributes are specified in [IETFDRAFT-STUN-02] section 10.2 and [IETFDRAFT-TURN-08] section 9.2. Set to "0x8020".

Attribute Length (2 bytes): Length of the following fields. Set to "0x0008" (8) for an IPv4 address or "0x0014" (20) for an IPv6 address.

Reserved (1 byte): The first 8 bits are used for alignment purposes and are ignored.

Family (1 byte): The address family of the IP Address. It MUST have the value "0x01" for an IPv4 address or "0x02" for an IPv6 address. If the value is anything other than 0x01 or 0x02, the attribute MUST be silently ignored.

X-Port (2 bytes): A network byte ordered representation of the source port that the Allocate request message was received from. This value is created from the exclusive-or of the source port with the most significant 16 bits of the Transaction ID. If the source port was "0x1122" (network byte order) and the most significant 16 bits of the Transaction ID was "0x4455" (network byte order), the resulting X-Port is 0x1122 ^ 0x4455 = 0x5577.

X-IP Address (4 bytes or 16 bytes): The client’s IPv4 or IPv6 address.

If the address family is IPv4 (Family is set to "0x01"), this is the client’s network byte ordered 32-bit (4 byte) IPv4 address. This value is created from the exclusive-or of the IP address with the most significant 32 bits of the Transaction ID specified in section 2.2.1. If the IPv4 address was 0x11223344 and the most significant 32 bits of the Transaction ID (specified in section 2.2.1) was 0xaabbccdd, the resulting X-Address is "0x11223344 ^ 0xaabbccdd = 0xbb99ff99". 

If the address family is IPv6 (Family is set to "0x02"), this is the client’s network byte ordered 128-bit (16 byte) IPv6 address. This value is created from the exclusive-or of the IP address with the 128 bits of the Transaction Id specified in section 2.2.1. If the IPv6 address was 0x20010DB8112233445566778899AABBCC and the 128bit Transaction ID (specified in section 2.2.1) was 0x112233445566778899AABBCCDDEEFF00, the resulting X-Address is "0x20010DB8112233445566778899AABBCC ^ 0x112233445566778899AABBCCDDEEFF00 = 0x31233EFC444444CCCCCCCC44444444CC ".