اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

نحوه ی محدود کردن پهنای بانداستفاده شده توسط برنامه ها در لینوکس با Trickle

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    نحوه ی محدود کردن پهنای بانداستفاده شده توسط برنامه ها در لینوکس با Trickle

    نحوه ی محدود کردن پهنای بانداستفاده شده توسط برنامه ها در لینوکس با Trickle
    آیا تا به حال با شرایطی مواجه شده اید که یک برنامه که پهنای باند شبکه ی شما را تحت سلطه ی خود بگیرد. اگر شما با این شرایط مواجه شده اید، پس شما برنامه هایی را برای پهنای باند چک کرده اید.همچنین شما اگر یک ادمین سیستم یا فقط یک کاربر لینوکس باشید، نیاز دارید که سرعت دانلود و آپلود برنامه ها را بررسی کنید و مطمئن شوید که پهنای باند شبکه شما توسط یک برنامه ی تنها اشغال نشده است.
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	b1.png
نمایش ها:	1
اندازه:	334.3 KB
شناسه:	19619

    Trickle چیست؟
    Trickle یک شیپر پهنای باند است که اجازه ی مدیریت سرعت آپلود و دانلود برنامه ها را می دهد و از اشغال شدن پهنای باند توسط یک برنامه جلوگیری می کند. در چند کلمه trickle به شما اجازه ی کنترل نرخ ترافیک هر برنامه را می دهد، برخلاف کنترل هر کاربر،که نمونه ای از شیپ کردن پهنای باند در یک محیط کلاینت سرور است.
    Trickle چگونه کار می کند؟
    علاوه براین Trickleبه ما کمک می کند که خصوصیاتی را روی هر برنامه تعریف کنیم،به طوری که هنگامیکه محدودیت کلی برای سیستم تعریف شده است،برنامه های با اولویت به ترتیب پهنای باند را به صورت خودکار دریافت می کنند.برای انجام این کار،trickle محدودیت پهنای باند را ست می کند، به روشی که داده ها از طریق سوکت ها با استفاده از ارتباط tcp ، ارسال و دریافت می شوند.
    Trickleچه کاری انجام می دهد؟
    تنها محدودیت،همانطور که صحبت کردیم،trickle با برنامه های کاربردی استاتیک و باینری هایی که SUID وSGID ست شده اند، کار نمی کند. Trickle بین این دو برنامه به عنوان یک پروکسی کار می کند.
    ازاین رو trickle به دسترسی سوپر یوزر برای اجرا شدن نیاز ندارد، کاربران نیز می توانند ترافیک خودشان را محدود کنند. پس این ممکن است مطلوب نباشد، ما تمام محدودیت هایی را که کاربران سیستم نتوانند از آن تجاوز کنند را محدود خواهیم کرد.به عبارت دیگر کاربران هنوز قادر خواهند بود نرخ ترافیک خود را مدیریت کنند اما همیشه مرز ادمین سیستم حفظ خواهد شد.
    در این مقاله در مورد محدود کردن پهنای باند شبکه با استفاده از برنامه های روی سرور لینوکس با trickle بحث خواهیم کرد.برای بوجود آوردن ترافیک لازم ، ما از ncftpput و ncftpget برروی کلاینت استفاده خواهیم کرد. و از vsftpd برروی سرور استفاده خواهیم کرد.
    پیش نیازها
    1.برای RHEL/Centos 7/6ریپوزیتوری epel را فعال کنید. پکیج های اضافی برای لینوکس که یک ریپوزیتوری رایگان و متن باز است که همراه با پروژه ی فدورا تعریف شده است،هردو پکیج trickle و ncftp در این ریپوزیتوری موجود هستند.
    2.ncftp را به صورت زیر نصب کنید.
    کد:
    [LEFT]
    # yum update && sudo yum install ncftp               [On RedHat based systems]
    # aptitude update && aptitude install ncftp   [On Debian based systems]     
    [/LEFT]
    3.یک Ftp سرور را در یک سرور جداگانه پیاده کنید. لطفا توجه کنید که ذاتا ناامن است،آن به طور گسترده در مواردی که امنیت برای آپلود و دانلود نیازی نیست استفاده می شود.ما در این مقاله آنرا برای نشان دادن خصوصیات trickle استفاده می کنیم به دلیل اینکه آن نرخ انتقال داده را در stdout بروی کلاینت نشان می دهد، و ما در جای دیگری از آن استفاده نخواهیم کرد.
    کد:
    [LEFT]
    [/LEFT]
    
    # yum update && yum install vsftpd            [On RedHat based systems]
    # aptitude update && aptitude install vsftpd  [On Debian based systems]
    حالا فایل /etc/vsftpd/vsftpd.conf را ادیت خواهیم کرد:
    کد:
    [LEFT]
    [/LEFT]
    
    anonymous_enable=NO
    local_enable=YES
    chroot_local_user=YES
    allow_writeable_chroot=YES
    سپس اطمینان حاصل کنید که vsftpd استارت شده باشد و آنرا فعال کنیدکه در زمان بوت بالا بیاید.
    کد:
    
    
    کد:
    # systemctl start vsftpd              [For systemd-based systems]
    # systemctl enable vsftpd
    # service vsftpd start                        [For init-based systems]
    # chkconfig vsftpd on

    4.اگر شما ftpسرور را برروی RHEL/Centos با ssh key برای دسترسی ریموت تنظیم کردید،شما به یک اکانت دارای پسورد با دایرکتوری مناسب و پرمیشن فایل ها برای آپلود .و دانلود محتوای دایرکتوری home کاربر روت OUTSID نیاز خواهید داشت.
    سپس با وارد کردن url در مرورگر می توانید به دایرکتوری home خود بروید،یک پنجره ی لاگین برای شما باز خواهد شد و که کاربرو پسورد سرور ftp تان را می خواهد.
    کد:
    ftp://192.168.0.15


    پس از احراز هویت شما محتوای دایرکتوری home خود را خواهید دید. بعدا شما قادر خواهید بود که صفحه را ریفرش کرده و فایل های آپلود شده ای را که بعدا در دایرکتوری home خود قرار خواهید داد را ببینید.
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	b2.png
نمایش ها:	1
اندازه:	98.8 KB
شناسه:	19620

    نحوه ی نصب Trickle در لینوکس
    1.trickle را با استفاده از yum و یا aptitude نصب کنید.
    برای اطمینان از نصب، توجه کنید که پکیج ها آپدیت شده باشند.
    کد:
    
    # yum -y update && yum install trickle                       [On RedHat based systems]
    # aptitude -y update && aptitude install trickle     [On Debian based systems]
    2.بررسی کنید که trickle را باینری مورد نظر کار می کند.
    همانطور که توضیح دادیم، trickle با باینری ها با استفاده از داینامیک و یا لایبرری ها ی شیرشده کار خواهد کرد.برای بررسی اینکه این ابزار چگونه با یک برنامه کار میکند،می توانیم از ابزار ldd استفاده کنیم،که ldd مخفف list dynamic dependencyاست. بخصوص، ما باید glibc را در لیست ldd داشته باشیم، برای اینکه آن دقیقا همان لایبرری ای است که کال های سیستم مربوط به ارتباطات از طریق سوکت ها را تعریف میکند.
    دستور زیر را اجرا کنید.
    کد:
    # ldd $(which [binary]) | grep libc.so[LEFT] [/LEFT]
    
    # ldd $(which ncftp) | grep libc.so
    خروجی
    کد:
    # libc.so.6 => /lib64/libc.so.6 (0x00007efff2e6c000)


    رشته ی بین براکت ها در خروجی ممکن است از سیستمی به سیستم دیگر و یا با اجرای هر دستور تغییر کند، چراکه آن آدرس حافظه را لود می کند.
    اگر دستور بالا هیچ خروجی ای بر نگرداند، به این معنی است که باینری ای که اجرا شده است از libc استفاده نکرده است، و برای شیپ کردن پهنای باند در برخی موارد دچار مشکل خواهد شد.

    آموزش نحوه ی استفاده ی trickle
    بیشترین مورد استفاده ی trickle در مد standalone است. با استفاده از این روش، trickle به طور صریح برای تعریف سرعت دانلود و آپلود توسط برنامه ها استفاده می شود.همانطور که ما قبلا توضیح دادیم، ما همان برنامه را برای تست آپلود و دانلود استفاده خواهیم کرد.
    اجراکردن Trickle در مد standalone
    ما می خواهیم سرعت آپلود و دانلود را ببا trickle و بدون استفاده از آن مقایسه کنیم.گزینه ی –d به سرعت دانلود اشاره کرده و گزینه ی –u به آپلود اشاره دارد،علاوه بر این ما پرچم –s را برای اینکه trickle در مد standalone پیاده شود استفاده کنیم.
    الگوی اولیه برای اجرا کردن trickle در مد standalone به صورت زیر است:
    کد:
    # trickle -s -d [download rate in KB/s] -u [upload rate in KB/s]

    به منظور اجرای مثال های زیر مطمئن شوید که trickle و ncftp برروی کلاینت شما نصب شده است.
    مثال 1:آپلود کردن فایل 2MB با tickle و بدون آن
    ما از یک فایل pdf برای این کار استفاده می کنیم،شما ابتدا باید این فایل را با دستور زیر دانلود کنید:
    کد:
    # wget http://linux-training.be/files/books/LinuxFun.pdf

    الگوی آپلود کردن فایل به سرورFTP بدون trickle به صورت زیر است:
    کد:
    # ncftpput -u username -p password 192.168.0.15  /remote_directory local-filename


    به طوریکه مسیر /remote_directoryمسیر آپلود دایرکتوری home کاربر است،و local_filename یک فایل در دایرکتوری جاری شما است.
    بدون trickle ما یک پیک سرعت آپلودی برابر با 52.0MB/s می گیریم:
    کد:
    # ncftpput -u username -p password 192.168.0.15  /testdir LinuxFun.pdf


    خروجی:
    کد:
    LinuxFun.pdf:                                         2.79 MB   52.02 MB/s


    با استفاده از trickle،ما نرخ انتقال آپلود را به 5KB/s محدود می کنیم.قبل از اینکه فایل را آپلود کنیم،ما نیاز داریم که آنرا از دایرکتوری مقصد پاک کنیم،در غیر این صورت ncfp فرض خواهد کرد که فایل واقع در دایرکتوری همان فایلی است که ما می خواهیم و انتقال را انجام نخواهد داد:
    کد:
    # rm /absolute/path/to/destination/directory/LinuxFun.pdf


    سپس
    کد:
    # trickle -s -u 5 ncftpput -u username -p password 111.111.111.111 /testdir LinuxFun.pdf

    خروجی
    کد:
    LinuxFun.pdf:                                         2.79 MB 4.94 kB/s


    در مثال بالا ما می توانیم ببینیم که متوسط آپلود 5kB/s است.

    مثال 2:دانلود کردن همان فایل 2MB ی با و بدون trickle
    ابتدا باید به یاد داشته باشیم که فایل را پاک کنیم.
    کد:
    
    # rm /absolute/path/to/source/directory/LinuxFun.pdf


    لطفا توجه داشته باشید که مثال زیر دانلود از سرور ریموت به دایرکتوری جاری کاربر می باشد.که در حقیقت با ‘.’ نشان داده شده است.
    بدون trickle
    کد:
    # ncftpget -u username -p  password 111.111.111.111 . /testdir/LinuxFun.pdf


    خروجی
    کد:
    LinuxFun.pdf:                                         2.79 MB  260.53 MB/s


    با trickle و محدودیت دانلودی برابر با 20KB/s:
    کد:
    # trickle -s -d 30 ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf


    خروجی
    کد:
    LinuxFun.pdf:                                         2.79 MB   17.76 kB/s


    اجرا کردن trickle در مد سوپروایز شده یا مدیریت نشده
    Trickle همچنین می تواند در مد مدیریت نشده پیاده شود،در زیر یک سری پارامترهای تعریف شده در /etc/trickled.conf می باشد.این فایل نحوه ی رفتار و مدیریت دیمون trickle را تعریف می کند.
    علاوه براین،اگر ما می خواهیم تنظیمات کلی را استفاده کنیم، نیاز به استفاده از دستور trickled برای تمام اپلیکیشن ها داریم. این دستور دیمون را اجرا کرده و اجازه ی استفاده ی برنامه برای محدود کردن آپلود و دانلود را می دهد، بدون نیاز به اینکه هر بار آن تنظیمات را انجام دهیم.
    به عنوان مثال:
    کد:
    # trickled -d 50 -u 10


    ما نشان خواهیم داد که سرعت اپلود و دانلود هر برنامه ای به 30KB/s و 10KB/s محدود شود.
    توجه داشته باشید که شما می توانید هر زمان ، اجرای دیمون trickled را به صورت زیر بررسی کنید.
    کد:
    # ps -ef | grep trickled | grep -v grep

    خروجی
    کد:
    root    16475   1  0 Dec24 ?           00:00:04 trickled -d 50 -u 10


    مثال 3:آپلود کردن فایل mp4 با حجم 19 MBبه سرور ftp با و بدون trickle
    در این مثال ما می خواهیم یک ویدئو را دانلود کنیم،با استفاده از دستور زیر این فایل را دانلود خواهیم کرد.
    کد:
    # wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4


    در ابتدا ما trickle را با استفاده از دستور زیر استارت می کنیم.
    کد:
    # trickled -d 30 -u 10


    بدون trickle
    کد:
    # ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4


    خروجی
    کد:
    2014-00-1460-he-is-the-gift-360p-eng.mp4:            18.53 MB   36.31 MB/s


    با استفاده از trickle
    کد:
    # trickle ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4


    خروجی
    کد:
    2014-00-1460-he-is-the-gift-360p-eng.mp4:            18.53 MB       9.51 kB/s



    مثال 4:دانلود کردن همان فایل با و بدون trickle
    همانند مثال 2 ما فایل را داخل دایرکتوری جاری دانلود خواهیم کرد.
    بدون trickle
    کد:
    # ncftpget -u username -p password 192.168.0.15 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4


    خروجی
    کد:
    2014-00-1460-he-is-the-gift-360p-eng.mp4:            18.53 MB  108.34 MB/s


    با trickle
    کد:
    # trickle ncftpget -u username -p password 111.111.111.111 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4

    خروجی
    کد:
    2014-00-1460-he-is-the-gift-360p-eng.mp4:            18.53 MB   29.28 kB/s



    نکته:توجه داشته باشید که دیمون استارت شده باشد. هیچ نیازی به ست کردن محدودیت اینتوال برای هر برنامه ندارید.
    همانطور که پیشتر اشاره شد، می توانید با استفاده از فایل trickled.confآنرا به صورت سفارشی تنظیم کنید،یک بخش معمول در این فایل به این صورت است.
    کد:
    [LEFT]
    [/LEFT]
    
    [service]
    Priority = <value>
    Time-Smoothing = <value>
    Length-Smoothing = <value>
    به طوریکه
    [service]نام برنامه ای است که از پهنای باند استفاده می کند می باشد.
    Priority اجازه می دهد که ما یک سرویس را با اولویت بالاتر نسبت به دیگری مشخص کنیم،بنابراین به یک برنامه تنها اجازه نمی دهد که کل پهنای باند را اشغال کند.
    Time-Smoothing(به ثانیه) مدت اینتروال ای که trickled برای انتقال و دریافت داده به برنامه اجازه داده شده است را تعریف می کند. کوچکترین مقدارها(زیر 1 معمولا 0.1) مربوط به برنامه های interactive است و نتیجه به صورت جلسه ی پیوسته خواهد بود و بزرگترین مقدار ها (1-10)بهتر است برای برنامه هایی که نیاز به انتقال بالک دارد استفاده شود.اگر هیچ مقداری ست نشود به صورت پیش فرض 5 خواهد بود.
    Length_Smoothing(به KB) به نظر شبیه time-smoothing می باشد، اما براساس طول عملیات I/O می باشد.به طور پیش فرض نیز 10KB است.
    در زیر نمونه ای از فایل کانفیگ trickled در centos7 می باشد.
    کد:
    [ssh]
    Priority = 1
    Time-Smoothing = 0.1
    Length-Smoothing = 2
     
    [ftp]
    Priority = 2
    Time-Smoothing = 1
    Length-Smoothing = 3
    با استفاده از این تنظیمات trickled برای سرویس ها ی ftp و ssh برای انتقال فایل ها اولویت بندی خواهد کرد. نکته اینجاست که یک برنامه ی interactive مثل ssh از یک time-smoothing با مقدار کمتر از 1 استفاده می کند ، و سرویسی که انتقال فایل ها را به صورت بالک انجام می دهد مقدار 1 دارد.
    اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X