pfSense على Virtio: توقّف TCP إلى أن يُعطَّل تفريغ الحمل
تمرّ pfSense الافتراضية في اختبارات ping ثم تتوقف عند نقل كميات كبيرة من TCP. عطّل مسار تفريغ مجموع التحقق في virtio وقس الكلفة بدل استبدال بطاقة الشبكة.
يبلّغ أحد العملاء بأن النفق يتصل، والـ ping يجيب، وصفحة الدخول تُحمَّل، ثم يتجمّد النقل عند النقطة نفسها في كل محاولة. هذا النمط يقول الكثير مسبقًا: إمكانية الوصول تعمل، والإنتاجية المستمرة لا تعمل. قبل فتح جدار الحماية، تحقّق مما إذا كان الـ VPN مشاركًا في العطل أصلًا. مرّر حركة TCP كبيرة عبر البوابة نفسها دون أي نفق في المسار؛ فإن تجمّدت أيضًا، فلم يكن OpenVPN طرفًا في الأمر قط.
ضيف pfSense الذي يستخدم بطاقة شبكة virtio لديه سبب وجيه جدًا للفشل بهذا الشكل بالضبط.
الحزم الصغيرة تمرّ، وTCP الكثيف يتعلّق
المصافحات وردود DNS وصدى ICMP صغيرة وتمرّ عادةً. النقل المستمر يفرض على الضيف التقسيم إلى مقاطع، وهنا يظهر مسار التفريغ التالف. لا يلزم أن يكون العطل متماثلًا: قد يكون الصادر سليمًا بينما يسقط الوارد، أو العكس، فيتمكّن المستخدم من تسجيل الدخول ثم يتوقف عند أول استجابة كبيرة. ولأن العميل نفسه يعمل عبر بوابة أخرى، يُحمَّل المكوّن الأحدث المسؤولية.
اختبر البوابة إذن دون النفق. تنزيل من الشبكة المحلية إلى الشبكة الواسعة يدوم ثوانٍ قليلة يكفي، ويجب إجراؤه قبل أي تغيير في الإعدادات حتى تكون المقارنة بعده ذات معنى.
ما يَعِد به التفريغ فعلًا
virtio شبه افتراضي: يتقاسم المضيف والضيف العمل، ويعلن المضيف قدرات مجموع التحقق والتقسيم، وينتظر من الضيف إنهاء ما بدأه. إن لم تفعل حزمة الضيف ذلك، خرجت الإطارات بمجاميع تحقق ناقصة أو أسقطها المضيف. توفر E1000 المحاكاة نموذجًا أبسط وأبطأ يتبخر فيه المشكلة دون تغيير واحد في pfSense. يحدث تفاوض القدرات لكل جهاز، وهذا يفسّر لماذا يعمل ضيف شهورًا بينما يفشل توأمه المُعاد بناؤه في اليوم الأول.
تعتمد المجموعة المتفاوض عليها على إصدار برنامج المحاكاة الافتراضية وطراز بطاقة الشبكة المختار، وليس على الإعداد الذي استوردته وحده.
مربّع اختيار واحد يُبقي virtio
في واجهة pfSense، يحتوي النظام ثم متقدم ثم الشبكات على مربّع اختيار اسمه تعطيل تفريغ مجموع التحقق العتادي. يؤدي تحديده إلى أن يحسب الضيف مجاميع التحقق في البرمجيات، بما يوافق ما تتوقعه حزمة FreeBSD خلف pfSense من جهاز شبه افتراضي. ويغطي خيارَان مرتبطان في الصفحة نفسها تفريغ تقسيم TCP العتادي وتفريغ الاستقبال الكبير العتادي. استخدم هذين عندما تنجح المصافحات لكن النقل الكثيف لا ينجح.
اترك بطاقة الشبكة virtio أثناء إجراء التغيير. التحويل إلى E1000 يستهلك المعالج في كل حزمة طوال عمر الجهاز الافتراضي ويخفي مشكلة الإعداد عن أي شخص يورث المضيف، وهي مقايضة أسوأ من مسار بيانات أبطأ قليلًا لكنه متوقّع.
قِس الكلفة التي قبلتها للتوّ
يُدخل حساب مجموع التحقق البرمجي العمل إلى الضيف، فقِس الإنتاجية بعده بدل افتراض أنه بلا كلفة. على جهاز افتراضي صغير تكون العقوبة حقيقية، لكنها مرئية ومستقرة، بخلاف السقوط الصامت. قارن عدادات أخطاء الواجهة وسجل نواة الضيف قبل وبعد. برنامج المحاكاة الافتراضية الذي يرشّح الجسر عطل منفصل بأدلة مختلفة، ولن يعالجه أي علم من أعلام التفريغ.
غيّر شيئًا واحدًا في كل اختبار واكتب مسار القائمة والمربّع الذي حددته والرقم الذي قسته. من سيواجه الضيف المُعاد بناؤه التالي سيريد الثلاثة جميعًا.
تعرض جدران الحماية الأخرى القائمة على BSD تحكمًا مكافئًا ضمن إعدادات واجهتها الخاصة، لذا تسري الحجة حتى حين لا يسري مسار القائمة.