I'm currently trying to federate two Lync domains with one custom SIP proxy in the middle. The problem is that the Lync server will reply "413 - Entity too large" to subscribe requests (msrtc-adrl-categorylist) coming from the other Lync domain after passing through the proxy.
However, when I sent a similar message with SIPp, a SIP emulator, the subscribe is accepted even though it went through the SIP proxy.
The two messages are much alike. The proxy adds a record route and appends an ID at the end of the From tag. It doesn't get its hands on the body.
The difference of content-length is because SIPp adds a CRLF at the end of the body, which Lync doesn't.
I cannot see anything wrong with the request. The following messages were logged on the Lync Edge of the destination domain.
LYNC SUBSCRIBE - REJECTED
Start-Line: SUBSCRIBE sip:ragg@lync2.com SIP/2.0
From: <sip:mdef@lync1.com>;epid=75bdd22553;tag=vl57cpy2rb72lu15i7awk22h0100003f1410
To: <sip:ragg@lync2.com>
CSeq: 1 SUBSCRIBE
Call-ID: 3ad1662aa2d84bc5a7de15f5d2ecd0be
Record-Route: <sip:smf1.testucfed.com:5061;lr>
Max-Forwards: 68
Via: SIP/2.0/TLS smf1.testucfed.com:5061;branch=z9hG4bKfspbWpOjnrsr3kELP8S9
Via: SIP/2.0/TCP 10.0.0.6:5060;branch=z9hG4bKfspbkK8M7FQrQmqN99a9
User-Agent: UCCAPI/4.0.7577.4103 OC/4.0.7577.4109 (Microsoft Lync 2010)
Event: presence
Accept: application/msrtc-event-categories+xml, application/xpidf+xml, text/xml+msrtc.pidf, application/pidf+xml, application/rlmi+xml, multipart/related
Supported: com.microsoft.autoextend
Supported: ms-piggyback-first-notify
ms-asserted-verification-level: ms-source-verified-user=verified
Content-Type: application/msrtc-adrl-categorylist+xml
Content-Length: 464
Contact: <sip:smf1.testucfed.com:5061>
Message-Body:
<batchSub xmlns="http://schemas.microsoft.com/2006/01/sip/batch-subscribe" uri="sip:mdef@lync1.com" name="">
<action name="subscribe" id="104999392">
<adhocList>
<resource uri="sip:ragg@lync2.com"/>
</adhocList>
<categoryList xmlns="http://schemas.microsoft.com/2006/09/sip/categorylist">
<category name="state"/>
<category name="note"/>
<category name="services"/>
<category name="contactCard"/>
<category name="calendarData"/>
</categoryList>
</action>
</batchSub>
SIPp SUBSCRIBE - ACCEPTED
Start-Line: SUBSCRIBE sip:ragg@lync2.com SIP/2.0
From: <sip:mdef@lync1.com>;epid=75bdd22553;tag=1iy5s1s4humjf184oeqyeitztd0100003f1410
To: <sip:ragg@lync2.com>
CSeq: 1 SUBSCRIBE
Call-ID: 1-32615@212.166.45.124
Record-Route: <sip:smf1.testucfed.com:5061;lr>
Max-Forwards: 68
Via: SIP/2.0/TLS smf1.testucfed.com:5061;branch=z9hG4bKfspbIP0PgNyO4vZelNvG
Via: SIP/2.0/TCP 10.0.0.6:5060;branch=z9hG4bKfspbWS366kCidcbxJt9m
Event: presence
Accept: application/msrtc-event-categories+xml, application/xpidf+xml, text/xml+msrtc.pidf, application/pidf+xml, application/rlmi+xml, multipart/related
User-Agent: UCCAPI/4.0.7577.4103 OC/4.0.7577.4109 (Microsoft Lync 2010)
Supported: com.microsoft.autoextend
Supported: ms-piggyback-first-notify
ms-asserted-verification-level: ms-source-verified-user=verified
Content-Type: application/msrtc-adrl-categorylist+xml
Content-Length: 466
Contact: <sip:smf1.testucfed.com:5061>
Message-Body:
<batchSub xmlns="http://schemas.microsoft.com/2006/01/sip/batch-subscribe" uri="sip:mdef@lync1.com" name="">
<action name="subscribe" id="104999648">
<adhocList>
<resource uri="sip:ragg@lync2.com"/>
</adhocList>
<categoryList xmlns="http://schemas.microsoft.com/2006/09/sip/categorylist">
<category name="state"/>
<category name="note"/>
<category name="services"/>
<category name="contactCard"/>
<category name="calendarData"/>
</categoryList>
</action>
</batchSub>
RESPONSE
Start-Line: SIP/2.0 413 Request entity too large
From: <sip:mdef@lync1.com>;epid=75bdd22553;tag=vl57cpy2rb72lu15i7awk22h0100003f1410
To: <sip:ragg@lync2.com>;tag=5F72F2201902C33E22FE6C4063EC56AD
CSeq: 1 SUBSCRIBE
Call-ID: 3ad1662aa2d84bc5a7de15f5d2ecd0be
Via: SIP/2.0/TLS 10.0.0.7:38020;branch=z9hG4bKDA21D3D8.2E84E1112774D915;branched=FALSE;ms-received- port=38020;ms-received-cid=400
Via: SIP/2.0/TLS smf1.testucfed.com:5061;branch=z9hG4bKfspbWpOjnrsr3kELP8S9;received=212.166.45.124;ms-received-port=51456;ms-received-cid=A3300
Via: SIP/2.0/TCP 10.0.0.6:5060;branch=z9hG4bKfspbkK8M7FQrQmqN99a9
ms-diagnostics: 4008;reason="Input data too large - One of the paramaters to the sproc exceeds limit";source="ARIW002.lync2.com"
Server: RTC/4.0
Content-Length: 0
Message-Body: –
Does someone know what can trigger this error? The error message is not really of great help here ...
I finally managed to spot the problem.
The Lync server store the "Dialog ID" which is the "Call-ID" + "From tag" + "To tag". By appending some extra data at the end of the "From tag", the size of the "Dialog ID" exceeded its limit size.