{"id":296,"date":"2012-06-30T10:26:49","date_gmt":"2012-06-30T08:26:49","guid":{"rendered":"http:\/\/www.opencomp.hu\/?p=296"},"modified":"2020-03-25T10:27:39","modified_gmt":"2020-03-25T09:27:39","slug":"openbsd-tuzfal-pf-iii-resz-traffic-shaper-queueing","status":"publish","type":"post","link":"https:\/\/www.opencomp.hu\/?p=296","title":{"rendered":"OpenBSD t\u0171zfal (pf) \u2013 III. r\u00e9sz \u2013 traffic shaper (queueing)"},"content":{"rendered":"\n<p>Az el\u0151z\u0151 r\u00e9szben alapszinten megvizsg\u00e1ltuk, hogyan tudunk az&nbsp;<a href=\"http:\/\/blog.xorp.hu\/openbsd-pf-nat-es-redirection\">OpenBSD pf seg\u00edts\u00e9g\u00e9vel NAT-olni ill. port\u00e1tir\u00e1ny\u00edt\u00e1st<\/a>&nbsp;be\u00e1ll\u00edtani. A pf tud\u00e1sa azonban tartogat m\u00e9g sz\u00e1munkra \u00e9rdekes lehet\u0151s\u00e9geket. Ugyanis ha az el\u0151z\u0151ekben \u00e1ttekintett funkci\u00f3kat alkalmazva m\u00e1r siker\u00fclt be\u00e1ll\u00edtanunk a m\u00e1s h\u00e1l\u00f3zatokra ir\u00e1nyul\u00f3 c\u00edmford\u00edt\u00e1st \u00e9s a csomagsz\u0171r\u0151 seg\u00edts\u00e9g\u00e9vel biztons\u00e1goss\u00e1 is tett\u00fck ezt, megtehetj\u00fck, hogy a rendelkez\u00e9sre \u00e1ll\u00f3 s\u00e1vsz\u00e9less\u00e9get min\u00e9l gazdas\u00e1gosabban haszn\u00e1ljuk ki. Erre lesz alkalmas a pf traffic shaper-e, az ALTQ (Alternate Queueing).<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">OpenBSD t\u0171zfal (pf) \u2013 III. r\u00e9sz \u2013 traffic shaping (queueing)<\/h2>\n\n\n\n<p>Ahhoz, hogy a pf t\u0171zfalunk alkalmas legyen s\u00e1vsz\u00e9less\u00e9g-szab\u00e1lyoz\u00e1sra ill. forgalom prioriz\u00e1l\u00e1sra, az oper\u00e1ci\u00f3s rendszer\u00fcnknek ezt kernel szinten is t\u00e1mogatnia kell, ellenkez\u0151 esetben a pf.conf bet\u00f6lt\u00e9sekor a queue szab\u00e1lyokhoz \u00e9rve hiba\u00fczenetet kapunk, hogy nem t\u00e1mogatja ezt kernel\u00fcnk. A kernel \u00fajraford\u00edt\u00e1s\u00e1ra nem fogok most r\u00e9szletesen kit\u00e9rni, a jelenleg haszn\u00e1lt OpenBSD 5.1 am\u00fagy is tartalmazza m\u00e1r a megfelel\u0151 modulokat, teh\u00e1t itt csak annyit jegyzek le, mely opci\u00f3k lenn\u00e9nek sz\u00fcks\u00e9gesek (a kernel konfigok &nbsp;i386 architekt\u00fara eset\u00e9n a \/usr\/src\/sys\/arch\/i386\/conf\/GENERIC &nbsp;\u00fatvonalon tal\u00e1lhat\u00f3k):<\/p>\n\n\n\n<p>options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTQ<br>options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTQ_CBQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Class Based Queuing (CBQ)<br>options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTQ_RED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Random Early Detection (RED)<br>options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTQ_RIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # RED In\/Out<br>options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTQ_HFSC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Hierarchical Packet Scheduler (HFSC)<br>options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTQ_PRIQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Priority Queuing (PRIQ)<br>options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ALTQ_NOPCC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Required for SMP build<\/p>\n\n\n\n<p>N\u00e9zz\u00fck teh\u00e1t, hogy a konfigur\u00e1ci\u00f3ban mire van sz\u00fcks\u00e9g\u00fcnk ahhoz, hogy megval\u00f3suljon a s\u00e1vsz\u00e9less\u00e9g szab\u00e1lyz\u00e1s. Szerkessz\u00fck meg az \/etc\/pf.conf filet, \u00e9s adjuk hozz\u00e1 a k\u00f6vetkez\u0151ket:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/22.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/22-300x75.jpg\" alt=\"\" class=\"wp-image-7317\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Az ALTQ teh\u00e1t egy mondatban megfogalmazva azt teszi, hogy deklar\u00e1l egy vagy t\u00f6bb queue-t, majd norm\u00e1l, m\u00e1r l\u00e1tott filterszab\u00e1lyokkal ezekre hivatkozik. N\u00e9zz\u00fck sorra, mely sor vagy sorok mit eredm\u00e9nyeznek!<\/p>\n\n\n\n<p><strong>altq on em0 cbq bandwidth 8Mb&nbsp; queue { www, ftp, other }<\/strong><\/p>\n\n\n\n<p>Ez a sor aktiv\u00e1lja az ALTQ modult az em0 interfacen-n, Class Based Queue m\u00f3dban. Ez lesz a parent queue. &nbsp;A maxim\u00e1lis s\u00e1vsz\u00e9less\u00e9get, amib\u0151l gazd\u00e1lkodni foguk,&nbsp; 8Mb\/s-ben hat\u00e1rozza meg, \u00e9s h\u00e1rom child queuet, a www, az ftp, \u00e9s az other queue nevez meg.<\/p>\n\n\n\n<p><strong>queue www bandwidth 1% priority 2 cbq<\/strong><br><strong>queue ftp bandwidth 50Kb&nbsp; priority 5 cbq<\/strong><br><strong>queue other bandwidth 2Mb priority 7 cbq(default)<\/strong><\/p>\n\n\n\n<p>A fentebbi h\u00e1rom sor \u00edrja le a child queuekat. A \u2019www\u2019 nev\u0171 haszn\u00e1lhatja a s\u00e1vsz\u00e9less\u00e9g 1%-\u00e1t, \u00e9s 2-es priorit\u00e1sa van. Itt megjegyezhetj\u00fck, hogy az ALTQ rendelkezik QoS&nbsp; (Quality of Service) k\u00e9pess\u00e9gekkel is, teh\u00e1t a forgalom s\u00e1vsz\u00e9less\u00e9g\u00e9t nemcsak szab\u00e1lyozhatjuk, de prioriz\u00e1lhatjuk is. Ez azt jelenti, hogy a \u2019www\u2019 queueba es\u0151 forgalom ugyan csak a s\u00e1vsz\u00e9less\u00e9g 1%-\u00e1t fogja haszn\u00e1lni, de ha egyszerre van jelen m\u00e1s forgalom is, akkor ennek lesz a legnagyobb a priorit\u00e1sa. Az \u2019ftp\u2019 queue s\u00e1vsz\u00e9less\u00e9ge abszol\u00fat m\u00f3don van megadva, ez 50Kb\/s.&nbsp; Az \u2019other\u2019 queue, ami a mi eset\u00fckben minden m\u00e1s, az el\u0151z\u0151 kett\u0151t\u0151l elt\u00e9r\u0151 forgalmat jelenti majd, 2Mb\/s s\u00e1vsz\u00e9less\u00e9get kap. Fontos, hogy egy default queue-nak l\u00e9teznie kell.<\/p>\n\n\n\n<p><strong>pass out quick on em0 inet proto tcp to port { 20, 21 } flags any&nbsp; queue ftp keep state<\/strong><br><strong>pass out quick on em0 inet proto tcp to port 80 flags any&nbsp; queue www keep state<\/strong><br><strong>pass out on em0 all queue other keep state<\/strong><\/p>\n\n\n\n<p>Az utols\u00f3 h\u00e1rom sor a l\u00e9trehozott queuekat p\u00e1ros\u00edtja a megfelel\u0151 forgalommal. L\u00e1thatjuk, hogy ezek mezei csomagsz\u0171r\u0151 szab\u00e1lyok, &nbsp;a queue &lt;queuen\u00e9v&gt; r\u00e9sszel &nbsp;kieg\u00e9sz\u00edtve. Fontos m\u00e9g benne a \u2019quick\u2019 kulcssz\u00f3, hiszen, a pf csomagsz\u0171r\u0151r\u0151l sz\u00f3l\u00f3 \u00edr\u00e1sban m\u00e1r l\u00e1thattuk, hogy en\u00e9lk\u00fcl itt a csomag nem akadna bele az els\u0151 sorba, hanem v\u00e9gigmenne a tov\u00e1bbi kett\u0151n, \u00e9s az utols\u00f3 szab\u00e1ly illeszkedne r\u00e1, azaz MINDEN csomag az \u2019other\u2019 nev\u0171 queuera illeszkedne.<\/p>\n\n\n\n<p>Az \u00e1ltal\u00e1nos szintaktika az \u2019altq\u2019 \u2013ra (a norm\u00e1l bet\u0171sek a v\u00e1ltoz\u00f3k, a d\u0151lt bet\u0171sek pedig ezek \u00e9rt\u00e9kei):<\/p>\n\n\n\n<p><strong>altq on&nbsp;<em>interface scheduler<\/em>&nbsp;bandwidth&nbsp;<em>bw<\/em>&nbsp;qlimit&nbsp;<em>qlim<\/em>&nbsp;tbrsize&nbsp;<em>size<\/em>&nbsp;queue {&nbsp;<em>queue_list<\/em>&nbsp;}<\/strong><\/p>\n\n\n\n<p>Az \u00e1ltal\u00e1nos szintaktika a \u2019queue\u2019 \u2013ra:<\/p>\n\n\n\n<p><strong>queue&nbsp;<em>name<\/em>&nbsp;[on&nbsp;<em>interface<\/em>] bandwidth&nbsp;<em>bw<\/em>&nbsp;[priority&nbsp;<em>pri<\/em>] [qlimit&nbsp;<em>qlim<\/em>]&nbsp;<em>scheduler<\/em>&nbsp;(&nbsp;<em>sched_options<\/em>&nbsp;) {&nbsp;<em>queue_list<\/em>&nbsp;}<\/strong><\/p>\n\n\n\n<p>Hogyan tesztelhetj\u00fck, illetve n\u00e9zhetj\u00fck meg, hogy a megfelel\u0151 forgalom val\u00f3ban az \u00e1ltalunk k\u00edv\u00e1nt m\u00f3don \u201eakad-e\u201d bele a szab\u00e1lyokba? \u00c9n egy sima http alap\u00fa downloaddal teszteltem, kell\u0151 m\u00e9ret\u0171 filet v\u00e1lasztva a let\u00f6lt\u00e9shez, hogy meg tudjuk figyelni, val\u00f3ban leesik-e a let\u00f6lt\u00e9s sebess\u00e9ge:<\/p>\n\n\n\n<p># lynx&nbsp;<a href=\"http:\/\/letoltes.szoftverbazis.hu\/6f2b2ff4c9d35d01eda36b0db0864cf65de42943\/4fee511c\/alien-arena-2008-v7-21-VS11\/alienarena-7_53-win20111222.exe\">http:\/\/letoltes.szoftverbazis.hu\/6f2b2ff4c9d35d01eda36b0db0864cf65de42943\/4fee511c\/alien-arena-2008-v7-21-VS11\/alienarena-7_53-win20111222.exe<\/a><\/p>\n\n\n\n<p>A k\u00f6vetkez\u0151t l\u00e1ttam a lynx fel\u00fclet\u00e9n:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/8.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/8-300x48.jpg\" alt=\"\" class=\"wp-image-7322\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Kijelenthetj\u00fck teh\u00e1t, hogy sikeres volt ennek az egy\u00e9bk\u00e9nt nagyon szimpla traffic shapernek a be\u00e1ll\u00edt\u00e1sa. Tekints\u00fck meg kicsit szeml\u00e9letesebb m\u00f3don, hogyan n\u00e9z ki a queue-tree. Ezt az oper\u00e1ci\u00f3s rendszer \u2019systat\u2019 parancs\u00e1val tehetj\u00fck meg \u2013 t\u00f6bbek k\u00f6zt!<\/p>\n\n\n\n<p># systat queues<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/32.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/32-300x44.jpg\" alt=\"\" class=\"wp-image-7323\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Itt j\u00f3l l\u00e1that\u00f3, hogyan \u00e9p\u00fcl fel a queue-tree. Enn\u00e9l is r\u00e9szletesebb, szint\u00e9n val\u00f3s idej\u0171 statisztik\u00e1kat a pf saj\u00e1t m\u00f3dszer\u00e9vel is l\u00e1thatunk:<\/p>\n\n\n\n<p># pfctl -sq -vv<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/42.jpg\"><img decoding=\"async\" src=\"http:\/\/blog.xorp.hu\/wp-content\/uploads\/2012\/06\/42-300x122.jpg\" alt=\"\" class=\"wp-image-7324\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Itt l\u00e1thatjuk queue-kat \u00e9s azok r\u00e9szletes statisztik\u00e1it pf m\u00f3dra.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00d6sszegz\u00e9s<\/h3>\n\n\n\n<p>A pf ALTQ &nbsp;frameworkje egy szerintem igaz\u00e1n kiv\u00e1l\u00f3 \u00e9s logikus szab\u00e1lyokra \u00e9p\u00fcl\u0151 traffic shaper. Term\u00e9szetesen, \u00edzl\u00e9s szerint vari\u00e1lhatjuk a queue-k sz\u00e1m\u00e1t, t\u00edpus\u00e1t, a hozz\u00e1juk rendelt s\u00e1vsz\u00e9less\u00e9get. T\u00f6bb interface-szel rendelkez\u0151 rendszerek eset\u00e9n t\u00e1mogatja a interface-k bridge m\u00f3dban t\u00f6rt\u00e9n\u0151 kezel\u00e9s\u00e9t is, lehet\u0151v\u00e9 t\u00e9ve ezzel a transzparens traffic shaper kialak\u00edt\u00e1s\u00e1t is.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Az el\u0151z\u0151 r\u00e9szben alapszinten megvizsg\u00e1ltuk, hogyan tudunk az&nbsp;OpenBSD pf seg\u00edts\u00e9g\u00e9vel NAT-olni ill. port\u00e1tir\u00e1ny\u00edt\u00e1st&nbsp;be\u00e1ll\u00edtani. A pf tud\u00e1sa azonban tartogat m\u00e9g sz\u00e1munkra \u00e9rdekes lehet\u0151s\u00e9geket. Ugyanis ha az el\u0151z\u0151ekben \u00e1ttekintett funkci\u00f3kat alkalmazva m\u00e1r siker\u00fclt be\u00e1ll\u00edtanunk a m\u00e1s h\u00e1l\u00f3zatokra ir\u00e1nyul\u00f3 c\u00edmford\u00edt\u00e1st \u00e9s a csomagsz\u0171r\u0151 seg\u00edts\u00e9g\u00e9vel biztons\u00e1goss\u00e1 is tett\u00fck ezt, megtehetj\u00fck, hogy a rendelkez\u00e9sre \u00e1ll\u00f3 s\u00e1vsz\u00e9less\u00e9get min\u00e9l gazdas\u00e1gosabban haszn\u00e1ljuk ki. &hellip; <a href=\"https:\/\/www.opencomp.hu\/?p=296\" class=\"more-link\"><span class=\"screen-reader-text\">&#8222;OpenBSD t\u0171zfal (pf) \u2013 III. r\u00e9sz \u2013 traffic shaper (queueing)&#8221;<\/span> b\u0151vebben<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-296","post","type-post","status-publish","format-standard","hentry","category-blogpost"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/posts\/296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=296"}],"version-history":[{"count":1,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/posts\/296\/revisions"}],"predecessor-version":[{"id":297,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=\/wp\/v2\/posts\/296\/revisions\/297"}],"wp:attachment":[{"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opencomp.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}