| CAKE(8) | Linux | CAKE(8) |
نام (NAME)
tc-cake - انضباط صفی با قابلیت شکلدهی ترافیک برای بهبود برنامههای کاربردی رایج (CAKE)
خلاصه دستور (SYNOPSIS)
tc qdisc ... cake
[ bandwidth RATE | unlimited* | autorate-ingress ]
[ rtt TIME | datacentre | lan | metro |
regional | internet* | oceanic | satellite |
interplanetary ]
[ besteffort | diffserv8 | diffserv4 | diffserv3*
]
[ flowblind | srchost | dsthost | hosts |
flows | dual-srchost | dual-dsthost |
triple-isolate* ]
[ nat | nonat* ]
[ wash | nowash* ]
[ split-gso* | no-split-gso ]
[ ack-filter | ack-filter-aggressive | no-ack-filter* ]
[ memlimit LIMIT ]
[ fwmark MASK ]
[ ptm | atm | noatm* ]
[ overhead N | conservative | raw* ]
[ mpu N ]
[ ingress | egress* ]
(* مقادیر
پیشفرض را
مشخص
میکند)
توضیحات (DESCRIPTION)
الگوریتم CAKE (کوتهنوشت Common Applications Kept Enhanced) یک انضباط صف (qdisc) با قابلیت شکلدهی ترافیک (shaping) است که از هر دو سازوکار مدیریت فعال صف (AQM) و صفبندی عادلانه (FQ) استفاده میکند. این ابزار ترکیبی از COBALT (یک الگوریتم AQM حاصل از ترکیب Codel و BLUE)، یک شکلدهنده ترافیک در حالت کسری (deficit mode) و گونهای از DRR++ برای جداسازی جریانها است. در این الگوریتم از درهمسازی مجموعهوابسته ۸طرفه (8-way set-associative hashing) استفاده شده است تا برخورد درهمسازیها تقریباً به صفر برسد. صفبندی اولویتدار نیز از طریق یک پیادهسازی سادهشده از diffserv فراهم شده است. همچنین جبران سربار برای انواع روشهای کپسولهسازی به شکلی کاملاً یکپارچه تعبیه گردیده است.
تمام تنظیمات اختیاری هستند؛ مقادیر پیشفرض طوری برگزیده شدهاند که در متداولترین شرایط استقرار منطقی باشند. اکثر افراد برای دریافت نتایج مطلوب تنها نیاز به تنظیم پارامتر bandwidth خواهند داشت، اما مطالعه بخشهای پارامترهای جبران سربار و پارامترهای زمان رفتوبرگشت بهشدت توصیه میشود.
پارامترهای شکلدهنده (SHAPER PARAMETERS)
الگوریتم CAKE از یک شکلدهنده ترافیک در حالت کسری (deficit-mode shaper) استفاده میکند که فاقد جهش ناگهانی اولیه (burst) رایج در شکلدهندههای سطل ژتون (token-bucket) است. این شکلدهنده به طور خودکار دقیقاً به همان میزانی که برای حفظ پهنای باند پیکربندیشده لازم است ارسال ناگهانی انجام میدهد؛ بنابراین پیکربندی آن بسیار سرراست است.
- unlimited (پیشفرض)
-
بدون محدودیت بر روی پهنای باند. - bandwidth RATE
-
پهنای باند شکلدهنده را تنظیم میکند. برای جزئیات مربوط به مقدار RATE، صفحه راهنمای tc(8) یا مثالهای زیر را مشاهده کنید. - autorate-ingress
-
تخمین خودکار ظرفیت بر اساس ترافیک ورودی به این qdisc. این قابلیت بیش از همه برای پیوندهای سلولار (موبایل) که تمایل به تغییر تصادفی کیفیت دارند مفید است. پارامتر bandwidth میتواند به همراه این گزینه برای تعیین یک تخمین اولیه به کار رود. شکلدهنده به صورت دورهای پهنای باند را روی مقداری کمی پایینتر از نرخ تخمینی تنظیم خواهد کرد. این تخمینگر نمیتواند پهنای باند پیوندهای بعد از خود (downstream) را تخمین بزند.
پارامترهای جبران سربار (OVERHEAD COMPENSATION PARAMETERS)
اندازه واقعی هر بسته بر روی سیم (بستر فیزیکی) ممکن است با اندازهای که لینوکس میبیند متفاوت باشد. پارامترهای زیر به CAKE اجازه میدهند تا این تفاوت را با بزرگتر در نظر گرفتن اندازه داخلی بسته نسبت به آنچه لینوکس گزارش میدهد، جبران کند. برای کمک به کاربرانی که مهندس شبکه خبره نیستند، کلیدواژههایی برای نشان دادن فناوریهای رایج ارتباطی در نظر گرفته شده است.
تعیین دستی سربار (Manual Overhead Specification)
- overhead BYTES
-
مقدار BYTES بایت را به اندازه هر بسته اضافه میکند. مقدار BYTES میتواند منفی باشد؛ مقادیر بین -64 تا 256 (شامل خود آنها) پذیرفته میشوند. - mpu BYTES
-
طول هر بسته (شامل سربار) را به حداقل اندازه تعیینشده با BYTES گرد میکند. مقدار BYTES نمیتواند منفی باشد؛ مقادیر بین 0 تا 256 (شامل خود آنها) پذیرفته میشوند. - atm
-
سربار قالببندی سلولهای ATM را که معمولاً در پیوندهای ADSL یافت میشوند جبران میکند. این کار پس از اعمال پارامتر overhead انجام میپذیرد. فناوری ATM از سلولهای ثابت ۵۳ بایتی استفاده میکند که هر یک میتوانند ۴۸ بایت داده مفید (payload) را حمل کنند. - ptm
-
سربار کدگذاری PTM را که معمولاً در پیوندهای VDSL2 وجود دارد و از طرح کدگذاری 64b/65b استفاده میکند جبران مینماید. راهکار حتی کارآمدتر این است که پهنای باند شکلدهنده تعیینشده را به سادگی با ضریب 64/65 یا 0.984 کاهش دهید. برای جزئیات بیشتر به بخشهای ITU G.992.3 Annex N و IEEE 802.3 Section 61.3 مراجعه کنید. - noatm
-
جبرانسازی ATM و PTM را غیرفعال میکند.
کلیدواژههای سربار ایمن (Failsafe Overhead Keywords)
این دو کلیدواژه برای راهاندازی سریع و بدون دردسر فراهم شدهاند؛ در صورتی که تمایلی به مطالعه ادامه این بخش ندارید از آنها استفاده کنید.
- raw (پیشفرض)
-
تمام سازوکارهای جبران سربار را در CAKE خاموش میکند. اندازه بسته گزارششده توسط لینوکس مستقیماً استفاده خواهد شد.
کلیدواژههای دیگر سربار را میتوان بعد از «raw» اضافه کرد. اثر این کار آن است که جبران سربار نسبت به اندازه گزارششده بسته عمل خواهد کرد، نه نسبت به اندازه بسته IP زیرین.
- conservative
-
سرباری بیش از آنچه احتمالاً در هر نوع فناوری ارتباطی متداول رخ میدهد را جبران میکند. معادل با overhead 48 atm.
کلیدواژههای سربار ADSL (ADSL Overhead Keywords)
اکثر مودمهای ADSL روشی برای بررسی نوع طرح قالببندی (framing scheme) مورد استفاده دارند. این مورد اغلب در برگه تنظیمات ارائهشده توسط ارائهدهنده خدمات اینترنت (ISP) نیز مشخص میشود. کلیدواژههای این بخش به منظور تطابق با این منابع اطلاعاتی طراحی شدهاند. تمام آنها فلگ atm را به طور ضمنی فعال میکنند.
- pppoa-vcmux
-
معادل با overhead 10 atm - pppoa-llc
-
معادل با overhead 14 atm - pppoe-vcmux
-
معادل با overhead 32 atm - pppoe-llcsnap
-
معادل با overhead 40 atm - bridged-vcmux
-
معادل با overhead 24 atm - bridged-llcsnap
-
معادل با overhead 32 atm - ipoa-vcmux
-
معادل با overhead 8 atm - ipoa-llcsnap
-
معادل با overhead 16 atm
همچنین بخش «کلیدواژههای سربار اترنت» را در زیر مشاهده کنید.
کلیدواژههای سربار VDSL2 (VDSL2 Overhead Keywords)
در VDSL2 قالببندی ATM به نفع PTM کنار گذاشته شد که طرح قالببندی بسیار سادهتر و سرراستتری است. برخی از ISPها PPPoE را برای سازگاری با سیستمهای پشتیبان موجود حفظ کردند.
- pppoe-ptm
-
معادل با overhead 30 ptm
PPPoE: 2B PPP + 6B PPPoE + ETHERNET: 6B dest MAC + 6B src MAC + 2B ethertype + 4B Frame Check Sequence + PTM: 1B Start of Frame (S) + 1B End of Frame (Ck) + 2B TC-CRC (PTM-FCS)
- bridged-ptm
-
معادل با overhead 22 ptm
ETHERNET: 6B dest MAC + 6B src MAC + 2B ethertype + 4B Frame Check Sequence + PTM: 1B Start of Frame (S) + 1B End of Frame (Ck) + 2B TC-CRC (PTM-FCS)
همچنین بخش «کلیدواژههای سربار اترنت» را در زیر مشاهده کنید.
کلیدواژه سربار کابل DOCSIS (DOCSIS Cable Overhead Keyword)
فناوری DOCSIS استاندارد جهانی ارائه خدمات اینترنت بر روی زیرساخت تلویزیون کابلی است.
در این حالت، سربار واقعی روی سیم اهمیت کمتری نسبت به اندازه بستهای دارد که تجهیزات سمت سرویسدهنده (head-end) برای شکلدهی و اندازهگیری ترافیک استفاده میکنند؛ این اندازه طبق مشخصات برابر با یک فریم اترنت به همراه CRC (یا همان FCS) در نظر گرفته شده است.
- docsis
-
معادل با overhead 18 mpu 64 noatm
کلیدواژههای سربار اترنت (Ethernet Overhead Keywords)
- ethernet
-
سربار بخش پیشدرآمد (preamble)، فاصله بین فریمها (inter-frame gap) و دنباله بررسی فریم (Frame Check Sequence) اترنت را محاسبه میکند. هنگامی که گلوگاه مورد نظر برای شکلدهی یک کابل اترنت واقعی باشد از این کلیدواژه استفاده کنید. معادل با overhead 38 mpu 84 noatm - ether-vlan
-
مقدار ۴ بایت به جبران سربار اضافه میکند تا هدر IEEE 802.1Q VLAN را که به هدر فریم اترنت پیوست شده است محاسبه کند. توجه: برخی از ISPها از یک یا حتی دو مورد از این هدرها درون PPPoE استفاده میکنند؛ این کلیدواژه را میتوان به تعداد نیاز تکرار کرد تا این وضعیت بیان شود.
پارامترهای زمان رفتوبرگشت (ROUND TRIP TIME PARAMETERS)
مدیریت فعال صف (AQM) شامل گنجاندن سیگنالهای ازدحام در جریان بستهها است که گیرندهها از آن برای دستور دادن به فرستندگان جهت کاهش سرعت هنگام اشغال مداوم صف استفاده میکنند. CAKE در صورت در دسترس بودن از سیگنالدهی ECN و در غیر این صورت از دور انداختن بسته بر اساس ترکیبی از الگوریتمهای AQM با نامهای Codel و BLUE که COBALT نامیده میشود، استفاده مینماید.
تاخیرهای بسیار کوتاه نیازمند پاسخ بسیار سریع AQM برای کنترل کافی تاخیر هستند. با این حال، چنین پاسخ سریعی در زمانی که RTT واقعی نسبتاً طولانی باشد به پهنای باند و بازدهی آسیب میزند. CAKE اجازه میدهد RTT فرضی را برای تنظیم پارامترهای گوناگون مشخص کنید. مقادیر واقعی RTT که در حدود این مقدار فرضی باشند، معمولاً هم از نظر مدیریت بازدهی و هم مدیریت تاخیر عملکرد بسیار خوبی خواهند داشت.
در تنظیم «lan» و مقادیر پایینتر از آن، ثابتهای زمانی از نظر مقیاس مشابه با نوسان تاخیر (jitter) خود کرنل لینوکس هستند، بنابراین ممکن است سیگنال ازدحام زودتر از موعد ارسال شود. در نتیجه جریانها تنک شده و پهنای باند کل کاهش مییابد و پسفشار (back-pressure) ناچیزی برای منطق برقراری عدالت باقی میماند. برای شبکههای محلی (LAN) از گزینه «metro» استفاده کنید مگر اینکه از کرنل سفارشی بهره ببرید.
- rtt TIME
-
یک مقدار RTT را به صورت دستی تعیین میکند. - datacentre
-
تنها برای شبکههای با کارایی بسیار بالا (+10GigE).
معادل با rtt 100us. - lan
-
برای شبکههای اترنت خالص (نه وایفای) در خانه یا محل کار. هنگام شکلدهی برای پیوند دسترسی به اینترنت از این گزینه استفاده نکنید.
معادل با rtt 1ms. - metro
-
برای ترافیکی که عمدتاً درون یک شهر است.
معادل با rtt 10ms. - regional
-
برای ترافیکی که عمدتاً درون کشوری به اندازه یک کشور اروپایی است.
معادل با rtt 30ms. - internet (پیشفرض)
-
برای اکثر ترافیکهای اینترنتی مناسب است.
معادل با rtt 100ms. - oceanic
-
برای ترافیک اینترنتی با تاخیر به طور کلی بالاتر از حد میانگین، مانند تاخیری که ساکنان منطقه استرالزی با آن روبرو هستند.
معادل با rtt 300ms. - satellite
-
برای ترافیک از طریق ماهوارههای زمینآهنگ (geostationary).
معادل با rtt 1000ms. - interplanetary
-
علت این نامگذاری این است که فاصله سیاره مشتری تا زمین حدود ۱ ساعت نوری است. از این گزینه برای غیرفعال کردن (تقریباً) کامل عملکردهای AQM استفاده کنید.
معادل با rtt 3600s.
پارامترهای جداسازی جریان (FLOW ISOLATION PARAMETERS)
با فعال بودن قابلیت جداسازی جریان، CAKE بستههای مربوط به جریانهای مختلف را در صفهای متفاوتی قرار میدهد که هر کدام وضعیت AQM مستقل خود را دارند. سپس بستهها از هر صف به صورت عادلانه و طبق یک الگوریتم DRR++ که تاخیر را برای جریانهای «تنک» (sparse) به حداقل میرساند تحویل داده میشوند. CAKE از یک الگوریتم درهمسازی مجموعهوابسته برای به حداقل رساندن تداخل جریانها استفاده میکند.
این کلیدواژهها مشخص میکنند که آیا برقراری عدالت بر اساس آدرس مبدأ، آدرس مقصد، جریانهای مجزا، یا هر ترکیبی از آنها مد نظر است یا خیر.
- flowblind
-
جداسازی جریان را غیرفعال میکند؛ تمام ترافیک برای هر tin از یک صف واحد عبور میکند. - srchost
-
جریانها فقط بر اساس آدرس مبدأ تعریف میشوند. این گزینه میتواند در مسیر خروجی (egress) بکهال یک ISP مفید باشد. - dsthost
-
جریانها فقط بر اساس آدرس مقصد تعریف میشوند. این گزینه میتواند در مسیر ورودی (ingress) بکهال یک ISP مفید باشد. - hosts
-
جریانها بر اساس جفتهای میزبان مبدأ-مقصد تعریف میشوند. این حالت جداسازی میزبان است، نه جداسازی جریان. - flows
-
جریانها بر اساس پنجگانه (5-tuple) کاملِ شامل آدرس مبدأ، آدرس مقصد، پروتکل انتقال، درگاه مبدأ و درگاه مقصد تعریف میشوند. این همان نوع جداسازی جریانی است که توسط SFQ و fq_codel انجام میشود. - dual-srchost
-
جریانها بر اساس پنجگانه تعریف میشوند و عدالت ابتدا بر روی آدرسهای مبدأ و سپس بر روی جریانهای مجزا اعمال میگردد. این گزینه برای استفاده بر روی ترافیک خروجی از یک شبکه محلی به اینترنت مناسب است، جایی که بدون در نظر گرفتن تعداد جریانهای استفادهشده توسط یک میزبان، از انحصار پهنای باند ارسال (uplink) توسط آن میزبان جلوگیری میکند. - dual-dsthost
-
جریانها بر اساس پنجگانه تعریف میشوند و عدالت ابتدا بر روی آدرسهای مقصد و سپس بر روی جریانهای مجزا اعمال میگردد. این گزینه برای استفاده بر روی ترافیک ورودی به یک شبکه محلی از اینترنت مناسب است، جایی که بدون در نظر گرفتن تعداد جریانهای استفادهشده توسط یک میزبان، از انحصار پهنای باند دریافت (downlink) توسط آن میزبان جلوگیری میکند. - triple-isolate (پیشفرض)
-
جریانها بر اساس پنجگانه تعریف میشوند و عدالت به شکلی هوشمندانه بر روی آدرسهای مبدأ *و* مقصد (نه صرفاً بر اساس جفت میزبانها) و همچنین بر روی جریانهای مجزا اعمال میگردد. اگر مطمئن نیستید از dual-srchost استفاده کنید یا dual-dsthost، از این گزینه استفاده نمایید؛ این گزینه هر دو کار را همزمان انجام میدهد و مانع از آن میشود که هر میزبانی در *هر* دو سمت ارتباط بتواند با تعداد زیادی جریان پهنای باند را به انحصار خود درآورد. - nat
-
به Cake دستور میدهد تا قبل از اعمال قوانین جداسازی جریان، جستجوی NAT را انجام دهد تا آدرسها و شمارههای درگاه واقعی بسته را شناسایی کند و به این ترتیب عدالت بین میزبانهای «پشت» NAT بهبود یابد. این گزینه در حالتهای «flowblind» یا «flows» یا در صورتی که NAT روی میزبان دیگری انجام شود هیچ تاثیر عملی ندارد. - nonat (پیشفرض)
-
نرمافزار Cake جستجوی NAT را انجام نخواهد داد. جداسازی جریان با استفاده از آدرسها و شماره درگاههایی انجام میشود که مستقیماً برای رابط شبکهای که Cake به آن متصل است قابل مشاهده هستند.
پارامترهای صف اولویت (PRIORITY QUEUE PARAMETERS)
الگوریتم CAKE میتواند ترافیک را بر اساس فیلد Diffserv به دستههایی با عنوان «tin» تقسیم کند. هر tin دارای مجموعه صفهای جداسازی جریان مستقل به خود است و بر اساس الگوریتم WRR (Round-Robin وزندار) سرویسدهی میشود. برای جلوگیری از رفتارهای نامطلوب در علامتگذاری Diffserv، وزنهای tin زمانی که پهنای باند مصرفی آن زیر یک آستانه معین باشد دارای مقدار «اشتراک اولویت» (priority sharing) و هنگامی که بالاتر از آن باشد دارای مقدار کمتر «اشتراک پهنای باند» (bandwidth sharing) خواهند بود. مقایسه پهنای باند با آستانه با استفاده از همان الگوریتم شکلدهنده حالت کسری انجام میشود.
امکان سفارشیسازی جزئی پارامترهای tin فراهم نشده است. پیشتنظیمهای زیر تمامی تنظیمات لازم را متناسب با پهنای باند فعلی شکلدهنده و مقادیر RTT انجام میدهند.
- besteffort
-
صفبندی اولویت را با قرار دادن تمام ترافیک در یک tin غیرفعال میکند. - precedence
-
تفسیر قدیمی فیلد «Precedence» مربوط به TOS را فعال میسازد. استفاده از این پیشتنظیم در اینترنت امروزی اکیداً منع شده است. - diffserv4
-
یک پیادهسازی همهمنظوره از Diffserv را با چهار tin فراهم میکند:
• حجیم (Bulk)
(کدهای CS1، و LE
در
هستههای
نسخه ۵.۹ به
بالا)،
آستانه
۶.۲۵٪، به
طور کلی با
اولویت
پایین.
• بیشترین
تلاش (Best Effort)
(عمومی)،
آستانه
۱۰۰٪.
• ویدیو (Video)
(کدهای AF4x، AF3x،
CS3، AF2x، CS2، TOS4، TOS1)،
آستانه ۵۰٪.
• صوت (Voice)
(کدهای CS7، CS6، EF،
VA، CS5، CS4)،
آستانه
۲۵٪.
- diffserv3 (پیشفرض)
-
یک پیادهسازی ساده و همهمنظوره از Diffserv را با سه tin فراهم میکند:
• حجیم (Bulk)
(کدهای CS1، و LE
در
هستههای
نسخه ۵.۹ به
بالا)،
آستانه
۶.۲۵٪، به
طور کلی با
اولویت
پایین.
• بیشترین
تلاش (Best Effort)
(عمومی)،
آستانه
۱۰۰٪.
• صوت (Voice)
(کدهای CS7، CS6، EF،
VA، TOS4)، آستانه
۲۵٪، با
بازه زمانی
کاهشیافته
Codel.
- fwmark MASK
-
این گزینه بازنویسی انتخاب tin در CAKE را بر اساس fwmark فعال میکند. در صورت تنظیم، این گزینه یک ماسک بیتی را تعیین میکند که بر روی fwmark مرتبط با هر بسته اعمال خواهد شد. اگر نتیجه این ماسک غیرصفر باشد، مقدار به دست آمده به تعداد کمارزشترین بیتهای صفر در مقدار ماسک به سمت راست شیفت داده شده و نتیجه به عنوان شماره tin برای آن بسته استفاده خواهد شد. این سازوکار میتواند برای تعیین سیاستها در اسکریپت فایروال جهت لغو و بازنویسی انتخاب داخلی tin توسط CAKE استفاده شود.
سایر پارامترها (OTHER PARAMETERS)
- ingress
-
نشان میدهد که CAKE در حالت ورودی (یعنی روی ترافیک دانلینک یک اتصال) اجرا میشود. این کار باعث میشود شکلدهنده ترافیک، بستههای دور انداختهشده را نیز به عنوان داده منتقلشده حساب کند؛ زیرا این بستهها قبلاً پیش از آنکه CAKE تصمیم بگیرد با آنها چه کند از پیوند شبکه عبور کردهاند.
علاوه بر این، AQM طوری تنظیم میشود که همیشه حداقل دو بسته در صف برای هر جریان نگه دارد. دلیل این امر این است که ارسال مجدد بستهها در حالت ورودی هزینه بیشتری دارد، زیرا بستههای دور انداختهشده باید مجدداً پیوند را طی کنند؛ بنابراین، نگه داشتن حداقل تعداد بستهها در صف، بازدهی را در مواردی بهبود میبخشد که تعداد جریانهای فعال آنچنان زیاد است که حتی با حداقل اندازه پنجره خود پیوند را اشباع میکنند.
- memlimit LIMIT
-
حافظه مصرفی توسط Cake را به LIMIT بایت محدود میکند. توجه داشته باشید که این مقدار مستقیماً به اندازه صف ترجمه نمیشود (بنابراین اندازه آن را بر اساس محاسبات BDP یا ضرب تاخیر در پهنای باند تعیین نکنید، بلکه آن را بر اساس بدترین حالت مصرف حافظه قابل قبول در نظر بگیرید)، زیرا در ساختارهای داده نگهدارنده بستهها، به ویژه برای بستههای کوچک، مقداری سربار وجود دارد.
به طور پیشفرض، این محدودیت بر اساس تنظیمات پهنای باند و RTT محاسبه میشود.
- wash
-
ترافیک ورودی به دامنه diffserv شما اغلب در حین انتقال از دیدگاه شبکه شما دچار علامتگذاری نادرست میشود، و ترافیک خروجی از شبکه شما نیز ممکن است از دیدگاه ارائهدهنده میانی دچار علامتگذاری نامناسب باشد.
گزینه wash را اعمال کنید تا پس از انجام صفبندی اولویت، تمام بیتهای اضافی diffserv (به جز بیتهای ECN) پاک شوند.
اگر در حال شکلدهی ترافیک ورودی هستید و نمیتوانید به علامتگذاریهای diffserv اعتماد کنید (همانطور که در شبکه کابلی کامکست و موارد دیگر رخ میدهد)، بهتر است از حالت تکصف «besteffort» به همراه گزینه wash استفاده کنید.
- split-gso
-
این گزینه کنترل میکند که آیا CAKE ابربستههای حاصل از باربرداری بخشبندی عمومی (GSO) را به اجزای مستقل واقعی آنها بر روی سیم تقسیم کرده و از صف خارج کند یا خیر.
ابربستهها توسط پشته شبکه برای افزایش کارایی ایجاد میشوند. با این حال، از آنجا که این بستهها بزرگتر هستند، خروج آنها از صف بیشتر طول میکشد که این امر بهویژه در پهنای باندهای پایینتر، به تاخیر بالاتر برای جریانهای رقیب ترجمه میشود. رفتار پیشفرض CAKE برای دستیابی به کمترین تاخیر ممکن، تقسیم بستههای GSO است. در سرعتهای ارتباطی بالاتر از ۱۰ گیگابیت بر ثانیه، تنظیم پارامتر no-split-gso میتواند با حفظ کامل ابربستههای GSO، حداکثر بازدهی قابل دستیابی را افزایش دهد.
بازنویسی ردهبندی با فیلترهای TC (OVERRIDING CLASSIFICATION WITH TC FILTERS)
نرمافزار CAKE از امکان بازنویسی ردهبندی داخلی بستهها از طریق سازوکار فیلتر tc پشتیبانی میکند. بستهها میتوانند با تنظیم فیلد priority روی skb به tinهای با اولویت مختلف اختصاص یابند، و همچنین درهمسازی جریان میتواند با تنظیم پارامتر classid بازنویسی شود.
بازنویسی Tin (Tin override)
برای اختصاص یک tin اولویتدار، عدد اصلی (major number) فیلد priority باید با شناسه دستگیره (handle) نمونه qdisc کِیک تطابق داشته باشد؛ در صورت تطابق، عدد فرعی (minor number) به عنوان شناسه شاخص tin تفسیر خواهد شد. به عنوان مثال، برای ردهبندی تمامی بستههای ICMP به عنوان «حجیم» (bulk)، میتوان از فیلتر زیر استفاده کرد:
# tc qdisc replace dev eth0 handle 1: root cake diffserv3 # tc filter add dev eth0 parent 1: protocol ip prio 1 \ u32 match icmp type 0 0 action skbedit priority 1:1
بازنویسی هش جریان (Flow hash override)
برای بازنویسی هش جریان میتوان مقدار classid را تنظیم کرد. نرمافزار CAKE عدد اصلی classid را به عنوان هش میزبان (مورداستفاده در حالت جداسازی میزبان) و عدد فرعی آن را به عنوان هش جریان (مورداستفاده برای صفبندی مبتنی بر جریان) تفسیر میکند. میتوان یکی یا هر دو مقدار را تنظیم کرد و در صورتی که پارامتر مربوطه در جداسازی جریان فعال باشد به کار گرفته خواهند شد (یعنی اگر CAKE در حالت میزبان پیکربندی نشده باشد عدد اصلی نادیده گرفته میشود، و اگر در حالت جریانها پیکربندی نشده باشد عدد فرعی نادیده گرفته میشود).
مثال زیر تمامی بستههای ICMP را به اولین صف اختصاص میدهد:
# tc qdisc replace dev eth0 handle 1: root cake # tc filter add dev eth0 parent 1: protocol ip prio 1 \ u32 match icmp type 0 0 classid 0:1
اگر تنها یکی از مقادیر میزبان یا جریان بازنویسی شود، CAKE هش دیگر را طبق روال عادی از بسته محاسبه میکند. با این حال توجه داشته باشید که حالت جداسازی میزبان با اختصاص یک شناسه میزبان به صف جریان کار میکند؛ بنابراین در صورت بازنویسی همزمان میزبان و جریان، یک جریان یکسان نمیتواند بیش از یک میزبان به خود اختصاص دهد. علاوه بر این، اختصاص شناسههای مجزا برای میزبان مبدأ و مقصد از طریق سازوکار بازنویسی ممکن نیست؛ اگر یک شناسه میزبان اختصاص یابد، به عنوان هر دو میزبان مبدأ و مقصد در نظر گرفته خواهد شد.
مثالها (EXAMPLES)
# tc qdisc delete root dev eth0
# tc qdisc add root dev eth0 cake bandwidth 100Mbit ethernet
# tc -s qdisc show dev eth0
qdisc cake 1: root refcnt 2 bandwidth 100Mbit diffserv3 triple-isolate rtt 100.0ms noatm overhead 38 mpu 84
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
memory used: 0b of 5000000b
capacity estimate: 100Mbit
min/max network layer size: 65535 / 0
min/max overhead-adjusted size: 65535 / 0
average network hdr offset: 0
Bulk Best Effort Voice
thresh 6250Kbit 100Mbit 25Mbit
target 5.0ms 5.0ms 5.0ms
interval 100.0ms 100.0ms 100.0ms
pk_delay 0us 0us 0us
av_delay 0us 0us 0us
sp_delay 0us 0us 0us
pkts 0 0 0
bytes 0 0 0
way_inds 0 0 0
way_miss 0 0 0
way_cols 0 0 0
drops 0 0 0
marks 0 0 0
ack_drop 0 0 0
sp_flows 0 0 0
bk_flows 0 0 0
un_flows 0 0 0
max_len 0 0 0
quantum 300 1514 762
پس از مدتی استفاده: (After some use:)
# tc -s qdisc show dev eth0
qdisc cake 1: root refcnt 2 bandwidth 100Mbit diffserv3 triple-isolate rtt 100.0ms noatm overhead 38 mpu 84
Sent 44709231 bytes 31931 pkt (dropped 45, overlimits 93782 requeues 0)
backlog 33308b 22p requeues 0
memory used: 292352b of 5000000b
capacity estimate: 100Mbit
min/max network layer size: 28 / 1500
min/max overhead-adjusted size: 84 / 1538
average network hdr offset: 14
Bulk Best Effort Voice
thresh 6250Kbit 100Mbit 25Mbit
target 5.0ms 5.0ms 5.0ms
interval 100.0ms 100.0ms 100.0ms
pk_delay 8.7ms 6.9ms 5.0ms
av_delay 4.9ms 5.3ms 3.8ms
sp_delay 727us 1.4ms 511us
pkts 2590 21271 8137
bytes 3081804 30302659 11426206
way_inds 0 46 0
way_miss 3 17 4
way_cols 0 0 0
drops 20 15 10
marks 0 0 0
ack_drop 0 0 0
sp_flows 2 4 1
bk_flows 1 2 1
un_flows 0 0 0
max_len 1514 1514 1514
quantum 300 1514 762
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
نویسنده اصلی Cake آقای Jonathan Morton است، همراه با مشارکتهایی از جانب: Tony Ambardar، Kevin Darbyshire-Bryant، Toke Høiland-Jørgensen، Sebastian Moeller، Ryan Mounce، Dean Scarff، Nils Andreas Svee، و Dave Täht.
این صفحه راهنما توسط Loganaden Velvindron نوشته شده است. لطفاً اصلاحات و گزارشها را به فهرست پستی شبکه لینوکس به آدرس <netdev@vger.kernel.org> ارسال نمایید.
| 19 July 2018 | iproute2 |