BroadNet
Protocols BroadNet answer

What is SMPP window size?

Last reviewed 2 min readReviewed by BroadNet engineering
Quick answer

The window is the number of SMPP PDUs an ESME may have in flight — submitted but not yet acknowledged — on a single bind at any moment. It is the single biggest determinant of the throughput you get from a bind, and the setting most often left at a default that silently caps an integration far below its agreed rate.

Plain-language definitionVendor-neutralReviewed September 10, 2026
DiagramAn SMPP session between your platform and BroadNet
Your platform (ESME)
BroadNet SMSC
One persistent TCP/TLS connection
  1. bind_transceiverOpen and authenticate the session
  2. bind_transceiver_respSession accepted
  3. submit_smSend a message
  4. submit_sm_respAccepted, message ID returned
  5. deliver_smDelivery receipt or inbound message
  6. deliver_sm_respAcknowledged
  7. enquire_linkKeepalive while idle
The long answer

Everything worth knowing, nothing that isn't.

§01

Why a window exists at all

SMPP is asynchronous: you send a submit_sm and the SMSC replies with a submit_sm_resp, but you do not have to wait for that reply before sending the next PDU. The window is how many you are allowed to run ahead. With a window of 1 the session becomes request-response, and your throughput collapses to one message per round trip — on a 50ms link that is 20 messages a second regardless of what your contract says.

§02

The arithmetic

Rough throughput is window size divided by round-trip latency. A window of 10 against a 50ms round trip gives roughly 200 messages per second on one bind; a window of 50 gives around 1,000. This is why two customers on identical commercial terms can see wildly different real throughput — one has tuned the window and the other has not. Raising the window costs nothing on your side except memory for the unacknowledged PDUs.

§03

Why you cannot just set it to 1,000

The window is agreed with the operator or provider, and exceeding it gets you ESME_RTHROTTLED responses or a dropped bind. The SMSC has to hold state for every unacknowledged PDU too. Beyond a certain point the bottleneck moves from the window to the SMSC's own submission rate, and a larger window only deepens a queue you cannot drain. Agree the window and the TPS ceiling together, and treat them as one setting.

§04

Multiple binds and ordering

When one bind is not enough, the answer is more binds rather than an unbounded window — most providers allocate throughput per bind. Be careful with message ordering: PDUs across separate binds have no guaranteed relative order, so a multi-part message or a sequence a user will read in order should stay on one bind. Keep an enquire_link running on each so an idle bind is not silently dropped.

BNWritten by the BroadNet engineering team·Operating carrier-grade messaging since 2003, headquartered in Dubai·Editorial standards
Build with this

Need help wiring this up?

The pages below are the products and integration guides that put this concept on the wire. If you'd rather walk through it live, our engineering team takes calls same-day during MENA working hours.

Talk to our engineering team
Feedback

Was this answer helpful?

Your vote helps us prioritise which answers to expand with examples, diagrams, and code snippets.

Was this answer helpful?
Thanks — noted. We'll keep this answer maintained.
Got it. Tell us what was missing — send a quick note.

How we write and review content

Still need help?

Talk to a real engineer about your build.

We reply within one business day, and production accounts get 24/7 support. Our solutions engineers ship code, not scripts.

$ curl -X POST https://api.broadnet.me/sms/sendSms
Response SLA
Test-access requestsReply within 1 business day
Production24 / 7 · < 15 min
Operator NOC24 / 7 · pager