CM,Endpoint: H323 endpoint (One-X Agent) behind NAT cannot register


Doc ID    SOLN319272
Version:    1.0
Status:    Published
Published date:    09 Dec 2017
Author:   
Levente Szabo
 

Details

CM 7.1 + One-X Agent 2.5.11 H.323

Problem Clarification

H323 One-X Agent behind NAT cannot register.

Cause

The TCP session should be built on the exact same ip address and port that is in the
H225 call signaling section. NAT device shoud properly replace ip address and port info in higher layer protocoll as well.

As the below screenshot shows the 1XA L3 IP address is set as: 100.64.100.2 which is its NAT translated address whereas the call signaling IP address in H.225 (app layer) is set as 100.64.90.132 which is its NATIVE address.
1XA attempts to open TCP socket at 100.64.100.2:45512 but CM will send FIN,ACK eventually. This is caused by the fact that in the RRQ (registration request) the call signaling info the station advertises is: 100.64.90.132:45512 aka its NATIVE address thus CM expects the station open the TCP session using this NATIVE address, however, in fact, the set tries to register from 100.64.100.2:45512 aka its NAT-ed address which CM will reject hence closing the TCP session.

 

Another example from MST trace shows that the station uses its NAT address (100.64.64.40:45631) as source in the Registration Request  but advertises its NATIVE address (100.64.110.33:41745) in call signaling section of the H.225  (output is clipped for the relevant parts):

  259  13:43:19.680  80          ==> Dolan RAS In

 
            From IPAdr:   100.64.64.40   From Port:45631    <<<<<<< source: NAT translated address, the station will also use this to initiate TCP session, which thus will fail.
            To IPAdr:      10.250.96.3     To Port:1719   UID: 0x9f96
RasMessage CHOICE [index = 3]
  registrationRequest RegistrationRequest SEQUENCE [root fieldcount (not encoded) = 9]
    requestSeqNum RequestSeqNum INTEGER [length (not encoded) = 2.0]
      112
    protocolIdentifier ProtocolIdentifier OBJECT IDENTIFIER [length = 6.0]
      { 0 0 8 2250 0 5 }
    nonStandardData NonStandardParameter SEQUENCE [fieldcount (not encoded) = 2]
      nonStandardIdentifier NonStandardIdentifier CHOICE [index = 0]
        object ObjectIdentifier OBJECT IDENTIFIER [length = 10.0]
          { 2 16 840 1 113778 4 2 1 }
      data OctetString OCTET STRING [length = 31.0]
        0x09810100241e89000120010006f0761cd573a0010005c0ffffffff01800100
    discoveryComplete BOOLEAN [length (not encoded) = 0.1]
      TRUE
    callSignalAddress SeqOfTransportAddress SEQUENCE OF [count = 1]
      TransportAddress CHOICE [index = 0]
        ipAddress SEQUENCE [fieldcount (not encoded) = 2]
          ip IP OCTET STRING [length (not encoded) = 4.0]
            0x64406e21   <<<<<<<<<<  this is hex format of 100.64.110.33   <<<<<< NATIVE/ORIGINAL address. NAT device should replace this with the NAT'd address
          port INTEGER [length (not encoded) = 2.0]
            41745   <<<<<<<< NATIVE/ORIGINAL port info. NAT device should replace this with the NAT'd poprt.
    rasAddress SeqOfTransportAddress SEQUENCE OF [count = 1]
      TransportAddress CHOICE [index = 0]
        ipAddress SEQUENCE [fieldcount (not encoded) = 2]
          ip IP OCTET STRING [length (not encoded) = 4.0]
            0x64404028   <<<<<<<<<<  this is hex format of 100.64.64.40  <<<<< NAT translated address
          port INTEGER [length (not encoded) = 2.0]
            45631  <<<<<<<   NAT translated port
    terminalType EndpointType SEQUENCE [root fieldcount (not encoded) = 3]
      terminal TerminalInfo SEQUENCE [fieldcount (not encoded) = 0]
      mc BOOLEAN [length (not encoded) = 0.1]
        FALSE
      undefinedNode BOOLEAN [length (not encoded) = 0.1]
        FALSE
    terminalAlias SeqOfAliasAddress SEQUENCE OF [count = 1]
      AliasAddress CHOICE [index = 0]
        e164 IA5String [length = 4.0]
          "6601"

Solution

For the registration to be successful one of the
below conditions should be met:
- either endpoint should use its native address and port data -as advertised in call signaling
info in H225- for the TCP handshake and TCP session,
- or call signaling info in H225 should be properly replaced by the NAT device to the correct NAT-ed
ip address and port of the endpoint that station uses to initiate the TCP session.


Avaya -- Proprietary. Use pursuant to the terms of your signed agreement or Avaya policy