كيفية تحسين سرعة إنترنت أوبونتو باستخدام إعدادات MTU



جرب أداة القضاء على المشاكل

بينما تختلف نصوص الكمبيوتر في تطبيقها للمصطلح ، يستخدم Ubuntu وحدة الإرسال القصوى لـ TCP (MTU) للإشارة إلى الحجم الأكبر لحزمة TCP التي يمكن للجهاز تمريرها عبر اتصال شبكة TCP / IP. في حين أن حساب هذه القيمة بسيط نسبيًا وتعمل الإعدادات الافتراضية على غالبية الأجهزة ، فقد يكون من الممكن زيادة تحسين نظامك إذا كانت الحزم مجزأة بسبب إعدادات غير عادية. يعد إرسال حزم صادرة مفردة كبيرة أكثر كفاءة من إرسال عدة حزم صادرة أصغر.



أسهل طريقة لمعرفة قيمة MTU الصحيحة لجهازك هي فتح نافذة طرفية. اضغط باستمرار على CTRL و ATL و T أو ربما ابدأ تشغيله من شرطة الوحدة. إذا كنت تعمل مع خادم Ubuntu ، فستتحول افتراضيًا إلى واجهة CLI بدون بيئة رسومية على الإطلاق. بمجرد وصولك إلى المحطة ، اكتب ping -s 1464 -c1 distrowatch.com وانتظر الإخراج. إذا كنت لا تتلقى أي شيء ، فهذا يعني أن اتصالك بالشبكة لم يتم تكوينه بشكل صحيح. بافتراض أنك تلقيت إخراجًا مناسبًا ، فابحث عن قسم يقرأ 1464 (1492) بايت من البيانات ، مما يشير إلى أنك ترسل الحزمة مع 28 بايت من معلومات الرأس.



الطريقة الأولى: فحص إخراج ping لتجزئة الحزمة

سيتيح لك الأمر ping معرفة ما إذا تم إرسال الحزمة على أنها أكثر من جزء واحد مع إرفاق بيانات رأس متعددة. افحص ناتج أي سطر يحذر من شيء ما بخصوص 'Frag needed and DF set (mtu = 1492)' أو أي نص مشابه. اعتمادًا على إصدار ping الذي تم تضمينه في إصدار Ubuntu الخاص بك ، قد تتم صياغة التحذير بشكل مختلف. في حالة عدم وجود هذا النص ، فمن المرجح أنك تعمل بالفعل مع بعض قياسات MTU التي لا ترسل حزمًا مجزأة في الوقت الحالي.



للعثور على MTU الأكثر تحسينًا لنظامك ، قد ترغب في تشغيل أمر ping هذا بحجم حزمة صغير ، ثم زيادته بمرور الوقت حتى يبدأ في التجزئة ، وبعد ذلك تعتبر هذه النقطة الفاصلة لك. ضع في اعتبارك أن MTU = payload + 28 ، حيث يجب أن يكون هناك بعض المساحة لبيانات الرأس. الآن ، إذا كان بإمكانك زيادة الحجم إلى شيء كبير جدًا دون أي أجزاء ، فقد تتمكن واجهة الشبكة الخاصة بك من التعامل مع الحزم الضخمة دون الحاجة إلى إنشاء أجزاء. عندما ترى أخيرًا تحذيرًا مطلوبًا من Frag ، فهذا يعني أن أي حزمة يتم إرسالها مع حمولة بالحجم الذي قمت بتشغيله أو أعلى سيتم إرسالها كحزم متعددة. افترض أنك إذا جربت ping -s 2464 -c1 distrowatch.com دون أي تحذير ، لكن ping -s 2465 -c1 distrowatch.com يرسل تحذيرًا ، فهذا يعني أن 2،464 + 28 هو أكبر إعداد MTU يمكن أن يتعامل معه تكوين TCP / IP قبل إرسال عدة حزم مجزأة. قد يستغرق الأمر بضع دقائق لتحديد قيمة دقيقة.



بمجرد أن تضع في اعتبارك قيمة من تشغيل الأمر ping عدة مرات ، ستحتاج إلى التشغيل sudo ifconfig للعثور على قائمة بواجهات الشبكة المعروفة. تقوم Ubuntu ومشتقاته بتجزئة حساب الجذر ، لكننا عملنا من قذيفة تم إنشاؤها بواسطة sudo bash لأمثلة لدينا. من المستحسن أن تسبق كل أمر بـ sudo على حدة.

بمجرد معرفة الجهاز الصحيح ، جرب:

sudo ifconfig interface اسم الرجل ####

استبدل interfaceName باسم محول الشبكة الذي تستخدمه ، ثم استبدل #### بالحجم الذي وجدته بالإضافة إلى 28 للحصول على معلومات الرأس. يمكنك تشغيل ifconfig لمعرفة ما كانت وحدة الإرسال الكبرى الافتراضية لبطاقة NIC الخاصة بك وتشغيلها مرة أخرى عدة مرات لمعرفة ما إذا كان هذا الأمر السابق يغيرها. لن تسمح لك بعض محولات واجهة الشبكة بتغييرها. إذا كان الأمر كذلك ، فسيكون للأسف المزيد من التحسين غير مجدي. ومع ذلك ، إذا نجح هذا ، فيمكنك فعلاً جعله دائمًا. جرب الجري ifconfig | grep MTU للعثور على جميع القيم إذا كانت لديك موصلات متعددة ، وبعد ذلك يمكنك مطابقة القيم مع الموصلات التي تعمل معها.

الطريقة الثانية: تثبيت تحسينات MTU

حتى الآن لم تُجر أي تغيير دائم على نظامك. إذا أعدت التشغيل ، فستقوم بمسح أي تغييرات ، وهذا أمر جيد إذا كنت قد ارتكبت نوعًا من الخطأ ووجدت أنه لا يمكنك الاتصال بالإنترنت بعد الآن. من ناحية أخرى ، إذا وجدت قيمة دقيقة لـ MTU الخاصة بك ، فسيلزمك تعديل ملف وثيقة. ربما يكون هذا هو الوقت المناسب لعمل نسخة منه في حالة حدوث شيء ما. محاولة أو شيء مشابه لذلك لديك نسخة تحسبًا لها. إذا كنت ترغب في تعديله بيانياً ، فاكتب وأدخل كلمة المرور الخاصة بك. إذا كنت تستخدم Kubuntu أو Xubuntu أو Lubuntu ، فستحتاج إلى استبدال gedit بمحرر النص الرسومي الذي تستخدمه وحدة استجابة Ubuntu. Xubuntu ، على سبيل المثال ، يستخدم لوحة الماوس بدلاً من gedit. إذا كنت تستخدم خادم Ubuntu أو تفضل ببساطة العمل باستخدام سطر الأوامر ، فاكتب بدلاً من ذلك ، بافتراض أنك لا تستخدم غلاف الجذر.

بصرف النظر عن الطريقة التي استخدمتها لتحريرها ، ابحث عن اسم الواجهة ifconfig الذي خرج من قبل. لنفترض أنك كنت تبحث عن أول موصل Wifi على جهازك ، والذي من المحتمل أن يسمى wlan0 أو شيء مشابه. في هذه الحالة ، ابحث عن مقتطف من التعليمات البرمجية التي تبدأ بـ iface wlan0 inet static أو شيء مشابه. قد تختلف المسافة المقطوعة بالميل ، لكن السطر التالي سيقرأ العنوان متبوعًا بعنوان IP بتنسيق ###. ###. #. ##. قد يكون تنسيقه مختلفًا إذا كنت تستخدم اتصال IPv6 أصليًا. سيكون لديك قناع شبكة وخط بوابة ، متبوعين بشيء يسرد اسم مضيف أو شيء مشابه. في الجزء السفلي ، سيكون لديك سطر آخر يقرأ mtu ورقم. استبدل هذا الرقم بقيمة MTU الأمثل ، واحفظ المستند ثم اخرج من محرر النصوص. ستحتاج إلى إعادة تشغيل النظام للتأكد من أنه يعمل.

إذا كان كل شيء على ما يرام بعد عدة عمليات إعادة تمهيد ، فاحذف ملف interfaces.bak من دليل المستندات ~ /. يمكنك بدلاً من ذلك استخدام sudo mv وثم

إذا حدث أي شيء ينحرف في هذه العملية.

الطريقة الثالثة: تحرير إعدادات نافذة تلقي TCP (RWIN)

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

الكمون هو الوقت الذي يستغرقه إرسال واستقبال الحزم من خادم بعيد. تساهم معدلات الاتصال في هذه القيمة ، ولكن هناك العديد من التأخيرات الأخرى. سيشرح الأمر ping زمن الانتقال من حيث أرقام وقت الذهاب والإياب (RTT). انظر إلى الإخراج من اختبار ping السابق الخاص بنا لـ DistroWatch. ستجد سطرًا يقرأ الوقت = 134 مللي ثانية ، وهو الوقت الذي استغرقته الحزم للذهاب ذهابًا وإيابًا من آلة Ubuntu إلى distrowatch.com والعودة مرة أخرى. كنا نرسل حزمة بحجم 1،492 بايت ، لذلك في 134 مللي ثانية يمكننا حساب صيغة للعثور على سرعة النقل الإجمالية:

1،492 / .134 ثانية = 11،134.328 بايت / ثانية ، أي ما يقرب من 10.88 كيلو بايت ثنائي في الثانية. هذا بطيء نوعًا ما بشكل عام ، وهذا هو سبب وجود RWIN لمنعك من الاضطرار إلى الإقرار بكل حزمة يتم إرسالها بشكل فردي.

إعدادات RWIN في Ubuntu منفصلة عن إعدادات MTU. احسب منتج تأخير النطاق الترددي (BDP) لاتصالك بالإنترنت باستخدام هذه الصيغة:

(إجمالي الحد الأقصى لعرض النطاق الترددي الذي يجب أن يوفره اتصالك بالإنترنت بالبايت في الثانية) (RTT بالثواني) = BDP

لا يؤثر حجم حزمة TCP على RWIN ، لكن حجم الحزمة نفسه يتأثر بالقيمة المحددة في الطريقة الأولى. استخدم هذا الأمر للعثور على متغيرات kernel المتعلقة بـ RWIN:

يُرجى مراعاة وجود مسافة بعد _mem ، ولكن لا يوجد مكان آخر في النص المقتبس. ستحصل على العديد من القيم. المطلوب هم net.ipv4.tcp_rmem و net.ipv4.tcp_wmem و net.ipv4.tcp_mem . تمثل الأرقام بعد هذه القيم القيم الدنيا والافتراضية والقصوى لكل منها. أنها تمثل متجه ذاكرة نافذة الاستقبال ، وإرسال متجه ومتجه مكدس TCP. إذا كنت تقوم بتشغيل Ubuntu Kylin ، فقد يكون لديك قائمة طويلة من القوائم الإضافية. يمكنك تجاهل أي من هذه القيم الإضافية بأمان. قد يرى بعض مستخدمي Kylin أيضًا بعض القيم المحددة في نصوص أخرى ، ولكن مرة أخرى ابحث ببساطة عن هذه السطور.

لا يحتوي Ubuntu على متغير RWIN ، لكن net.ipv4.tcp_rmem قريب. تتحكم هذه المتغيرات في استخدام الذاكرة وليس حجم TCP فقط. وهي تشمل الذاكرة التي تلتهمها هياكل مقابس البيانات والحزم القصيرة في المخازن المؤقتة الضخمة. إذا كنت ترغب في تحسين هذه القيم ، فأرسل حزم الحجم الأقصى التي قمت بتعيينها في الطريقة الأولى إلى خادم بعيد آخر. دعنا نستخدم القيمة الافتراضية 1492 بايت مرة أخرى ، مع طرح 28 بايت لمعلومات الرأس ، ولكن تذكر أنه قد يكون لديك قيمة مختلفة. استخدم الأمر ping -s 1464 -c5 distrowatch.com للحصول على بيانات RTT إضافية.

ستحتاج إلى إجراء هذا الاختبار أكثر من مرة في أوقات مختلفة من النهار والليل. حاول إجراء اختبار ping لبعض الخوادم البعيدة أيضًا لمعرفة مدى اختلاف RTT. نظرًا لأن لدينا متوسط ​​يزيد قليلاً عن 130 مللي ثانية في كل مرة جربناها ، يمكننا استخدام الصيغة لمعرفة BDP لدينا. لنفترض أنك تستخدم اتصالًا عامًا جدًا بسرعة 6 ميغابت / ثانية. سيكون BDP:

(6،000،000 بت / ثانية) (. 133 ثانية) * (1 بايت / 8 بت) = 99،750 بايت

هذا يعني أن القيمة الافتراضية net.ipv4.tcp_rmem يجب أن تكون في مكان ما حول 100000. يمكنك ضبطه على مستوى أعلى إذا كنت تخشى أن تحصل على RTT بشكل سيء يصل إلى نصف ثانية. يجب تعيين جميع القيم الموجودة في net.ipv4.tcp_rmem و net.ipv4.tcp_wmem بشكل مماثل ، نظرًا لأن إرسال واستقبال الحزم يحدث عبر نفس اتصال الإنترنت. ستحتاج عمومًا إلى تعيين net.ipv4.tcp_mem على نفس القيمة المستخدمة بواسطة net.ipv4.tcp_wmem و net.ipv4.tcp_rmem نظرًا لأن هذا المتغير الأول هو إجمالي حجم ذاكرة التخزين المؤقت المحدد لمعاملات TCP.

يصدر الأمر ومعرفة ما إذا تم تعيين هذين الإعدادين على 0 أو 1 ، مما يشير إلى حالة الإيقاف أو التشغيل.

سيؤدي تعيين net.ipv4.tcp_no_metrics_save على 1 إلى إجبار Linux kernel على تحسين نافذة الاستلام بين قيم net.ipv4.tcp_rmem و net.ipv4.tcp_wmem بطريقة ديناميكية. عند تمكين net.ipv4.tcp_moderate_rcvbuf ، فإنه يمنع الازدحام من التأثير على الاتصال اللاحق. قبل إجراء أي تغييرات دائمة ، قم بإجراء فحص السرعة من خلال http://www.speedtest.net أو http://www.bing.com/search؟q=speed+test للتأكد من أن لديك مؤشرًا على قياساتك.

قم بتغيير المتغيرات مؤقتًا بالقيم المحسوبة. تأكد من استبدال #s بالمجموع المحسوبة.

sudo sysctl -w net.ipv4.tcp_rmem = ”#### ##### ######” net.ipv4.tcp_wmem = ”#### ##### ######” net.ipv4.tcp_mem = ”#### ##### ######” net.ipv4.tcp_no_metrics_save = 1 net.ipv4.tcp_moderate_rcvbuf = 1

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

net.ipv4.tcp_rmem = #### ##### ######

net.ipv4.tcp_wmem = #### ##### ######

net.ipv4.tcp_mem = #### ##### ######

net.ipv4.tcp_no_metrics_save = 1

net.ipv4.tcp_moderate_rcvbuf = 1

احفظه بمجرد التأكد من أن كل شيء على ما يرام. أصدر الأمر التالي:

sudo sysctl -p

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

قراءة 8 دقائق