enquire_link (0x00000015) نبضة خفيفة لإبقاء الاتصال نشطًا (keepalive) تؤكّد أن جلسة SMPP المربوطة ما زالت سليمة عبر TCP. ويحكم معدلَ النقل (throughput) حدّان: النافذة (كم وحدة PDU يمكن أن تبقى غير مُقرّة في آن واحد) وسقف TPS لدى المزوّد. ويؤدي تجاوز المعدّل إلى إعادة ESME_RTHROTTLED (0x00000058)؛ والحلّ هو الإبطاء التدريجي (backoff).
bind_transceiverفتح الجلسة والمصادقة عليهاbind_transceiver_respتم قبول الجلسةsubmit_smإرسال رسالةsubmit_sm_respتم القبول، وإعادة معرف الرسالةdeliver_smإيصال استلام أو رسالة واردةdeliver_sm_respتم التأكيدenquire_linkإشارة Keepalive أثناء الخمول
نبضة enquire_link لإبقاء الاتصال نشطًا
قد تبقى جلسة SMPP مربوطة خاملة لفترات طويلة، واتصال TCP نصف المفتوح يبدو حيًّا على مستوى المقبس. تحلّ enquire_link ذلك: يرسلها أي من الطرفين على مؤقّت خمول (كل 30–60 ثانية شائعًا) ويتوقّع enquire_link_resp فورًا. وتعني الاستجابة المفقودة أن الجلسة ميتة — فكّك اتصال TCP وأعد الاتصال مع تباطؤ تدريجي (backoff). وهي الطريقة الوحيدة الموثوقة لاكتشاف رابط معطّل بصمت.
ESME → SMSC enquire_link seq=1200
SMSC → ESME enquire_link_resp seq=1200 status=ESME_ROK
(no response within timeout ⇒ treat session as dead, reconnect)النافذة: وحدات PDU المعلَّقة غير المُقرّة
SMPP غير متزامن: يمكنك إرسال عدة وحدات submit_sm قبل وصول استجابة submit_sm_resp الخاصة بها. ويحدّ حجم النافذة كم منها يمكن أن تكون معلَّقة (غير مُقرّة) في آن واحد. وحين تمتلئ النافذة يجب أن توقف الإرسال حتى تُحرّر استجابةٌ مكانًا. والإطلاق بما يتجاوز النافذة سبب رئيسي للخنق وإسقاط الوحدات. ويُتّفق على حجم النافذة مع المزوّد — لا توجد قيمة افتراضية واحدة للبروتوكول.
الخنق وTPS
بمعزل عن النافذة، يفرض المزوّد معدّل رسائل أقصى — معاملات في الثانية (TPS) — لكل ربط أو لكل حساب. ويؤدي تجاوزه إلى إعادة ESME_RTHROTTLED (0x00000058). والاستجابة الصحيحة هي الإبطاء: أوقِف، وأبطئ تدريجيًا (backoff) مع تشويش زمني، واستأنف دون السقف. لا تعِد أبدًا إرسال وحدة مخنوقة فورًا ولا تفتح عمليات ربط إضافية للالتفاف على الحدّ — كلاهما يخاطر بتعليق الحساب. وفي v5.0 يمكن لـ SMSC إضافيًا الإعلان عن الازدحام عبر معامل congestion_state كي يبطئ ESME استباقيًا.
| الحد | يتحكم في | إشارة التجاوز |
|---|---|---|
| حجم النافذة | وحدات PDU غير مؤكدة قيد النقل | الضغط العكسي / وحدات PDU مُسقَطة |
| الحد الأقصى لعدد الرسائل في الثانية (TPS) | عدد الرسائل في الثانية | ESME_RTHROTTLED (0x58) |
| عدد جلسات bind | جلسات متوازية | تم رفض الربط / إجراء الحساب |
الضبط لمعدل نقل مستدام
معدل النقل الفعلي تقريبًا هي حجم النافذة مقسومًا على زمن الذهاب والإياب، مقيَّدًا بسقف TPS. تساعد النافذة الأكبر على الروابط عالية زمن الاستجابة؛ ويساعد المزيد من عمليات الربط فقط إن زوّدها المزوّد. راقِب إشغال النافذة وزمن الإرسال/الاستجابة ومعدّل أخطاء الخنق، وعامِل ارتفاع معدّل ESME_RTHROTTLED كإشارة لخفض معدّل الإرسال لا لدفعه أكثر.
الأسئلة المتكررة
كم مرة ينبغي أن أرسل enquire_link؟
كل 30–60 ثانية شائعًا على مؤقّت خمول. أرسلها حين تهدأ الجلسة، وعامِل غياب enquire_link_resp ضمن مهلتك كجلسة ميتة يجب إعادة الاتصال بها.
ما هو حجم نافذة SMPP؟
النافذة هي أقصى عدد لوحدات PDU التي يمكن أن تكون معلَّقة (مُرسَلة لكن لم تُقرّ بعد) في آن واحد. وتُتفاوَض مع مزوّدك لا يحدّدها البروتوكول؛ أوقِف الإرسال حين تمتلئ النافذة.
كيف أعالج ESME_RTHROTTLED؟
اخفض معدّل إرسالك. أوقِف، وأبطئ تدريجيًا (backoff) مع تشويش زمني، واستأنف دون سقف TPS لدى المزوّد. لا تعِد المحاولة فورًا ولا تفتح عمليات ربط إضافية للالتفاف على الحدّ — كلاهما قد يزيد الخنق أو يعلّق الحساب.
هل تزيد النافذة الأكبر من TPS لديّ؟
إلى حدّ ما. معدل النقل تقريبًا حجم النافذة مقسومًا على زمن الذهاب والإياب، لكنها تبقى مقيَّدة بسقف TPS لدى المزوّد. وتساعد النافذة الأكبر أساسًا على إخفاء زمن الاستجابة على الروابط عالية RTT.
ما هو congestion_state في SMPP v5.0؟
يضيف v5.0 معامل congestion_state يتيح لـ SMSC الإعلان عن مقدار تحميله (0–100). ويقرؤه ESME المتعاون فيبطئ استباقيًا قبل بلوغ الخنق الصارم، ما يُنعّم معدل النقل تحت الحمل.
مواصفات المصدر
تستند هذه الصفحة إلى المعايير المنشورة. يفتح في علامة تبويب جديدة.