Wiki source code of SIP

Last modified by Aaron Blackburn on 2026/09/01 19:00

Hide last authors
Aaron Blackburn 1.2 1 {{html clean="false"}}
2 <!--
Aaron Blackburn 1.3 3 XWiki usage: Paste into an HTML macro on your page.
Aaron Blackburn 1.4 4 Note: All FirstDigital public IPs have been sanitized for public wiki security.
Aaron Blackburn 1.2 5 -->
6 <style>
7 @import url('https://fonts.googleapis.com/css2?family=Host+Grotesk:wght@300;400;500;600;700;800&display=swap');
8
Aaron Blackburn 1.3 9 .fd-sip-doc, .fd-sip-doc * { box-sizing: border-box; }
10 .fd-sip-doc {
Aaron Blackburn 1.2 11 --fd-navy: #003366;
12 --fd-dark-navy: #001a33;
13 --fd-blue: #307ab2;
14 --fd-sky: #38b2e3;
15 --fd-bright-cyan: #5ed2ff;
16 --fd-red: #cf333d;
Aaron Blackburn 1.4 17 --fd-green: #2e7d32;
Aaron Blackburn 1.2 18 --fd-slate: #2e404d;
19 --fd-grey: #8f9499;
20 --fd-lightgrey: #e2e8f0;
21 --fd-offwhite: #f8fafc;
22 --fd-max-w: 1140px;
23
24 font-family: 'Host Grotesk', system-ui, -apple-system, sans-serif;
25 color: var(--fd-slate);
26 background: #ffffff;
27 max-width: var(--fd-max-w);
28 margin: 0 auto;
29 padding: 24px 16px;
30 }
31
Aaron Blackburn 1.3 32 /* Header */
33 .fd-sip-doc .doc-header {
Aaron Blackburn 1.2 34 background: radial-gradient(circle at 50% 35%, rgba(13, 71, 128, 0.78) 0%, rgba(0, 51, 102, 0.93) 60%, rgba(0, 26, 51, 0.98) 100%),
35 url('Fiber Optic Theme.JPG') center/cover no-repeat;
36 padding: 40px 32px;
37 border-radius: 20px;
38 text-align: center;
39 color: #ffffff;
40 box-shadow: inset 0 0 60px rgba(0, 26, 51, 0.6), 0 12px 32px rgba(0, 51, 102, 0.12);
41 margin-bottom: 32px;
42 }
Aaron Blackburn 1.3 43 .fd-sip-doc .doc-header p.kicker {
Aaron Blackburn 1.2 44 color: var(--fd-bright-cyan);
45 font-weight: 800;
46 font-size: .8rem;
47 text-transform: uppercase;
48 letter-spacing: .18em;
49 margin: 0 0 8px;
50 text-shadow: 0 2px 10px rgba(0, 26, 51, 0.8);
51 }
Aaron Blackburn 1.3 52 .fd-sip-doc .doc-header h1 {
Aaron Blackburn 1.2 53 font-weight: 800;
54 font-size: 2.25rem;
55 margin: 0 0 10px;
56 letter-spacing: -0.02em;
57 text-shadow: 0 3px 12px rgba(0, 26, 51, 0.9);
58 }
Aaron Blackburn 1.3 59 .fd-sip-doc .doc-header p.sub {
Aaron Blackburn 1.2 60 color: #f8fafc;
61 font-weight: 400;
62 font-size: 1rem;
63 max-width: 680px;
64 margin: 0 auto;
65 line-height: 1.5;
66 text-shadow: 0 2px 8px rgba(0, 26, 51, 0.95);
67 }
68
Aaron Blackburn 1.4 69 /* Disclaimer Banner */
Aaron Blackburn 1.3 70 .fd-sip-doc .disclaimer-box {
71 background: #f0f7fc;
72 border-left: 5px solid var(--fd-blue);
73 padding: 16px 20px;
74 border-radius: 8px;
75 margin-bottom: 28px;
76 font-size: 0.9rem;
77 line-height: 1.5;
Aaron Blackburn 1.2 78 }
79
Aaron Blackburn 1.4 80 /* Section Titles */
Aaron Blackburn 1.3 81 .fd-sip-doc .section-title {
82 color: var(--fd-navy);
83 font-size: 1.35rem;
84 font-weight: 700;
Aaron Blackburn 1.4 85 margin: 36px 0 16px;
Aaron Blackburn 1.3 86 border-bottom: 2px solid var(--fd-lightgrey);
87 padding-bottom: 8px;
Aaron Blackburn 1.2 88 }
89
Aaron Blackburn 1.4 90 /* Embedded Diagram Containers */
91 .fd-sip-doc .diagram-card {
92 background: #ffffff;
93 border: 1px solid var(--fd-lightgrey);
94 border-radius: 16px;
95 padding: 24px;
96 margin-bottom: 28px;
97 box-shadow: 0 6px 20px rgba(0, 30, 60, 0.05);
98 text-align: center;
99 }
100 .fd-sip-doc .diagram-card svg {
101 max-width: 100%;
102 height: auto;
103 }
104 .fd-sip-doc .diagram-caption {
105 font-size: 0.85rem;
106 color: var(--fd-slate);
107 margin-top: 12px;
108 font-weight: 500;
109 }
110
111 /* Specifications Grid */
Aaron Blackburn 1.3 112 .fd-sip-doc .specs-grid {
113 display: grid;
114 grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
115 gap: 16px;
116 margin-bottom: 32px;
Aaron Blackburn 1.2 117 }
Aaron Blackburn 1.3 118 .fd-sip-doc .spec-card {
119 background: var(--fd-offwhite);
120 border: 1px solid var(--fd-lightgrey);
121 border-radius: 12px;
122 padding: 16px 20px;
Aaron Blackburn 1.2 123 }
Aaron Blackburn 1.3 124 .fd-sip-doc .spec-card .label {
125 font-size: 0.75rem;
Aaron Blackburn 1.2 126 text-transform: uppercase;
127 font-weight: 700;
Aaron Blackburn 1.3 128 color: var(--fd-grey);
129 letter-spacing: 0.05em;
130 margin-bottom: 4px;
Aaron Blackburn 1.2 131 }
Aaron Blackburn 1.3 132 .fd-sip-doc .spec-card .val {
133 font-size: 1rem;
Aaron Blackburn 1.2 134 font-weight: 700;
Aaron Blackburn 1.3 135 color: var(--fd-navy);
Aaron Blackburn 1.2 136 }
Aaron Blackburn 1.3 137 .fd-sip-doc .spec-card .subtext {
138 font-size: 0.8rem;
Aaron Blackburn 1.2 139 color: var(--fd-slate);
Aaron Blackburn 1.3 140 margin-top: 4px;
Aaron Blackburn 1.2 141 }
142
Aaron Blackburn 1.4 143 /* Rules Grid */
Aaron Blackburn 1.3 144 .fd-sip-doc .rules-grid {
Aaron Blackburn 1.2 145 display: grid;
146 grid-template-columns: 1fr 1fr;
147 gap: 20px;
148 margin-bottom: 32px;
149 }
Aaron Blackburn 1.3 150 .fd-sip-doc .rule-box {
Aaron Blackburn 1.2 151 border: 1px solid var(--fd-lightgrey);
152 border-radius: 12px;
Aaron Blackburn 1.3 153 padding: 20px;
154 background: #ffffff;
155 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
Aaron Blackburn 1.2 156 }
Aaron Blackburn 1.3 157 .fd-sip-doc .rule-box h4 {
158 margin: 0 0 12px;
159 color: var(--fd-navy);
Aaron Blackburn 1.2 160 font-size: 1.05rem;
161 }
Aaron Blackburn 1.3 162 .fd-sip-doc .rule-box ul {
Aaron Blackburn 1.2 163 margin: 0;
Aaron Blackburn 1.3 164 padding-left: 20px;
165 font-size: 0.88rem;
166 line-height: 1.6;
Aaron Blackburn 1.2 167 }
168
Aaron Blackburn 1.3 169 /* Troubleshooting Table */
170 .fd-sip-doc .tb-table {
171 width: 100%;
172 border-collapse: collapse;
173 margin-bottom: 32px;
174 font-size: 0.9rem;
Aaron Blackburn 1.2 175 }
Aaron Blackburn 1.3 176 .fd-sip-doc .tb-table th {
177 background: var(--fd-navy);
178 color: #ffffff;
179 text-align: left;
180 padding: 12px 16px;
Aaron Blackburn 1.2 181 font-weight: 700;
182 }
Aaron Blackburn 1.3 183 .fd-sip-doc .tb-table th:first-child { border-top-left-radius: 8px; }
184 .fd-sip-doc .tb-table th:last-child { border-top-right-radius: 8px; }
185 .fd-sip-doc .tb-table td {
186 padding: 14px 16px;
187 border-bottom: 1px solid var(--fd-lightgrey);
188 line-height: 1.5;
Aaron Blackburn 1.2 189 }
Aaron Blackburn 1.3 190 .fd-sip-doc .tb-table tr:nth-child(even) { background: var(--fd-offwhite); }
191 .fd-sip-doc .symptom { font-weight: 700; color: var(--fd-red); width: 28%; }
Aaron Blackburn 1.2 192
Aaron Blackburn 1.3 193 @media (max-width: 768px) {
194 .fd-sip-doc .rules-grid { grid-template-columns: 1fr; }
Aaron Blackburn 1.2 195 }
196 </style>
197
Aaron Blackburn 1.3 198 <div class="fd-sip-doc">
Aaron Blackburn 1.2 199
Aaron Blackburn 1.4 200 <!-- Header Banner -->
Aaron Blackburn 1.3 201 <div class="doc-header">
202 <p class="kicker">FirstDigital Voice Operations</p>
Aaron Blackburn 1.4 203 <h1>SIP Trunking Technical Reference</h1>
204 <p class="sub">Network architecture, firewall requirements, and troubleshooting standards for customer SIP trunks.</p>
Aaron Blackburn 1.2 205 </div>
206
Aaron Blackburn 1.4 207 <!-- Disclaimer Notice -->
Aaron Blackburn 1.3 208 <div class="disclaimer-box">
Aaron Blackburn 1.4 209 <strong>Customer Responsibility Notice:</strong> Customers are responsible for the configuration and maintenance of their own routers, firewalls, and PBX equipment. FirstDigital provides these specifications to assist engineers during trunk integration.
Aaron Blackburn 1.3 210 </div>
Aaron Blackburn 1.2 211
Aaron Blackburn 1.4 212 <!-- DIAGRAM 1: Network Topology -->
213 <div class="section-title">1. SIP Trunk Topology & Traffic Routing</div>
214 <div class="diagram-card">
215 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 300" style="font-family:'Host Grotesk', system-ui, sans-serif;">
216 <!-- Cloud Node -->
217 <rect x="30" y="50" width="200" height="200" rx="12" fill="#f0f7fc" stroke="#307ab2" stroke-width="2"/>
218 <rect x="45" y="35" width="170" height="26" rx="13" fill="#003366"/>
219 <text x="130" y="52" fill="#ffffff" font-size="11" font-weight="bold" text-anchor="middle">FIRSTDIGITAL CLOUD</text>
220 <text x="130" y="115" fill="#003366" font-size="14" font-weight="bold" text-anchor="middle">FirstDigital SBC</text>
221 <rect x="55" y="130" width="150" height="24" rx="4" fill="#e2e8f0"/>
222 <text x="130" y="146" fill="#2e404d" font-size="11" font-family="monospace" text-anchor="middle">[FirstDigital_SBC_IP]</text>
223 <text x="130" y="180" fill="#2e404d" font-size="10" text-anchor="middle">Signaling &amp; Audio Target</text>
224
225 <!-- Flow Connectors -->
226 <path d="M 230 110 L 370 110" stroke="#307ab2" stroke-width="3" stroke-dasharray="6,4"/>
227 <path d="M 370 160 L 230 160" stroke="#38b2e3" stroke-width="3"/>
228 <polygon points="230,160 238,155 238,165" fill="#38b2e3"/>
229 <polygon points="370,110 362,105 362,115" fill="#307ab2"/>
230 <text x="300" y="100" fill="#003366" font-size="10" font-weight="bold" text-anchor="middle">UDP 5060 (SIP)</text>
231 <text x="300" y="180" fill="#003366" font-size="10" font-weight="bold" text-anchor="middle">UDP 5k-65k (RTP)</text>
232
233 <!-- Firewall Node -->
234 <rect x="370" y="50" width="180" height="200" rx="12" fill="#fff5f5" stroke="#cf333d" stroke-width="2"/>
235 <rect x="385" y="35" width="150" height="26" rx="13" fill="#cf333d"/>
236 <text x="460" y="52" fill="#ffffff" font-size="11" font-weight="bold" text-anchor="middle">CUSTOMER FIREWALL</text>
237 <text x="460" y="105" fill="#003366" font-size="13" font-weight="bold" text-anchor="middle">Public Edge Router</text>
238 <rect x="385" y="120" width="150" height="24" rx="4" fill="#e2e8f0"/>
239 <text x="460" y="136" fill="#2e404d" font-size="11" font-family="monospace" text-anchor="middle">[Customer_Public_IP]</text>
240 <text x="460" y="175" fill="#cf333d" font-size="10" font-weight="bold" text-anchor="middle">SIP ALG: DISABLED</text>
241 <text x="460" y="195" fill="#2e404d" font-size="10" text-anchor="middle">Source NAT Active</text>
242
243 <!-- Internal LAN Path -->
244 <path d="M 550 135 L 610 135" stroke="#2e404d" stroke-width="2"/>
245
246 <!-- PBX Node -->
247 <rect x="610" y="50" width="160" height="200" rx="12" fill="#f8fafc" stroke="#003366" stroke-width="2"/>
248 <rect x="625" y="35" width="130" height="26" rx="13" fill="#003366"/>
249 <text x="690" y="52" fill="#ffffff" font-size="11" font-weight="bold" text-anchor="middle">CUSTOMER PBX</text>
250 <text x="690" y="115" fill="#003366" font-size="13" font-weight="bold" text-anchor="middle">Internal PBX / SBC</text>
251 <rect x="625" y="130" width="130" height="24" rx="4" fill="#e2e8f0"/>
252 <text x="690" y="146" fill="#2e404d" font-size="11" font-family="monospace" text-anchor="middle">192.168.x.x (LAN)</text>
253 </svg>
254 <div class="diagram-caption">Figure 1: Standard end-to-end SIP signaling and RTP media pathing via customer firewall.</div>
255 </div>
256
257 <!-- Specifications Grid -->
258 <div class="section-title">2. Core Trunk Parameters</div>
Aaron Blackburn 1.3 259 <div class="specs-grid">
260 <div class="spec-card">
261 <div class="label">Signaling Protocol</div>
262 <div class="val">UDP 5060</div>
263 <div class="subtext">Standard SIP port</div>
Aaron Blackburn 1.2 264 </div>
Aaron Blackburn 1.3 265 <div class="spec-card">
266 <div class="label">Primary Codec</div>
267 <div class="val">G.711u</div>
268 <div class="subtext">20ms packetization</div>
Aaron Blackburn 1.2 269 </div>
Aaron Blackburn 1.3 270 <div class="spec-card">
271 <div class="label">DTMF Mode</div>
272 <div class="val">RFC 2833</div>
273 <div class="subtext">Out-of-band touch tones</div>
Aaron Blackburn 1.2 274 </div>
Aaron Blackburn 1.3 275 <div class="spec-card">
Aaron Blackburn 1.4 276 <div class="label">DNIS Delivery</div>
Aaron Blackburn 1.3 277 <div class="val">10 Digits</div>
278 <div class="subtext">+1 stripped; Intl disabled by default</div>
Aaron Blackburn 1.2 279 </div>
Aaron Blackburn 1.3 280 <div class="spec-card">
281 <div class="label">Authentication</div>
282 <div class="val">IP Registration-less</div>
283 <div class="subtext">No user/password required</div>
284 </div>
285 <div class="spec-card">
286 <div class="label">SIP Advanced</div>
287 <div class="val">Peer Path / Re-invite</div>
288 <div class="subtext">Disabled / No re-invites permitted</div>
289 </div>
Aaron Blackburn 1.2 290 </div>
291
Aaron Blackburn 1.4 292 <!-- DIAGRAM 2: REWORKED FIREWALL PACKET FILTER & PORT MAP ILLUSTRATION -->
293 <div class="section-title">3. Firewall Policy Rules & Packet Filter Action</div>
294 <div class="diagram-card">
295 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 290" style="font-family:'Host Grotesk', system-ui, sans-serif;">
296 <!-- Outer Frame -->
297 <rect x="10" y="10" width="780" height="270" rx="12" fill="#f8fafc" stroke="#e2e8f0" stroke-width="2"/>
298
299 <!-- FirstDigital WAN Side -->
300 <text x="110" y="40" fill="#003366" font-size="12" font-weight="bold" text-anchor="middle">WAN SOURCE</text>
301 <text x="110" y="58" fill="#2e404d" font-size="11" font-family="monospace" text-anchor="middle">[FirstDigital_Subnet]</text>
302
303 <!-- Firewall Barrier (Middle) -->
304 <rect x="360" y="30" width="80" height="230" rx="8" fill="#fff5f5" stroke="#cf333d" stroke-width="2"/>
305 <text x="400" y="135" fill="#cf333d" font-size="12" font-weight="bold" text-anchor="middle" transform="rotate(-90,400,135)">FIREWALL BOUNDARY</text>
306
307 <!-- Customer LAN Side -->
308 <text x="690" y="40" fill="#003366" font-size="12" font-weight="bold" text-anchor="middle">LAN DESTINATION</text>
309 <text x="690" y="58" fill="#2e404d" font-size="11" font-family="monospace" text-anchor="middle">[Customer_PBX_IP]</text>
310
311 <!-- ROW 1: SIP SIGNALING (PASS) -->
312 <path d="M 200 90 L 360 90" stroke="#2e7d32" stroke-width="2.5"/>
313 <circle cx="380" cy="90" r="10" fill="#2e7d32"/>
314 <text x="380" y="94" fill="#ffffff" font-size="11" font-weight="bold" text-anchor="middle">✓</text>
315 <path d="M 400 90 L 580 90" stroke="#2e7d32" stroke-width="2.5"/>
316 <polygon points="580,90 572,85 572,95" fill="#2e7d32"/>
317
318 <rect x="220" y="72" width="120" height="22" rx="4" fill="#e8f5e9" stroke="#2e7d32"/>
319 <text x="280" y="87" fill="#2e7d32" font-size="10" font-weight="bold" text-anchor="middle">SIP: UDP 5060</text>
320 <text x="480" y="82" fill="#2e7d32" font-size="10" font-weight="bold" text-anchor="middle">FORWARD TO PBX</text>
321
322 <!-- ROW 2: RTP AUDIO STREAM (PASS) -->
323 <path d="M 200 150 L 360 150" stroke="#307ab2" stroke-width="2.5"/>
324 <circle cx="380" cy="150" r="10" fill="#2e7d32"/>
325 <text x="380" y="154" fill="#ffffff" font-size="11" font-weight="bold" text-anchor="middle">✓</text>
326 <path d="M 400 150 L 580 150" stroke="#307ab2" stroke-width="2.5"/>
327 <polygon points="580,150 572,145 572,155" fill="#307ab2"/>
328
329 <rect x="210" y="132" width="140" height="22" rx="4" fill="#f0f7fc" stroke="#307ab2"/>
330 <text x="280" y="147" fill="#003366" font-size="10" font-weight="bold" text-anchor="middle">RTP: UDP 5k - 65k</text>
331 <text x="480" y="142" fill="#003366" font-size="10" font-weight="bold" text-anchor="middle">ALLOW MEDIA STREAM</text>
332
333 <!-- ROW 3: SIP ALG / INSPECTION (BLOCKED) -->
334 <path d="M 200 215 L 360 215" stroke="#cf333d" stroke-width="2.5" stroke-dasharray="4,4"/>
335 <circle cx="380" cy="215" r="10" fill="#cf333d"/>
336 <text x="380" y="219" fill="#ffffff" font-size="11" font-weight="bold" text-anchor="middle">✕</text>
337
338 <rect x="220" y="197" width="120" height="22" rx="4" fill="#fff5f5" stroke="#cf333d"/>
339 <text x="280" y="212" fill="#cf333d" font-size="10" font-weight="bold" text-anchor="middle">SIP ALG / STUN</text>
340 <text x="485" y="212" fill="#cf333d" font-size="11" font-weight="bold">DISABLED (Prevents Header Modification)</text>
341
342 <!-- Bottom Note -->
343 <rect x="180" y="250" width="440" height="20" rx="4" fill="#e2e8f0"/>
344 <text x="400" y="264" fill="#2e404d" font-size="10" font-weight="bold" text-anchor="middle">OUTBOUND EGRESS NAT: All traffic MUST egress sourcing from [Customer_Public_IP]</text>
345 </svg>
346 <div class="diagram-caption">Figure 2: Firewall packet-filtering policy—explicitly allowing signaling/media while disabling SIP ALG.</div>
347 </div>
348
349 <!-- Rules Text -->
Aaron Blackburn 1.2 350 <div class="rules-grid">
Aaron Blackburn 1.3 351 <div class="rule-box">
Aaron Blackburn 1.4 352 <h4>Outbound Traffic Requirements</h4>
Aaron Blackburn 1.2 353 <ul>
Aaron Blackburn 1.4 354 <li>Outbound calls to FirstDigital must source directly from the registered Customer Public IP.</li>
355 <li>Outbound calls must send Caller ID matching a phone number assigned to the trunk instance.</li>
356 <li>FirstDigital will automatically reject calls sourcing from unknown or unauthorized IPs.</li>
Aaron Blackburn 1.2 357 </ul>
358 </div>
Aaron Blackburn 1.3 359 <div class="rule-box">
Aaron Blackburn 1.4 360 <h4>Firewall & NAT Settings</h4>
Aaron Blackburn 1.2 361 <ul>
Aaron Blackburn 1.4 362 <li><strong>SIP ALG:</strong> Must be completely <u>DISABLED</u> on customer edge firewalls and routers.</li>
363 <li><strong>RTP Media:</strong> Ensure UDP ports 5000-65000 are permitted for full audio stream delivery.</li>
364 <li><strong>NAT Routing:</strong> Confirm outbound NAT egress explicitly maps internal PBX traffic to the registered public IP.</li>
Aaron Blackburn 1.2 365 </ul>
366 </div>
367 </div>
368
Aaron Blackburn 1.4 369 <!-- DIAGRAM 3: One-Way Audio Problem -->
370 <div class="section-title">4. Common Audio Defect: Private IP Header Leakage</div>
371 <div class="diagram-card">
372 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 240" style="font-family:'Host Grotesk', system-ui, sans-serif;">
373 <!-- SBC Box -->
374 <rect x="40" y="40" width="180" height="160" rx="10" fill="#f0f7fc" stroke="#307ab2" stroke-width="2"/>
375 <text x="130" y="80" fill="#003366" font-size="13" font-weight="bold" text-anchor="middle">FirstDigital SBC</text>
376 <text x="130" y="100" fill="#2e404d" font-size="10" text-anchor="middle">Public Media Gateway</text>
377
378 <!-- Broken Return Audio Path -->
379 <path d="M 220 160 L 410 160" stroke="#cf333d" stroke-width="3" stroke-dasharray="4,4"/>
380 <circle cx="420" cy="160" r="12" fill="#cf333d"/>
381 <text x="420" y="165" fill="#ffffff" font-size="13" font-weight="bold" text-anchor="middle">X</text>
382 <text x="315" y="150" fill="#cf333d" font-size="10" font-weight="bold" text-anchor="middle">Audio Fails: 192.168.x.x Unreachable</text>
383
384 <!-- Firewall Box -->
385 <rect x="450" y="40" width="120" height="160" rx="10" fill="#fff5f5" stroke="#cf333d" stroke-width="2"/>
386 <text x="510" y="120" fill="#cf333d" font-size="12" font-weight="bold" text-anchor="middle">Firewall</text>
387
388 <!-- PBX Box -->
389 <rect x="620" y="40" width="140" height="160" rx="10" fill="#f8fafc" stroke="#003366" stroke-width="2"/>
390 <text x="690" y="75" fill="#003366" font-size="13" font-weight="bold" text-anchor="middle">Customer PBX</text>
391
392 <!-- Problem Header Packet -->
393 <path d="M 620 85 L 230 85" stroke="#307ab2" stroke-width="2"/>
394 <rect x="310" y="60" width="240" height="24" rx="4" fill="#fffbe0" stroke="#d97706"/>
395 <text x="430" y="76" fill="#b45309" font-size="10" font-weight="bold" text-anchor="middle">SDP Header: Audio IP = 192.168.1.50 (Private IP Leak!)</text>
396 </svg>
397 <div class="diagram-caption">Figure 3: Why one-way audio occurs—the PBX requests return audio to an unreachable internal private IP address.</div>
398 </div>
399
Aaron Blackburn 1.3 400 <!-- Troubleshooting Matrix -->
Aaron Blackburn 1.4 401 <div class="section-title">5. Troubleshooting Matrix</div>
Aaron Blackburn 1.3 402 <table class="tb-table">
403 <thead>
404 <tr>
405 <th>Symptom</th>
406 <th>Root Cause & Resolution Step</th>
407 </tr>
408 </thead>
409 <tbody>
410 <tr>
411 <td class="symptom">No Inbound Calls</td>
Aaron Blackburn 1.4 412 <td>Verify firewall allows <code>UDP 5060</code> from FirstDigital's subnet. Confirm <strong>SIP ALG is disabled</strong> on edge devices.</td>
Aaron Blackburn 1.3 413 </tr>
414 <tr>
415 <td class="symptom">No Outbound Calls</td>
Aaron Blackburn 1.4 416 <td>Confirm outbound SIP traffic is directed to FirstDigital's SBC IP on <code>UDP 5060</code>. Verify traffic sources from your registered Public IP and uses an assigned Caller ID.</td>
Aaron Blackburn 1.3 417 </tr>
418 <tr>
419 <td class="symptom">One-Way or No Audio</td>
Aaron Blackburn 1.4 420 <td><strong>Common Issue:</strong> PBX is leaking private IP addresses (e.g., <code>10.x.x.x</code> or <code>192.168.x.x</code>) in the SIP SDP header. Fix PBX NAT settings, SBC Media Address Override, or STUN configuration. Disable SIP ALG.</td>
Aaron Blackburn 1.3 421 </tr>
422 <tr>
Aaron Blackburn 1.4 423 <td class="symptom">Touch Tones Not Working</td>
Aaron Blackburn 1.3 424 <td>Configure PBX and endpoints to send DTMF out-of-band using <strong>RFC 2833</strong> (telephony-event).</td>
425 </tr>
426 <tr>
Aaron Blackburn 1.4 427 <td class="symptom">Calls Routing Incorrectly</td>
428 <td>Inspect received <strong>DNIS digit delivery</strong>. FirstDigital defaults to 10-digit delivery. Update PBX inbound routing rules to match.</td>
Aaron Blackburn 1.3 429 </tr>
430 <tr>
431 <td class="symptom">Forwarded Calls Have One-Way Audio</td>
Aaron Blackburn 1.4 432 <td>Occurs if FirstDigital enabled "NAT Media" as a temporary workaround for private IP header leaks. Resolving the PBX private IP leak allows FirstDigital to disable NAT Media settings, resolving transfer audio.</td>
Aaron Blackburn 1.3 433 </tr>
434 </tbody>
435 </table>
Aaron Blackburn 1.2 436
437 </div>
438 {{/html}}