SRE at Asa Co. / Agah Group
آشنایی با QoS - بخش اول (مفاهیم)
قبل از شروع بحث QoS، به این مورد توجه کنید، روتر های سمت لبه ی شبکه (Edge Router) دارای هردو Interface های WAN و همچنین LAN میباشد که با توجه به نوعشون LAN بسیار سریعتر از WAN میباشد.درحالی که WAN Interface مشغول ارسال پکت های منتظر در روتر میباشد، صدها و شاید هم هزاران پکت دیگر هم از سمت شبکه ی LAN از راه میرسند که نیاز است که از همان Interfaceـه WAN عبور کنند! در اینجور مواقع روتر چه کاری باید انجام دهد ؟ تمامی آنهارا با همان ترتیبی که وارد شده اند بدون اطمینان از اینکه با مقصد میرسند ارسال کند؟ پکت هارا طبق نوعشان طبقه بندی کند که یکسری را زودتر از بقیه ارسال کند؟ وقتی تعداد پکت های منتظر زیاد میشود تعدادی از آنهارا از بین ببرد؟ با ما همراه باشید تا در این بخش با مفاهیم QoS آشنا شوید.
پاراگراف بالا تعدادی از سوالات QoS یا همان Quality of Service را در شبکه شرح میدهد.تقریبا میتوان گفت QoS ابزاری است که دستگاه های تحت شبکه از آن برای اعمال یکسری تغییرات رفتار ، بروی پکت هایی که از آن دستگاه میگذرند استفاده میکنند. از QoS در اکثر شبکه های با مقیاس متوسط به بالا استفاده میشود (از قبیل شرکتهای کوچک تا شرکت های Service Provider در ایران و جهان) ، به عنوان نمونه WAN Edge Router میتواند پکت های منتظر برای Interfaceـه WAN را مدیریت و صف بندی کند ، همچنین میتوانید از یک الگوریتم زمانبندی (scheduling algorithm) خاصی استفاده کند تا مشخص کند کدام پکت ها باید در مرحله ی بعد ارسال شوند ، از ترتیب خاصی استفاده شود و یا اینکه به یکسری پکت ها سرویس بهتری داده شود و یکسری پکت ها بدترین سرویسه ممکن را داشته باشند.
مدیریت پهنای باند، Delay ،Jitter و Loss
سیسکو ابزار های QoS بسیاری را هم در روتر و هم در سوئیچ هایش پیشنهاد میکند ، تمام آنها قدرت مدیریته 4 مشخصه ی اصلی از ترافیک شبکه را در اختیارتان قرار میدهند :
- Bandwidth
- Delay
- Jitter
- Loss
پهنایباند یا همان Bandwidth به سرعت یک لینک (بر اساس Bit/s ، بیت بر ثانیه) اشاره میکند ، اما همینطور که ما داریم به پهنای باند به عنوان یک سرعت نگاه میکنیم ، بهتر است که همچنین به پهنای باند به عنوان ظرفیت یک لینک هم نگاه کنیم. در شرایطی که مشخص میشود چه مقدار bit میتواند در ثانیه بروی یک لینک ارسال شود ، ابزار Qosـه موجود در آن دستگاه تحت شبکه مشخص میکند که پکت بعدی چه باشد و چه پکتی بعد از آن ارسال شود ، پس دستگاه بر اینکه چه پیغامی در مرحله بعد به پهنای باند دسترسی پیدا میکند، و یا اینکه چه مقدار پهنای باند (ظرفیت) به هر نوع پکت داده میشود کنترل دارد. مثلا ممکن است بخواهید به ترافیک های مربوط به یک سرویسی که نیاز به سرعت بالا و عدم قطعی دارند پهنای باند بیشتری بدهید.
تاخیر یا همان Delay، دو حالت دارد، یا one-way (یکطرفه) که زمانی ارسال تا رسیدن یک پکت به مقصد است میباشد و یا round-trip ، که مجموع زمانی که طول میکشد که بسته ارسال شود + از طرف مقصد هم دوباره بازگشت داده شود یعنی به زبان ساده به مقدار زمانی که طول میکشد تا یک پکت بین 2 هاست ارسال و دریافت شود را round-trip میگویند. Delay و این تاخیر ها در بسیاری جاها میتواند حیاتی و بسیار مهم باشد که در ادامه درمورد آن صحبت خواهیم کرد.
جیتر(Jitter)، به مقدار تغییرات ایجاد شده در One-way Delay بین پکت های متوالی یک بسته گفته میشود. برای درک بهتر به عنوان نمونه فرض کنید که یک یک Application چندصد پکت به یک مقصد خاص (یک هاست) ارسال میکند. مقدار one-way delay در ارسال پکت اول 300میلیثانیه ، پکت بعدی هم همچنان 300میلیثانیه و پکت سوم هم به همین صورت الی آخر. در اینجا Jitterـی وجود ندارد ، چراکه مقدار one-way delay ها یکسان بودند. اما به عنوان مثال اگر پکت اول با 300 و دومی با 310 و سومی با 350 میرسید، میگفتیم که مقدار Jitter در میان پکت اول و دوم 10 میباشد و یا اینکه مقدار Jitter در فاصله پکت دوم و سوم ، 40میلیثانیه میباشد.
ـLoss به تعداد تعداد پکت های از دست رفته اشاره دارد.در یک مثال ساده ، فرض کنید که یک اپلیکیشن 100 پکت را به سمت یک مقصد ارسال میکند و به هرحال فقط 98 درصد آنها به مقصد تحویل داده میشود ، در این شرایط میگوییم که 2% Loss یا از دست رفتگی داشتیم.دلیل پیش آمدن Loss میتواند خیلی موارد باشد اما اکثرا مردم فکر میکنند که دلیله ایجاد Loss ، کابل کشیه بد و دارای نویز ویا اینکه سرویس WAN ضعیف میباشد، خب این میتواند یکی از دلایل ایجاد Loss باشد. به هرحال Loss بیشتری اتفاق میفتد اگر به عنوان مثال در حالت نرمال صفهای یک Device تحت شبکه Full و پر شوند ، چراکه دستگاه هیچ جای دیگری ندارد که پکت های جدید را قرار دهد ،پس پکت هارا Discard میکند و Loss پیش میآید.تعدادی از ابزارهای QoS میتوانند سیستم صف بندی را مدیریت کنند و بع کنترل بسته ها کمک کنند و از پیش آمدن Loss جلوگیری کنند.
انواع ترافیک
با استفاده از QoS مهندس شبکه میتواند بسته به نیازه موجود، با توجه به میزان پهنای باند،Delay،Loss و Jitter ، هر نوع پکت را از نوع دیگری جدا کند.گاهی اوقات نیاز است که که این انتخاب را با توجه به نوع کار و Business خاصی انجام داد،به عنوان مثال نرم افزاره سرویس دهی مربوط به بانک مرکزی در 3 نقطه (3 سرور و سابنت) قرار داشته باشد ، با QoS میتوان در بین این 3 نقطه ، پکت هایی که مربوط به این نرم افزار میباشند در رفت و برگشت میباشند را بهشان سرویسهای بهتر و قدرتمند تری در لینک ارتباطی اشان نسبت به بقیه ی ترافیک ها داد (که همیشه از بابت سرویس دهیه آن نرم افزار ، خیالمان راحت باشد که به عنوان مثال منابع یا مثلا پهنای باند، کم نیاورند) به هرحال در موقعیت های عادی دیگر ، بحث سره این است که چگونه با توجه به طبیعته متفاوته انواع اپلیکیشن های مختلف ، QoS را اعمال کنیم.برخی برنامه ها نیاز به تنظیمات QoS متفاوتی نسبت به بقیه دارند که در ادامه با برخی از تفاوت های ابتدایی بر اساس نیاز های هرنوع ترافیک برای QoS ، آشنا میشویم.
- Data Applications :
در ابتدا یک نرم افزار ساده ی web application را در نظر بگیرید ، با یک کاربر که از یک تبلت و یا یک PC استفاده میکند.کاربر آدرس (URL) را وارد میکند تا درخواست یک صفحه ی تحت وب را ارسال کند.ممکن است فقط نیاز باشد که یک پکت به سمت وب سرور ارسال شود اما در پاسخه وب سرور به سمته کاربر ممکن است صدها ویا هزاران پکت ارسال شود(در تصویر زیر،این مثال به خوبی نمایش داده شده است).
خب ، تاثیر پهنای باند،delay،jitter و loss بروی این نرم افزار تحت وبه تعاملی چیست؟ در ابتدا پکت ها نیاز به ظرفیت مشخصی از پهنای باند موجود دارند. از طرف دیگر درمورد delay هم هر کدام از آن بسته ها از سمت سرور به سمت کلاینت دارای مقداری one-way delay و همچنین مقداری jitter هستند.
از آن 500 پکتی که در شکل بالا نمایش داده شده است ، اگر تعدادی از آنها به هر دلیلی از بین بروند ، سرور دوباره آنهارا ارسال میکند اما ممکن است دیگر یکسری از قسمت های صفحه ی وبه مورد نظر ما ، به درستی نمایش داده نشوند.
درحالی که ابزار های QoS برای مدیریت پهنای باند و موارد دیگه که در قبل گفته شد تمرکز دارند ، کاربر فقط به کیفیت کلی سرویسی که تجربه میکند اهمیت میدهد. برای مثال ،فقط برایش مهم است که در یک web-application چقدر طول میکشد تا بعد از کلیک ، چیزی که مدنظرش است را ببیند؟
در اینجور مواقع گفته میشود که کاربر به QoE یا Quality of Experience (کیفیت تجربه) اهمیت میدهد.
ابزارهای QoS بصورت مستقیم میتوانند بروی Bandwidth,delay,jitter و loss اثر بگذراند و آنهارا مدیریت کنند و بصورت کلی میبایستی بایکدیگر طوری تنظیم و ترکیب شوند که نتیجه ی خوبی بدهند تا بتوانند QoE کاربر را تحت تاثیر قرار دهند.
همچنین میتوانید از ابزارهای QoS برای ترافیک های خیلی مهمتر ، QoE بهتری ایجاد کنید ، برای مثال ممکن است برای یک اپلیکیشن خیلی ضروری و حیاتی صف بندی QoS بهتری تدارک ببینید که با این کار، QoE کاربرانِ آن اپلیکیشن را تحت تاثیر قرار میدهد.
از طرف دیگر ، یک نرم افزار غیرتعاملی (که به آنها batch traffic میگویند) مثل برنامه های بکآپ گیری داده ها ویا انتقال فایل نیازمند پیشنیاز های QoSـه متفاوتی نسبت به اپلیکیشن های تعاملی میباشند.
ـBatch Application ها عموما با توجه به نوعشان داده ی بیشتری نسبت به اپلیکیشن های تعاملی میفرستند اما به دلیل اینکه آنطرف هیچکس منتظر نیست که ناگهان چیزی روی صفحه نمایش داده شود ، پس مشخصا مواردی مثل delay و jitter زیاد مهم نیستند.مخصوصا برای آن نرم افزارهایی که task های طولانی و سنگلینی دارند (مثل انتقال فایل).ابزار های QoS در اینجا میتوانند پهنای باند کافی را برای آن نوع ترافیک صورت جداگانه و بر اساس نیازشان به ظرفیت ارائه دهند و loss را مدیریت و از ارسال دوباره ی داده ها جلوگیری کند.
- Video and Voice Applications
قبل از هرچیز ، بیایید با مفهومی بنام Flow آشنا شویم.در تعریف ساده به تمام داده هایی که در بستر شبکه از یک Application به Application دیگری ارسال میشود ، flow میگویند. حالا بصورت دقیق درمورد Voice در بستر ip (همان VoIP) میخواهیم صحبت کنیم، در تعریف ساده VoIP بدین صورت است که صدایی را از طریق تلفن خود تولید و در داخل پکت های IP قرار داده و در بستر شبکه به تلفن دیگری ارسال میکنید و آن تلفن هم آن صدارا پخش میکند (دقیقا مثل تلفن صحبت کردن عادی که در روزمره با آن سرو کار داریم ، اما اینجا بجای خط تلفن ، صدا از طریق بستر شبکه انتقال پیدا میکند) شکل زیر ، مواردی که در بالا گفتیم را به صورت مرحله به مرحله نشان میدهد :
- کاربر یک تماس برقرار میکند و شروع به صحبت کردن میکند.
- یک chip با نام codec processes (همان Digitizes) صدارا به باینری تبدیل کرده و طبق بازه ی زمانی آنرا آماده میکند.
- تلفن داده را در IP Packet ها قرار میدهد.
- تلفن پکت را به سمت IP مقصد ارسال میکند.
اگر کمی از ریاضی استفاده کنید، میبینیم که یک تماس با استفاده از G.711 Codec نیاز به 80kb/s پهنای باند دارد (بدون در نظر گرفتن هدر Data link و trailer overhead). با جمع زدن هدر ها و Payload های مربوط به VoIP (که در تصویر نشان داده شده) ، هر پکت 200 بایت حجم دارد که هرکدام 20 میلی ثانیه نگه داشته میشوند ، پس در مجموع تلفن هر ثانیه 50 پکت ارسال میکند و از آن طرف هر کدام از این 50 تا 200بایت حجم دارد ، پس حدود 10000بایت(80000 بیت) در ثانیه ارسال میشود(که میشود 80kb/s). پس میتوان به راحتی به این نتیجه رسید که VoIP یا یک Flow، نیاز زیادی به پهنای باند قدرتمند ندارد اما با توجه به به شدت تعاملی بودنش، نیاز به کیفیت بسیار خوب و قابل توجهی در delay,jitter و loss دارد. (فرض کنید در تلفن صحبت کردنتون، بعضی مواقع صدا دیر برسد و یا اصلا نرسد ! ).
در ادامه با ابزار ها و راهکارهایی که در QoS با آنها سروکار داریم آشنا خواهیم شد، باما همراه باشید.
پایان بخش اول - موفق باشید.
مطلبی دیگر از این انتشارات
آشنایی با QoS – بخش چهارم (Prioritization - اولویتبندی)
مطلبی دیگر از این انتشارات
پروازی بر دنیای امنیت شبکه (قسمت دوازدهم) – Zone-Based Firewalls
مطلبی دیگر از این انتشارات
آشنایی با QoS – بخش پنجم (Policing & Shaping)