Come posso gestire pacchetti SIP di grandi dimensioni?
Le reti segmenteranno i pacchetti UDP con un payload più grande di 1480 byte per garantire che il pacchetto in eccesso non superi l'MTU.
È prassi comune del router bloccare i pacchetti UDP segmentati. I router devono conservare in memoria ciascun segmento del messaggio UDP finché non riceve l'ultimo segmento prima di inoltrare il messaggio. Per evitare questo problema, inviare al router messaggi incompleti finché la memoria non è piena e il router non riesce. Per questo motivo, i router che non contengono una correzione per questa condizione spesso non consentono i pacchetti UDP segmentati.
Per risolvere il problema dei router che non gestiscono (o non possono gestire) la segmentazione UDP, è necessario convertire il protocollo in SIP su TCP. BroadWorks può essere impostato in varie posizioni per l'invio e/o la ricezione su UDP, TCP o entrambi (non specificato). Di seguito sono riportate varie posizioni in cui vengono eseguite queste impostazioni:
AS_CLI/Interface/SIP> get
[…]
supportTcp = true
AS_CLI/System/Device/NetworkServers/Routing> get
Net Address Port Transport Poll OpState Description
=====================================================================
ns1.ihs.broadsoft.com tcp false enabled ns1
ns2.ihs.broadsoft.com tcp false enabled ns2
AS_CLI/System/CallP/Routing/MediaServerSelection/MediaServerDevice> get
Net Address Port Transport Description
=====================================================
ms1.ihs.broadsoft.com 5060 tcp ms1
ms2.ihs.broadsoft.com 5060 tcp ms2
NS_CLI/System/Device/RoutingNE/Address> get
About to access 22 entries. Continue?
Please confirm (Yes, Y, No, N): y
Retrieving data... Please wait...
Routing NE Address Cost Weight Port Transport
=======================================================================
[…]
test3 10.2.2.2 1 99 5060 tcp
test1 10.6.6.6 1 90 5060 tcp
test2 10.1.1.1 1 90 5060 tcp
22 entries found.
Molti SBC supportano anche UDP e TCP. Alcuni SBC possono anche convertire UDP in TCP. Di seguito è riportato un esempio di configurazione da un ACME SD (varie posizioni in cui è possibile specificare il protocollo).
sip-interface
state enabled
realm-id access
description Public to IHS ACCESS SIP Interface
sip-port
address 64.212.220.94
port 5060
transport-protocol UDP
tls-profile
allow-anonymous all
sip-port
address 64.212.220.94
port 5060
transport-protocol TCP
tls-profile
allow-anonymous all
session-agent
hostname 10.48.7.56
ip-address 10.48.7.56
port 5060
state enabled
app-protocol SIP
app-type
transport-method TCP
È inoltre possibile impostare i dispositivi in modo da specificare il protocollo. Ad esempio, Polycom può essere impostato su TCPonly, TCPprefered o consentire alla risposta DNS di specificare il protocollo (DNSnaptr)
Esempio di messaggio UDP SIP di grandi dimensioni
2010.08.17 08:22:44:815 EDT | Info | Sip | +12403645153 | callhalf-171159287:1
udp 1580 Bytes OUT to 10.10.10.1:5060
INVITE sip:2403640001@10.10.10.1:5060;user=phone;transport=udp SIP/2.0
Via:SIP/2.0/UDP 10.10.10.2;branch=z9hG4bKBroadWorks.11l7pom-10.10.10.1V5060-0-13480-1064780560-1282047764815-
From:\"test-cc1 travis\";tag=1064780560-1282047764815-
To:\"Mike - Test Acct Inmon\"
Call-ID:BW082244815170810-243190739@10.10.10.2
CSeq:13480 INVITE
Contact:
Remote-Party-ID:\"test-cc1 travis\";screen=yes;party=calling;privacy=off;id-type=subscriber
RPID-Privacy:party=calling;privacy=off;id-type=subscriber
Proxy-Require:privacy
Diversion:\"Mike - Test Acct Inmon\";privacy=off;diversion-inhibited;reason=follow-me;counter=5,\"Mike - Test Acct Inmon\";privacy=off;reason=follow-me;counter=1,\"test-cc1 travis\";privacy=off;hg-cc;delay-ccm;reason=unknown;counter=1
Supported: Allow:ACK,BYE,CANCEL,INFO,INVITE,OPTIONS,PRACK,REFER,NOTIFY,UPDATE
Accept:multipart/mixed,application/dtmf-relay,application/media_control+xml,application/sdp,application/x-broadworks-call-center+xml
Max-Forwards:5
Content-Type:application/sdp
Content-Length:283
v=0
o=BroadWorks 1618137 1 IN IP4 10.10.10.2
s=-
c=IN IP4 10.10.10.2
t=0 0
m=audio 16580 RTP/AVP 0 8 18 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=silenceSupp:on - - - -
a=fmtp:101 0-15
a=ptime:20
a=sendrecv