วิธีเพิ่มประสิทธิภาพความเร็วอินเทอร์เน็ตของอูบุนตูด้วยการตั้งค่า MTU

ในขณะที่ข้อความคอมพิวเตอร์ต่างกันในการใช้คำนี้อูบุนตูจะใช้ TCP Maximum Transmission Unit (MTU) เพื่อดูขนาดที่ใหญ่ที่สุดของแพ็คเก็ต TCP เครื่องสามารถผ่านการเชื่อมต่อเครือข่าย TCP / IP ได้ ในขณะที่การคำนวณค่านี้ค่อนข้างง่ายและค่าเริ่มต้นทำงานกับเครื่องส่วนใหญ่อาจเป็นไปได้ที่จะเพิ่มประสิทธิภาพระบบของคุณต่อไปหากแพ็คเก็ตมีการกระจายตัวเนื่องจากการตั้งค่าผิดปกติ การส่งแพ็คเก็ตเดียวที่มีขนาดใหญ่ออกจะมีประสิทธิภาพมากกว่าการส่งข้อมูลขาออกที่มีขนาดเล็กลง

วิธีที่ง่ายที่สุดในการหาค่า MTU ที่ถูกต้องสำหรับเครื่องของคุณคือการเปิดหน้าต่างเทอร์มินัล กด CTRL, ATL และ T หรืออาจเริ่มจาก Unity dash ถ้าคุณกำลังทำงานกับ Ubuntu Server คุณจะเริ่มต้นใช้อินเตอร์เฟส CLI โดยไม่มีสภาพแวดล้อมแบบกราฟิกเลย เมื่อคุณอยู่ที่ terminal พิมพ์ ping -s 1464 -c1 distrowatch.com และรอเอาต์พุต หากคุณไม่ได้รับอะไรการเชื่อมต่อเครือข่ายของคุณยังไม่ได้รับการกำหนดค่าอย่างถูกต้อง สมมติว่าคุณได้รับผลลัพธ์ที่ถูกต้องแล้วมองหาส่วนที่อ่านข้อมูล 1464 (1492) ไบต์ซึ่งระบุว่าคุณกำลังส่งแพ็คเก็ตที่มีข้อมูลส่วนหัว 28 ไบต์

วิธีที่ 1: การตรวจสอบผลลัพธ์ ping สำหรับการแยกส่วนของแพ็คเก็ต

คำสั่ง ping จะแจ้งให้คุณทราบว่าแพคเก็ตถูกส่งเป็นมากกว่าหนึ่งส่วนที่มีข้อมูลส่วนหัวหลายชุดอยู่หรือไม่ ตรวจสอบผลลัพธ์สำหรับบรรทัดใด ๆ ที่เตือนเกี่ยวกับบางอย่างเกี่ยวกับ Frag needed และ DF set (mtu = 1492) หรือข้อความอื่นที่คล้ายคลึงกัน ขึ้นอยู่กับรุ่นของ ping ที่มาพร้อมกับอูบุนตูรุ่นของคุณคำเตือนอาจจะ worded แตกต่างกัน หากข้อความนี้ไม่ปรากฏอยู่คุณอาจใช้งานการวัด MTU บางส่วนที่ไม่ได้ส่งออกแพ็คเก็ตที่กระจัดกระจายอยู่ในขณะนี้

เพื่อหา MTU ที่ดีที่สุดสำหรับระบบของคุณคุณจะต้องใช้คำสั่ง ping นี้กับขนาดแพ็คเก็ตที่เล็กและจากนั้นเมื่อเวลาผ่านไปเพิ่มขึ้นจนกว่าจะเริ่มแยกส่วนหลังจากที่คุณพิจารณาจุดตัดของคุณ โปรดทราบว่า MTU = payload + 28 เนื่องจากต้องมีข้อมูลส่วนหัวสำหรับข้อมูลส่วนหัว ตอนนี้ถ้าคุณสามารถเพิ่มขนาดให้เป็นขนาดใหญ่ได้โดยไม่ต้องมีเศษใด ๆ จากนั้นอินเทอร์เฟซเครือข่ายของคุณอาจสามารถจัดการกับแพ็กเก็ตขนาดใหญ่ได้โดยไม่จำเป็นต้องสร้างชิ้นส่วน เมื่อคุณเห็นคำเตือนที่จำเป็นสำหรับ Frag ซึ่งหมายความว่าทุกแพ็คเก็ตที่ส่งมาพร้อมกับ payload ขนาดที่คุณวิ่งหรือสูงกว่าจะส่งเป็นหลายแพ็คเก็ต สมมติว่าถ้าคุณลอง ping -s 2464 -c1 distrowatch.com โดยไม่มีคำเตือนใด ๆ แต่ ping -s 2465 -c1 distrowatch.com จะส่งคำเตือนซึ่งหมายความว่า 2, 464 + 28 เป็นค่า MTU ที่ใหญ่ที่สุดที่สามารถกำหนดค่า TCP / IP ได้ ก่อนส่งแพ็คเก็ตที่แยกส่วนกันหลายรายการ อาจใช้เวลาสักครู่เพื่อระบุค่าที่แน่นอน

เมื่อคุณมีค่าในใจจากการใช้คำสั่ง ping หลายครั้งคุณจะต้องเรียกใช้ sudo ifconfig เพื่อค้นหารายการของอินเทอร์เฟซเครือข่ายที่รู้จัก อูบุนตูและอนุพันธ์ของแฮชเอาบัญชีรากออก แต่เราดำเนินการจากเปลือกที่สร้างโดย sudo bash สำหรับตัวอย่างของเรา ขอแนะนำให้คุณพูดคำสั่งกับ sudo ทีละคำ

ทันทีที่คุณรู้อุปกรณ์ที่ถูกต้องลอง:

sudo ifconfig interfaceName mtu ####

แทนที่ชื่ออินเทอร์เฟซด้วยชื่ออะแดปเตอร์เครือข่ายที่คุณใช้งานแล้วแทนที่ #### ตามขนาดที่คุณพบบวก 28 สำหรับข้อมูลส่วนหัว คุณสามารถเรียกใช้ ifconfig เพื่อดู MTU เริ่มต้นสำหรับ NIC ของคุณและเรียกใช้อีกครั้งหลายครั้งเพื่อดูว่าคำสั่งก่อนหน้านี้เปลี่ยนแปลงหรือไม่ อะแดปเตอร์เครือข่ายบางตัวจะไม่ยอมให้คุณเปลี่ยนแปลง หากเป็นกรณีนี้การเพิ่มประสิทธิภาพต่อไปจะไร้ผล อย่างไรก็ตามหากคุณได้ผลแล้วคุณสามารถทำให้เป็นแบบถาวรได้ ลองใช้ ifconfig | grep MTU เพื่อหาค่าทั้งหมดหากคุณมีตัวเชื่อมต่อหลายตัวจากนั้นคุณจะสามารถจับคู่ค่ากับตัวเชื่อมต่อที่คุณกำลังทำงานได้

วิธีที่ 2: การเพิ่มประสิทธิภาพ MTU Stick

จนถึงขณะนี้คุณไม่ได้เปลี่ยนแปลงระบบของคุณอย่างถาวร ถ้าคุณรีบูตคุณจะลบการเปลี่ยนแปลงออกซึ่งเป็นสิ่งที่ดีถ้าคุณทำผิดพลาดบางอย่างและพบว่าคุณไม่สามารถเชื่อมต่ออินเทอร์เน็ตได้อีกต่อไป ในทางกลับกันถ้าคุณพบค่าที่ถูกต้องสำหรับ MTU ของคุณแล้วคุณจะต้องแก้ไข เอกสาร. นี่อาจเป็นช่วงเวลาที่ดีที่จะทำสำเนาในกรณีที่มีบางอย่างเกิดขึ้น ลอง หรือสิ่งที่คล้ายกันเพื่อให้คุณมีสำเนาในกรณี หากคุณต้องการแก้ไขกราฟิกจากนั้นพิมพ์ และใส่รหัสผ่านของคุณ ถ้าคุณใช้ Kubuntu, Xubuntu หรือ Lubuntu คุณจะต้องแทนที่ Gedit ด้วยโปรแกรมแก้ไขข้อความแบบกราฟิกที่ Ubuntu ใช้แทน ตัวอย่างเช่น Xubuntu ใช้ mousepad แทน gedit ถ้าคุณกำลังใช้ Ubuntu Server หรือเพียงต้องการทำงานกับบรรทัดคำสั่งให้พิมพ์แทน , สมมติว่าคุณไม่ได้ใช้เปลือกราก

ไม่ว่าคุณจะใช้วิธีการใดในการแก้ไขให้หาชื่อของอินเทอร์เฟซ ifconfig ถ่มน้ำลายก่อน สมมติว่าคุณกำลังมองหาตัวเชื่อมต่อ WiFi เครื่องแรกซึ่งอาจจะเป็นชื่อ wlan0 หรืออะไรที่คล้ายกัน ในกรณีนี้ให้หาข้อมูลโค้ดที่ขึ้นต้นด้วย iface wlan0 inet static หรือคล้ายกัน ไมล์สะสมของคุณอาจแตกต่างกัน แต่บรรทัดถัดไปจะอ่านที่อยู่ตามด้วยที่อยู่ IP ใน ###. ###. #. ## format. อาจมีรูปแบบที่แตกต่างกันออกไปหากคุณใช้การเชื่อมต่อ IPv6 แบบเดิม คุณจะมีเน็ตมาสก์และเกตเวย์ตามด้วยสิ่งที่แสดงชื่อโฮสต์หรือสิ่งที่คล้ายกัน ที่ด้านล่างคุณจะมีบรรทัดอื่นที่อ่าน mtu และตัวเลข แทนที่หมายเลขที่มีค่า MTU เพิ่มประสิทธิภาพให้บันทึกเอกสารแล้วออกจากตัวแก้ไขข้อความ คุณต้องรีบูตระบบเพื่อให้แน่ใจว่าระบบทำงานได้ดี

ทุกอย่างควรจะดีหลังจากการรีบูตเครื่องใหม่แล้วลบไฟล์ interfaces.bak ในไดเรกทอรี ~ / Documents ของคุณ คุณสามารถใช้ sudo mv แทนได้ แล้ว

ถ้ามีอะไรผิดพลาดในกระบวนการนี้

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

วิธีที่ 3: การแก้ไขการตั้งค่าหน้าต่างรับ TCP (RWIN)

Ubuntu หมายถึงจำนวนข้อมูลที่โฮสต์ยอมรับก่อนที่จะยอมรับผู้ส่งเป็นค่า RWIN ถ้าคุณดาวน์โหลดไฟล์ขนาด 30 เมกะไบต์เซิร์ฟเวอร์ระยะไกลจะไม่ส่งชุดข้อมูลขนาด 30 MB ให้คุณทันที โฮสต์ Ubuntu ของคุณส่งหมายเลข RWIN เฉพาะเมื่อร้องขอไฟล์จากนั้นเซิร์ฟเวอร์จะเริ่มการสตรีมข้อมูลจนกว่าจะถึงจำนวนไบต์ก่อนที่จะรอการรับทราบว่าระบบของคุณมีข้อมูลอยู่ เมื่อเซิร์ฟเวอร์ได้รับข้อมูลนี้จะเริ่มส่งบล็อกเพิ่มเติมก่อนที่จะรอการรับทราบอีกครั้ง

เวลาแฝงคือเวลาที่ใช้ในการส่งและรับแพ็กเก็ตจากเซิร์ฟเวอร์ระยะไกล อัตราการเชื่อมต่อมีส่วนทำให้ค่านี้ แต่ความล่าช้าอื่น ๆ อีกมากมาย คำสั่ง ping จะอธิบายเกี่ยวกับเวลาในการเดินทาง (RTT) ดูผลลัพธ์จาก Ping ก่อนหน้าของเราที่ DistroWatch คุณจะพบบรรทัดที่อ่านเวลา = 134 ms ซึ่งเป็นเวลานานที่ใช้สำหรับแพ็คเก็ตเพื่อไปรอบการเดินทางจากเครื่องอูบุนตูของเราไปยัง distrowatch.com และกลับมาอีกครั้ง เราส่งแพ็คเก็ต 1, 492 ไบต์ดังนั้นที่ 134 ms เราสามารถคำนวณสูตรเพื่อหาความเร็วในการโอนข้อมูลทั้งหมด:

1, 492 / .134 วินาที = 11, 134.328 ไบต์ / วินาทีซึ่งออกมาประมาณ 10.88 ไบต์กิโลไบต์ต่อวินาที นั่นค่อนข้างช้าโดยรวมซึ่งเป็นเหตุผลที่ RWIN อยู่ในสถานที่เพื่อไม่ให้คุณต้องยอมรับแต่ละแพ็คเก็ตที่ส่งเป็นรายบุคคล

การตั้งค่า RWIN ใน Ubuntu แยกต่างหากจากการตั้งค่า MTU คำนวณ Bandwidth Delay Product (BDP) สำหรับการเชื่อมต่ออินเทอร์เน็ตของคุณด้วยสูตรต่อไปนี้:

(แบนด์วิธสูงสุดที่รวมการเชื่อมต่ออินเทอร์เน็ตของคุณควรเป็น Bytes ต่อวินาที) (RTT in Seconds) = BDP

ขนาดแพ็คเก็ต TCP ไม่ส่งผลต่อ RWIN แต่ขนาดของแพ็คเก็ตเองจะได้รับอิทธิพลจากค่าที่เลือกไว้ในวิธีที่ 1. ใช้คำสั่งนี้เพื่อค้นหาตัวแปรเคอร์เนลที่เกี่ยวข้องกับ RWIN:

โปรดจำไว้ว่ามีช่องว่างอยู่หลัง _mem แต่ไม่มีที่ไหนในข้อความที่ยกมา คุณจะได้รับค่าหลายค่า คนที่ต้องการคือ net.ipv4.tcp_rmem, net.ipv4.tcp_wmem และ net.ipv4.tcp_mem ตัวเลขหลังจากค่าเหล่านี้แสดงถึงค่าต่ำสุดค่าดีฟอลต์และค่าสูงสุดสำหรับแต่ละค่า แสดงเวกเตอร์หน่วยความจำหน้าต่างรับเวกเตอร์และ TCP stack vector ถ้าคุณใช้ Ubuntu Kylin คุณอาจมีรายการอื่นเพิ่มเติม คุณสามารถละเว้นค่าเพิ่มเติมเหล่านี้ได้อย่างปลอดภัย ผู้ใช้บางคนของ Kylin อาจเห็นค่าบางอย่างที่กำหนดไว้ในสคริปต์อื่น ๆ แต่เพียงแค่มองหาบรรทัดเหล่านี้อีกครั้ง

Ubuntu ไม่มีตัวแปร RWIN แต่ net.ipv4.tcp_rmem อยู่ใกล้ ตัวแปรเหล่านี้ควบคุมการใช้หน่วยความจำและไม่ใช่แค่ขนาดของ TCP เท่านั้น ประกอบด้วยหน่วยความจำที่กินโดยโครงสร้างซ็อกเก็ตข้อมูลและแพ็คเก็ตสั้น ๆ ในบัฟเฟอร์ขนาดใหญ่ ถ้าคุณต้องการเพิ่มประสิทธิภาพค่าเหล่านี้ให้ส่งแพ็กเก็ตขนาดสูงสุดที่คุณกำหนดไว้ในวิธีที่ 1 ไปยังเซิร์ฟเวอร์ระยะไกลอื่น ลองใช้ค่าดีฟอลต์ 1, 492 ไบต์อีกครั้งโดยหักจำนวน 28 ไบต์สำหรับข้อมูลส่วนหัว แต่จำไว้ว่าคุณอาจมีค่าต่างกัน ใช้คำสั่ง ping -s 1464 -c5 distrowatch.com เพื่อรับข้อมูล RTT เพิ่มเติม

คุณจะต้องการใช้การทดสอบนี้มากกว่าหนึ่งครั้งในเวลาที่ต่างกันทั้งกลางวันและกลางคืน ลองส่ง Ping ไปยังเซิร์ฟเวอร์ระยะไกลอื่น ๆ เพื่อดูว่า RTT แตกต่างกันไปมากน้อยแค่ไหน เนื่องจากเรามีค่าเฉลี่ยมากกว่า 130 มิลลิวินาทีในแต่ละครั้งที่เราลองใช้งานเราจึงสามารถใช้สูตรเพื่อหา BDP ของเราได้ สมมติว่าคุณกำลังใช้การเชื่อมต่อแบบ 6 Mbits / Second ที่มีอยู่ทั่วไป BDP จะเป็น:

(6, 000, 000 บิตต่อวินาที) (. 133 วินาที) * (1 ไบต์ / 8 บิต) = 99, 750 ไบต์

ซึ่งหมายความว่าค่า net.ipv4.tcp_rmem เริ่มต้นควรอยู่ที่ประมาณ 100, 000 คุณสามารถตั้งค่าให้สูงขึ้นได้หากกลัวว่าจะได้รับ 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 เพิ่มประสิทธิภาพหน้าต่างรับระหว่าง 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 หรือ sudo text editor จากวิธีที่ 1 และแก้ไขบรรทัดอ่านต่อไปนี้อีกครั้งแทนที่ #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

ซึ่งจะบังคับให้เคอร์เนลลินุกซ์โหลดการตั้งค่าใหม่ และถ้าทุกอย่างเข้ากันดีแล้วควรให้การเชื่อมต่อเครือข่ายอย่างรวดเร็วยิ่งขึ้น ความแตกต่างอาจเป็นเรื่องที่น่าทึ่งหรือไม่อาจสังเกตได้เลยทั้งนี้ขึ้นอยู่กับค่าเริ่มต้นเดิมของคุณ

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

Facebook Twitter Google Plus Pinterest