ทางออกที่ดีที่สุดสำหรับการควบคุมปริมาณการใช้งานในระบบขนาดใหญ่ (ผู้ใช้ 2000 คน) คืออะไร


11

สถานการณ์ต่อไปนี้: เราเป็นกลุ่มนักเรียนที่ดูแลการเชื่อมต่ออินเทอร์เน็ตสำหรับหอพักท้องถิ่นโดยมีผู้ใช้งานราว 2,000 คน

เรามีระบบจุดรับส่งข้อมูลทุก ๆ MB ที่ลดลงหรืออัปโหลดค่าใช้จ่ายจุดใหม่จะถูกเพิ่มเป็นรายชั่วโมง ในขณะนี้เราบล็อกการเข้าถึงอินเทอร์เน็ตของผู้ใช้เมื่อเขาใช้คะแนนทั้งหมดของเขา (โดยกำหนดให้นโยบายการปฏิเสธใน iptables บนเราเตอร์เกตเวย์ Debian ของเรา)

เราต้องการ จำกัด แบนด์วิดท์ของผู้ใช้เท่านั้น วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?

คำตอบง่ายๆคือตั้งค่า จำกัด อัตราบนพอร์ตสวิตช์ของผู้ใช้ (ส่วนใหญ่เป็น Cisco Catalyst 3550s) อย่างไรก็ตามนี่เป็นสิ่งที่ไม่พึงประสงค์เนื่องจากปริมาณการใช้ข้อมูลภายในเครือข่ายของเราและเครือข่ายมหาวิทยาลัยควรไม่ จำกัด มีวิธี จำกัด แบนด์วิดท์เฉพาะสำหรับแพ็คเก็ตที่มีปลายทางหรือช่วง IP ต้นทาง (เช่นทั้งการเข้าและออก) ใน Cisco IOS หรือไม่ ฉันหาอะไรไม่เจอ

อีกวิธีหนึ่งคือการควบคุมปริมาณการใช้งานบนเราเตอร์เกตเวย์ของเรา การแก้ปัญหาหลายอย่างในใจฉัน:

  • tc หรือ tcng - ดูเหมือนว่าทั้งสองมีไวยากรณ์ที่เป็นความลับมากกว่าและไม่มีคุณสมบัติที่ดีสำหรับการควบคุมการรับส่งข้อมูลต่อ IP QDisc โดยเฉพาะสำหรับคนจำนวนมากอาจทำให้เราเตอร์ค่อนข้างช้า นอกจากนี้เอกสารเกี่ยวกับทั้งคู่ค่อนข้างล้าสมัย

  • shorewall - ดูเหมือนว่าจะมีไวยากรณ์ที่ค่อนข้างเรียบร้อยสำหรับการกำหนดค่าอย่างไรก็ตามฉันไม่แน่ใจว่าจะสามารถจัดการปริมาณการรับส่งข้อมูลและผู้ใช้จำนวนนี้ได้หรือไม่และเหมาะสำหรับการ จำกัด การรับส่งข้อมูลต่อ IP

  • pfSense - ดูเหมือนว่าระบบปฏิบัติการมีไว้เพื่อวัตถุประสงค์เช่นเรา อย่างไรก็ตามเราจำเป็นต้องติดตั้งเราเตอร์เกตเวย์ของเราใหม่ เราไม่มีระบบ BSD อื่น ๆ และ pfSense ก็ต้องมีความสามารถในการทำบัญชีจราจรที่ดีมาก (เรากำลังใช้ fprobe-ulog และ ulog-acctd ที่นั่นในตอนนี้) เช่นกัน

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

หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับระบบของเราโปรดอย่าลังเลที่จะถาม

ขอบคุณล่วงหน้า.


แก้ไข : ฉันได้ดำเนินการระบบด้วยและiptablestc

ผู้ใช้ทุกคนมี / 28-subnet, VPN IP (ทั้งจาก 10.0.0.0/8) และ IP ภายนอกทั้งหมดจะถูกนำผ่านเครือข่าย iptables เดียว RETURNห่วงโซ่นี้มีเพียงหนึ่งกฎง่ายๆ

ทุกๆห้านาทีสคริปต์ Python จะอ่านตัวนับไบต์ของกฎเหล่านี้ จะรีเซ็ตเคาน์เตอร์และอัปเดตบัญชีจุดรับส่งข้อมูลของผู้ใช้ในฐานข้อมูล PostgreSQL ของเรา

หากจุดสมดุลของผู้ใช้ลดลงต่ำกว่าเกณฑ์ที่กำหนดสองคลาส tc จะถูกสร้างขึ้นสำหรับผู้ใช้นี้ (หนึ่งสำหรับขาเข้าและอีกหนึ่งสำหรับอินเทอร์เฟซขาออกบนเราเตอร์เกตเวย์ของเรา) IP จะถูกป้อนลงในตัวกรอง tc ชั้นเรียนถูก จำกัด ความเร็วโดย HTB

เมื่อเทียบกับระบบก่อนหน้าด้วยfprobe-ulogและulog-acctdสิ่งนี้เร็วกว่ามากเนื่องจากการนับไบต์ทำได้โดย iptables

ความเร็วเครือข่ายได้รับการปรับปรุงอย่างมากสำหรับผู้ใช้ของเรา

คำตอบ:


2

ผมไม่แน่ใจว่าวิธีการที่สนใจคุณอยู่ในกำหนดค่าการตั้งค่าทั้งหมดของคุณ (เช่นแทนที่ Debian) หรือวิธีการที่เป็นไปได้ว่ามันจะเป็นอะไรบางอย่างที่สถานที่เช่นนี้อยู่เบื้องหลังประตูของคุณ แต่ FreeBSD มีคุณสมบัติใน ipfw ที่รู้จักกันเป็นdummynet เนื่องจากดูเหมือนว่าคุณไม่รู้สึกว่าจะได้รับ shaper ปริมาณการใช้งานฮาร์ดแวร์โดยเฉพาะนี่อาจเป็นตัวเลือกสำหรับคุณ ขณะนี้เราใช้เพื่อควบคุมการรับส่งข้อมูล SMTP ขาเข้าและขาออกผ่านหนึ่งในเกตเวย์พร็อกซีของเราเพื่อป้องกันไม่ให้ระบบแบ็กเอนด์ NFS ที่มีอายุมากขึ้นถูกครอบงำและไม่ตอบสนองต่อมา

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


0

ฉันจะต้องถามสิ่งที่เรากำลังใช้งานอยู่ แต่คน ResTek ของเรามีอุปกรณ์ที่ชายแดนอินเทอร์เน็ตที่มีฟังก์ชั่นการบริการที่มีคุณภาพ มีลำดับความสำคัญเริ่มต้นสำหรับสตรีมที่ไม่จัดประเภทและจัดลำดับความสำคัญการรับส่งข้อมูลอื่น ๆ ตามกฎ มันเป็นคุณสมบัติที่มีความสำคัญที่ขายได้จริง ๆ เพราะพวกเขายังใช้งานกลุ่มแคชแบบ Squid-based ซึ่งถูกระบุว่าเป็นลำดับความสำคัญสูงสุดในอุปกรณ์ชายแดน ผู้คนในเครือข่ายของพวกเขามีตัวเลือกในการท่องเว็บตามมาตรฐาน (และค่อนข้างแย่) ลำดับความสำคัญหรือใช้พร็อกซีและรับการตอบกลับอย่างรวดเร็ว พวกเขายังใช้การร้องขอลำดับความสำคัญของเซิร์ฟเวอร์เกมเนื่องจากมีความอ่อนไหวต่อความหน่วง แต่แบนด์วิดท์ต่ำ

มีจำนวนที่พอสมควรในการจัดการคำขอเซิร์ฟเวอร์เกม แต่สิ่งเหล่านี้กำลังดำเนินไปอย่างช้าๆเนื่องจากมีเกมจำนวนมากย้ายออกจากเซิร์ฟเวอร์ส่วนตัว โดยรวมฉันได้ยินว่ามันใช้งานได้ดีสำหรับพวกเขา พวกเขาสามารถป้องกันสิ่งต่าง ๆ เช่น BitTorrent ไม่ให้ลบทราฟฟิกอื่น ๆ ทั้งหมดและยังช่วยให้การโหลด YouTube ของผู้คนรวดเร็วขึ้น


0

เมื่อมีผู้ใช้จำนวนมากของซอฟต์แวร์พื้นฐานส่วนใหญ่จะเริ่มพังทลายลง

ลองพิจารณาที่ packeteer และอุปกรณ์ที่คล้ายกัน วันนี้พวกเขาเกือบจะมีราคาแพงแล้วซื้อแบนด์วิดธ์เพิ่มขึ้น (ในสหรัฐอเมริกาและยุโรปพวกเราที่ยากจนในออสเตรเลียยังมีอัตราที่สูงมาก)


น่าเสียดายที่เราไม่สามารถที่จะลงทุนเงินจำนวนมากในเรื่องนี้ไม่ได้สำหรับแพคเก็ต shaper เฉพาะหรือสำหรับแบนด์วิดธ์มากขึ้น ระบบของเรากำลังทำงานอยู่ในขณะนี้คำถามคือวิธีแทนที่จะบล็อกผู้ใช้ที่เกินปริมาณการใช้งานที่จัดสรรไว้เราสามารถลดแบนด์วิดท์ที่มีให้เฉพาะผู้ใช้เท่านั้น
Christoph Wurm


0

tc ควรทำงานได้ดี .. ฉันเชื่อว่าสิ่งที่คุณต้องการจะทำคือการเปลี่ยนกฎ iptables ปัจจุบันของคุณเพื่อทำเครื่องหมายแทนการรับส่งข้อมูล REJECT จากนั้นคุณสามารถใช้กฎ tc จำนวนเล็กน้อยเพื่อใช้การสร้างการรับส่งข้อมูลกับกระแสที่ทำเครื่องหมายไว้

ดูที่ ipset เพื่อจัดการรายการผู้ใช้ที่ควบคุมปริมาณด้วยhttp://ipset.netfilter.org/


0

Trafficpanelดูเหมือนจะเป็นทางออก ท่ามกลางคุณสมบัติอื่น ๆ :

  • จำกัด ความเร็ว HTTP สูงสุดต่อการเชื่อมต่อ
  • จำกัด ปริมาณการรับส่งข้อมูลทั้งหมดของทรัพยากรบนเว็บต่อโฮสต์เครือข่ายท้องถิ่น
  • บันทึกปริมาณการใช้อินเทอร์เน็ตต่อโฮสต์เครือข่ายท้องถิ่น
  • จำกัด ความเร็วการรับส่งข้อมูลสูงสุดต่อโฮสต์เครือข่ายท้องถิ่น
  • จำกัด ปริมาณการรับส่งข้อมูลอินเทอร์เน็ตรวมต่อโฮสต์เครือข่ายท้องถิ่น

จริงๆแล้วไม่เคยลองสิ่งนี้ แต่ดูโอเค

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.