.TH WIREFILTER 1 "December 6, 2006" "Virtual Distributed Ethernet" .SH "نام (NAME)" wirefilter \- فیلتر بسته سیم برای اترنت توزیع‌شده مجازی (Virtual Distributed Ethernet) .SH "خلاصه دستور (SYNOPSIS)" .B wirefilter [\fB\-f\fI rcfile\fR] [\fB\-l\fI loss\fR] [\fB\-l\fI lostburst\fR] [\fB\-d\fI delay\fR] [\fB\-D\fI dup\fR] [\fB\-b\fI bandwidth\fR] [\fB\-s\fI interface_speed\fR] [\fB\-c\fI channel_bufsize\fR] [\fB\-n\fI noise_factor\fR] [\fB\-m\fI mtu_size\fR] [\fB\-M\fI mgmt socket\fR] [\fB\-v\fI vde_plug1:vde_plug2\fR] [\fB\--daemon\fI] [\fB\--pidfile\fI pidfile_path] [\fB\--blink\fI blink] [\fB\--blinkid\fI blink_identifier] [\fB-N\fR] .br .SH "توضیحات (DESCRIPTION)" ابزار \fBwirefilter\fP قادر به شبیه‌سازی تاخیر و اتلاف بسته (packet loss) بر روی سیم‌های مجازی است. به عنوان مثال: .B dpipe vde_plug /tmp/s1 = wirefilter -l 10 = vde_plug /tmp/s2 یک سیم بین دو vde_switch (به‌ترتیب با سوکت‌های /tmp/s1 و /tmp/s2) ایجاد می‌کند. این کابل ۱۰٪ از بسته‌ها را در هر جهت از بین می‌برد (از دست می‌دهد). همین کابل را می‌توان با دستور زیر نیز ایجاد کرد: .B wirefilter -v /tmp/s1:/tmp/s2 -l 10 .SH "گزینه‌ها (OPTIONS)" .TP .B \-f "\fIrcfile\fP" استفاده از یک فایل پیکربندی راه‌اندازی. این گزینه برای تعاریف پیچیده مانند تنظیمات حالت مارکوف (Markov mode) مفید است (پایین‌تر را ببینید). نحو فایل پیکربندی راه‌اندازی مشابه رابط مدیریتی است؛ به عبارت دیگر، اسکریپتی از دستورهای مدیریتی است که پیش از هدایت نخستین بسته اجرا می‌شود. .TP .B \-l "\fIloss\fP" درصد اتلاف به‌صورت یک عدد اعشاری شناور. امکان تعیین درصد اتلاف متفاوت برای دو کانال وجود دارد: LR20.5 به این معنی است که ۲۰٫۵٪ از بسته‌های جاری از چپ به راست از دست می‌روند، و RL10 به معنی اتلاف ۱۰٪ از راست به چپ است. .TP .B \-L "\fIlostburst\fP" هنگامی که این مقدار صفر نباشد، wirefilter از مدل گیلبرت (Gilbert model) برای خطاهای رگباری استفاده می‌کند. این مقدار میانگین طول رگبارهای بسته‌های مفقود است (یک زنجیره مارکوف دوحالته است: احتمال خروج از حالت معیوب \fI1/lostburst\fP، و احتمال ورود به حالت معیوب \fIloss/(lostburst-(1-loss))\fP است. نرخ اتلاف به مقدار \fIloss\fR همگرا می‌شود). .TP .B \-d "\fIdelay\fP" تاخیر اضافی (به میلی‌ثانیه). این تاخیر به تاخیر ارتباطی واقعی اضافه می‌شود. بسته‌ها به‌طور موقت ذخیره شده و پس از سپری شدن تاخیر دوباره ارسال می‌شوند. مانند گزینه قبلی، تعیین مقادیر متفاوت برای LR و RL امکان‌پذیر است. هنگامی که تاخیر به‌صورت دو عدد با علامت + در بین آن‌ها مشخص شود، عدد اول تاخیر استاندارد و عدد دوم تغییرات تصادفی است. 1000+500 یعنی تاخیر می‌تواند به‌طور تصادفی بین نیم ثانیه تا ۱٫۵ ثانیه انتخاب شود. می‌توان 'U' یا 'N' را به انتهای آن افزود. 1000+500U به این معنی است که تاخیرها دارای توزیع یکنواخت هستند، و 1000+500N یعنی تاخیرها از توزیع نرمال گاوسی پیروی می‌کنند (بیش از ۹۸٪ مقادیر درون محدوده‌ها قرار می‌گیرند). .TP .B \-D "\fIdup\fP" درصد تکرار بسته‌ها (dup). نحوی مشابه -l دارد. از ضریب تکرار ۱۰۰٪ استفاده نکنید، زیرا به این معنی است که هر بسته بی‌نهایت بار ارسال خواهد شد. .TP .B \-b "\fIbandwidth\fP" پهنای باند کانال به بایت بر ثانیه (Bytes/sec). نحو آن مشابه -d است. همچنین می‌توان از پسوندهای K، M و G برای اختصار 2^10، 2^20 و 2^30 استفاده کرد. 128K یعنی ۱۲۸ کیلوبایت بر ثانیه. 128+64K یعنی بین ۶۴ تا ۱۹۶ کیلوبایت بر ثانیه. فرستنده از ارسال بسته‌ها منع نمی‌شود، بلکه تحویل آن‌ها به تاخیر می‌افتد تا پهنای باند به مقدار دلخواه محدود شود (مانند یک گلوگاه در طول مسیر). حروف U و N پس از مقادیر (مثلاً 128+64KN) توزیع آماری مورد استفاده (یکنواخت یا نرمال) را تعیین می‌کنند. .TP .B \-s "\fIspeed\fP" سرعت رابط به بایت بر ثانیه (Bytes/sec). نحو آن مانند -b است. ورودی در طول مدت ارسال بسته مسدود می‌شود، بنابراین از ارسال بیش از حد سریع توسط فرستنده جلوگیری به عمل می‌آید. .TP .B \-c "\fIchannel_bufsize\fP" اندازه بافر کانال (به بایت): بیشینه اندازه صف بسته‌ها. بسته‌های مازاد دور ریخته می‌شوند. .TP .B \-n "\fInoise factor\fP" تعداد بیت‌های آسیب‌دیده در هر یک مگابایت. .TP .B \-m "\fImtu size\fP" بسته‌های بزرگ‌تر از mtu_size دور ریخته می‌شوند. .TP .B \-N حالت nofifo. با -N بسته‌ها می‌توانند تغییر ترتیب دهند. .TP .B \-M "\fImgmt socket\fP" سوکت یونیکس که در آن پارامترها (درصد اتلاف، تاخیر و غیره) را می‌توان در زمان اجرا بررسی و تغییر داد. unixterm(1) می‌تواند به‌عنوان یک ترمینال راه دور برای wirefilter استفاده شود. .TP .B \-v "\fIvde_plug1:vde_plug2\fP" اگر از این گزینه استفاده شود، دو vde_plug محلی (vde_plug1 و vde_plug2) با استفاده از کتابخانه‌های libvdeplug به جای stdin/stdout به یکدیگر متصل خواهند شد. این گزینه یک نشست مدیریتی تعاملی را روی کنسول (stdin/stdout) فعال می‌کند. .TP .B \--mgmtmode "\fImode\fP" این گزینه حالت دسترسی سوکت mgmt را تعیین می‌کند. نحو دستورها بسیار ساده است. دستور \fBhelp\fR فهرست دستورها را نمایش می‌دهد. با استفاده از دستور مدیریتی \fBload\fR می‌توان یک فایل اسکریپت را بارگذاری کرد. .TP .B \--daemon\fP wirefilter به‌صورت یک دیمن اجرا می‌شود. .TP .B \--pidfile "\fIpathname\fP" wirefilter مقدار pid خود را در این فایل ذخیره می‌کند. .TP .B \--blinkid "\fIname\fP" این گزینه شناسه‌ای (id) را مشخص می‌کند که برای هر بسته به سرور blink ارسال می‌شود (گزینه --blink در زیر را ببینید). شناسه استاندارد برای wirefilter، همان pid فرایند است. .TP .B \--blink "\fIsocket\fP" wirefilter برای هر بسته ارسال‌شده یک پیام لاگ به سوکت PF_UNIX/DATAGRAM مشخص‌شده ارسال می‌کند. هر بسته دارای این قالب است: id direction length. به عنوان مثال: .sp .in +4n .nf 6768 LR 44 6768 LR 44 6768 RL 100 6768 LR 100 6768 LR 44 .fi .in .sp .SH "حالت مارکوف (MARKOV MODE)" همچنین wirefilter با استفاده از یک زنجیره مارکوف، مجموعه پیچیده‌تری از پارامترها را برای شبیه‌سازی حالت‌های مختلف پیوند و گذارهای میان حالت‌ها فراهم می‌کند. هر حالت با یک گره (node) نشان داده می‌شود. پارامترهای زنجیره مارکوف را فقط می‌توان با دستورهای مدیریتی یا فایل‌های rc تنظیم کرد؛ در واقع، به دلیل تعداد زیاد پارامترها، قرار دادن آن‌ها در خط فرمان موجب ناخوانایی می‌شد. .TP .B markov-numnodes "\fIn\fP" تعداد حالت‌های مختلف را مشخص می‌کند. تمام پارامترهای اتصال را می‌توان گره‌به‌گره تعریف کرد. گره‌ها از صفر شماره‌گذاری می‌شوند (تا n-1). به عنوان مثال: .sp .in +4in .nf delay 100+10N[4] loss 10[2] .fi .in .sp این دستورها تاخیری بین ۹۰ تا ۱۱۰ میلی‌ثانیه (توزیع نرمال) را برای گره شماره ۴ و اتلاف ۱۰٪ را برای گره ۲ تعریف می‌کنند. امکان تغییر اندازه زنجیره مارکوف در زمان اجرا وجود دارد. گره‌های جدید غیرقابل‌دسترس هستند و هیچ یالی به حالت‌های دیگر ندارند (یعنی هر گره جدید دارای یک یال خودحلقه به خود با احتمال ۱۰۰٪ است). هنگام کاهش تعداد گره‌ها، وزن یال‌های منتهی به گره‌های حذف‌شده به یال خودحلقه افزوده می‌شود. هنگامی که گره جاری شبیه‌سازی حذف شود، گره ۰ به گره جاری تبدیل می‌شود. (شبیه‌سازی همواره از گره ۰ آغاز می‌شود). .TP .B markov-time "\fIms\fP" دوره زمانی (به میلی‌ثانیه) برای محاسبات زنجیره مارکوف. هر \fIms\fR میکروثانیه، یک تولیدکننده اعداد تصادفی تصمیم می‌گیرد که حالت بعدی کدام باشد (مقدار پیش‌فرض=100ms). .TP .B markov-name "\fIn,name\fP" اختصاص دادن یک نام به گره‌ای از زنجیره مارکوف. .TP .B markov-setnode "\fIn\fP" تنظیم دستی گره جاری بر روی گره \fIn\fP. .TP .B setedge "\fIn1,n2,w\fP" تعریف یک یال بین \fIn1\fR و \fIn2\fR؛ مقدار \fIw\fR وزن (درصد احتمال) یال است. یال خودحلقه (از یک گره به خودش) همواره به‌صورت ۱۰۰٪ منهای مجموع وزن‌های یال‌های خروجی محاسبه می‌شود. .TP .B showedges [ "\fIn\fP" ] فهرست کردن یال‌های گره \fIn\fP (یا از گره جاری در صورتی که دستور پارامتری نداشته باشد). یال‌های با وزن صفر نادیده گرفته می‌شوند. .TP .B showcurrent نمایش حالت مارکوف جاری. .TP .B showinfo [ \fIn\fP ] نمایش وضعیت و اطلاعات مربوط به حالت (گره) \fIn\fP. در صورت حذف پارامتر، وضعیت و اطلاعات حالت جاری نمایش داده می‌شود. .TP .B markov-debug [ \fIn\fP ] تنظیم سطح اشکال‌زدایی (debug) برای ارتباط مدیریتی جاری. در پیاده‌سازی کنونی، زمانی که n بزرگ‌تر از صفر باشد، هر تغییر در گره مارکوف موجب صدور یک خروجی ردیابی اشکال‌زدایی می‌شود. هنگامی که \fIn\fP صفر باشد یا پارامتر مشخص نشود، ردیابی اشکال‌زدایی غیرفعال می‌شود. .SH "تذکر (NOTICE)" پروژه Virtual Distributed Ethernet به هیچ وجه به www.vde.com («Verband der Elektrotechnik, Elektronik und Informationstechnik» یعنی «انجمن فناوری‌های برقی، الکترونیکی و اطلاعاتی» آلمان) مرتبط نیست. .SH "همچنین ببینید (SEE ALSO)" \fBvde_switch\fP(1), \fBvdeq\fP(1). \fBdpipe\fP(1). \fBunixterm\fP(1). .br .SH "نویسندگان (AUTHORS)" پروژه VDE توسط Renzo Davoli ایجاد شده است.