"register.contact.remote" works correctly ?

Discuss any topic about Brekeke SIP Server.

Moderator: Brekeke Support Team

Post Reply
nakaok
Posts: 2
Joined: Sun Jun 15, 2014 12:17 am
Location: Japan

"register.contact.remote" works correctly ?

Post by nakaok »

1. Brekeke Product Name and Version:
Brekeke SIP Server , Version 3.3.4.4 Standard
2. Java version:
1.7.0_45
3. OS type and the version:
Windows Server 2008 R2
4. UA (phone), gateway or other hardware/software involved:
IMSDroid custom (Android)
5. Your problem:

One Japanese mobile carrier is using "100.xx.xx.xx" addresses as "private IP".
Unfortunately, at Brekeke default setting, "100.xx.xx.xx" is recognized as "global IP"...

So, I wrote dial plan "register.contact.remote".
INVITE/Ringing are sent to UAS source(NAPT) IP correctly, but PRACK and ACK
is sent to UAS private IP, and there are cannot reached for UAS.
(Finally the error occurs on the client.)

I'm at a loss what to do. How can I solve this ?
Please see a session log, and give me suggestions...

Thanks

Environment
==============================================
Brekeke SIP Server: 113.32.xx.xx

UAC
Contact URI: sip:yoko@10.79.xx.xx (Mobile phone private IP...base on RFC1918)
Source IP: 1.78.xx.xx (Mobile carrier NAPT IP)

UAS
Contact URI: sip:john@100.88.xx.xx (Mobile phone private IP...not RFC1918 ?)
Source IP: 49.98.xx.xx (Mobile carrier NAPT IP)

Dial Plan
Matching Patterns:
-----------------------
$request = ^REGISTER
-----------------------
Deploy Patterns:
-----------------------
&register.contact.remote = true
&register.contact.nat = true
$continue = true
-----------------------

Session Log
==============================================
session.88: information:
starttime = 06/15/14 00:10:43.457
spiral-hop = 1
plugin = jp.co.cosmosplus.brekeke.plugins.AccountingPlugin
request = INVITE sip:john@113.32.xx.xx SIP/2.0
rulename = registered=sip:john(sip:john@100.88.xx.xx:50540/UDP)
org:From: = sip:yoko@113.32.xx.xx
new:From: = sip:yoko@113.32.xx.xx
org:To: = sip:john@113.32.xx.xx
new:To: = sip:john@113.32.xx.xx
src:addr/port = 1.78.xx.xx:52341 (UDP global-addr)
src:interface = 113.32.xx.xx:5060 (UDP global-addr)
dst:addr/port = 49.98.xx.xx:50540 (UDP global-addr)<====== GOOD: NAPT IP
dst:interface = 113.32.xx.xx:5060 (UDP global-addr)
uac:user-agent= xxxx/1.1.1 SC-02C
uas:user-agent= xxxx/1.1.1 SO-01E
mode:B2BUA = on
mode:RTPrelay = off (user-required)
mode:Auth = auto
mode:NAT = on { Src-Far-End-NAT Dst-Far-End-NAT }
:

session.88: receive: from=UAC:1.78.xx.xx:52341(UDP)
==============================================
INVITE sip:john@113.32.xx.xx SIP/2.0
Via: SIP/2.0/UDP 10.79.xx.xx:52341;....
From: <sip:yoko@113.32.xx.xx>;tag=214775390
To: <sip:john@113.32.xx.xx>
Contact: <sip:yoko@10.79.xx.xx:52341;....
Call-ID: 5bce2523-8dcc-22f9-0117-73d38ac39fea
CSeq: 16699550 INVITE
:
v=0
o=doubango 1983 678901 IN IP4 10.79.xx.xx
s=-
c=IN IP4 10.79.xx.xx
t=0 0
a=tcap:1 RTP/AVPF
m=audio 35232 RTP/AVP 9 8 0
c=IN IP4 10.79.xx.xx
:

session.88: send: to=UAS:49.98.xx.xx:50540(UDP) <====== GOOD: NAPT IP
==============================================
INVITE sip:john@100.88.xx.xx:50540;transport=udp SIP/2.0
Via: SIP/2.0/UDP 113.32.xx.xx:5060;....
From: <sip:yoko@113.32.xx.xx>;tag=b188543e6s
To: <sip:john@113.32.xx.xx>
Contact: <sip:yoko@113.32.xx.xx:5060>;....
Call-ID: 3677e588-5f1b5250-42fc4de0-693d7afe
CSeq: 16699550 INVITE
:
v=0
o=doubango 1983 678901 IN IP4 113.32.xx.xx
s=-
c=IN IP4 1.78.xx.xx
t=0 0
a=tcap:1 RTP/AVPF
m=audio 35232 RTP/AVP 9 8 0
c=IN IP4 1.78.xx.xx
:

session.88: receive: from=UAS:49.98.xx.xx:50540(UDP)
==============================================
SIP/2.0 100 Trying (sent from the Transaction Layer)
Via: SIP/2.0/UDP 113.32.xx.xx:5060;....
From: <sip:yoko@113.32.xx.xx>;tag=b188543e6s
To: <sip:john@113.32.xx.xx>
Call-ID: 3677e588-5f1b5250-42fc4de0-693d7afe
CSeq: 16699550 INVITE
Content-Length: 0
:

session.88: receive: from=UAS:49.98.xx.xx:50540(UDP) <====== GOOD: NAPT IP
==============================================
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 113.32.xx.xx:5060;....
From: <sip:yoko@113.32.xx.xx>;tag=b188543e6s
To: <sip:john@113.32.xx.xx>;tag=286305718
Contact: <sip:john@100.88.xx.xx:50540;transport=udp>
Call-ID: 3677e588-5f1b5250-42fc4de0-693d7afe
CSeq: 16699550 INVITE
Require: 100rel
:

session.88: send: to=UAC:1.78.xx.xx:52341(UDP)
==============================================
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 10.79.xx.xx:52341;....
From: <sip:yoko@113.32.xx.xx>;tag=214775390
To: <sip:john@113.32.xx.xx>;tag=bd9d40ee9s
Contact: <sip:john@113.32.xx.xx:5060>
Call-ID: 5bce2523-8dcc-22f9-0117-73d38ac39fea
CSeq: 16699550 INVITE
Require: 100rel
:

session.88: receive: from=UAC:1.78.xx.xx:52341(UDP)
==============================================
PRACK sip:john@113.32.xx.xx:5060 SIP/2.0
Via: SIP/2.0/UDP 10.79.xx.xx:52341;....
From: <sip:yoko@113.32.xx.xx>;tag=214775390
To: <sip:john@113.32.xx.xx>;tag=bd9d40ee9s
Contact: <sip:yoko@10.79.xx.xx:52341;....
Call-ID: 5bce2523-8dcc-22f9-0117-73d38ac39fea
CSeq: 16699551 PRACK
:

session.88: send: to=UAS:100.88.xx.xx:50540(UDP)<====== BAD: Private IP
==============================================
PRACK sip:john@100.88.xx.xx:50540;transport=udp SIP/2.0
Via: SIP/2.0/UDP 113.32.xx.xx:5060;....
From: <sip:yoko@113.32.xx.xx>;tag=b188543e6s
To: <sip:john@113.32.xx.xx>;tag=286305718
Contact: <sip:yoko@113.32.xx.xx:5060>;....
Call-ID: 3677e588-5f1b5250-42fc4de0-693d7afe
CSeq: 16699551 PRACK
:
:
:

session.88: receive: from=UAS:49.98.xx.xx:50540(UDP)
==============================================
SIP/2.0 200 OK
Via: SIP/2.0/UDP 113.32.xx.xx:5060;....
From: <sip:yoko@113.32.xx.xx>;tag=b188543e6s
To: <sip:john@113.32.xx.xx>;tag=286305718
Contact: <sip:john@100.88.xx.xx:50540;transport=udp>
Call-ID: 3677e588-5f1b5250-42fc4de0-693d7afe
CSeq: 16699550 INVITE
:
v=0
o=doubango 1983 678901 IN IP4 100.88.xx.xx
s=-
c=IN IP4 100.88.xx.xx
t=0 0
m=audio 49410 RTP/AVPF 8 0
:

session.88: send: to=UAC:1.78.xx.xx:52341(UDP)
==============================================
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.79.xx.xx:52341;....
From: <sip:yoko@113.32.xx.xx>;tag=214775390
To: <sip:john@113.32.xx.xx>;tag=bd9d40ee9s
Contact: <sip:john@113.32.xx.xx:5060>
Call-ID: 5bce2523-8dcc-22f9-0117-73d38ac39fea
CSeq: 16699550 INVITE
:
v=0
o=doubango 1983 678901 IN IP4 113.32.xx.xx
s=-
c=IN IP4 100.88.xx.xx<====== BAD: Private IP
t=0 0
m=audio 49410 RTP/AVPF 8 0
:

session.88: receive: from=UAC:1.78.xx.xx:52341(UDP)
==============================================
ACK sip:john@113.32.xx.xx:5060 SIP/2.0
Via: SIP/2.0/UDP 10.79.xx.xx:52341;....
From: <sip:yoko@113.32.xx.xx>;tag=214775390
To: <sip:john@113.32.xx.xx>;tag=bd9d40ee9s
Contact: <sip:yoko@10.79.xx.xx:52341;...
Call-ID: 5bce2523-8dcc-22f9-0117-73d38ac39fea
CSeq: 16699550 ACK
:

session.88: send: to=UAS:100.88.xx.xx:50540(UDP)<====== BAD: Private IP
==============================================
ACK sip:john@100.88.xx.xx:50540;transport=udp SIP/2.0
Via: SIP/2.0/UDP 113.32.xx.xx:5060;....
From: <sip:yoko@113.32.xx.xx>;tag=b188543e6s
To: <sip:john@113.32.xx.xx>;tag=286305718
Contact: <sip:yoko@113.32.xx.xx:5060>;...
Call-ID: 3677e588-5f1b5250-42fc4de0-693d7afe
CSeq: 16699550 ACK
:
james
Posts: 501
Joined: Mon Dec 10, 2007 12:56 pm

Post by james »

This is because 100.88.xx.xx is not a private IP address, and the UAS's "180 Rining" indicated "100.88.xx.xx" in the Contact header.

To keep using the same destination IP address/port for UAS (even if 180 pointed unique IP address/port), let you put the following line in the Deploy Pattern for INVITE.

&net.sip.fixed.addrport.uas = true

Or, you can put the following line in the [Configuration]->[Advanced] page.

net.sip.fixed.addrport.uas = true


Good luck.
lakeview
Posts: 319
Joined: Thu Nov 15, 2007 11:54 am
Location: Florida

Post by lakeview »

Another way to fix the issue is ..

Add this in the [Configuration]->[Advanced] page.

Code: Select all

net.internal-addr.pattern = ^100
Brekeke SIP Server will treat 100.x.x.x as an internal (private) IP address.

so you don't need any DialPlan rule for REGISTER and you don't need "net.sip.fixed.addrport.uas" too.
nakaok
Posts: 2
Joined: Sun Jun 15, 2014 12:17 am
Location: Japan

Post by nakaok »

Great! This is just what I have been looking for!
I will test as soon as possible.
(Actually, I cannot test all by myself because "100.X.X.X" is not assigned in my town(Tokyo)... :cry: )

Let me ask another question.
Where can I find reference of advance settings like "net.internal-addr.pattern" ?
(There is a few items in document and wiki...)

Thank you so much. :D
lakeview
Posts: 319
Joined: Thu Nov 15, 2007 11:54 am
Location: Florida

Post by lakeview »

Brekeke's developer team will add new GUI filed to tune the variable "net.internal-addr.pattern" in a future release.
If so, an administrator doesn't have to set it manually.

Some internal API sets are available for OEM and tech partners.
Laurie
Posts: 245
Joined: Mon Jan 07, 2008 12:25 pm

Post by Laurie »

RFC6598 defines that the Shared Address Space address range is 100.64.0.0/10.
It means 100.64.0.0 - 100.127.255.255.

Therefore the complete regex pattern will be:
net.internal-addr.pattern = ^100.6[4-9]|^100.[7-9][0-9]|^100.1[0-1][0-9]|^100.12[0-7]
Post Reply