Stap 6: Packet Prioritization
Packet Prioritization met ALTQAls uw WAN-verbinding vrij verzadigde (met dingen zoals bittorrent), blijft dan ik zeker dat weet hebt je ervaren uw billijk aandeel van time-outs, vertraging of langzaam pagina wordt geladen. Packet prioritzation biedt een oplossing voor dit probleem. In plaats van de uitgaven $100 + op een router die deze functie heeft, in plaats daarvan kunt u ALTQ met PF te bereiken hetzelfde.
ALTQ is zeer gemakkelijk te installeren. Het ingewikkeldste ding dat je hoeft te doen is uw kernel te hercompileren. Maak je geen zorgen, het is veel gemakkelijker dan u denkt. Volg mijn instructies, en u zou fijn moeten zijn. Een nieuwe kernel is nodig, omdat ALTQ ondersteuning is standaard uitgeschakeld in FreeBSD.
ALTQ ondersteuning toe te voegen aan uw kernel
Lees om te beginnen, bouwen en installeren van een aangepaste Kernel productopbouw. Nadat u hebt lees dat Lees ALTQ inschakelen.
Ik zal met behulp van de "nieuwe" methode. Na de GENERIC kernel configuratiebestand te kopiëren, bewerken met uw favoriete editor (pico is ideaal voor beginners). Nu, voeg de volgende regels aan het einde van het bestand:
#ALTQ OPTIONSoptions ALTQoptions ALTQ_CBQ # CLASS BASES QUEINGoptions ALTQ_RED # RANDOM EARLY DETECTIONoptions ALTQ_RIO # RED IN/OUToptions ALTQ_HFSC # HIERARCHIAL PACKET SCHEDULERoptions ALTQ_PRIQ # PRIORITY QUEUINGoptions ALTQ_NOPCC # REQUIRED FOR SMP BUILD
Nu sla het bestand (ik belde mij FIREWALLKERNEL), volg dan deze stappen (uit het handboek) om te compileren:
1. Ga naar de map/usr/src.
# cd /usr/src
2. de kernel te compileren.
# make buildkernel KERNCONF=FIREWALLKERNEL
3. Installeer de nieuwe kernel.
# make installkernel KERNCONF=FIREWALLKERNEL
Als alles werkt, is de nieuwe kernel klaar voor gebruik. FreeBSD is zelfs vriendelijk genoeg om de nieuwe kernel in het pad van uw boot. Alles wat je hoeft te doen is herstart uw systeem ('shutdown - r now'). Nu, moet u ondersteuning voor ALTQ in uw kernel gecompileerd. Onze volgende stap is eigenlijk ALTQ configureren
ALTQ configureren
ALTQ ondersteunt twee soorten packet prioritering: klasse gebaseerde (CBQ) en op basis van prioriteit (PRIQ).
Klasse gebaseerde queueing verdeelt trafic in "klassen". Een specifiek gedeelte van de totale bandbreedte wordt vervolgens toegewezen aan elk van deze klassen.
Queueing in op basis van prioriteit, zoals het heeft naam al suggereert, prioriteiten toegewezen aan pakketten. De pakketten met de hoogste prioriteit worden als eerste verwerkt.
Er zijn ook een paar extra functies die je tot uw beschikking hebt: willekeurige vroegtijdige opsporing en explicit congestion notification (ECN).
Willekeurige vroegtijdige opsporing, rood, berekent de gemiddelde wachtrijgrootte, dan daalt of pakketten, afhankelijk van de mate van congestie worden doorgestuurd. Als de gemiddelde wachtrijgrootte hoger dan een maximum drempelwaarde is, zal alle pakketten gedropt worden. Als de wachtrij groter een minimale drempel is, zullen er geen pakketten gedropt worden. Ergens tussen deze drempels, en afhankelijk van hoe dicht de wachtrijgrootte de bovenste en onderste grenswaarden is zullen pakketten gedropt worden.
De kennisgeving van de expliciete congestie of ECN, stelt een vlag in pakjes naar hotelnaam hosts van opstoppingen in het netwerk. Als een host die ECN ondersteunt een pakket gemarkeerd met deze vlag ontvangt, reageert het netwerkoverbelasting zijn activiteit.
Ik koos voor priority-queueing in, omdat mijn netwerk een grote verscheidenheid van verschillende soorten verkeer ziet. Prioriteit-queuing gebruik cijfers 1 t/m 15 tot en met verkeer, prioriteit nummer 1 zijn hoogste prioriteit. In mijn PF configuratiebestand (pf.conf), ik een standaardprioriteit toegewezen aan nummer 10. Dit betekent dat alle verkeer dat overeenkomt met mijn firewall-regels en het is niet een prioriteit wordt standaard prioritair niveau 10. Bittorrent gaf vervolgens een prioriteitsniveau van 15. Door dit te doen, ben mij kundig voor bittorrent draaiende non-stop op mijn netwerk, zonder enige merkbare toename van de latentie en doorvoer. Ik gaf ook SSH een hoge prioriteit 1, vanwege de tijd-kritieke aard. Hier is wat mijn PRIQ configuraties eruit ($int_if is mijn interne interface apparaat rl0; en $ext_if is mijn externe interface, het apparaat dc0):
altq on $int_if priq bandwidth 100% queue {std, ssh, bt, http, p2p}altq on $ext_if priq bandwidth 5Mb queue {std, ssh, bt, http, p2p}queue ssh priority 1 priqqueue http priority 2 priqqueue std priority 10 priq (default)queue p2p priority 13 priq (red, ecn)queue bt priority 15 priq (red, ecn)
Mijn "bandbreedte" opties op de eerste en tweede regel opmerken. Ik stel de grootte van de wachtrij ALTQ op mijn externe interface tot 5Mb. Hoewel mijn externe interface kan worden aangesloten op 10Mbps, ben ik alleen 5Mbps toegewezen door mijn Internet-provider. Dit is belangrijk, omdat packet prioritering is gebaseerd op het niveau van verzadiging op een interface om te bepalen wanneer om te beginnen Queuing-pakketten. U zult merken dat ik ook 100% van de bandbreedte toegewezen op mijn interne interface aan ALTQ. Dit betekent dat alle verkeer die stroomt via mijn interne interface zal 100% van de bandbreedte 100Mbps.
Nu dat ik mijn prioriteitsniveaus hebt vastgesteld, is het tijd om hen aan mijn firewall-regels eigenlijk toewijzen. Dit is heel eenvoudig. Gewoon "wachtrij < wachtrijnaam >" aan het einde van alle regels die u wilt toewijzen aan het prioriteitsniveau geïdentificeerd door < wachtrijnaam > toevoegen.
En thats it. Packet prioritering is eenvoudig. Laat me een kadootje laat het me weten als dit iedereen helpt. Het heeft me zeker geholpen.
Ik heb een herziene versie van mijn pf.conf daarin ALTQ configuraties gehecht.