الخلاصة

  • يصف ACK Delay انتظاراً متعمداً بين استلام أكبر حزمة جرى تأكيدها وإرسال ACK.
  • يتكوّن latest_rtt أولاً من قياس محلي خام، قبل تطبيق أي تعديل بوساطة ACK Delay.
  • يتطلب التفسير الصحيح ack_delay_exponent وحالة المصافحة وmax_ack_delay وحد min_rtt.

قد يبدو منطقياً قياس الزمن من إرسال الحزمة إلى وصول ACK، ثم فك ACK Delay وطرحه، ونشر الباقي بوصفه زمن انتقال الشبكة. لكن هذا يخلط بين ملاحظة محلية وتقرير من الطرف المقابل واستنتاج خوارزمي. ACK Delay هو تقرير من المستقبل عن انتظار متعمد كان تحت سيطرته. لا يقيس مباشرة زمن الانتشار أو طوابير الشبكة أو زمن الاتجاه الواحد، ولا يصف كل وقت الانتظار داخل المضيف البعيد.

نطاق الحقل محدد. فهو يتعلق بالفاصل بين استلام الحزمة ذات أكبر رقم حزمة جرى تأكيده وإرسال ACK. ولا يعني أن كل حزمة ضمن ACK ranges تحمل فترة الانتظار نفسها، ولا يقدم قيمة مستقلة لكل واحدة منها. كما أن التأخير الذي لا يتحكم فيه الطرف النهائي، مثل بقاء الحزمة في مسار نظام التشغيل قبل أن يعالجها QUIC، لا يدخل تلقائياً في ACK Delay. وقد يدخل التأخير الناتج عن عدم توافر مفاتيح فك التشفير وفق القواعد، لكنه لا يصبح بذلك مؤقتاً شاملاً لمعالجة المضيف أو التطبيق.

يحسب المرسل latest_rtt أولاً من وقت الإرسال المحلي لأكبر حزمة جديدة مؤكدة تطلب ACK ومن وقت وصول ACK محلياً. لذلك تحتفظ العينة الخام بالفاصل الكامل الذي رآه المرسل. يأتي استخدام ACK Delay لاحقاً عند حساب smoothed_rtt وrttvar. ولا يمكن تفسير القيمة المشفرة من دون ack_delay_exponent ومعلمات النقل ذات الصلة. قيمة الأس الافتراضية هي 3، ويقاس max_ack_delay بالمللي ثانية وقيمته الافتراضية 25 ms، لكن القيم الافتراضية لا تلغي سياق الاتصال المتفاوض عليه.

يُحسب min_rtt من الملاحظات المحلية فقط، ولا يُخفض بسبب ACK Delay الذي يبلّغ عنه الطرف المقابل. وهو حد سفلي يحمي من خفض التقدير بسبب تقرير خاطئ، وليس قياساً لزمن الشبكة الخالص أو لزمن الاتجاه الواحد. بعد تأكيد المصافحة، يستخدم المرسل الأصغر بين ACK Delay المفكوك وmax_ack_delay للطرف المقابل، ولا يسمح بأن تنخفض العينة المعدلة عن min_rtt. قبل التأكيد، لا يُستخدم max_ack_delay كسقف؛ فقد تظهر فترات أطول بسبب توافر المفاتيح أو أسباب مبكرة أخرى.

لا يثبت التأخير الزائد سبباً واحداً. بعد التأكيد، يعامل الخوارزمية الجزء الذي يتجاوز max_ack_delay باعتباره جزءاً فعلياً من تأخير المسار، لكن الملاحظة وحدها لا تميز بين تأخر جدولة الطرف المقابل، وفقدان ACK سابق، ومستقبل غير ملتزم. حماية الحزمة تثبت مصدر الحقل، ولا تثبت صحة التقرير. كما أن هذه البيانات لا تثبت زمن معالجة التطبيق، أو استجابة الخدمة، أو اكتمالاً دائماً، أو نتيجة تجارية.

ينبغي حفظ سجل يفصل بين الوقائع: هوية الاتصال والمسار، مساحة أرقام الحزم، أكبر حزمة مؤكدة ووقت إرسالها، وقت وصول ACK ومعالجته، latest_rtt الخام، قيمة ACK Delay الخام والمفكوكة، ack_delay_exponent، max_ack_delay للطرف المقابل، حالة تأكيد المصافحة، min_rtt، السقف والحد السفلي المطبقان، العينة المعدلة، smoothed_rtt وrttvar وPTO. ويجب فصل ACK ranges وتوافر المفاتيح والمعالجة المحلية ودليل فقدان ACK وتوقيت التطبيق. التقرير والملاحظة والاشتقاق ليست شيئاً واحداً.