SIP/SIMPLE defines two models for messaging. In the "pager model" (RFC-3428), the message is simply transferred with the MESSAGE method and the receiver responds with "ok" or "accepted". In the "session model", the two SIP endpoints establish a session with the INVITE procedure, transfer messages within the session, and then close the session with BYE.
SMS naturally follows the paged model. Radio channels are scarce resources and cannot be held idle for long periods in any practical system. A typical SMS transaction occurs outside of an established call and the radio channel is held just long enough to move a single message. Store-and-forward handling is an absolute requirement, too. When a short message is submitted to the network by a handset, the payload part (the TPDU) must be held until a delivery channel can be established to the destination . Even if the destination handset has service, this can take several seconds. And if the handset does not have service this can take hours or days.
When we first contemplated SMS for a SIP-oriented core network, we thought we could use a messaging server like Jabber to replace the SMSC. That doesn't work. Most messaging servers follow the session model. And why not? IM applications are session oriented and maintaining an open session in the IP world is very cheap. These messaging servers are built for chat sessions and presence, not for storing and forwarding one-off messages to intermittently connected handsets.
So the OpenBTS project is off to build its own store-and-forward page-mode messaging server, probably from MySQL and some simple scripts, using Kannel as a gateway to conventional GSM SMSCs. We'll post more as it happens and welcome any suggestions.