SMPP

SMPP (İngilizce Short Message Peer to Peer Protocol; Eşler Arası Kısa Mesaj Protokolü), telekominikasyonda, Harici Kısa Mesaj Varlıkları (ESME), Yönlendirme varlıkları (RE) ve Mesaj Merkezleri (SMSC) arasında kısa mesaj verisinin transferi için, esnek bir veri iletişim arayüzünün sağlanması amacıyla tasarlanan, özgür, endüstri standardı olan bir protokoldür. Genellikle üçüncü partilerde(haber organizasyonları gibi) toplu mesaj iletimini sağlamak amacıyla kullanılır. Dolayısıyla, UMTS, IS-95 (CDMA), CDMA2000, ANSI-136 (TDMA) ve iDEN gibi GSM olmayan SMS protokollerine destek verir. SMPP, SS7 ağlarının dışında, kısa mesaj değiş tokuşu için yaygın olarak kullanılır.

Genellikle GSM operatörleri ve katma değerli servis sağlayıcılar arasında toplu SMS gönderimlerinde kullanılır. Bir dış SMS servisi (ESME) SMPP kullanarak TCP/IP veya X.25 üzerinden kendi uygulama katmanında bir Servis Mesajı Merkezi (SMSC) ile SMS alışverişinde bulunabilir.

SMPP, başlangıçta küçük bir İrlanda şirketi olan ve daha sonra Logica'nın (firma parçalandı ve artık Acision olarak biliniyor) satın aldığı Aldiscon tarafından tasarlandı. Protokol, aslen geliştirici Ian J Chambers tarafından, SMSC'nin mesaj iletimindeki işlevselliğini SS7 kullanmaksızın test edebilmek amacıyla yaratıldı. 1999 yılında, resmen Logica SMPP'yi, önceleri adı SMPP Geliştiricileri Forumu olan, sonra The SMS Forum olarak adlandırılan (artık forum dağıldı) topluluğa teslim etti. SMPP protokolünün teknik özellikleri, 2007 yılı sonunda kapanan SMS Forum'un web sitesi sayesinde halen mevcuttur. SMPP sahipliği, SMS Forum'un dağılması ile tekrar Acision firmasına döndü.

SMPP geliştirimine ara verildi ve SMS forumu dağıldı. SMS forum websitesiden:

Temmuz 31, 2007 - Kâr amacı gütmeyen, uluslararası kablosuz iletişim endüstrisinin yararı için, görevi SMS'i (Short Message Service) geliştirme, teşvik etme ve tanıtma olan SMS Forum, 27 Temmuz 2007 tarihi itibarıyla terhis ediliecektir.

Yapılan haberle ilişkili bir basın açıklaması, aynı zamanda bu sitenin kısa bir süre sonra askıya alınacağını uyarmıştı.Bunun aksine site uzun bir süre daha çoğu işlev ve özellikleri sunar durumdaydı (31 Ocak 2012'ye kadar).

SMS Forum'un eski teknik moderatörü ve ağ uzmanı olan Cormac Long'a göre site, çalışmasını durdurdu. SMPP tanımlamaları için Acision ile iletişim kurulması gerekir. Dosyalar ayrıca birçok diğer mevcut sitede mevcut olarak bulunabilir.

Protokol, PDU'ların (İngilizce Protocol Data Units, protokol veri birimlerinin veya paketlerin) istek/cevap çiftlerinin OSI 4. katmanı bağlantıları (TCP oturumu veya X.25 SVC3) üzerinden takas edilmesine dayanır. PDU'lar verimli olmaları için ikili olarak kodlanmışlardır. Veri takası eşzamanlı olarak yapılabilir: Her eş gönderilecek her PDU için cevap bekler. Asenkron olarak da yapılması mümkündür: çoklu istekler bekleme olmaksızın gönderilebilir ve diğer eş tarafından düzensiz sırayla kabul edilebilir. İsteklere pencere adı verilir; en iyi performans için, iletişimde bulunan taraflar aynı pencere boyutu ile yapılandırılmış olmalıdır.

SMPP birçok çift-yönlü mesajlaşma fonksiyonunu destekler:

SMPP 3 ayrı bağlantı tipi sunar

Bir SMPP oturumu 5 ayrı durumda olabilir:

Dış SMS sistemi (ESME)'den SMSC'ye şu işlevler geçerlidir:

Bu fonksiyonların çağrılmasına karşılık SMSC cevap döner. (submit_sm_resp, cancel_sm_resp)

SMSC'den ESME'ye doğru geçerli işlevler ise:

SMPP standardı zaman geçtikçe gelişti. Çokça kullanılan SMPP sürümleri şunlardır:

Geçerli sürüme, bağlama komutundaki interface_version parametresi ile aktarılır.

SMPP PDU'su başlık ile başlar, gövde ile devam eder:

Her PDU bir başlık ile başlar. Başlık 4  alandan oluşur, her alanın uzunluğu 4 oktettir:

SMPP'de bütün sayısal alanlar ilk oktetin En Anlamlı Bit (MSB) olduğu, big endian sıralamayı kullanır.

Aşağıdaki örnekte 60 oktetlik submit_sm PDU'nun ikili kodlanmış hali bulunmaktadır. 16'lık oktetler halinde gösterilen veri, bu PDU'nun başlığının ve gövdesinin tekil döküm halidir.

Bu, SMPP özelliklerinin, submit_sm PDU'sunun tanımıyla bölge bölge nasıl ikili kodlandığını gösteren en iyi örnektir.

İlk tırnak içindeki terimler bölümün adını(command_length gibi), virgülden sonraki parantez içerisindeki rakamlar ve/veya harfler bölgeye karşılık gelen değeri ((60)), sonraki oktetler ise bu değerlerin ikili karşılığını (... 00 00 00 3C) temsil eder.

Birçok kabuller olmasına rağmen, SMPP birkaç şüpheli özellik barındırır:

GSM 03.38'i temel alan SMPP 3.3'te data_coding değerleri bulunmasına rağmen, SMPP 3.4'ten beri GSM 7 bit varsayılan alfabesi için data_coding değeri yoktur.

SMPP 3.4 ve 5.0'a göre data_coding = 0, "SMSC Varsayılan Alfabesi" anlamına gelir. SMSC'nin türüne ve yapılandırmasına bağlı olarak kodlamaya tabi tutulduğunda gerçekten bu anlamı verir.

CDMA'daki C.R1001 standardı kodlamalardan biri olan Shift-JIS Japonca için kullanılır. SMPP 3.4 ve 5.0 Japonca için üç kodlama tanımlar (JIS, ISO-2022-JP ve Genişletilmiş Kanji JIS), fakat hiçbiri CDMA MSG_ENCODING 00101 ile tanımlanamaz. SMPP'deki Shift-JIS'de mesajları taşımak için Piktogram kodlama (data_coding = 9) kullanılır.

submit_sm başarısız olduğunda SMSC, sıfır olmayan bir command_status'un değeri ve "empty" message_id ile bir  submit_sm_resp döndürür.