Hoe behandel ik grote SIP-pakketformaten?
Netwerken zullen UDP-pakketten met een lading groter dan 1480 Bytes segmenteren om te verzekeren dat het pakket over niet groter zal zijn dan MTU.
Het is gemeenschappelijk routerbeleid om gesegmenteerde UDP-pakketten te blokkeren. De routers moeten elk segment van het UDP-bericht in het geheugen vasthouden totdat het laatste segment is ontvangen voordat het bericht wordt verzonden. Dit kan worden geëxploiteerd door onvolledige berichten naar de router te verzenden tot zijn geheugen volledig is waardoor de router mislukt. Om deze reden bevatten routers die geen oplossing voor deze voorwaarde bevatten vaak gesegmenteerde UDP-pakketten.
Een bewerking op routers die UDP-segmentatie niet (of niet kunnen) verwerken, moet worden geconverteerd naar SIP over TCP. BroadWorks kan op verschillende locaties worden ingesteld om te verzenden en/of te verwachten om te ontvangen op UDP, TCP of een van beide (niet gespecificeerd). Hieronder bevinden zich verschillende locaties waar deze instellingen worden uitgevoerd:
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.
Veel SBC's ondersteunen ook UDP en TCP. Sommige SBC's kunnen zelfs UDP naar TCP converteren. Hier is een voorbeeldconfiguratie van een ACME SD (diverse plaatsen waar het protocol kan worden gespecificeerd).
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
Apparaten kunnen ook worden ingesteld om een protocol te specificeren. Polycom kan bijvoorbeeld alleen op TCP worden ingesteld, TCP vooraf ingesteld of zelfs de DNS-respons toestaan om het protocol (DNS-naptr) te specificeren
Voorbeeld van een groot SIP UDP-bericht
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