.\" -*- nroff -*- .\" -*- nroff -*- .\" ovs.tmac .\" .\" Open vSwitch troff macro library . . .\" Continuation line for .IP. .de IQ . br . ns . IP "\\$1" .. . .\" Introduces a sub-subsection .de ST . PP . RS -0.15in . I "\\$1" . RE .. . .\" The content between the lines below is from an-ext.tmac in groff .\" 1.21, with some modifications. .\" ---------------------------------------------------------------------- .\" an-ext.tmac .\" .\" Written by Eric S. Raymond .\" Werner Lemberg .\" .\" Version 2007-Feb-02 .\" .\" Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. .\" You may freely use, modify and/or distribute this file. .\" .\" .\" The code below provides extension macros for the `man' macro package. .\" Care has been taken to make the code portable; groff extensions are .\" properly hidden so that all troff implementations can use it without .\" changes. .\" .\" With groff, this file is sourced by the `man' macro package itself. .\" Man page authors who are concerned about portability might add the .\" used macros directly to the prologue of the man page(s). . . .\" Convention: Auxiliary macros and registers start with `m' followed .\" by an uppercase letter or digit. . . .\" Declare start of command synopsis. Sets up hanging indentation. .de SY . ie !\\n(mS \{\ . nh . nr mS 1 . nr mA \\n(.j . ad l . nr mI \\n(.i . \} . el \{\ . br . ns . \} . . HP \w'\fB\\$1\fP\ 'u . B "\\$1" .. . . .\" End of command synopsis. Restores adjustment. .de YS . in \\n(mIu . ad \\n(mA . hy \\n(HY . nr mS 0 .. . . .\" Declare optional option. .de OP . ie \\n(.$-1 \ . RI "[\fB\\$1\fP" "\ \\$2" "]" . el \ . RB "[" "\\$1" "]" .. . . .\" Start URL. .de UR . ds m1 \\$1\" . nh . if \\n(mH \{\ . \" Start diversion in a new environment. . do ev URL-div . do di URL-div . \} .. . . .\" End URL. .de UE . ie \\n(mH \{\ . br . di . ev . . \" Has there been one or more input lines for the link text? . ie \\n(dn \{\ . do HTML-NS "" . \" Yes, strip off final newline of diversion and emit it. . do chop URL-div . do URL-div \c . do HTML-NS . \} . el \ . do HTML-NS "\\*(m1" \&\\$*\" . \} . el \ \\*(la\\*(m1\\*(ra\\$*\" . . hy \\n(HY .. . . .\" Start email address. .de MT . ds m1 \\$1\" . nh . if \\n(mH \{\ . \" Start diversion in a new environment. . do ev URL-div . do di URL-div . \} .. . . .\" End email address. .de ME . ie \\n(mH \{\ . br . di . ev . . \" Has there been one or more input lines for the link text? . ie \\n(dn \{\ . do HTML-NS "" . \" Yes, strip off final newline of diversion and emit it. . do chop URL-div . do URL-div \c . do HTML-NS . \} . el \ . do HTML-NS "\\*(m1" \&\\$*\" . \} . el \ \\*(la\\*(m1\\*(ra\\$*\" . . hy \\n(HY .. . . .\" Continuation line for .TP header. .de TQ . br . ns . TP \\$1\" no doublequotes around argument! .. . . .\" Start example. .de EX . nr mE \\n(.f . nf . nh . ft CR .. . . .\" End example. .de EE . ft \\n(mE . fi . hy \\n(HY .. . .\" EOF .\" ---------------------------------------------------------------------- .TH ovs\-ofctl 8 "4.0.0" "Open vSwitch" "راهنمای Open vSwitch" .ds PN ovs\-ofctl . .SH "نام (NAME)" ovs\-ofctl \- مدیریت و پایش سوئیچ‌های OpenFlow . .SH "خلاصه دستور (SYNOPSIS)" .B ovs\-ofctl [\fIoptions\fR] \fIcommand \fR[\fIswitch\fR] [\fIargs\fR\&...] . .SH "توضیحات (DESCRIPTION)" برنامه .B ovs\-ofctl یک ابزار خط فرمان برای پایش و مدیریت سوئیچ‌های OpenFlow است. این ابزار همچنین می‌تواند وضعیت جاری یک سوئیچ OpenFlow، از جمله ویژگی‌ها، پیکربندی، و مدخل‌های جدول را نمایش دهد. این برنامه علاوه بر Open vSwitch، باید با هر سوئیچ OpenFlow دیگری نیز کار کند. . .SS "دستورات مدیریت سوئیچ OpenFlow (OpenFlow Switch Management Commands)" .PP این دستورات به \fBovs\-ofctl\fR اجازه می‌دهند تا یک سوئیچ OpenFlow را پایش و مدیریت کند. این برنامه قادر است وضعیت جاری یک سوئیچ، از جمله ویژگی‌ها، پیکربندی، و مدخل‌های جدول را نمایش دهد. .PP بیشتر این دستورات آرگومانی را می‌پذیرند که روش اتصال به یک سوئیچ OpenFlow را مشخص می‌کند. روش‌های اتصال زیر پشتیبانی می‌شوند: . .RS .IP "\fBssl:\fIhost\fR[\fB:\fIport\fR]" .IQ "\fBtcp:\fIhost\fR[\fB:\fIport\fR]" درگاه \fIport\fR مشخص‌شده روی میزبان \fIhost\fR داده‌شده، که می‌تواند به صورت یک نام DNS (اگر با کتابخانه unbound ساخته شده باشد) یا یک آدرس IP در قالب آدرس IPv4 یا IPv6 بیان شود. آدرس‌های IPv6 را درون براکت قرار دهید، مانند \fBtcp:[::1]:6653\fR. در لینوکس، از \fB%\fIdevice\fR برای مشخص کردن محدوده آدرس‌های پیوند-محلی IPv6 استفاده کنید، مانند \fBtcp:[fe80::1234%eth0]:6653\fR. برای \fBssl\fR، گزینه‌های \fB\-\-private\-key\fR، \fB\-\-certificate\fR و \fB\-\-ca\-cert\fR الزامی هستند. .IP اگر \fIport\fR مشخص نشده باشد، مقدار پیش‌فرض آن 6653 است. .TP \fBunix:\fIfile\fR در سامانه‌های POSIX، یک سوکت سرور دامنه یونیکس به نام \fIfile\fR. . .IP "\fIfile\fR" این شکل کوتاه‌شده \fBunix:\fIfile\fR است، تا زمانی که نام \fIfile\fR شامل علامت دونقطه نباشد. . .IP \fIbridge\fR این شکل کوتاه‌شده \fBunix:/run/openvswitch/\fIbridge\fB.mgmt\fR است، تا زمانی که \fIbridge\fR شامل علامت دونقطه نباشد. . .IP [\fItype\fB@\fR]\fIdp\fR تلاش می‌کند پل مرتبط با \fIdp\fR را جستجو کرده و مطابق بالا باز کند. اگر \fItype\fR داده شده باشد، ارائه‌دهنده مسیر داده مربوط به \fIdp\fR را تعیین می‌کند؛ در غیر این صورت، ارائه‌دهنده پیش‌فرض \fBsystem\fR فرض می‌شود. .RE . .TP \fBshow \fIswitch\fR اطلاعات مربوط به \fIswitch\fR، از جمله اطلاعات جدول‌های جریان و درگاه‌های آن را روی کنسول چاپ می‌کند. . .TP \fBdump\-tables \fIswitch\fR آمار هر یک از جدول‌های جریان مورد استفاده توسط \fIswitch\fR را روی کنسول چاپ می‌کند. .TP \fBdump\-table\-features \fIswitch\fR ویژگی‌های هر یک از جدول‌های جریان مورد استفاده توسط \fIswitch\fR را روی کنسول چاپ می‌کند. .TP \fBdump\-table\-desc \fIswitch\fR پیکربندی هر یک از جدول‌های جریان مورد استفاده توسط \fIswitch\fR را برای OpenFlow 1.4+ روی کنسول چاپ می‌کند. .IP "\fBmod\-table \fIswitch\fR \fItable\fR \fIsetting\fR" این دستور تنظیمات جدول جریان در \fIswitch\fR را برای جدول OpenFlow به نام \fItable\fR پیکربندی می‌کند، که ممکن است به صورت یک عدد یا (مگر اینکه \fB\-\-no\-names\fR مشخص شده باشد) یک نام بیان شود. .IP تنظیمات موجود به نسخه OpenFlow مورد استفاده بستگی دارد. فقط در OpenFlow 1.1 و 1.2 (که باید با گزینه \fB\-O\fR فعال شوند)، \fBmod\-table\fR رفتار سوئیچ را زمانی که هنگام جستجوی بسته در جدول جریان هیچ جریانی یافت نمی‌شود، پیکربندی می‌کند. مقادیر \fIsetting\fR زیر در دسترس هستند: .RS .IP \fBdrop\fR دور انداختن بسته. .IP \fBcontinue\fR ادامه به جدول بعدی در خط لوله. (این روشی است که یک سوئیچ OpenFlow 1.0 همیشه با بسته‌هایی که با هیچ جریانی مطابقت ندارند، در جدول‌هایی غیر از آخرین جدول رفتار می‌کند.) .IP \fBcontroller\fR ارسال به کنترل‌کننده. (این روشی است که یک سوئیچ OpenFlow 1.0 همیشه با بسته‌هایی که با هیچ جریانی در آخرین جدول مطابقت ندارند رفتار می‌کند.) .RE .IP در OpenFlow 1.3 و بالاتر (که باید با گزینه \fB\-O\fR فعال شود) و Open vSwitch 2.11 و بالاتر، \fBmod\-table\fR می‌تواند نام یک جدول را تغییر دهد: .RS .IP \fBname:\fInew-name\fR نام جدول را به \fInew-name\fR تغییر می‌دهد. از یک \fInew-name\fR خالی برای پاک کردن نام استفاده کنید. (اگر نام از طریق ستون \fBname\fR در جدول \fBFlow_Table\fR در پایگاه‌داده \fBOpen_vSwitch\fR تنظیم شده باشد، همان‌طور که در \fBovs\-vswitchd.conf.db\fR(5) توصیف شده، این کار بی‌اثر خواهد بود.) .RE .IP فقط در OpenFlow 1.4 و بالاتر (که باید با گزینه \fB\-O\fR فعال شود)، \fBmod\-table\fR رفتار سوئیچ را هنگامی که کنترل‌کننده قصد افزودن یک جریان به جدول جریان پرشده را دارد، پیکربندی می‌کند. مقادیر \fIsetting\fR زیر در دسترس هستند: .RS .IP \fBevict\fR حذف یک جریان موجود از جدول جریان، طبق الگوریتم توصیف‌شده برای جدول \fBFlow_Table\fR در \fBovs-vswitchd.conf.db\fR(5). .IP \fBnoevict\fR رد کردن افزودن جریان جدید. (ممکن است اخراج جریان‌ها همچنان از طریق ستون \fBoverflow_policy\fR در جدول \fBFlow_Table\fR مستندشده در \fBovs-vswitchd.conf.db\fR(5) فعال باشد.) .IP \fBvacancy:\fIlow\fB,\fIhigh\fR ارسال رویدادهای خالی بودن به کنترل‌کننده‌ها را با استفاده از پیام‌های \fBTABLE_STATUS\fR، بر اساس آستانه‌های درصدی \fIlow\fR و \fIhigh\fR فعال می‌سازد. .IP \fBnovacancy\fR رویدادهای خالی بودن را غیرفعال می‌کند. .RE . .TP \fBdump\-ports \fIswitch\fR [\fInetdev\fR] آمار دستگاه‌های شبکه مرتبط با \fIswitch\fR را روی کنسول چاپ می‌کند. اگر \fInetdev\fR مشخص شده باشد، تنها آمار مربوط به آن دستگاه چاپ خواهد شد. \fInetdev\fR می‌تواند شماره درگاه اختصاص‌یافته در OpenFlow یا نام دستگاه باشد، مانند \fBeth0\fR. . .IP "\fBdump\-ports\-desc \fIswitch\fR [\fIport\fR]" اطلاعات دقیق در مورد دستگاه‌های شبکه مرتبط با \fIswitch\fR را روی کنسول چاپ می‌کند. برای دریافت اطلاعات یک درگاه خاص، شماره آن را به عنوان \fIport\fR مشخص کنید. در غیر این صورت، اگر \fIport\fR حذف شود، یا اگر به عنوان \fBANY\fR تعیین شود، تمام درگاه‌ها چاپ می‌شوند. این زیرمجموعه‌ای از اطلاعات ارائه‌شده توسط دستور \fBshow\fR است. .IP اگر اتصال به \fIswitch\fR نسخه OpenFlow 1.0، 1.2 یا 1.2 را مذاکره کند، این دستور از یک افزونه OpenFlow استفاده می‌کند که تنها در Open vSwitch (نسخه 1.7 و بالاتر) پیاده‌سازی شده است. .IP تنها OpenFlow 1.5 و بالاتر از استخراج اطلاعات یک درگاه خاص پشتیبانی می‌کنند. نسخه‌های قبلی OpenFlow همیشه تمام درگاه‌ها را تخلیه می‌کنند. . .IP "\fBmod\-port \fIswitch\fR \fIport\fR \fIaction\fR" ویژگی‌های درگاه \fBport\fR در \fIswitch\fR را اصلاح می‌کند. \fIport\fR ممکن است شماره یا نام درگاه OpenFlow باشد (مگر اینکه \fB\-\-no\-names\fR مشخص شده باشد) یا کلیدواژه \fBLOCAL\fR (روش ارجح برای اشاره به درگاه محلی OpenFlow). آرگومان \fIaction\fR می‌تواند هر یک از موارد زیر باشد: . .RS .IQ \fBup\fR .IQ \fBdown\fR فعال یا غیرفعال کردن رابط. این معادل \fBip link set up\fR یا \fBip link set down\fR در یک سیستم یونیکس است. . .IP \fBstp\fR .IQ \fBno\-stp\fR پروتکل درخت پوشا 802.1D (STP) را روی رابط فعال یا غیرفعال می‌کند. پیاده‌سازی‌های OpenFlow که از STP پشتیبانی نمی‌کنند، از فعال‌سازی آن خودداری خواهند کرد. . .IP \fBreceive\fR .IQ \fBno\-receive\fR .IQ \fBreceive\-stp\fR .IQ \fBno\-receive\-stp\fR پردازش OpenFlow برای بسته‌های دریافتی در این رابط را فعال یا غیرفعال می‌کند. هنگامی که پردازش بسته غیرفعال است، بسته‌ها به جای عبور از جدول OpenFlow دور ریخته می‌شوند. تنظیم \fBreceive\fR یا \fBno\-receive\fR بر روی تمام بسته‌ها به جز بسته‌های پروتکل درخت پوشا 802.1D اعمال می‌شود که به صورت جداگانه توسط \fBreceive\-stp\fR یا \fBno\-receive\-stp\fR کنترل می‌شوند. . .IP \fBforward\fR .IQ \fBno\-forward\fR ارسال ترافیک به این رابط را مجاز یا غیرمجاز می‌کند. به طور پیش‌فرض، ارسال ترافیک فعال است. . .IP \fBflood\fR .IQ \fBno\-flood\fR کنترل می‌کند که آیا اقدام \fBflood\fR در OpenFlow ترافیک را از این رابط ارسال می‌کند یا خیر. به طور پیش‌فرض، ارسال سیل‌آسا (flooding) فعال است. غیرفعال کردن آن در درجه اول برای جلوگیری از ایجاد حلقه هنگامی که پروتکل درخت پوشا در حال استفاده نیست مفید است. . .IP \fBpacket\-in\fR .IQ \fBno\-packet\-in\fR کنترل می‌کند آیا بسته‌های دریافتی در این رابط که با مدخل جدول جریان مطابقت ندارند، یک پیام «packet in» به کنترل‌کننده OpenFlow ایجاد می‌کنند یا خیر. به طور پیش‌فرض، پیام‌های «packet in» فعال هستند. .RE .IP دستور \fBshow\fR پیکربندی تغییریافته توسط \fBmod\-port\fR را (در میان اطلاعات دیگر) نمایش می‌دهد. . .IP "\fBget\-frags \fIswitch\fR" حالت مدیریت قطعات (fragments) در \fIswitch\fR را چاپ می‌کند. برای شرح هر حالت مدیریت قطعات، به \fBset\-frags\fR در زیر مراجعه فرمایید. .IP دستور \fBshow\fR نیز حالت مدیریت قطعات را در میان سایر خروجی‌های خود چاپ می‌کند. . .IP "\fBset\-frags \fIswitch frag_mode\fR" نحوه برخورد \fIswitch\fR با قطعات IPv4 و IPv6 را پیکربندی می‌کند. گزینه‌های موجود برای \fIfrag_mode\fR عبارتند از: .RS .IP "\fBnormal\fR" قطعات درست مانند بسته‌های عادی و غیرقطعه‌قطعه‌شده از جدول جریان عبور می‌کنند. فیلدهای درگاه‌های TCP، درگاه‌های UDP و نوع و کد ICMP همیشه برابر با 0 تنظیم می‌شوند، حتی برای قطعاتی که این اطلاعات در آن‌ها در دسترس است (قطعات با آفست 0). این حالت پیش‌فرض مدیریت قطعات برای یک سوئیچ OpenFlow است. .IP "\fBdrop\fR" قطعات بدون عبور از جدول جریان دور ریخته می‌شوند. .IP "\fBreassemble\fR" سوئیچ پیش از هدایت قطعات به جدول جریان، آن‌ها را به بسته‌های کامل IP بازترکیب می‌کند. Open vSwitch این حالت مدیریت قطعات را پیاده‌سازی نکرده است. .IP "\fBnx\-match\fR" قطعات مانند بسته‌های غیرقطعه‌قطعه‌شده از جدول جریان عبور می‌کنند. فیلدهای درگاه‌های TCP، درگاه‌های UDP و نوع و کد ICMP برای تطبیق در قطعات با آفست 0 در دسترس هستند، و در قطعات با آفست غیرصفر برابر با 0 تنظیم می‌شوند. این حالت یک افزونه Nicira است. .RE .IP برای روش تطبیق بر اساس اینکه آیا بسته یک قطعه است و بر اساس آفست قطعه آن، به توضیحات \fBip_frag\fR در \fBovs\-fields\fR(7) مراجعه کنید. . .TP \fBdump\-flows \fIswitch \fR[\fIflows\fR] تمام مدخل‌های جریان در جدول‌های \fIswitch\fR را که با \fIflows\fR مطابقت دارند روی کنسول چاپ می‌کند. اگر \fIflows\fR حذف شود، تمام جریان‌های سوئیچ بازیابی می‌شوند. برای نحو \fIflows\fR، به بخش \fBنحو جریان\fR در زیر مراجعه فرمایید. قالب خروجی در \fBخروجی مدخل‌های جدول\fR توصیف شده است. . .IP به طور پیش‌فرض، \fBovs\-ofctl\fR مدخل‌های جریان را به همان ترتیبی که سوئیچ ارسال می‌کند چاپ می‌نماید، که بعید است شهودی یا یکنواخت باشد. برای کنترل ترتیب نمایش از \fB\-\-sort\fR و \fB\-\-rsort\fR استفاده کنید. گزینه‌های \fB\-\-names\fR/\fB\-\-no\-names\fR و \fB\-\-stats\fR/\fB\-\-no\-stats\fR نیز قالب‌بندی خروجی را تحت تأثیر قرار می‌دهند. برای اطلاعات بیشتر، توضیحات این گزینه‌ها را در بخش \fBگزینه‌ها\fR در زیر ببینید. . .TP \fBdump\-aggregate \fIswitch \fR[\fIflows\fR] آمارهای تجمیعی جریان‌های منطبق با \fIflows\fR را در جدول‌های \fIswitch\fR روی کنسول چاپ می‌کند. اگر \fIflows\fR حذف شود، آمار در تمام جریان‌های جدول‌های جریان سوئیچ تجمیع می‌شود. برای نحو \fIflows\fR، به \fBنحو جریان\fR در زیر مراجعه فرمایید. قالب خروجی در \fBخروجی مدخل‌های جدول\fR شرح داده شده است. . .IP "\fBqueue\-stats \fIswitch \fR[\fIport \fR[\fIqueue\fR]]" آمار صف مشخص‌شده \fIqueue\fR روی درگاه \fIport\fR در \fIswitch\fR را روی کنسول چاپ می‌کند. \fIport\fR می‌تواند یک شماره یا نام درگاه OpenFlow، کلیدواژه \fBLOCAL\fR (روش ارجح برای اشاره به درگاه محلی OpenFlow)، یا کلیدواژه \fBALL\fR باشد. هر یک از \fIport\fR یا \fIqueue\fR یا هر دو ممکن است حذف شوند (یا معادل آن کلیدواژه \fBALL\fR). اگر هر دو حذف شوند، آمار برای تمام صف‌ها روی همه درگاه‌ها چاپ می‌شود. اگر فقط \fIqueue\fR حذف شود، آمار تمام صف‌های موجود در \fIport\fR چاپ می‌شود؛ اگر فقط \fIport\fR حذف شود، آمار برای \fIqueue\fR روی تمام درگاه‌هایی که در آن‌ها وجود دارد چاپ می‌شود. . .IP "\fBqueue\-get\-config \fIswitch [\fIport \fR[\fIqueue\fR]]" پیکربندی صف \fIqueue\fR روی درگاه \fIport\fR در \fIswitch\fR را روی کنسول چاپ می‌کند. اگر \fIport\fR حذف شود یا برابر \fBANY\fR باشد، صف‌های تمام درگاه‌ها گزارش می‌شود. اگر \fIqueue\fR حذف شود یا برابر \fBANY\fR باشد، تمام صف‌ها گزارش می‌شوند. برای OpenFlow 1.3 و نسخه‌های پیشین، خروجی همیشه تمام صف‌ها را شامل می‌شود و در صورت مشخص شدن \fIqueue\fR آن را نادیده می‌گیرد. .IP این دستور کاربرد محدودی دارد، زیرا درگاه‌ها اغلب هیچ صف پیکربندی‌شده‌ای ندارند و پروتکل OpenFlow تنها اطلاعات بسیار محدودی درباره پیکربندی یک صف ارائه می‌دهد. . .IP "\fBdump\-ipfix\-bridge \fIswitch\fR" آمار IPFIX پل را برای \fIswitch\fR روی کنسول چاپ می‌کند. اگر IPFIX پل روی \fIswitch\fR پیکربندی شده باشد، آمار IPFIX قابل بازیابی است؛ در غیر این صورت پیام خطا چاپ خواهد شد. .IP این دستور از یک افزونه Open vSwitch استفاده می‌کند که فقط در Open vSwitch 2.6 و بالاتر موجود است. . .IP "\fBdump\-ipfix\-flow \fIswitch\fR" آمار IPFIX مبتنی بر جریان را برای \fIswitch\fR روی کنسول چاپ می‌کند. اگر IPFIX مبتنی بر جریان روی \fIswitch\fR پیکربندی شده باشد، آمار تمام شناسه‌های مجموعه جمع‌آوری‌کننده در \fIswitch\fR چاپ می‌شود؛ در غیر این صورت پیام خطا چاپ خواهد شد. .IP برای جزئیات بیشتر در مورد پیکربندی IPFIX مبتنی بر جریان و شناسه‌های مجموعه جمع‌آوری‌کننده به \fBovs\-vswitchd.conf.db\fR(5) مراجعه کنید. .IP این دستور از یک افزونه Open vSwitch استفاده می‌کند که فقط در Open vSwitch 2.6 و بالاتر وجود دارد. . .IP "\fBct\-flush\-zone \fIswitch zone\fR" مدخل‌های ردیابی اتصال را در منطقه \fIzone\fR روی \fIswitch\fR پاکسازی (flush) می‌کند. .IP این دستور از یک افزونه Open vSwitch استفاده می‌کند که فقط در Open vSwitch 2.6 و بالاتر وجود دارد. . .IP "\fBct\-flush \fIswitch [zone=N] [mark=X[/M]] [labels=Y[/N]] [ct-orig-tuple [ct-reply-tuple]]\fR" مدخل‌های اتصال را روی \fIswitch\fR بر اساس \fIzone\fR، \fImark\fR، \fIlabels\fR و چندتایی‌های ردیابی اتصال \fIct-[orig|reply]-tuple\fR پاکسازی می‌کند. .IP اگر \fIct-[orig|reply]-tuple\fR ارائه نشود، تمام مدخل‌های اتصال را پاک می‌کند. اگر \fIzone\fR مشخص شده باشد، تنها اتصالات موجود در \fIzone\fR را پاک می‌کند. اگر \fImark\fR یا \fIlabels\fR ارائه شود، تنها مدخل‌هایی را که با \fImark/labels\fR مشخص مطابقت دارند پاک خواهد کرد. .IP اگر \fIct-[orig|reply]-tuple\fR ارائه شود، مدخل اتصال مشخص‌شده توسط \fIct-[orig|reply]-tuple\fR در \fIzone\fR را پاک می‌کند. منطقه در صورت عدم تعیین، به طور پیش‌فرض 0 است. مقادیر \fImark\fR و \fIlabels\fR در صورت ارائه نشدن به طور پیش‌فرض "0/0" هستند. ردیاب اتصال فضای کاربری نیازمند پاکسازی با چندتایی اصلی پیش از اعمال NAT است و در غیر این صورت یک پیام هشدار ثبت خواهد شد. این چندتایی می‌تواند جزئی باشد و تمام اتصالاتی را که روی فیلدهای مشخص‌شده مطابقت دارند حذف خواهد کرد. به منظور مشخص کردن تنها \fIct-reply-tuple\fR، یک رشته خالی به عنوان \fIct-orig-tuple\fR ارائه دهید. .IP نکته: در حال حاضر برای تطبیق روی ICMP محدودیت وجود دارد؛ برای تطبیق جزئی روی پارامترهای ICMP، چندتایی \fIct-[orig|reply]-tuple\fR باید شامل IP مبدأ یا مقصد باشد. .IP یک مثال از \fIct-[orig|reply]-tuple\fR پروتکل IPv4 ICMP: .IP "ct_nw_src=10.1.1.1,ct_nw_dst=10.1.1.2,ct_nw_proto=1,icmp_type=8,icmp_code=0,icmp_id=10" .IP یک مثال از \fIct-[orig|reply]-tuple\fR پروتکل IPv6 TCP: .IP "ct_ipv6_src=fc00::1,ct_ipv6_dst=fc00::2,ct_nw_proto=6,ct_tp_src=1,ct_tp_dst=2" .IP این دستور از یک افزونه Open vSwitch استفاده می‌کند که فقط در Open vSwitch 3.1 و بالاتر موجود است. پشتیبانی از تطبیق بر روی \fImark\fR و \fIlabels\fR تنها در Open vSwitch 3.3 و بالاتر اضافه شده است. . .SS "دستورات جدول جریان سوئیچ OpenFlow (OpenFlow Switch Flow Table Commands)" . این دستورات جدول جریان را در یک سوئیچ OpenFlow مدیریت می‌کنند. در هر مورد، \fIflow\fR یک مدخل جریان را در قالبی که در بخش \fBنحو جریان\fR در زیر شرح داده شده مشخص می‌کند، \fIfile\fR یک فایل متنی حاوی صفر یا چند جریان با همان نحو (یک جریان در هر خط) است، و گزینه اختیاری \fB\-\-bundle\fR دستور را به صورت یک تراکنش اتمیک منفرد به اجرا درمی‌آورد (به گزینه \fB\-\-bundle\fR در زیر مراجعه فرمایید). . .IP "[\fB\-\-bundle\fR] \fBadd\-flow \fIswitch flow\fR" .IQ "[\fB\-\-bundle\fR] \fBadd\-flow \fIswitch \fB\- < \fIfile\fR" .IQ "[\fB\-\-bundle\fR] \fBadd\-flows \fIswitch file\fR" هر یک از مدخل‌های جریان را به جدول‌های \fIswitch\fR اضافه می‌کند. . هر مشخصه جریان (مثلاً هر خط در \fIfile\fR) می‌تواند با یکی از کلیدواژه‌های \fBadd\fR، \fBmodify\fR، \fBdelete\fR، \fBmodify_strict\fR یا \fBdelete_strict\fR آغاز شود تا مشخص کند که جریان قرار است افزوده، ویرایش یا حذف گردد، و اینکه آیا ویرایش یا حذف دقیق (strict) است یا خیر. برای سازگاری با گذشته، مشخصه جریان فاقد یکی از این کلیدواژه‌ها به عنوان افزودن جریان در نظر گرفته می‌شود. تمام تغییرات جریان به ترتیبی که مشخص شده است اجرا می‌شوند. . .IP "[\fB\-\-bundle\fR] [\fB\-\-strict\fR] \fBmod\-flows \fIswitch flow\fR" .IQ "[\fB\-\-bundle\fR] [\fB\-\-strict\fR] \fBmod\-flows \fIswitch \fB\- < \fIfile\fR" اقدامات (actions) موجود در مدخل‌های جدول‌های \fIswitch\fR را که با جریان‌های مشخص‌شده مطابقت دارند، تغییر می‌دهد. با مشخص کردن \fB\-\-strict\fR، نویسه‌های عام برای مقاصد تطبیق فعال در نظر گرفته نمی‌شوند. . .IP "[\fB\-\-bundle\fR] \fBdel\-flows \fIswitch\fR" .IQ "[\fB\-\-bundle\fR] [\fB\-\-strict\fR] \fBdel\-flows \fIswitch \fR[\fIflow\fR]" .IQ "[\fB\-\-bundle\fR] [\fB\-\-strict\fR] \fBdel\-flows \fIswitch \fB\- < \fIfile\fR" مدخل‌ها را از جدول جریان \fIswitch\fR حذف می‌کند. تنها با آرگومان \fIswitch\fR، تمام جریان‌ها را حذف می‌نماید. در غیر این صورت، مدخل‌های جریانی را که با جریان‌های مشخص‌شده مطابقت دارند حذف می‌کند. با استفاده از \fB\-\-strict\fR، نویسه‌های عام برای مقاصد تطبیق فعال در نظر گرفته نمی‌شوند. . .IP "[\fB\-\-bundle\fR] [\fB\-\-readd\fR] \fBreplace\-flows \fIswitch file\fR" مدخل‌های جریان را از \fIfile\fR (یا در صورت استفاده از \fB\-\fR از ورودی استاندارد \fBstdin\fR) خوانده و جدول جریان را از \fIswitch\fR استعلام می‌کند. سپس هرگونه تفاوت را اصلاح می‌نماید: جریان‌هایی از \fIfile\fR را که در \fIswitch\fR وجود ندارند اضافه می‌کند، جریان‌هایی از \fIswitch\fR را که در \fIfile\fR نیستند حذف می‌کند، و جریان‌هایی را در \fIswitch\fR که اقدامات، کوکی، یا مهلت‌های زمانی آن‌ها در \fIfile\fR تفاوت دارد به‌روزرسانی می‌کند. . .IP با مشخص کردن \fB\-\-readd\fR، برنامه \fBovs\-ofctl\fR تمام جریان‌های \fIfile\fR را اضافه می‌کند، حتی مواردی که با همان اقدامات، کوکی و مهلت زمانی در \fIswitch\fR وجود دارند. در OpenFlow 1.0 و 1.1، افزودن مجدد یک جریان همواره شمارنده‌های بسته و بایت جریان را به 0 بازنشانی می‌کند، و در OpenFlow 1.2 و بالاتر، این کار تنها در صورتی رخ می‌دهد که پرچم \fBreset_counts\fR تنظیم شده باشد. . .IP "\fBdiff\-flows \fIsource1 source2\fR" مدخل‌های جریان را از \fIsource1\fR و \fIsource2\fR خوانده و تفاوت‌ها را چاپ می‌کند. جریانی که در \fIsource1\fR وجود دارد ولی در \fIsource2\fR نیست با پیشوند \fB\-\fR چاپ می‌شود، و جریانی که در \fIsource2\fR هست ولی در \fIsource1\fR وجود ندارد با پیشوند \fB+\fR چاپ می‌گردد. اگر جریانی در هر دو منبع \fIsource1\fR و \fIsource2\fR با اقدامات، کوکی یا مهلت‌های زمانی متفاوتی وجود داشته باشد، آنگاه هر دو نسخه به ترتیب با پیشوندهای \fB\-\fR و \fB+\fR چاپ می‌شوند. .IP هر یک از \fIsource1\fR و \fIsource2\fR ممکن است نام یک فایل یا یک سوئیچ باشند. اگر نامی با \fB/\fR یا \fB.\fR آغاز شود، نام یک فایل تلقی می‌گردد. نامی که شامل \fB:\fR باشد به عنوان یک سوئیچ در نظر گرفته می‌شود. در غیر این صورت، چنانچه فایلی با آن نام موجود باشد یک فایل، و در غیر این صورت یک سوئیچ به شمار می‌آید. .IP برای این دستور، وضعیت خروج 0 نشان‌دهنده یافت نشدن هیچ تفاوتی است، 1 نشان می‌دهد خطایی رخ داده است، و 2 به این معنی است که تفاوت‌هایی یافت شده است. . .IP "\fBpacket\-out \fIswitch\fR \fIpacket-out\fR" به \fIswitch\fR متصل شده و به آن دستور می‌دهد پیام OpenFlow به نام \fIpacket-out\fR را اجرا کند، که همان‌گونه که در بخش \fBنحو خروج بسته (Packet-Out Syntax)\fR تعریف شده است مشخص می‌گردد. . .SS "دستورات جدول گروه (Group Table Commands)" . این دستورات جدول گروه (group table) را در یک سوئیچ OpenFlow مدیریت می‌کنند. در هر مورد، \fIgroup\fR یک مدخل گروه را در قالبی که در بخش \fBنحو گروه\fR در زیر توصیف شده است مشخص می‌کند، \fIfile\fR یک فایل متنی حاوی صفر یا چند گروه با همان نحو (یک گروه در هر خط) است، و گزینه اختیاری \fB\-\-bundle\fR دستور را به صورت یک تراکنش اتمیک منفرد اجرا می‌نماید (به گزینه \fB\-\-bundle\fR در زیر مراجعه کنید). .PP دستورات گروه تنها با سوئیچ‌هایی کار می‌کنند که از OpenFlow 1.1 یا بالاتر، یا افزونه‌های گروه Open vSwitch برای OpenFlow 1.0 (اضافه‌شده در Open vSwitch 2.9.90) پشتیبانی نمایند. برای OpenFlow 1.1 یا بالاتر، لازم است این نسخه‌های پروتکل به صراحت در \fBovs\-ofctl\fR (با استفاده از \fB\-O\fR) فعال شوند. برای اطلاعات بیشتر، پرسش «Q: What versions of OpenFlow does Open vSwitch support?» را در بخش پرسش‌های متداول Open vSwitch مطالعه فرمایید. . .IP "[\fB\-\-bundle\fR] \fBadd\-group \fIswitch group\fR" .IQ "[\fB\-\-bundle\fR] \fBadd\-group \fIswitch \fB\- < \fIfile\fR" .IQ "[\fB\-\-bundle\fR] \fBadd\-groups \fIswitch file\fR" هر یک از مدخل‌های گروه را به جدول‌های \fIswitch\fR اضافه می‌کند. . هر مشخصه گروه (مانند هر خط در \fIfile\fR) می‌تواند با یکی از کلیدواژه‌های \fBadd\fR، \fBmodify\fR، \fBadd_or_mod\fR، \fBdelete\fR، \fBinsert_bucket\fR یا \fBremove_bucket\fR شروع شود تا مشخص کند آیا یک گروه قرار است اضافه، ویرایش یا حذف شود، یا اینکه یک باکت گروه قرار است افزوده یا حذف گردد. برای سازگاری با گذشته، یک مشخصه گروه فاقد یکی از این کلیدواژه‌ها به عنوان افزودن گروه تلقی می‌شود. تمام تغییرات گروه به ترتیبی که تعیین شده‌اند اجرا می‌شوند. . .IP "[\fB\-\-bundle\fR] [\fB\-\-may\-create\fR] \fBmod\-group \fIswitch group\fR" .IQ "[\fB\-\-bundle\fR] [\fB\-\-may\-create\fR] \fBmod\-group \fIswitch \fB\- < \fIfile\fR" باکت‌های اقدام را در مدخل‌های جدول‌های \fIswitch\fR برای هر مدخل گروه اصلاح می‌کند. اگر یک گروه مشخص‌شده از قبل وجود نداشته باشد، بدون \fB\-\-may\-create\fR این دستور هیچ اثری نخواهد داشت؛ با \fB\-\-may\-create\fR، یک گروه جدید ایجاد می‌کند. گزینه \fB\-\-may\-create\fR از یک افزونه Open vSwitch برای OpenFlow استفاده می‌کند که تنها در Open vSwitch 2.6 و بالاتر پیاده‌سازی شده است. . .IP "[\fB\-\-bundle\fR] \fBdel\-groups \fIswitch\fR" .IQ "[\fB\-\-bundle\fR] \fBdel\-groups \fIswitch \fR[\fIgroup\fR]" .IQ "[\fB\-\-bundle\fR] \fBdel\-groups \fIswitch \fB\- < \fIfile\fR" مدخل‌ها را از جدول گروه \fIswitch\fR حذف می‌کند. تنها با آرگومان \fIswitch\fR، تمام گروه‌ها را حذف می‌نماید. در غیر این صورت، گروه متناظر با هر مدخل گروه را حذف می‌کند. . .IP "[\fB\-\-bundle\fR] \fBinsert\-buckets \fIswitch group\fR" .IQ "[\fB\-\-bundle\fR] \fBinsert\-buckets \fIswitch \fB\- < \fIfile\fR" باکت‌هایی را به یک گروه موجود در جدول گروه \fIswitch\fR اضافه می‌کند. اگر هیچ \fIcommand_bucket_id\fR در مشخصه گروه وجود نداشته باشد، تمام باکت‌های گروه حذف می‌شوند. . .IP "[\fB\-\-bundle\fR] \fBremove\-buckets \fIswitch group\fR" .IQ "[\fB\-\-bundle\fR] \fBremove\-buckets \fIswitch \fB\- < \fIfile\fR" باکت‌هایی را از یک گروه موجود در جدول گروه \fIswitch\fR حذف می‌کند. اگر هیچ \fIcommand_bucket_id\fR در مشخصه گروه موجود نباشد، تمام باکت‌های گروه حذف می‌شوند. . .IP "\fBdump\-groups \fIswitch\fR [\fIgroup\fR]" مدخل‌های گروه در جدول‌های \fIswitch\fR را روی کنسول چاپ می‌کند. برای نمایش فقط یک گروه خاص، شماره آن را به عنوان \fIgroup\fR مشخص کنید. در غیر این صورت، اگر \fIgroup\fR حذف شود یا \fBALL\fR مشخص گردد، تمام گروه‌ها چاپ می‌شوند. .IP تنها OpenFlow 1.5 و بالاتر از استخراج اطلاعات یک گروه خاص پشتیبانی می‌کنند. نسخه‌های قبلی OpenFlow همیشه تمام گروه‌ها را استخراج و چاپ می‌کنند. . .IP "\fBdump\-group\-features \fIswitch\fR" ویژگی‌های گروه در \fIswitch\fR را روی کنسول چاپ می‌کند. . .IP "\fBdump\-group\-stats \fIswitch \fR[\fIgroup\fR]" آمار مربوط به \fIgroup\fR مشخص‌شده در جدول‌های \fIswitch\fR را روی کنسول چاپ می‌کند. اگر \fIgroup\fR حذف شود، آمار تمام گروه‌ها چاپ خواهد شد. . .SS "دستورات جدول سنجشگر سوئیچ OpenFlow 1.3+ (OpenFlow 1.3+ Switch Meter Table Commands)" . این دستورات جدول سنجشگر (meter table) را در یک سوئیچ OpenFlow مدیریت می‌کنند. در هر مورد، \fImeter\fR یک مدخل سنجشگر را در قالبی که در بخش \fBنحو سنجشگر\fR در زیر شرح داده شده است مشخص می‌کند. . .PP پروتکل OpenFlow 1.3 پشتیبانی از سنجشگرها را معرفی کرد، بنابراین این دستورات فقط با سوئیچ‌هایی کار می‌کنند که از OpenFlow 1.3 یا بالاتر پشتیبانی کنند. لازم است این نسخه‌های پروتکل را به طور صریح در \fBovs\-ofctl\fR (با استفاده از \fB\-O\fR) و در خود سوئیچ (با ستون \fBprotocols\fR در جدول \fBBridge\fR) فعال نمایید. برای اطلاعات بیشتر، پرسش «Q: What versions of OpenFlow does Open vSwitch support?» را در بخش پرسش‌های متداول Open vSwitch مطالعه فرمایید. . .IP "\fBadd\-meter \fIswitch meter\fR" یک مدخل سنجشگر به جدول‌های \fIswitch\fR اضافه می‌کند. نحو \fImeter\fR در بخش \fBنحو سنجشگر\fR در زیر شرح داده شده است. . .IP "\fBmod\-meter \fIswitch meter\fR" یک سنجشگر موجود را اصلاح می‌کند. . .IP "\fBdel\-meters \fIswitch\fR [\fImeter\fR]" مدخل‌ها را از جدول سنجشگر \fIswitch\fR حذف می‌کند. برای حذف فقط یک سنجشگر خاص، شماره آن را به عنوان \fImeter\fR مشخص کنید. در غیر این صورت، اگر \fImeter\fR حذف شود، یا اگر به عنوان \fBall\fR مشخص گردد، تمام سنجشگرها حذف می‌شوند. . .IP "\fBdump\-meters \fIswitch\fR [\fImeter\fR]" مدخل‌های جدول سنجشگر \fIswitch\fR را چاپ می‌کند. برای چاپ فقط یک سنجشگر خاص، شماره آن را به عنوان \fImeter\fR مشخص کنید. در غیر این صورت، اگر \fImeter\fR حذف شود، یا اگر به عنوان \fBall\fR مشخص گردد، تمام سنجشگرها چاپ می‌شوند. . .IP "\fBmeter\-stats \fIswitch\fR [\fImeter\fR]" آمار سنجشگر را چاپ می‌کند. آرگومان \fImeter\fR می‌تواند یک سنجشگر منفرد را با نحو \fBmeter=\fIid\fR مشخص کند، یا همه سنجشگرها را با نحو \fBmeter=all\fR تعیین نماید. . .IP "\fBmeter\-features \fIswitch\fR" ویژگی‌های سنجشگر را چاپ می‌کند. . .SS "دستور بسته تغییرات سوئیچ OpenFlow (OpenFlow Switch Bundle Command)" . به‌روزرسانی‌های تراکنشی را می‌توان همزمان روی هر دو جدول جریان و گروه با دستور \fBbundle\fR انجام داد. آرگومان \fIfile\fR یک فایل متنی است که شامل صفر یا چند تغییر جریان (flow mod)، تغییر گروه (group mod) یا ارسال بسته به بیرون (packet-out) با استفاده از \fBنحو جریان\fR، \fBنحو گروه\fR یا \fBنحو خروج بسته\fR است، که هر خط به ترتیب با یکی از کلیدواژه‌های \fBflow\fR، \fBgroup\fR یا \fBpacket\-out\fR آغاز می‌شود. کلیدواژه \fBflow\fR ممکن است به صورت اختیاری با یکی از کلیدواژه‌های \fBadd\fR، \fBmodify\fR، \fBmodify_strict\fR، \fBdelete\fR یا \fBdelete_strict\fR دنبال شود که در صورت ارائه فقط \fBflow\fR، حالت \fBadd\fR فرض می‌گردد. به طور مشابه، کلیدواژه \fBgroup\fR ممکن است به صورت اختیاری با یکی از کلیدواژه‌های \fBadd\fR، \fBmodify\fR، \fBadd_or_mod\fR، \fBdelete\fR، \fBinsert_bucket\fR یا \fBremove_bucket\fR دنبال شود که در صورت ارائه فقط \fBgroup\fR، حالت \fBadd\fR فرض می‌شود. . .IP "\fBbundle \fIswitch file\fR" تمام تغییرات جریان و گروه را در \fIfile\fR به عنوان یک تراکنش اتمیک منفرد بر روی جدول‌های \fIswitch\fR اجرا می‌کند. تمام تغییرات بسته‌بندی‌شده به ترتیبی که تعیین شده‌اند اجرا می‌شوند. . .SS "دستورات جدول TLV تونل سوئیچ OpenFlow (OpenFlow Switch Tunnel TLV Table Commands)" . سامانه Open vSwitch یک جدول نگاشت بین TLVهای گزینه تونل (تعریف‌شده توسط ) و فیلدهای NXM با نام \fBtun_metadata\fIn\fR (که در آن \fIn\fR از 0 تا 63 متغیر است) نگهداری می‌کند، که می‌توانند برای اهداف تطبیق، اقدامات و غیره به کار گرفته شوند. این جدول TLV می‌تواند برای TLVهای گزینه Geneve یا سایر پروتکل‌های دارای گزینه‌هایی در همان قالب TLV گزینه‌های Geneve استفاده شود. این نگاشت باید صراحتاً توسط کاربر از طریق دستورات زیر تعیین گردد. .PP یک نگاشت TLV با نحو زیر مشخص می‌شود: .br \fB{class=\fIclass\fB,type=\fItype\fB,len=\fIlength\fB}->tun_metadata\fIn\fR .PP هنگامی که یک نگاشت گزینه برای یک \fBtun_metadata\fIn\fR مشخص وجود داشته باشد، تطبیق روی فیلد تعریف‌شده امکان‌پذیر می‌شود، مثلاً: .RS ovs-ofctl add-tlv-map br0 "{class=0xffff,type=0,len=4}->tun_metadata0" .PP ovs-ofctl add-flow br0 tun_metadata0=1234,actions=controller .RE .PP یک نگاشت نباید در حالی که به طور فعال توسط یک جریان در حال استفاده است تغییر کند؛ نتیجه انجام این کار تعریف‌نشده خواهد بود. .PP این دستورات افزونه‌های Nicira برای OpenFlow هستند و به Open vSwitch نسخه 2.5 یا بالاتر نیاز دارند. . .IP "\fBadd\-tlv\-map \fIswitch option\fR[\fB,\fIoption\fR]..." هر \fIoption\fR را به جدول‌های \fIswitch\fR اضافه می‌کند. فیلدهای تکراری رد می‌شوند. . .IP "\fBdel\-tlv\-map \fIswitch \fR[\fIoption\fR[\fB,\fIoption\fR]]..." هر \fIoption\fR را از جدول \fIswitch\fR حذف می‌کند، یا در صورتی که هیچ \fIoption\fR تعیین نشده باشد تمام نگاشت‌های TLV گزینه را پاک می‌نماید. فیلدهایی که نگاشت نشده‌اند نادیده گرفته می‌شوند. . .IP "\fBdump\-tlv\-map \fIswitch\fR" فیلدهای نگاشت‌شده جاری در جدول گزینه سوئیچ و همچنین قابلیت‌های سوئیچ را نمایش می‌دهد. . .SS "دستورات پایش سوئیچ OpenFlow (OpenFlow Switch Monitoring Commands)" . .IP "\fBsnoop \fIswitch\fR" به \fIswitch\fR متصل شده و تمام پیام‌های OpenFlow دریافتی را روی کنسول چاپ می‌کند. بر خلاف سایر دستورات \fBovs\-ofctl\fR، اگر \fIswitch\fR نام یک پل باشد، آنگاه دستور \fBsnoop\fR به یک سوکت دامنه یونیکس به نام \fB/run/openvswitch/\fIswitch\fB.snoop\fR متصل می‌شود. دیمن \fBovs\-vswitchd\fR برای هر پل روی چنین سوکتی گوش فرامی‌دهد و تمام پیام‌های OpenFlow ارسالی یا دریافتی از کنترل‌کننده OpenFlow پیکربندی‌شده‌اش را به آن می‌فرستد. بنابراین، از این دستور می‌توان برای مشاهده فعالیت پروتکل OpenFlow بین یک سوئیچ و کنترل‌کننده آن استفاده کرد. .IP هنگامی که یک سوئیچ بیش از یک کنترل‌کننده پیکربندی‌شده داشته باشد، تنها ترافیک به مقصد و از مبدأ یک کنترل‌کننده چاپ می‌شود. اگر هیچ‌یک از کنترل‌کننده‌ها به عنوان اولیه یا ثانویه پیکربندی نشده باشند (با استفاده از یک افزونه Nicira برای OpenFlow 1.0 یا 1.1، یا یک درخواست استاندارد در OpenFlow 1.2 یا بالاتر)، یک کنترل‌کننده به طور تصادفی از بین آن‌ها انتخاب می‌شود. اگر یک کنترل‌کننده اولیه وجود داشته باشد، آن انتخاب می‌شود؛ در غیر این صورت، اگر کنترل‌کننده‌هایی وجود داشته باشند که اولیه یا ثانویه نباشند، یکی به دلخواه انتخاب می‌شود؛ در غیر این صورت، یک کنترل‌کننده ثانویه به طور تصادفی انتخاب می‌گردد. این انتخاب یک‌بار در زمان اتصال انجام شده و با تغییر نقش کنترل‌کننده‌ها تغییر نمی‌کند. .IP اگر سوئیچ هیچ کنترل‌کننده پیکربندی‌شده‌ای نداشته باشد، یا اگر کنترل‌کننده پیکربندی‌شده قطع شده باشد، هیچ ترافیکی ارسال نمی‌شود، بنابراین پایش هیچ ترافیکی را نمایش نخواهد داد. . .IP "\fBmonitor \fIswitch\fR [\fImiss-len\fR] [\fBinvalid_ttl\fR] [\fBwatch:\fR[\fIspec\fR...]]" به \fIswitch\fR متصل شده و تمام پیام‌های OpenFlow دریافتی را روی کنسول چاپ می‌کند. معمولاً \fIswitch\fR باید نام یک پل را در پایگاه‌داده \fBovs\-vswitchd\fR مشخص کند. این امکان فقط در OpenFlow 1.0 به عنوان افزونه Nicira در دسترس است. .IP اگر \fImiss-len\fR ارائه شود، \fBovs\-ofctl\fR یک پیام «تنظیم پیکربندی» (set configuration) در پروتکل OpenFlow در زمان برقراری اتصال ارسال می‌کند که درخواست \fImiss-len\fR بایت از هر بسته‌ای را می‌دهد که با جدول جریان مطابقت ندارد. سامانه Open vSwitch این پیام‌ها و سایر پیام‌های ناهمگام را به اتصال کلاینت \fBovs\-ofctl monitor\fR ارسال نمی‌کند مگر اینکه یک مقدار غیرصفر در این آرگومان مشخص شده باشد. (بنابراین، اگر \fImiss\-len\fR مشخص نشود، به طور معمول ترافیک بسیار کمی چاپ خواهد شد.) .IP اگر \fBinvalid_ttl\fR ارسال شود، \fBovs\-ofctl\fR یک پیام «تنظیم پیکربندی» در OpenFlow در زمان برقراری اتصال ارسال می‌کند که درخواست \fBINVALID_TTL_TO_CONTROLLER\fR می‌دهد، تا \fBovs\-ofctl monitor\fR بتواند پیام‌های «packet-in» را هنگامی که TTL در اقدام \fBdec_ttl\fR به صفر می‌رسد دریافت کند. فقط OpenFlow 1.1 و 1.2 از \fBinvalid_ttl\fR پشتیبانی می‌کنند؛ Open vSwitch همچنین آن را برای OpenFlow 1.0 به عنوان یک افزونه پیاده‌سازی کرده است. .IP عبارت \fBwatch:\fR[\fB\fIspec\fR...] باعث می‌شود \fBovs\-ofctl\fR یک پیام افزونه Nicira با عنوان «monitor request» در زمان راه‌اندازی اتصال به سوئیچ ارسال کند. این پیام باعث می‌شود سوئیچ اطلاعات مربوط به تغییرات جدول جریان را به محض وقوع ارسال کند. نحو \fIspec\fR زیر که با کاما جدا می‌شوند در دسترس است: .RS .IP "\fB!initial\fR" محتویات اولیه جدول جریان سوئیچ را گزارش نمی‌دهد. .IP "\fB!add\fR" جریان‌های تازه اضافه‌شده را گزارش نمی‌دهد. .IP "\fB!delete\fR" جریان‌های حذف‌شده را گزارش نمی‌دهد. .IP "\fB!modify\fR" تغییرات اعمال‌شده بر جریان‌های موجود را گزارش نمی‌دهد. .IP "\fB!own\fR" تغییرات ایجادشده در جدول جریان توسط اتصال خود \fBovs\-ofctl\fR به سوئیچ را خلاصه می‌کند. (این موارد تنها می‌توانند با استفاده از دستور \fBofctl/send\fR که در زیر تحت عنوان \fBدستورات مدیریت زمان اجرا\fR شرح داده شده رخ دهند.) .IP "\fB!actions\fR" اقدامات را به عنوان بخشی از به‌روزرسانی‌های جریان گزارش نمی‌دهد. .IP "\fBtable=\fItable\fR" پایش را به جدول با \fItable\fR داده‌شده محدود می‌کند، که می‌تواند به عنوان یک عدد بین 0 و 254 یا (مگر اینکه \fB\-\-no\-names\fR مشخص شده باشد) یک نام بیان شود. به طور پیش‌فرض، تمام جدول‌ها پایش می‌شوند. .IP "\fBout_port=\fIport\fR" در صورت تنظیم، فقط جریان‌هایی که خروجی آن‌ها به \fIport\fR است پایش می‌شوند. پارامتر \fIport\fR می‌تواند یک شماره درگاه OpenFlow یا یک کلیدواژه باشد (مانند \fBLOCAL\fR). .IP "\fBout_group=\fIgroup\fR" در صورت تنظیم، فقط جریان‌هایی که خروجی آن‌ها به شماره گروه \fIgroup\fR است پایش می‌شوند. این فیلد نیازمند OpenFlow 1.4 (-OOpenFlow14) یا بالاتر است. .IP "\fIfield\fB=\fIvalue\fR" فقط جریان‌هایی را پایش می‌کند که \fIfield\fR آن‌ها با \fIvalue\fR داده‌شده مشخص شده باشد. هر نحوی که برای تطبیق در \fBdump\-flows\fR معتبر است می‌تواند در اینجا نیز استفاده شود. .RE .IP این دستور ممکن است برای اشکال‌زدایی پیاده‌سازی‌های سوئیچ یا کنترل‌کننده مفید باشد. همراه با \fBwatch:\fR، به ویژه برای مشاهده نحوه به‌روزرسانی جدول‌های جریان توسط یک کنترل‌کننده سودمند است. . .SS "دستورات سوئیچ و کنترل‌کننده OpenFlow (OpenFlow Switch and Controller Commands)" . دستورات زیر، مانند دستورات بخش قبل، ممکن است با استفاده از هر یک از روش‌های اتصال توصیف‌شده در آن بخش، روی سوئیچ‌های OpenFlow اعمال شوند. بر خلاف آن دستورات، این موارد ممکن است روی کنترل‌کننده‌های OpenFlow نیز به کار گرفته شوند. . .TP \fBprobe \fItarget\fR یک پیام منفرد echo-request در OpenFlow به \fItarget\fR ارسال کرده و منتظر پاسخ می‌ماند. همراه با گزینه \fB\-t\fR یا \fB\-\-timeout\fR، این دستور می‌تواند در حال اجرا بودن یک سوئیچ یا کنترل‌کننده OpenFlow را بررسی کند. . .TP \fBping \fItarget \fR[\fIn\fR] مجموعه‌ای متشکل از 10 بسته درخواست پژواک (echo request) را به \fItarget\fR ارسال کرده و زمان هر پاسخ را می‌سنجد. بسته‌های درخواست پژواک شامل یک هدر OpenFlow به علاوه \fIn\fR بایت (پیش‌فرض: 64) بار داده تصادفی تولیدشده هستند. این دستور تأخیر درخواست‌های منفرد را اندازه‌گیری می‌کند. . .TP \fBbenchmark \fItarget n count\fR تعداد \fIcount\fR بسته درخواست پژواک که هرکدام شامل یک هدر OpenFlow به همراه \fIn\fR بایت بار داده هستند ارسال کرده و منتظر دریافت هر پاسخ می‌ماند. زمان کل مورد نیاز را گزارش می‌دهد. این معیاری از حداکثر پهنای باند به \fItarget\fR برای رفت و برگشت پیام‌های \fIn\fR بایتی است. . .SS "سایر دستورات (Other Commands)" . .IP "\fBofp\-parse\fR \fIfile\fR" فایل \fIfile\fR (یا در صورت تعیین \fB\-\fR از \fBstdin\fR) را به عنوان مجموعه‌ای از پیام‌های OpenFlow در قالب باینری مورد استفاده در اتصال OpenFlow می‌خواند و آن‌ها را روی کنسول چاپ می‌کند. این دستور می‌تواند برای چاپ پیام‌های OpenFlow ضبط‌شده از یک جریان TCP مفید باشد. . .IP "\fBofp\-parse\-pcap\fR \fIfile\fR [\fIport\fR...]" فایل \fIfile\fR را که باید در قالب PCAP مورد استفاده ابزارهای ضبط شبکه مانند \fBtcpdump\fR یا \fBwireshark\fR باشد می‌خواند، تمام جریان‌های TCP برای اتصالات OpenFlow را استخراج می‌کند، و پیام‌های OpenFlow موجود در آن اتصالات را در قالب خوانا برای انسان روی خروجی استاندارد \fBstdout\fR چاپ می‌کند. .IP اتصالات OpenFlow با شماره درگاه TCP متمایز می‌شوند. بسته‌های غیر OpenFlow نادیده گرفته می‌شوند. به طور پیش‌فرض، داده‌های روی درگاه‌های TCP شماره 6633 و 6653 به عنوان OpenFlow در نظر گرفته می‌شوند. برای نادیده گرفتن این پیش‌فرض، یک یا چند آرگومان \fIport\fR را مشخص کنید. .IP این دستور نمی‌تواند ترافیک رمزگذاری‌شده با SSL/TLS را به صورت مفید چاپ کند. همچنین از IPv6 پشتیبانی نمی‌کند. . .SS "نحو جریان (Flow Syntax)" .PP برخی از دستورات \fBovs\-ofctl\fR آرگومانی را می‌پذیرند که یک یا چند جریان را توصیف می‌کند. چنین توصیف‌های جریانی شامل مجموعه‌ای از انتساب‌های \fIfield\fB=\fIvalue\fR هستند که با ویرگول یا فضای خالی از یکدیگر جدا می‌شوند. (قرار دادن فاصله‌ها در توصیف جریان معمولاً نیازمند نقل‌قول است تا از تجزیه توصیف به چندین آرگومان توسط پوسته جلوگیری شود.) .PP توصیف‌های جریان باید در \fBفرم نرمال (normal form)\fR باشند. این به این معنی است که یک جریان تنها در صورتی می‌تواند مقداری را برای یک فیلد L3 تعیین کند که یک پروتکل خاص L2 را نیز مشخص کرده باشد، و یک جریان تنها در صورتی می‌تواند یک فیلد L4 را تعیین کند که انواع پروتکل خاص L2 و L3 را نیز تعیین نموده باشد. به عنوان مثال، اگر نوع پروتکل L2 به نام \fBdl_type\fR دارای نویسه عام (wildcard) باشد، آنگاه فیلدهای L3 شامل \fBnw_src\fR، \fBnw_dst\fR و \fBnw_proto\fR نیز باید دارای نویسه عام باشند. به طور مشابه، اگر \fBdl_type\fR یا \fBnw_proto\fR (نوع پروتکل L3) دارای نویسه عام باشد، فیلدهای L4 شامل \fBtcp_dst\fR و \fBtcp_src\fR نیز باید عام باشند. برنامه \fBovs\-ofctl\fR در مورد جریان‌هایی که در فرم نرمال نیستند هشدار خواهد داد. .PP صفحه راهنمای \fBovs\-fields\fR(7) فیلدهای پشتیبانی‌شده و نحوه تطبیق آن‌ها را شرح می‌دهد. علاوه بر فیلدهای تطبیق، دستوراتی که روی جریان‌ها عمل می‌کنند چند جفت کلید-مقدار اضافی را نیز می‌پذیرند: . .IP \fBtable=\fItable\fR برای دستورات استخراج جریان، جریان‌های استخراج‌شده را به جریان‌های موجود در جدول \fItable\fR محدود می‌کند، که می‌تواند به صورت یک عدد بین 0 و 255 یا (مگر اینکه \fB\-\-no\-names\fR مشخص شده باشد) یک نام بیان شود. اگر مشخص نشود (یا اگر 255 به عنوان \fItable\fR مشخص گردد)، آنگاه جریان‌های موجود در تمام جدول‌ها استخراج می‌شوند. . .IP برای دستورات اصلاح جدول جریان، رفتار بر اساس نسخه OpenFlow مورد استفاده برای اتصال به سوئیچ متغیر است: . .RS .IP "OpenFlow 1.0" نسخه OpenFlow 1.0 از \fBtable\fR برای ویرایش جریان‌ها پشتیبانی نمی‌کند. چنانچه \fBtable\fR (به جز \fBtable=255\fR) برای سوئیچی تعیین شود که فقط از OpenFlow 1.0 پشتیبانی می‌کند، \fBovs\-ofctl\fR با خطا خارج می‌شود. .IP در OpenFlow 1.0، سوئیچ انتخاب می‌کند که جریان جدید در کدام جدول درج شود. سوئیچ نرم‌افزاری Open vSwitch همیشه جدول 0 را انتخاب می‌کند. سایر مسیرهای داده Open vSwitch و سایر پیاده‌سازی‌های OpenFlow ممکن است جدول‌های متفاوتی را انتخاب نمایند. .IP رفتار OpenFlow 1.0 در Open vSwitch برای ویرایش یا حذف جریان‌ها به این بستگی دارد که آیا از \fB\-\-strict\fR استفاده شده است یا خیر. بدون \fB\-\-strict\fR، دستور برای جریان‌های منطبق در تمام جدول‌ها اعمال می‌شود. با \fB\-\-strict\fR، دستور روی هر تک‌جریان منطبق در هر جدولی عمل خواهد کرد؛ چنانچه در بیش از یک جدول تطبیق وجود داشته باشد، هیچ کاری انجام نخواهد داد. (تمایز میان این رفتارها تنها زمانی اهمیت دارد که دستورات غیر OpenFlow 1.0 نیز استفاده شده باشند، زیرا OpenFlow 1.0 به تنهایی نمی‌تواند جریان‌هایی با معیارهای تطبیق یکسان را به چندین جدول اضافه کند.) . .IP "OpenFlow 1.0 با افزونه table_id" سامانه Open vSwitch یک افزونه OpenFlow را پیاده‌سازی می‌کند که به کنترل‌کننده اجازه می‌دهد جدولی را که عملیات روی آن انجام می‌شود مشخص کند. هنگامی که \fBtable\fR مشخص شده و از OpenFlow 1.0 استفاده شود، \fBovs\-ofctl\fR به طور خودکار این افزونه را فعال می‌سازد. برنامه \fBovs\-ofctl\fR به طور خودکار تشخیص می‌دهد که آیا سوئیچ از این افزونه پشتیبانی می‌کند یا خیر. در زمان نگارش این متن، پیاده‌سازی این افزونه تنها در Open vSwitch شناخته شده است. . .IP با این افزونه، \fBovs\-ofctl\fR هنگامی که \fBtable\fR مشخص شده باشد روی جدول درخواستی عمل می‌کند، و هنگامی که \fBtable\fR مشخص نشده باشد (یا برای \fBtable=255\fR) همان‌طور که برای OpenFlow 1.0 در بالا شرح داده شد عمل می‌نماید. . .IP "OpenFlow 1.1" پروتکل OpenFlow 1.1 نیازمند آن است که دستورات اصلاح جدول جریان یک جدول را مشخص کنند. هنگامی که \fBtable\fR مشخص نشده باشد (یا \fBtable=255\fR مشخص شده باشد)، \fBovs\-ofctl\fR به طور پیش‌فرض جدول 0 را انتخاب می‌کند. . .IP "OpenFlow 1.2 و بالاتر" پروتکل OpenFlow 1.2 و بالاتر به دستورات حذف جریان (اما نه سایر دستورات ویرایش جدول جریان) اجازه می‌دهند روی تمام جدول‌های جریان، با رفتاری که در بالا برای OpenFlow 1.0 شرح داده شد، عمل کنند. .RE .IP "\fBduration=\fR..." .IQ "\fBn_packet=\fR..." .IQ "\fBn_bytes=\fR..." برنامه \fBovs\-ofctl\fR انتساب‌ها به این «فیلدها» را نادیده می‌گیرد تا امکان استفاده از خروجی دستور \fBdump\-flows\fR به عنوان ورودی برای سایر دستورات تجزیه‌کننده جریان فراهم باشد. . .PP دستورات \fBadd\-flow\fR، \fBadd\-flows\fR و \fBmod\-flows\fR به یک فیلد اضافی نیاز دارند که باید آخرین فیلد مشخص‌شده باشد: . .IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR فهرستی از اقدامات جداشده با کاما را مشخص می‌کند که هنگام مطابقت مدخل جریان باید روی بسته انجام شوند. اگر هیچ \fIaction\fR تعیین نشود، بسته‌های منطبق با جریان دور ریخته می‌شوند. برای جزئیات مربوط به نحو و معنای اقدامات به \fBovs\-actions\fR(7) مراجعه فرمایید. .PP از یک شناسه مات به نام کوکی (cookie) می‌توان به عنوان دستگیره‌ای برای شناسایی مجموعه‌ای از جریان‌ها استفاده کرد: . .IP \fBcookie=\fIvalue\fR . می‌توان با استفاده از دستورات \fBadd\-flow\fR، \fBadd\-flows\fR و \fBmod\-flows\fR یک کوکی را با یک جریان مرتبط ساخت. مقدار \fIvalue\fR می‌تواند هر عدد 64 بیتی باشد و نیازی نیست در میان جریان‌ها یکتا باشد. اگر این فیلد حذف شود، مقدار پیش‌فرض کوکی برابر با 0 استفاده می‌شود. . .IP \fBcookie=\fIvalue\fR\fB/\fImask\fR . هنگام استفاده از NXM، کوکی می‌تواند به عنوان دستگیره‌ای برای پرس‌وجو، ویرایش و حذف جریان‌ها به کار رود. مقادیر \fIvalue\fR و \fImask\fR می‌توانند برای دستورات \fBdel\-flows\fR، \fBmod\-flows\fR، \fBdump\-flows\fR و \fBdump\-aggregate\fR برای محدود کردن کوکی‌های منطبق ارائه شوند. بیت 1 در \fImask\fR نشان می‌دهد که بیت متناظر در \fIcookie\fR باید دقیقاً مطابقت داشته باشد، و بیت 0 آن بیت را عام در نظر می‌گیرد. ماسک \-1 می‌تواند برای تطبیق دقیق کوکی استفاده شود. .IP دستور \fBmod\-flows\fR می‌تواند کوکی‌های جریان‌های منطبق با یک کوکی را با تعیین دو بار فیلد \fIcookie\fR به‌روزرسانی کند (یک بار همراه با ماسک برای تطبیق و یک بار بدون ماسک برای نشان دادن مقدار جدید): .RS .IP "\fBovs\-ofctl mod\-flows br0 cookie=1,actions=normal\fR" کوکی تمام جریان‌ها را به 1 و اقدامات آن‌ها را به \fBnormal\fR تغییر می‌دهد. .IP "\fBovs\-ofctl mod\-flows br0 cookie=1/\-1,cookie=2,actions=normal\fR" کوکی‌های دارای مقدار 1 را به 2 به‌روزرسانی کرده و اقدامات آن‌ها را به \fBnormal\fR تغییر می‌دهد. .RE .IP قابلیت تطبیق روی کوکی‌ها در Open vSwitch 1.5.0 افزوده شد. . .PP فیلد اضافی زیر اولویت جریان‌های اضافه‌شده توسط دستورات \fBadd\-flow\fR و \fBadd\-flows\fR را تعیین می‌کند. برای \fBmod\-flows\fR و \fBdel\-flows\fR هنگامی که \fB\-\-strict\fR مشخص شده باشد، اولویت باید همراه با سایر مشخصات جریان مطابقت داشته باشد. برای \fBmod-flows\fR بدون \fB\-\-strict\fR، اولویت تنها در صورتی مهم است که دستور یک جریان جدید ایجاد کند، یعنی \fBmod\-flows\fR غیر دقیق بر اساس اولویت تطبیق نمی‌دهد و اولویت جریان‌های موجود را تغییر نخواهد داد. سایر دستورات اجازه تعیین اولویت را نمی‌دهند. . .IP \fBpriority=\fIvalue\fR اولویت تطبیق یک مدخل دارای نویسه عام را در مقایسه با سایرین مشخص می‌کند. مقدار \fIvalue\fR عددی بین 0 و 65535 (شامل هر دو) است. یک \fIvalue\fR بالاتر پیش از مقدار پایین‌تر مطابقت داده خواهد شد. مدخلی با تطبیق دقیق همیشه بر مدخل حاوی نویسه‌های عام اولویت دارد، بنابراین دارای مقدار اولویت ضمنی 65535 است. هنگام افزودن یک جریان، اگر فیلد مشخص نشود، اولویت جریان به طور پیش‌فرض 32768 خواهد بود. .IP پروتکل OpenFlow زمانی که دو یا چند جریان با اولویت یکسان بتوانند با یک بسته منفرد مطابقت پیدا کنند، رفتار را نامشخص رها می‌کند. برخی از کاربران انتظار رفتار «معقول» دارند، مانند اینکه جریان‌های مشخص‌تر بر جریان‌های عام‌تر اولویت داشته باشند، اما OpenFlow این را مشخص نکرده و Open vSwitch آن را پیاده‌سازی نمی‌کند. بنابراین کاربران باید دقت کنند که از اولویت‌ها برای اطمینان از رفتاری که انتظار دارند استفاده نمایند. . .PP دستورات \fBadd\-flow\fR، \fBadd\-flows\fR و \fBmod\-flows\fR از گزینه‌های اضافی زیر پشتیبانی می‌کنند. این گزینه‌ها تنها بر جریان‌های جدید تأثیر می‌گذارند. بنابراین، برای \fBadd\-flow\fR و \fBadd\-flows\fR این گزینه‌ها همیشه مهم هستند، اما برای \fBmod\-flows\fR آن‌ها تنها در صورتی مهم هستند که دستور جریان جدیدی ایجاد کند، به این معنی که مقادیر آن‌ها جریان‌های موجود را به‌روزرسانی نکرده و تحت تأثیر قرار نمی‌دهد. . .IP "\fBidle_timeout=\fIseconds\fR" باعث انقضای جریان پس از تعداد ثانیه‌های عدم فعالیت داده‌شده می‌شود. مقدار 0 (پیش‌فرض) از انقضای جریان به دلیل عدم فعالیت جلوگیری می‌کند. . .IP \fBhard_timeout=\fIseconds\fR باعث انقضای جریان پس از تعداد ثانیه‌های معین، بدون در نظر گرفتن میزان فعالیت می‌شود. مقدار 0 (پیش‌فرض) هیچ مهلت انقضای قطعی به جریان نمی‌دهد. . .IP "\fBimportance=\fIvalue\fR" میزان اهمیت یک جریان را تعیین می‌کند. سازوکار اخراج مدخل جریان می‌تواند از اهمیت به عنوان عاملی در تصمیم‌گیری برای اخراج جریان استفاده کند. مقدار 0 (پیش‌فرض) جریان را بر اساس اهمیت غیرقابل اخراج می‌سازد. مقداری بین 0 تا 65535 مشخص کنید. .IP تنها OpenFlow 1.4 و بالاتر از \fBimportance\fR پشتیبانی می‌کنند. . .IP "\fBsend_flow_rem\fR" جریان را با پرچمی علامت‌گذاری می‌کند که باعث می‌شود وقتی جریان بعداً منقضی یا حذف شد، سوئیچ یک پیام «flow removed» تولید کرده و آن را به کنترل‌کننده‌های علاقه‌مند ارسال کند. . .IP "\fBcheck_overlap\fR" سوئیچ را وادار می‌کند تا بررسی کند تطبیق جریان با هیچ جریان متفاوت دیگری با همان اولویت در همان جدول همپوشانی نداشته باشد. (این بررسی هزینه‌بر است، بنابراین بهتر است از آن اجتناب شود.) . .IP "\fBreset_counts\fR" هنگامی که این پرچم روی جریانی که به سوئیچ اضافه می‌شود مشخص گردد و سوئیچ از قبل جریانی با تطبیق یکسان داشته باشد، یک سوئیچ OpenFlow 1.2 (یا بالاتر) شمارنده‌های بسته و بایت جریان را به 0 بازنشانی می‌کند. بدون این پرچم، شمارنده‌های بسته و بایت حفظ می‌شوند. .IP سوئیچ‌های OpenFlow 1.0 و 1.1 همیشه در این شرایط شمارنده‌ها را بازنشانی می‌کنند، گویی \fBreset_counts\fR همیشه مشخص شده است. .IP سامانه Open vSwitch نسخه 1.10 پشتیبانی از \fBreset_counts\fR را اضافه کرد. . .IP "\fBno_packet_counts\fR" .IQ "\fBno_byte_counts\fR" افزودن این پرچم‌ها به یک جریان، به یک سوئیچ OpenFlow 1.3 (یا بالاتر) اعلام می‌کند که کنترل‌کننده به ترتیب نیازی به شمارنده‌های بسته یا بایت برای این جریان ندارد. برخی از پیاده‌سازی‌های سوئیچ ممکن است در زمان استفاده از این پرچم‌ها به عملکرد بالاتر دست یابند یا مصرف منابع را کاهش دهند. این پرچم‌ها هیچ مزیتی برای پیاده‌سازی سوئیچ نرم‌افزاری Open vSwitch ندارند. .IP پروتکل OpenFlow 1.2 و قبل از آن از این پرچم‌ها پشتیبانی نمی‌کنند. .IP سامانه Open vSwitch نسخه 1.10 پشتیبانی از \fBno_packet_counts\fR و \fBno_byte_counts\fR را افزود. . .PP دستورات \fBdump\-flows\fR، \fBdump\-aggregate\fR، \fBdel\-flow\fR و \fBdel\-flows\fR از این فیلدهای اختیاری اضافی پشتیبانی می‌کنند: . .TP \fBout_port=\fIport\fR در صورت تنظیم، یک جریان منطبق باید شامل یک اقدام خروجی به \fIport\fR باشد که باید شماره یا نام یک درگاه OpenFlow باشد (مثلاً \fBlocal\fR). . .TP \fBout_group=\fIgroup\fR در صورت تنظیم، یک جریان منطبق باید شامل یک اقدام \fBgroup\fR با نام \fIgroup\fR باشد که باید یک شماره گروه OpenFlow باشد. این فیلد در Open vSwitch 2.5 و بالاتر پشتیبانی می‌شود و به OpenFlow 1.1 یا بالاتر نیاز دارد. . .SS "خروجی مدخل‌های جدول (Table Entry Output)" . دستورات \fBdump\-tables\fR و \fBdump\-aggregate\fR اطلاعات مربوط به مدخل‌های موجود در جدول‌های یک مسیر داده را چاپ می‌کنند. هر خط خروجی یک مدخل جریان است که در \fBنحو جریان\fR در بالا توصیف شد، به همراه چند فیلد اضافی: . .IP \fBduration=\fIsecs\fR مدت زمانی، بر حسب ثانیه، که مدخل در جدول بوده است. مقدار \fIsecs\fR شامل بیشترین دقتی است که سوئیچ ارائه می‌دهد، که احتمالاً با دقت نانوثانیه است. . .IP \fBn_packets\fR تعداد بسته‌هایی که با این مدخل مطابقت داشته‌اند. . .IP \fBn_bytes\fR تعداد کل بایت‌های حاصل از بسته‌هایی که با این مدخل مطابقت یافته‌اند. . .PP فیلدهای اضافی زیر تنها در صورتی گنجانده می‌شوند که سوئیچ Open vSwitch 1.6 یا بالاتر باشد و از قالب جریان NXM برای استخراج جریان استفاده شود (توضیحات گزینه \fB\-\-flow-format\fR در زیر را ببینید). مقادیر این فیلدهای اضافی تنها تقریب هستند و به ویژه مقدار \fBidle_age\fR گاهی حتی برای جریان‌های شلوغ نیز غیرصفر می‌شود. . .IP \fBhard_age=\fIsecs\fR تعداد ثانیه‌های صحیح سپری‌شده از زمان افزودن یا ویرایش جریان. مقدار \fBhard_age\fR تنها در صورتی نمایش داده می‌شود که با بخش صحیح \fBduration\fR تفاوت داشته باشد. (این فیلد از \fBduration\fR جدا است زیرا \fBmod\-flows\fR تایمر \fBhard_timeout\fR را بدون صفر کردن \fBduration\fR مجدداً راه‌اندازی می‌کند.) . .IP \fBidle_age=\fIsecs\fR تعداد ثانیه‌های صحیح سپری‌شده بدون عبور هیچ بسته‌ای از این جریان. . .SS "نحو خروج بسته (Packet-Out Syntax)" .PP دستور \fBovs\-ofctl bundle\fR اجازه می‌دهد پیام‌های packet-out در فایل بسته مشخص شوند. هر packet-out شامل مجموعه‌ای از انتساب‌های \fIfield\fB=\fIvalue\fR است که با ویرگول یا فضای خالی از هم جدا شده‌اند. (قرار دادن فاصله‌ها درون توصیف packet-out معمولاً نیازمند نقل‌قول است تا از شکسته شدن توصیف به چندین آرگومان توسط پوسته جلوگیری شود.) مگر اینکه خلاف آن ذکر شده باشد، تنها آخرین نمونه از هر فیلد لحاظ می‌شود. همین نحو توسط دستور \fBovs\-ofctl packet-out\fR نیز پشتیبانی می‌گردد. .PP .IP \fBin_port=\fIport\fR شماره درگاهی که هنگام پردازش اقدامات به عنوان in_port در نظر گرفته می‌شود. این می‌تواند هر شماره درگاه معتبر OpenFlow یا هر یک از موارد \fBLOCAL\fR، \fBCONTROLLER\fR یا \fBNONE\fR باشد. . این فیلد الزامی است. .IP \fIpipeline_field\fR=\fIvalue\fR به صورت اختیاری، کاربر می‌تواند فهرستی از فیلدهای خط لوله (pipeline fields) را برای یک پیام packet-out مشخص کند. فیلدهای خط لوله پشتیبانی‌شده شامل \fBفیلدهای تونل\fR و \fBفیلدهای ثبات\fR همان‌طور که در \fBovs\-fields\fR(7) تعریف شده است، می‌باشند. .IP \fBpacket=\fIhex-string\fR بسته واقعی برای ارسال، که به صورت رشته‌ای از بایت‌های هگزادسیمال بیان می‌شود. . این فیلد الزامی است. .IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR نحو اقدامات با فیلد \fBactions=\fR که در \fBنحو جریان\fR در بالا توضیح داده شد یکسان است. تعیین \fBactions=\fR اختیاری است، اما حذف اقدامات به عنوان دور انداختن (drop) تفسیر می‌شود، بنابراین بسته به هیچ مقصدی از سوئیچ ارسال نخواهد شد. . فیلد \fBactions\fR باید در انتهای هر خط مشخص شود، مشابه با تغییرات جریان. . .SS "نحو گروه (Group Syntax)" .PP برخی از دستورات \fBovs\-ofctl\fR آرگومانی را می‌پذیرند که یک گروه یا گروه‌هایی را توصیف می‌کند. چنین توصیف‌هایی شامل مجموعه‌ای از انتساب‌های \fIfield\fB=\fIvalue\fR هستند که با کاما یا فضای خالی از هم جدا شده‌اند. (قرار دادن فاصله درون توصیف گروه معمولاً نیازمند نقل‌قول است تا از شکسته شدن توصیف به چندین آرگومان توسط پوسته جلوگیری شود.) مگر اینکه خلاف آن ذکر شده باشد، تنها آخرین نمونه از هر فیلد لحاظ می‌گردد. .PP .IP \fBgroup_id=\fIid\fR شناسه صحیح گروه. هنگامی که این فیلد در \fBdel\-groups\fR یا \fBdump\-groups\fR مشخص شود، می‌توان از کلیدواژه "all" برای تعیین همه گروه‌ها استفاده کرد. . این فیلد الزامی است. . .IP \fBtype=\fItype\fR نوع گروه. دستورات \fBadd-group\fR، \fBadd-groups\fR و \fBmod-groups\fR به این فیلد نیاز دارند. استفاده از آن برای سایر دستورات ممنوع است. کلیدواژه‌های زیر انواع مجاز را تعیین می‌کنند: .RS .IP \fBall\fR اجرای تمام باکت‌های موجود در گروه. .IP \fBselect\fR اجرای یک باکت در گروه، با ایجاد تعادل بین باکت‌ها با توجه به وزن آن‌ها. برای انتخاب یک باکت، برای هر باکت فعال (live)، Open vSwitch داده‌های جریان را با شناسه باکت هش کرده و در وزن باکت ضرب می‌کند تا یک «امتیاز» به دست آورد، و سپس باکت با بالاترین امتیاز را انتخاب می‌کند. از \fBselection_method\fR برای کنترل داده‌های جریان مورد استفاده برای انتخاب استفاده کنید. .IP \fBindirect\fR اجرای تنها باکت موجود در گروه. .IP \fBff\fR .IQ \fBfast_failover\fR اجرای نخستین باکت فعال در گروه که با یک درگاه یا گروه فعال مرتبط است. .RE . .IP \fBcommand_bucket_id=\fIid\fR باکتی که عملیات باید روی آن انجام شود. دستورات \fBinsert-buckets\fR و \fBremove-buckets\fR به این فیلد نیاز دارند. برای سایر دستورات ممنوع است. مقدار \fIid\fR می‌تواند یک عدد صحیح یا یکی از کلیدواژه‌های زیر باشد: .RS .IP \fBall\fR عمل روی تمام باکت‌های موجود در گروه. تنها زمانی معتبر است که با دستور \fBremove-buckets\fR استفاده شود که در این صورت اثر آن حذف تمام باکت‌ها از گروه است. .IP \fBfirst\fR عمل روی نخستین باکت موجود در گروه. در مورد دستور \fBinsert-buckets\fR، اثر آن درج باکت‌های جدید دقیقاً پیش از اولین باکت موجود در گروه است؛ یا در صورتی که هیچ باکتی در گروه وجود نداشته باشد، جایگزین کردن باکت‌های گروه است. در مورد دستور \fBremove-buckets\fR، اثر آن حذف نخستین باکت گروه است؛ یا در صورتی که هیچ باکتی در گروه نباشد هیچ کاری انجام نمی‌دهد. .IP \fBlast\fR عمل روی آخرین باکت موجود در گروه. در مورد دستور \fBinsert-buckets\fR، اثر آن درج باکت‌های جدید دقیقاً پس از آخرین باکت موجود در گروه است؛ یا در صورتی که هیچ باکتی از قبل در گروه نباشد، جایگزین کردن باکت‌های گروه است. در مورد دستور \fBremove-buckets\fR، اثر آن حذف آخرین باکت گروه است؛ یا در صورتی که هیچ باکتی در گروه نباشد هیچ کاری انجام نمی‌دهد. .RE .IP اگر \fIid\fR یک عدد صحیح باشد، باید متناظر با \fBbucket_id\fR یک باکت موجود در گروه باشد. در مورد دستور \fBinsert-buckets\fR، اثر آن درج باکت‌ها دقیقاً پیش از باکتی در گروه است که شناسه \fBbucket_id\fR آن برابر \fIid\fR باشد. در مورد دستور \fBremove-buckets\fR، اثر آن حذف باکتی در گروه است که شناسه \fBbucket_id\fR آن برابر \fIid\fR باشد. چنانچه هیچ باکتی در گروه وجود نداشته باشد که شناسه \fBbucket_id\fR آن برابر \fIid\fR باشد، این یک خطا محسوب می‌شود. . .IP \fBselection_method\fR=\fImethod\fR روش انتخاب مورد استفاده برای برگزیدن یک باکت برای گروه نوع select. این یک رشته با طول 1 تا 15 بایت است که برای لایه‌های پایین‌تر شناخته شده است. این فیلد برای دستورات \fBadd\-group\fR، \fBadd\-groups\fR و \fBmod\-group\fR روی گروه‌های از نوع \fBselect\fR اختیاری است و در غیر این صورت ممنوع می‌باشد. اگر هیچ روش انتخابی مشخص نشود، Open vSwitch تا نگارش 2.9 روش \fBhash\fR را با فیلدهای پیش‌فرض اعمال می‌کند. از نسخه 2.10 به بعد، Open vSwitch به طور پیش‌فرض از روش \fBdp_hash\fR با الگوریتم هش متقارن L3/L4 استفاده می‌کند، تا زمانی که بتوان باکت‌های وزن‌دار گروه را با دقت کافی به مقادیر dp_hash نگاشت کرد. در نسخه 2.10 این محدودیت حداکثر به 64 باکت منحصر بود، و در نسخه 2.17 به 256 باکت ارتقا یافت. در آن موارد نادر، Open vSwitch 2.10 و بعد از آن به روش \fBhash\fR با مجموعه پیش‌فرض فیلدهای هش بازمی‌گردند. .RS .IP \fBdp_hash\fR استفاده از مقدار هش محاسبه‌شده توسط مسیر داده (datapath). الگوریتم هش در پیاده‌سازی‌های مختلف مسیر داده متفاوت است. مقدار \fBdp_hash\fR از 32 بیت بالایی \fBselection_method_param\fR به عنوان انتخاب‌کننده الگوریتم هش مسیر داده استفاده می‌کند. مقادیر پشتیبانی‌شده شامل \fB0\fR (متناظر با محاسبه هش روی 5-تایی IP) و \fB1\fR (متناظر با محاسبه هش \fIsymmetric\fR یا متقارن روی 5-تایی IP) است. انتخاب فیلدهای خاص با گزینه \fBfields\fR در \fBdp_hash\fR پشتیبانی نمی‌شود. از 32 بیت پایینی به عنوان پایه هش استفاده می‌شود. .IP استفاده از \fBdp_hash\fR این مزیت را دارد که نیازی ندارد جریان‌های مسیر داده تولیدشده با هیچ فیلد سرآیند بسته اضافی تطبیق دقیق داشته باشند. به عنوان مثال، حتی اگر چندین اتصال TCP که بدین ترتیب به باکت‌های گروه select هش شده‌اند دارای شماره درگاه‌های مبدأ متفاوتی باشند، به طور کلی همه آن‌ها با مجموعه کوچکی از جریان‌های از پیش برقرارشده مسیر داده رسیدگی می‌شوند، که منجر به تأخیر کمتر برای بسته‌های TCP SYN می‌شود. نکته منفی این است که جریان‌های مشترک مسیر داده باید هر بسته را دو بار تطبیق دهند، زیرا محاسبه مقدار هش مسیر داده تنها در صورت نیاز انجام می‌شود، و برای تطبیق برخی از بیت‌های مقدار آن به تطبیق دوم نیاز است. این تطبیق مضاعف هزینه تأخیر اضافی کوچکی برای هر بسته به همراه دارد، اما این تأخیر چندین مرتبه بزرگی کمتر از تأخیر ایجاد جریان‌های جدید مسیر داده برای اتصالات جدید TCP است. .IP \fBhash\fR استفاده از هش محاسبه‌شده بر روی فیلدهای مشخص‌شده با گزینه \fBfields\fR (زیر را ببینید). اگر هیچ فیلد هشی تعیین نشود، \fBhash\fR به طور پیش‌فرض یک هش متقارن بر روی ترکیبی از آدرس‌های MAC، برچسب‌های VLAN، نوع Ether، آدرس‌های IP و شماره درگاه‌های L4 اعمال می‌کند. مقدار \fBhash\fR از \fBselection_method_param\fR به عنوان پایه هش استفاده می‌کند. .IP توجه داشته باشید که فیلدهای هش‌شده توسط جریان‌های مسیر داده به صورت دقیق تطبیق داده می‌شوند. برای مثال، اگر درگاه مبدأ TCP هش شود، جریان‌های مسیر داده ایجادشده دقیقاً با مقدار درگاه مبدأ TCP موجود در بسته دریافتی تطبیق پیدا خواهند کرد. از آنجا که هر اتصال TCP عموماً مقدار درگاه مبدأ متفاوتی دارد، باید برای هر اتصال TCP که بدین ترتیب به یک باکت گروه select هش می‌شود، یک جریان مسیر داده جداگانه درج شود. .RE .IP این گزینه از یک افزونه Netronome OpenFlow استفاده می‌کند که تنها هنگام استفاده از Open vSwitch 2.4 و بالاتر با OpenFlow 1.5 و بالاتر پشتیبانی می‌شود. . .IP \fBselection_method_param\fR=\fIparam\fR یک پارامتر عدد صحیح 64 بیتی برای روش انتخاب انتخاب‌شده توسط فیلد \fBselection_method\fR. کاربرد این پارامتر توسط لایه پایینی که \fBselection_method\fR را پیاده‌سازی می‌کند تعریف می‌شود. اگر فیلد \fBselection_method\fR به عنوان یک رشته غیرخالی تعیین شده باشد اختیاری است؛ در غیر این صورت ممنوع است. مقدار پیش‌فرض صفر است. .IP این گزینه از یک افزونه Netronome OpenFlow استفاده می‌کند که تنها هنگام استفاده از Open vSwitch 2.4 و بالاتر با OpenFlow 1.5 و بالاتر پشتیبانی می‌شود. . .IP \fBfields\fR=\fIfield\fR .IQ \fBfields(\fIfield\fR[\fB=\fImask\fR]\fR...\fB)\fR پارامترهای فیلد برای روش انتخاب مشخص‌شده توسط فیلد \fBselection_method\fR. نحو در بخش \fBنحو جریان\fR با این محدودیت‌های اضافی شرح داده شده است که اگر مقداری ارائه شود، به عنوان ماسک نویسه عام در نظر گرفته می‌شود و ماسک‌های نویسه عام پس از یک اسلش ممنوع هستند. پیش‌نیازهای فیلدها باید توسط هر جریانی که خروجی آن به گروه هدایت می‌شود تأمین گردد. کاربرد فیلدها توسط لایه پایینی که \fBselection_method\fR را پیاده‌سازی می‌کند تعریف می‌شود. اگر فیلد \fBselection_method\fR برابر با «hash» تعیین شده باشد این پارامترها اختیاری هستند، و در غیر این صورت ممنوع می‌باشند. حالت پیش‌فرض عدم وجود هیچ فیلدی است. .IP این گزینه از یک افزونه Netronome OpenFlow استفاده می‌کند که تنها هنگام استفاده از Open vSwitch 2.4 و بالاتر با OpenFlow 1.5 و بالاتر پشتیبانی می‌شود. . .IP \fBbucket\fR=\fIbucket_parameters\fR دستورات \fBadd-group\fR، \fBadd-groups\fR و \fBmod-group\fR حداقل به یک فیلد باکت نیاز دارند. فیلدهای باکت باید پس از تمام فیلدهای دیگر ظاهر شوند. . برای تعیین چندین باکت از چندین فیلد باکت استفاده می‌شود. ترتیبی که باکت‌ها مشخص می‌شوند متناظر با ترتیب آن‌ها در گروه است. اگر نوع گروه "indirect" باشد، تنها یک گروه ممکن است تعیین شود. . پارامتر \fIbucket_parameters\fR شامل فهرستی از انتساب‌های \fIfield\fB=\fIvalue\fR است که با کاما یا فضای خالی از هم جدا شده و به دنبال آن‌ها فهرستی از اقدامات جداشده با کاما می‌آید. فیلدهای مربوط به \fIbucket_parameters\fR عبارتند از: . .RS .IP \fBbucket_id=\fIid\fR شناسه صحیح 32 بیتی باکت در گروه. مقادیر بزرگتر از 0xffffff00 رزرو شده‌اند. . این فیلد در Open vSwitch 2.4 برای انطباق با مشخصات OpenFlow 1.5 اضافه شد. هنگامی که از نسخه‌های پیشین OpenFlow استفاده شود، پشتیبانی نمی‌شود. در صورت عدم تعیین، Open vSwitch به طور خودکار شناسه‌های باکت را تخصیص می‌دهد. .IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR نحو اقدامات با فیلد \fBactions=\fR شرح داده شده در بخش \fBنحو جریان\fR در بالا یکسان است. تعیین \fBactions=\fR اختیاری است؛ هر پارامتر ناشناخته باکت به عنوان یک اقدام تفسیر خواهد شد. .IP \fBweight=\fIvalue\fR وزن نسبی باکت به صورت یک عدد صحیح. این ممکن است توسط سوئیچ هنگام انتخاب باکت برای گروه‌هایی که نوع (\fBtype\fR) آن‌ها \fBselect\fR است استفاده شود. .IP \fBwatch_port=\fIport\fR درگاهی که برای تعیین زنده بودن (liveness) گروه استفاده می‌شود. این فیلد یا فیلد \fBwatch_group\fR برای گروه‌هایی که نوع آن‌ها \fBff\fR یا \fBfast_failover\fR است الزامی می‌باشد. این فیلد یا فیلد \fBwatch_group\fR همچنین می‌تواند برای گروه‌هایی که نوع آن‌ها \fBselect\fR است به کار رود. .IP \fBwatch_group=\fIgroup_id\fR شناسه گروه که برای تعیین زنده بودن گروه به کار می‌رود. این فیلد یا فیلد \fBwatch_port\fR برای گروه‌هایی که نوع آن‌ها \fBff\fR یا \fBfast_failover\fR است الزامی است. این فیلد یا فیلد \fBwatch_port\fR همچنین می‌تواند برای گروه‌هایی که نوع آن‌ها \fBselect\fR است استفاده شود. .RE . .SS "نحو سنجشگر (Meter Syntax)" .PP دستورات جدول سنجشگر آرگومانی را می‌پذیرند که یک سنجشگر را توصیف می‌کند. چنین توصیف‌هایی شامل مجموعه‌ای از انتساب‌های \fIfield\fB=\fIvalue\fR هستند که با ویرگول یا فضای خالی از یکدیگر جدا می‌شوند. (قرار دادن فاصله‌ها در توصیف سنجشگر معمولاً نیازمند نقل‌قول است تا از تجزیه توصیف به چندین آرگومان توسط پوسته جلوگیری شود.) مگر اینکه خلاف آن ذکر شده باشد، تنها آخرین نمونه از هر فیلد لحاظ می‌شود. .PP .IP \fBmeter=\fIid\fR شناسه سنجشگر. یک عدد صحیح برای مشخص کردن یک سنجشگر تعریف‌شده توسط کاربر استفاده می‌شود. علاوه بر این، کلیدواژه‌های "all"، "controller" و "slowpath" نیز به عنوان سنجشگرهای مجازی پشتیبانی می‌شوند. سنجشگرهای مجازی "controller" و "slowpath" به ترتیب برای بسته‌های ارسال‌شده به کنترل‌کننده و به فضای کاربری OVS اعمال می‌گردند. .IP هنگامی که این فیلد در \fBdel-meter\fR، \fBdump-meter\fR یا \fBmeter-stats\fR مشخص شود، می‌توان از کلیدواژه "all" برای اشاره به تمام سنجشگرها استفاده کرد. این فیلد الزامی است، به جز برای \fBmeter-stats\fR که در صورت عدم تعیین این فیلد، تمام آمارها را استخراج و چاپ می‌کند. .IP \fBkbps\fR .IQ \fBpktps\fR واحد پارامترهای باند \fBrate\fR و \fBburst_size\fR. عبارت \fBkbps\fR نشان‌دهنده کیلوبیت بر ثانیه، و \fBpktps\fR نشان‌دهنده بسته بر ثانیه است. تعیین واحد برای دستورات \fBadd-meter\fR و \fBmod-meter\fR الزامی است. . .IP \fBburst\fR در صورت تنظیم، پشتیبانی از انفجار (burst) را برای باندهای سنجشگر از طریق پارامتر \fBburst_size\fR فعال می‌کند. . .IP \fBstats\fR در صورت تنظیم، جمع‌آوری آمار سنجشگر و باند را فعال می‌سازد. . .IP \fBbands\fR=\fIband_parameters\fR دستورات \fBadd-meter\fR و \fBmod-meter\fR حداقل به یک مشخصه باند نیاز دارند. باندها باید پس از تمام فیلدهای دیگر ظاهر شوند. .RS .IP \fBtype=\fItype\fR نوع باند سنجشگر. این کلیدواژه یک مشخصه باند جدید را آغاز می‌کند. هر باند نرخی را مشخص می‌کند که بالاتر از آن باند باید اقدامی انجام دهد. اقدام مورد نظر به نوع باند بستگی دارد. اگر نرخ چندین باند پشت سر گذاشته شود، آنگاه باندی با بالاترین نرخ در میان باندهای فراتر رفته انتخاب می‌شود. کلیدواژه‌های زیر انواع مجاز باند سنجشگر را تعیین می‌کنند: .RS .IP \fBdrop\fR دور انداختن بسته‌هایی که از حد نرخ باند فراتر می‌روند. .RE . .IP "سایر \fIband_parameters\fR عبارتند از:" .IP \fBrate=\fIvalue\fR حد نرخ نسبی برای این باند، بر حسب کیلوبیت بر ثانیه یا بسته بر ثانیه، بسته به اینکه \fBkbps\fR یا \fBpktps\fR مشخص شده باشد. .IP \fBburst_size=\fIsize\fR اگر \fBburst\fR برای مدخل سنجشگر مشخص شده باشد، حداکثر انفجار مجاز برای باند را بر حسب کیلوبیت یا بسته پیکربندی می‌کند، بسته به اینکه \fBkbps\fR یا \fBpktps\fR مشخص شده باشد. در صورت عدم تعیین، سوئیچ مختار است بسته به پیکربندی خود مقدار معقولی را انتخاب نماید. .RE . .SH "گزینه‌ها (OPTIONS)" .TP \fB\-\-strict\fR هنگام اجرای دستورات ویرایش جریان از تطبیق دقیق استفاده می‌کند. . .IP "\fB\-\-names\fR" .IQ "\fB\-\-no\-names\fR" هر درگاه OpenFlow دارای یک نام و یک شماره است، و هر جدول جریان OpenFlow دارای یک شماره و گاهی یک نام است. به طور پیش‌فرض، دستورات \fBovs\-ofctl\fR هم نام و هم شماره درگاه و جدول را می‌پذیرند، و چنانچه \fBovs\-ofctl\fR روی یک کنسول تعاملی در حال اجرا باشد نام‌های درگاه و جدول، و در غیر این صورت شماره‌ها را نمایش می‌دهند. با \fB\-\-names\fR، دستورات \fBovs\-ofctl\fR هم نام‌های درگاه و جدول را می‌پذیرند و هم نمایش می‌دهند؛ با \fB\-\-no\-names\fR، دستورات نه نام‌های درگاه و جدول را می‌پذیرند و نه نمایش می‌دهند. .IP اگر نام یک درگاه یا جدول حاوی نویسه‌های خاص باشد یا ممکن باشد با یک کلیدواژه درون یک جریان اشتباه گرفته شود، می‌تواند درون گیومه دوتایی قرار گیرد (با گریز از پوسته). در صورت لزوم، می‌توان از توالی‌های گریز به سبک JSON در داخل نقل‌قول استفاده کرد، همان‌طور که در RFC 7159 مشخص شده است. هنگام نمایش نام‌های درگاه و جدول، \fBovs\-ofctl\fR هر نامی را که با یک حرف و به دنبال آن حروف یا ارقام آغاز نشود، در گیومه قرار می‌دهد. .IP سامانه Open vSwitch پشتیبانی از نام‌های درگاه و این گزینه‌ها را اضافه کرد. نسخه 2.10 سامانه Open vSwitch پشتیبانی از نام‌های جدول را افزود. نسخه‌های قبلی همیشه طوری رفتار می‌کردند که گویی \fB\-\-no\-names\fR مشخص شده است. .IP سامانه Open vSwitch خود محدودیتی برای طول نام‌های درگاه قائل نیست، اما پروتکل OpenFlow نام درگاه را به 15 بایت محدود می‌کند. از آنجا که \fBovs\-ofctl\fR از OpenFlow برای بازیابی نگاشت بین نام‌ها و شماره‌های درگاه استفاده می‌کند، نام‌های طولانی‌تر از این حد، هم برای نمایش و هم برای پذیرش کوتاه (truncate) می‌شوند. کوتاه‌سازی همچنین می‌تواند باعث شود نام‌های متفاوتی که طولانی هستند یکسان به نظر برسند؛ زمانی که یک سوئیچ دارای دو درگاه با نام یکسان (پس از کوتاه‌سازی) باشد، \fBovs\-ofctl\fR از نمایش یا پذیرش آن نام خودداری کرده و در عوض از شماره استفاده می‌کند. .IP پروتکل OpenFlow و Open vSwitch نام جدول‌ها را به 32 بایت محدود می‌کنند. . .IP "\fB\-\-stats\fR" .IQ "\fB\-\-no\-stats\fR" دستور \fBdump\-flows\fR به طور پیش‌فرض، یا با \fB\-\-stats\fR، مدت زمان جریان، تعداد بسته‌ها و بایت‌ها، و سن بیکاری و سخت (idle and hard age) را در خروجی خود می‌گنجاند. با \fB\-\-no\-stats\fR، تمام این موارد و همچنین مقادیر کوکی و شناسه‌های جدول را در صورتی که صفر باشند حذف می‌کند. . .IP "\fB\-\-read-only\fR" دستورات خواندن/نوشتن را اجرا نمی‌کند. . .IP "\fB\-\-bundle\fR" تغییرات جریان را به عنوان یک تراکنش بسته تغییرات اتمیک OpenFlow 1.4 اجرا می‌کند. .RS .IP \(bu درون یک بسته تغییرات (bundle)، تمام تغییرات جریان به ترتیبی که ظاهر می‌شوند و به صورت یک تراکنش اتمیک منفرد پردازش می‌گردند، به این معنی که اگر یکی از آن‌ها با شکست مواجه شود، کل تراکنش با شکست مواجه شده و هیچ تغییری در جدول جریان \fIswitch\fR اعمال نخواهد شد، و هر بسته مسیر داده که از جدول‌های OpenFlow عبور می‌کند جدول‌های جریان را یا مانند وضعیت پیش از تراکنش می‌بیند، یا پس از اینکه تمام تغییرات جریان موجود در بسته با موفقیت اعمال شدند. .IP \(bu شروع و پایان دستورات ویرایش جدول جریان در یک بسته تغییرات با پیام‌های کنترل بسته OpenFlow 1.4 مشخص می‌شوند، که جریان دادن دستورات گنجانده‌شده را بدون نیاز به موانع (barriers) صریح OpenFlow که در غیر این صورت پس از هر دستور ویرایش جدول جریان استفاده می‌شوند، ممکن می‌سازد. این امر ممکن است اجرای تغییرات بزرگ را به عنوان یک بسته تغییرات سریع‌تر کند. .IP \(bu بسته‌های تغییرات به OpenFlow 1.4 یا بالاتر نیاز دارند. گزینه صریح \fB-O OpenFlow14\fR لازم نیست، اما ممکن است نیاز باشد با تنظیم ستون \fIprotocols\fR در OVSDB در جدول \fIbridge\fR، پشتیبانی از OpenFlow 1.4 را برای OVS فعال کنید. .RE . .IP "\fB\-O \fR[\fIversion\fR[\fB,\fIversion\fR]...]\fR" .IQ "\fB\-\-protocols=\fR[\fIversion\fR[\fB,\fIversion\fR]...]\fR" نسخه‌های پروتکل OpenFlow را که هنگام برقراری یک نشست OpenFlow مجاز هستند تعیین می‌کند. . .IP این نسخه‌های پروتکل به طور پیش‌فرض فعال هستند: . .RS .IP \(bu \fBOpenFlow10\fR، برای OpenFlow 1.0. .RE . نسخه‌های پروتکل زیر عموماً پشتیبانی می‌شوند، اما برای سازگاری با نسخه‌های قدیمی‌تر Open vSwitch به طور پیش‌فرض فعال نیستند: . .RS .IP \(bu \fBOpenFlow11\fR، برای OpenFlow 1.1. . .IP \(bu \fBOpenFlow12\fR، برای OpenFlow 1.2. . .IP \(bu \fBOpenFlow13\fR، برای OpenFlow 1.3. . .IP \(bu \fBOpenFlow14\fR، برای OpenFlow 1.4. . .IP \(bu \fBOpenFlow15\fR، برای OpenFlow 1.5. .RE . .IP "\fB\-F \fIformat\fR[\fB,\fIformat\fR...]" .IQ "\fB\-\-flow\-format=\fIformat\fR[\fB,\fIformat\fR...]" برنامه \fBovs\-ofctl\fR از قالب‌های جریان منفرد زیر پشتیبانی می‌کند، که هر تعدادی از آن‌ها ممکن است به عنوان \fIformat\fR فهرست شوند: .RS .IP "\fBOpenFlow10\-table_id\fR" این قالب استاندارد جریان در OpenFlow 1.0 است. تمام سوئیچ‌های OpenFlow و تمام نسخه‌های Open vSwitch از این قالب جریان پشتیبانی می‌کنند. . .IP "\fBOpenFlow10+table_id\fR" این قالب استاندارد جریان در OpenFlow 1.0 به علاوه یک افزونه Nicira است که به \fBovs\-ofctl\fR اجازه می‌دهد جدول جریانی را که یک جریان خاص باید در آن قرار گیرد مشخص کند. سامانه Open vSwitch نسخه 1.2 و بالاتر از این قالب جریان پشتیبانی می‌کنند. . .IP "\fBNXM\-table_id\fR (Nicira Extended Match)" این افزونه Nicira برای OpenFlow انعطاف‌پذیر و قابل گسترش است. این قالب از تمام افزونه‌های جریان Nicira مانند \fBtun_id\fR و ثبات‌ها پشتیبانی می‌کند. نسخه 1.1 و بالاتر Open vSwitch از این قالب جریان پشتیبانی می‌کنند. . .IP "\fBNXM+table_id\fR (Nicira Extended Match)" این مورد تطبیق گسترش‌یافته Nicira را با توانایی قرار دادن یک جریان در یک جدول خاص ترکیب می‌کند. سامانه Open vSwitch نسخه 1.2 و بالاتر از این قالب جریان پشتیبانی می‌کنند. . .IP "\fBOXM-OpenFlow12\fR" .IQ "\fBOXM-OpenFlow13\fR" .IQ "\fBOXM-OpenFlow14\fR" .IQ "\fBOXM-OpenFlow15\fR" این‌ها قالب‌های استاندارد جریان OXM (OpenFlow Extensible Match) در OpenFlow 1.2 و بالاتر هستند. .RE . .IP برنامه \fBovs\-ofctl\fR همچنین از اختصارات زیر برای مجموعه‌ای از قالب‌های جریان پشتیبانی می‌کند: .RS .IP "\fBany\fR" هر قالب جریان پشتیبانی‌شده. .IP "\fBOpenFlow10\fR" قالب‌های \fBOpenFlow10\-table_id\fR یا \fBOpenFlow10+table_id\fR. .IP "\fBNXM\fR" قالب‌های \fBNXM\-table_id\fR یا \fBNXM+table_id\fR. .IP "\fBOXM\fR" قالب‌های \fBOXM-OpenFlow12\fR، \fBOXM-OpenFlow13\fR یا \fBOXM-OpenFlow14\fR. .RE . .IP برای دستوراتی که جدول جریان را تغییر می‌دهند، \fBovs\-ofctl\fR به طور پیش‌فرض پرکاربردترین قالب جریانی را که از جریان‌های در حال افزودن پشتیبانی می‌کند مذاکره می‌نماید. برای دستوراتی که جدول جریان را استعلام می‌کنند، \fBovs\-ofctl\fR به طور پیش‌فرض از پیشرفته‌ترین قالب پشتیبانی‌شده توسط سوئیچ استفاده می‌کند. .IP این گزینه، که در آن \fIformat\fR فهرستی از یک یا چند قالب جداشده با کاما از موارد فهرست‌شده در بالا است، انتخاب قالب جریان توسط \fBovs\-ofctl\fR را محدود می‌کند. چنانچه دستوری نتواند با استفاده از یکی از قالب‌های جریان مشخص‌شده طبق درخواست کار کند، \fBovs\-ofctl\fR یک خطای مهلک گزارش خواهد داد. . .IP "\fB\-P \fIformat\fR" .IQ "\fB\-\-packet\-in\-format=\fIformat\fR" برنامه \fBovs\-ofctl\fR از قالب‌های «packet-in» زیر، به ترتیب افزایش قابلیت‌ها، پشتیبانی می‌کند: .RS .IP "\fBstandard\fR" این از پیام \fBOFPT_PACKET_IN\fR استفاده می‌کند، که پیام استاندارد «packet-in» برای هر نسخه معین OpenFlow است. هر سوئیچ OpenFlow که از نسخه مشخصی از OpenFlow پشتیبانی کند، این قالب را نیز پشتیبانی می‌کند. . .IP "\fBnxt_packet_in\fR" این از پیام \fBNXT_PACKET_IN\fR استفاده می‌کند، که بسیاری از قابلیت‌های پیام‌های «packet-in» در OpenFlow 1.1 و بالاتر را پیش از اینکه آن نسخه‌های OpenFlow در Open vSwitch در دسترس باشند اضافه کرد. سامانه Open vSwitch نسخه 1.1 و بالاتر از این قالب پشتیبانی می‌کنند. با این حال، تنها Open vSwitch 2.6 و بالاتر از آن برای OpenFlow 1.1 و بالاتر پشتیبانی می‌کنند (البته دلیل چندانی برای استفاده از آن با این نسخه‌های OpenFlow وجود ندارد). . .IP "\fBnxt_packet_in2\fR" این از پیام \fBNXT_PACKET_IN2\fR استفاده می‌کند که قابل گسترش بوده و نیاز به تعریف قالب‌های جدید در آینده را برطرف می‌سازد. به ویژه، این قالب از ارسال داده‌های دلخواه ارائه‌شده توسط کاربر به یک کنترل‌کننده با استفاده از گزینه \fBuserdata\fR در اقدام \fBcontroller\fR پشتیبانی می‌کند. سامانه Open vSwitch نسخه 2.6 و بالاتر از این قالب پشتیبانی می‌کنند. . .RE .IP بدون این گزینه، \fBovs\-ofctl\fR در صورت پشتیبانی سوئیچ، \fBnxt_packet_in2\fR را ترجیح می‌دهد. در غیر این صورت، اگر OpenFlow 1.0 در حال استفاده باشد، \fBovs\-ofctl\fR در صورت پشتیبانی سوئیچ، \fBnxt_packet_in\fR را ترجیح می‌دهد. در غیر این صورت، \fBovs\-ofctl\fR به قالب بسته \fBstandard\fR بازمی‌گردد. هنگامی که این گزینه مشخص شود، \fBovs\-ofctl\fR بر قالب انتخاب‌شده پافشاری می‌کند. اگر سوئیچ از قالب درخواستی پشتیبانی نکند، \fBovs\-ofctl\fR یک خطای مهلک گزارش خواهد داد. .IP پیش از نسخه 2.6، سامانه Open vSwitch قالب \fBstandard\fR را \fBopenflow10\fR و قالب \fBnxt_packet_in\fR را \fBnxm\fR می‌نامید، و \fBovs\-ofctl\fR همچنان این نام‌ها را به عنوان مترادف می‌پذیرد. (نام \fBopenflow10\fR یک نام‌گذاری اشتباه بود زیرا این قالب در واقع از یک نسخه OpenFlow به نسخه دیگر تفاوت دارد؛ این قالب لزوماً و منحصراً قالب OpenFlow 1.0 نیست. به طور مشابه، هنگامی که \fBnxt_packet_in2\fR معرفی شد، نام \fBnxm\fR گیج‌کننده شد زیرا آن نیز از OXM/NXM استفاده می‌کند.) . .IP این گزینه تنها دستور \fBmonitor\fR را تحت تأثیر قرار می‌دهد. . .IP "\fB\-\-timestamp\fR" پیش از هر بسته دریافتی، یک برچسب زمان (timestamp) چاپ می‌کند. این گزینه فقط دستورات \fBmonitor\fR، \fBsnoop\fR و \fBofp\-parse\-pcap\fR را تحت تأثیر قرار می‌دهد. . .IP "\fB\-m\fR" .IQ "\fB\-\-more\fR" میزان جزئیات پیام‌های OpenFlow چاپ‌شده و ثبت‌شده توسط دستورات \fBovs\-ofctl\fR را افزایش می‌دهد. برای افزایش بیشتر جزئیات، این گزینه را بیش از یک بار مشخص کنید. . .IP \fB\-\-sort\fR[\fB=\fIfield\fR] .IQ \fB\-\-rsort\fR[\fB=\fIfield\fR] خروجی را بر اساس فیلد جریان \fIfield\fR به ترتیب صعودی (\fB\-\-sort\fR) یا نزولی (\fB\-\-rsort\fR) نمایش می‌دهد، که در آن \fIfield\fR هر یک از فیلدهایی است که برای تطبیق مجاز هستند یا \fBpriority\fR برای مرتب‌سازی بر اساس اولویت. هنگامی که \fIfield\fR حذف شود، خروجی بر اساس اولویت مرتب می‌شود. برای مرتب‌سازی بر اساس چند فیلد، این گزینه‌ها را چندین بار مشخص کنید. .IP هر جریان معین لزوماً مقداری را برای یک فیلد خاص تعیین نمی‌کند. این امر نیازمند برخورد ویژه‌ای است: .RS .IP \(bu جریانی که هیچ بخشی از یک فیلد مورد استفاده برای مرتب‌سازی را مشخص نمی‌کند، پس از تمام جریان‌هایی که فیلد را مشخص می‌کنند مرتب می‌شود. برای مثال، \fB\-\-sort=tcp_src\fR تمام جریان‌هایی را که درگاه مبدأ TCP را مشخص می‌کنند به ترتیب صعودی مرتب کرده و به دنبال آن جریان‌هایی می‌آیند که اصلاً درگاه مبدأ TCP را مشخص نکرده‌اند. .IP \(bu جریانی که تنها برخی از بیت‌های یک فیلد را مشخص می‌کند، به گونه‌ای مرتب می‌شود که گویی بیت‌های دارای نویسه عام صفر بوده‌اند. برای مثال، \fB\-\-sort=nw_src\fR جریانی را که \fBnw_src=192.168.0.0/24\fR را مشخص کرده همانند \fBnw_src=192.168.0.0\fR مرتب خواهد کرد. .RE .IP این گزینه‌ها در حال حاضر تنها خروجی \fBdump\-flows\fR را تحت تأثیر قرار می‌دهند. . .SS "گزینه‌های دیمن (Daemon Options)" .ds DD \ \fBovs\-ofctl\fR تنها هنگام اجرای دستورات \fBmonitor\fR یا \fBsnoop\fR در پس‌زمینه قرار می‌گیرد. .PP گزینه‌های زیر روی پلتفرم‌های مبتنی بر POSIX معتبر هستند. .TP \fB\-\-pidfile\fR[\fB=\fIpidfile\fR] باعث می‌شود فایلی (به طور پیش‌فرض \fB\*(PN.pid\fR) ایجاد شود که نشان‌دهنده PID فرآیند در حال اجرا است. اگر آرگومان \fIpidfile\fR مشخص نشده باشد، یا اگر با \fB/\fR آغاز نشود، در مسیر \fB/run/openvswitch\fR ایجاد می‌شود. .IP اگر \fB\-\-pidfile\fR مشخص نشود، هیچ فایل pidfile ایجاد نمی‌شود. . .TP \fB\-\-overwrite\-pidfile\fR به طور پیش‌فرض، هنگامی که \fB\-\-pidfile\fR مشخص شده باشد و فایل pidfile مشخص‌شده از قبل وجود داشته و توسط یک فرآیند در حال اجرا قفل شده باشد، \fB\*(PN\fR از شروع به کار خودداری می‌کند. مشخص کردن \fB\-\-overwrite\-pidfile\fR باعث می‌شود تا به جای آن روی pidfile بازنویسی شود. .IP هنگامی که \fB\-\-pidfile\fR مشخص نشده باشد، این گزینه هیچ اثری ندارد. . .IP \fB\-\-detach\fR برنامه \fB\*(PN\fR را به عنوان یک فرآیند پس‌زمینه اجرا می‌کند. فرآیند فورک می‌شود، و در فرآیند فرزند یک نشست جدید آغاز می‌کند، توصیف‌کننده‌های استاندارد فایل را می‌بندد (که اثر جانبی آن غیرفعال شدن ثبت وقایع در کنسول است)، و دایرکتوری کاری جاری خود را به دایرکتوری ریشه تغییر می‌دهد (مگر اینکه \fB\-\-no\-chdir\fR مشخص شده باشد). پس از اینکه فرآیند فرزند مقداردهی اولیه خود را به پایان رساند، فرآیند والد خارج می‌شود. \*(DD . .TP \fB\-\-monitor\fR یک فرآیند اضافی برای نظارت بر دیمن \fB\*(PN\fR ایجاد می‌کند. اگر دیمن به دلیل سیگنالی که نشان‌دهنده خطای برنامه‌نویسی است (\fBSIGABRT\fR، \fBSIGALRM\fR، \fBSIGBUS\fR، \fBSIGFPE\fR، \fBSIGILL\fR، \fBSIGPIPE\fR، \fBSIGSEGV\fR، \fBSIGXCPU\fR یا \fBSIGXFSZ\fR) متوقف شود، آنگاه فرآیند ناظر نسخه جدیدی از آن را راه‌اندازی می‌کند. اگر دیمن از بین برود یا به دلیل دیگری خارج شود، فرآیند ناظر نیز پایان می‌یابد. .IP این گزینه معمولاً همراه با \fB\-\-detach\fR استفاده می‌شود، اما بدون آن نیز کار می‌کند. . .TP \fB\-\-no\-chdir\fR به طور پیش‌فرض، هنگامی که \fB\-\-detach\fR مشخص شده باشد، \fB\*(PN\fR پس از جدا شدن، دایرکتوری کاری جاری خود را به دایرکتوری ریشه تغییر می‌دهد. در غیر این صورت، فراخوانی \fB\*(PN\fR از یک دایرکتوری که با بی‌دقتی انتخاب شده باشد مانع از این می‌شود که مدیر سیستم بتواند سیستم‌فایلی را که آن دایرکتوری را در بر دارد جدا (unmount) کند. .IP مشخص کردن \fB\-\-no\-chdir\fR این رفتار را متوقف کرده و مانع تغییر دایرکتوری کاری جاری توسط \fB\*(PN\fR می‌شود. این ویژگی ممکن است برای جمع‌آوری فایل‌های core مفید باشد، زیرا رفتار معمول این است که رونوشت‌های حافظه (core dumps) در دایرکتوری کاری جاری نوشته شوند و دایرکتوری ریشه گزینه مناسبی برای این منظور نیست. .IP این گزینه هنگامی که \fB\-\-detach\fR مشخص نشده باشد هیچ اثری ندارد. . .TP \fB\-\-no\-self\-confinement\fR به طور پیش‌فرض، دیمن تلاش می‌کند تا خود را برای کار با فایل‌های زیر دایرکتوری‌های شناخته‌شده‌ای که در زمان ساخت تعیین شده‌اند محدود سازد. بهتر است به این رفتار پیش‌فرض پایبند باشید و از این پرچم استفاده نکنید مگر اینکه سیستم کنترل دسترسی دیگری برای محدودسازی دیمن به کار گرفته شده باشد. توجه داشته باشید که برخلاف سایر پیاده‌سازی‌های کنترل دسترسی که معمولاً از فضای هسته اعمال می‌شوند (مانند DAC یا MAC)، خود‌محدودسازی از سمت خود دیمن در فضای کاربری اعمال می‌شود و بنابراین نباید به عنوان یک راهبرد مهار کامل نگریسته شود، بلکه باید به عنوان یک لایه امنیتی افزوده در نظر گرفته شود. . .TP \fB\-\-user\fR باعث می‌شود \fB\*(PN\fR به عنوان کاربر متفاوتی که در قالب "user:group" تعیین شده اجرا شود، و در نتیجه بیشتر امتیازات ریشه را کنار بگذارد. فرم‌های کوتاه "user" و ":group" نیز مجاز هستند که به ترتیب برای کاربر یا گروه جاری لحاظ می‌شوند. تنها دیمن‌هایی که توسط کاربر ریشه راه‌اندازی شده باشند این آرگومان را می‌پذیرند. .IP در لینوکس، پیش از واگذاری امتیازات ریشه، قابلیت‌های CAP_IPC_LOCK و CAP_NET_BIND_SERVICES به دیمن‌ها اعطا خواهد شد. دیمن‌هایی که با یک مسیر داده تعامل دارند، مانند \fBovs\-vswitchd\fR، سه قابلیت دیگر یعنی CAP_NET_ADMIN، CAP_NET_BROADCAST و CAP_NET_RAW را نیز دریافت می‌کنند. تغییر قابلیت‌ها حتی در صورتی که کاربر جدید ریشه باشد اعمال خواهد شد. .IP "\fB\-\-unixctl=\fIsocket\fR" نام سوکت کنترلی را تعیین می‌کند که \fB\*(PN\fR بر روی آن به دستورات مدیریت زمان اجرا گوش می‌دهد (به بخش \fBدستورات مدیریت زمان اجرا\fR در زیر مراجعه کنید). اگر \fIsocket\fR با \fB/\fR آغاز نشود، به صورت نسبی نسبت به \fB/run/openvswitch\fR تفسیر می‌شود. اگر اصلاً از \fB\-\-unixctl\fR استفاده نشود، سوکت پیش‌فرض \fB/run/openvswitch/\*(PN.\fIpid\fB.ctl\fR خواهد بود، که در آن \fIpid\fR شناسه فرآیند \fB\*(PN\fR است. .IP مشخص کردن \fBnone\fR برای \fIsocket\fR ویژگی سوکت کنترلی را غیرفعال می‌سازد. . .SS "گزینه‌های زیرساخت کلید عمومی (Public Key Infrastructure Options)" .IP "\fB\-p\fR \fIprivkey.pem\fR" .IQ "\fB\-\-private\-key=\fIprivkey.pem\fR" یک فایل PEM حاوی کلید خصوصی مورد استفاده به عنوان هویت \fB\*(PN\fR برای اتصالات خروجی SSL/TLS را مشخص می‌کند. . .IP "\fB\-c\fR \fIcert.pem\fR" .IQ "\fB\-\-certificate=\fIcert.pem\fR" یک فایل PEM حاوی گواهی را مشخص می‌کند که معتبر بودن کلید خصوصی مشخص‌شده با \fB\-p\fR یا \fB\-\-private\-key\fR را تصدیق می‌نماید. گواهی باید توسط مرجع صدور گواهی (CA) امضا شده باشد که طرف مقابل در اتصالات SSL/TLS برای تأیید آن استفاده خواهد کرد. . .IP "\fB\-C\fR \fIcacert.pem\fR" .IQ "\fB\-\-ca\-cert=\fIcacert.pem\fR" یک فایل PEM حاوی گواهی CA را مشخص می‌کند که \fB\*(PN\fR باید برای تأیید گواهی‌های ارائه‌شده به آن توسط همتایان SSL/TLS استفاده کند. (این ممکن است همان گواهی باشد که همتایان SSL/TLS برای تأیید گواهی مشخص‌شده در \fB\-c\fR یا \fB\-\-certificate\fR استفاده می‌کنند، یا بسته به طرح PKI مورد استفاده ممکن است گواهی متفاوتی باشد.) . .IP "\fB\-C none\fR" .IQ "\fB\-\-ca\-cert=none\fR" تأیید اعتبار گواهی‌های ارائه‌شده توسط همتایان SSL/TLS را غیرفعال می‌کند. این یک خطر امنیتی ایجاد می‌کند، زیرا به این معنی است که گواهی‌ها را نمی‌توان برای اطمینان از تعلق آن‌ها به میزبان‌های معتمد شناخته‌شده تأیید کرد. . .IP "\fB\-\-ssl\-server\-name=\fIservername\fR" نام سرور مورد استفاده برای شناسه نام سرور در TLS (یا SNI) را مشخص می‌کند. به طور پیش‌فرض، نام میزبان برگرفته از رشته اتصال برای SNI استفاده می‌شود. این گزینه اجازه می‌دهد نام میزبان SNI بازنویسی شود، که هنگام اتصال از طریق پروکسی‌ها یا مش‌های خدمات (service meshes) که نقطه پایانی اتصال با نام سرور مورد نظر متفاوت است مفید است. .IP "\fB\-v\fR[\fIspec\fR]" .IQ "\fB\-\-verbose=\fR[\fIspec\fR]" . سطوح ثبت وقایع (logging) را تعیین می‌کند. بدون هیچ آرگومان \fIspec\fR، سطح لاگ برای هر ماژول و مقصد روی \fBdbg\fR تنظیم می‌شود. در غیر این صورت، \fIspec\fR فهرستی از کلمات جداشده با فاصله یا ویرگول یا دونقطه است، حداکثر یکی از هر دسته زیر: . .RS .IP \(bu یک نام ماژول معتبر، همان‌طور که توسط دستور \fBvlog/list\fR در \fBovs\-appctl\fR(8) نمایش داده می‌شود، تغییر سطح لاگ را به ماژول مشخص‌شده محدود می‌کند. . .IP \(bu عبارت‌های \fBsyslog\fR، \fBconsole\fR یا \fBfile\fR، برای محدود کردن تغییر سطح لاگ به ترتیب فقط به لاگ سیستم، به کنسول یا به یک فایل. (اگر \fB\-\-detach\fR مشخص شده باشد، \fB\*(PN\fR توصیف‌کننده‌های استاندارد فایل خود را می‌بندد، بنابراین ثبت در کنسول هیچ اثری نخواهد داشت.) . .IP \(bu عبارت‌های \fBoff\fR، \fBemer\fR، \fBerr\fR، \fBwarn\fR، \fBinfo\fR یا \fBdbg\fR، برای کنترل سطح لاگ. پیام‌های با شدت تعیین‌شده یا بالاتر ثبت می‌شوند و پیام‌های با شدت پایین‌تر فیلتر خواهند شد. مقدار \fBoff\fR تمام پیام‌ها را فیلتر می‌کند. برای تعریفی از هر سطح لاگ به \fBovs\-appctl\fR(8) مراجعه فرمایید. .RE . .IP بزرگی و کوچکی حروف در \fIspec\fR اهمیتی ندارد. .IP صرف نظر از سطوح لاگ تعیین‌شده برای \fBfile\fR، ثبت وقایع در فایل انجام نخواهد شد مگر اینکه \fB\-\-log\-file\fR نیز مشخص شده باشد (زیر را ببینید). .IP برای سازگاری با نسخه‌های قدیمی‌تر OVS، کلمه \fBany\fR پذیرفته می‌شود اما هیچ اثری ندارد. . .IP "\fB\-v\fR" .IQ "\fB\-\-verbose\fR" حداکثر سطح پرحرفی (verbosity) لاگ را تنظیم می‌کند که معادل \fB\-\-verbose=dbg\fR است. . .IP "\fB\-vPATTERN:\fIdestination\fB:\fIpattern\fR" .IQ "\fB\-\-verbose=PATTERN:\fIdestination\fB:\fIpattern\fR" الگوی لاگ را برای \fIdestination\fR روی \fIpattern\fR تنظیم می‌کند. برای شرح نحو معتبر برای \fIpattern\fR به \fBovs\-appctl\fR(8) مراجعه کنید. . .IP "\fB\-vFACILITY:\fIfacility\fR" .IQ "\fB\-\-verbose=FACILITY:\fIfacility\fR" تسهیلات (facility) استاندارد RFC5424 پیام لاگ را تنظیم می‌کند. آرگومان \fIfacility\fR می‌تواند یکی از موارد زیر باشد: \fBkern\fR، \fBuser\fR، \fBmail\fR، \fBdaemon\fR، \fBauth\fR، \fBsyslog\fR، \fBlpr\fR، \fBnews\fR، \fBuucp\fR، \fBclock\fR، \fBftp\fR، \fBntp\fR، \fBaudit\fR، \fBalert\fR، \fBclock2\fR، \fBlocal0\fR، \fBlocal1\fR، \fBlocal2\fR، \fBlocal3\fR، \fBlocal4\fR، \fBlocal5\fR، \fBlocal6\fR یا \fBlocal7\fR. اگر این گزینه مشخص نشود، \fBdaemon\fR به عنوان پیش‌فرض برای syslog سیستم محلی استفاده می‌شود و هنگام ارسال پیام به مقصد ارائه‌شده از طریق گزینه \fB\-\-syslog\-target\fR از \fBlocal0\fR استفاده می‌شود. . .TP \fB\-\-log\-file\fR[\fB=\fIfile\fR] ثبت وقایع در یک فایل را فعال می‌کند. اگر \fIfile\fR مشخص شده باشد، به عنوان نام دقیق فایل لاگ استفاده می‌شود. نام پیش‌فرض فایل لاگ در صورت حذف \fIfile\fR برابر با \fB/var/log/openvswitch/\*(PN.log\fR است. . .IP "\fB\-\-syslog\-target=\fIhost\fB:\fIport\fR" علاوه بر syslog سیستم، پیام‌های syslog را به درگاه UDP مشخص‌شده \fIport\fR روی میزبان \fIhost\fR ارسال می‌کند. آرگومان \fIhost\fR باید یک آدرس IP عددی باشد و نه یک نام میزبان. . .IP "\fB\-\-syslog\-method=\fImethod\fR" روش ارسال پیام‌های syslog به دیمن syslog را مشخص می‌کند. اشکال زیر پشتیبانی می‌شوند: .RS .IP \(bu \fBlibc\fR، استفاده از تابع \fBsyslog()\fR در libc. نکته منفی استفاده از این گزینه این است که libc پیش از ارسال واقعی پیام به دیمن syslog از طریق سوکت دامنه یونیکس \fB/dev/log\fR، یک پیشوند ثابت به هر پیام اضافه می‌کند. .IP \(bu \fBunix:\fIfile\fR\fR، استفاده مستقیم از سوکت دامنه یونیکس. با این گزینه امکان تعیین قالب پیام دلخواه وجود دارد. با این حال، \fBrsyslogd 8.9\fR و نسخه‌های قدیمی‌تر به هر حال از تابع تجزیه‌کننده با کد سخت (hard-coded) استفاده می‌کنند که استفاده از سوکت دامنه یونیکس را محدود می‌سازد. اگر می‌خواهید از قالب پیام دلخواه با نسخه‌های قدیمی‌تر \fBrsyslogd\fR استفاده کنید، در عوض از سوکت UDP به آدرس IP میزبان محلی (localhost) استفاده کنید. .IP \(bu \fBudp:\fIip\fR:\fIport\fR\fR، استفاده از سوکت UDP. با این روش امکان استفاده از قالب پیام دلخواه با نسخه‌های قدیمی‌تر \fBrsyslogd\fR نیز وجود دارد. هنگام ارسال پیام‌های syslog از طریق سوکت UDP باید احتیاط‌های بیشتری را مد نظر قرار داد؛ به عنوان مثال، دیمن syslog باید برای گوش فرادادن به درگاه UDP مشخص‌شده پیکربندی شود، قوانین تصادفی iptables ممکن است با ترافیک محلی syslog تداخل داشته باشند، و برخی ملاحظات امنیتی وجود دارند که در مورد سوکت‌های UDP اعمال می‌شوند اما روی سوکت‌های دامنه یونیکس اعمال نمی‌گردند. .IP \(bu \fBnull\fR، تمام پیام‌های ثبت‌شده در syslog را دور می‌ریزد. .RE .IP مقدار پیش‌فرض از متغیر محیطی \fBOVS_SYSLOG_METHOD\fR گرفته می‌شود؛ در صورت عدم تنظیم، مقدار پیش‌فرض \fBlibc\fR است. .IP "\fB\-\-color\fR[\fB=\fR\fIwhen\fR]" . رنگ‌آمیزی خروجی (برای برخی دستورات)؛ مقدار \fIwhen\fR می‌تواند \fBnever\fR، \fBalways\fR یا \fBauto\fR (پیش‌فرض) باشد. . .RS .PP تنها برخی از دستورات از رنگ‌آمیزی خروجی پشتیبانی می‌کنند. نام‌های رنگ و رنگ‌های پیش‌فرض ممکن است در نسخه‌های بعدی تغییر کنند. .PP متغیر محیطی \fBOVS_COLORS\fR می‌تواند برای تعیین رنگ‌های سفارشی کاربر و سایر مشخصه‌ها به منظور برجسته‌سازی بخش‌های مختلف خروجی استفاده شود. در صورت تنظیم، مقدار آن فهرستی از قابلیت‌ها است که با دونقطه جدا شده و مقدار پیش‌فرض آن \fBac:01;31:dr=34:le=31:pm=36:pr=35:sp=33:vl=32\fR است. قابلیت‌های پشتیبانی‌شده در ابتدا برای رنگ‌آمیزی جریان‌ها در دستور \fBovs-ofctl dump-flows\fR \fIswitch\fR طراحی شده بودند و به شرح زیر هستند: .RS .TP \fBac=01;31\fR زیررشته SGR برای کلیدواژه \fBactions=\fR در یک جریان. مقدار پیش‌فرض متن پررنگ (bold) با رنگ پیش‌زمینه قرمز است. .TP \fBdr=34\fR زیررشته SGR برای کلیدواژه \fBdrop\fR. مقدار پیش‌فرض رنگ پیش‌زمینه آبی تیره است. .TP \fBle=31\fR زیررشته SGR برای کلیدواژه \fBlearn=\fR در یک جریان. مقدار پیش‌فرض رنگ پیش‌زمینه قرمز است. .TP \fBpm=36\fR زیررشته SGR برای نام‌های مشخصه تطبیق جریان. مقدار پیش‌فرض رنگ پیش‌زمینه فیروزه‌ای (cyan) است. .TP \fBpr=35\fR زیررشته SGR برای کلیدواژه‌هایی در یک جریان که آرگومان‌های درون پرانتز به دنبال آن‌ها می‌آید. مقدار پیش‌فرض رنگ پیش‌زمینه سرخابی (magenta) است. .TP \fBsp=33\fR زیررشته SGR برای برخی کلیدواژه‌های خاص در یک جریان، به ویژه: \fBtable=\fR، \fBpriority=\fR، \fBload:\fR، \fBoutput:\fR، \fBmove:\fR، \fBgroup:\fR، \fBCONTROLLER:\fR، \fBset_field:\fR، \fBresubmit:\fR، \fBexit\fR. مقدار پیش‌فرض رنگ پیش‌زمینه زرد است. .TP \fBvl=32\fR زیررشته SGR برای یک مشخصه تطبیق جریان منفرد فاقد نام فیلد. مقدار پیش‌فرض رنگ پیش‌زمینه سبز است. .RE .PP برای مقادیر مجاز و معنای آن‌ها به عنوان مشخصه‌های نویسه، بخش رندر گرافیکی انتخابی (Select Graphic Rendition یا SGR) را در مستندات ترمینال متنی مورد استفاده مشاهده فرمایید. .RE .IP "\fB\-h\fR" .IQ "\fB\-\-help\fR" یک پیام راهنمای خلاصه را روی کنسول چاپ می‌کند. . .IP "\fB\-V\fR" .IQ "\fB\-\-version\fR" اطلاعات نسخه را روی کنسول چاپ می‌کند. . .SH "دستورات مدیریت زمان اجرا (RUNTIME MANAGEMENT COMMANDS)" \fBovs\-appctl\fR(8) می‌تواند دستوراتی را به یک فرآیند در حال اجرای \fBovs\-ofctl\fR ارسال کند. دستورات پشتیبانی‌شده در زیر فهرست شده‌اند. . .IP "\fBexit\fR" باعث خروج تمیز برنامه \fBovs\-ofctl\fR می‌شود. این دستور تنها هنگام اجرای دستورات \fBmonitor\fR یا \fBsnoop\fR کاربرد دارد. . .IP "\fBofctl/set\-output\-file \fIfile\fR" باعث هدایت تمام خروجی‌های بعدی به \fIfile\fR به جای stderr می‌شود. این دستور تنها هنگام اجرای دستورات \fBmonitor\fR یا \fBsnoop\fR کاربرد دارد. . .IP "\fBofctl/send \fIofmsg\fR..." هر یک از پیام‌های \fIofmsg\fR را که به صورت دنباله‌ای از ارقام هگزادسیمال بیان‌کننده یک پیام OpenFlow هستند، روی اتصال OpenFlow ارسال می‌کند. این دستور تنها هنگام اجرای دستور \fBmonitor\fR مفید است. . .IP "\fBofctl/packet\-out \fIpacket-out\fR" یک پیام OpenFlow PACKET_OUT مشخص‌شده در \fBنحو خروج بسته (Packet-Out Syntax)\fR را روی اتصال OpenFlow ارسال می‌کند. برای اطلاعات بیشتر به بخش \fBنحو خروج بسته\fR مراجعه فرمایید. این دستور تنها هنگام اجرای دستور \fBmonitor\fR کاربرد دارد. . .IP "\fBofctl/barrier\fR" یک درخواست مانع (barrier request) در OpenFlow را روی اتصال OpenFlow ارسال کرده و منتظر پاسخ می‌ماند. این دستور تنها برای دستور \fBmonitor\fR مفید است. . .SH "مثال‌ها (EXAMPLES)" . مثال‌های زیر فرض می‌کنند که \fBovs\-vswitchd\fR پلی به نام \fBbr0\fR پیکربندی‌شده دارد. . .TP \fBovs\-ofctl dump\-tables br0\fR آمار جدول سوئیچ را چاپ می‌کند. (این خروجی پس از عبور مقداری ترافیک از آن جالب‌تر خواهد بود.) . .TP \fBovs\-ofctl dump\-flows br0\fR مدخل‌های جریان در سوئیچ را چاپ می‌کند. . .TP \fBovs\-ofctl add\-flow table=0 actions=learn(table=1,hard_timeout=10, NXM_OF_VLAN_TCI[0..11],output:NXM_OF_IN_PORT[]), resubmit(,1)\fR \fBovs\-ofctl add\-flow table=1 priority=0 actions=flood\fR یک سوئیچ یادگیری MAC لایه 2 را با استفاده از اقدام learn پیاده‌سازی می‌کند. . .TP \fBovs\-ofctl add\-flow br0 'table=0,priority=0 actions=load:3->NXM_NX_REG0[0..15],learn(table=0,priority=1,idle_timeout=10,NXM_OF_ETH_SRC[],NXM_OF_VLAN_TCI[0..11],output:NXM_NX_REG0[0..15]),output:2\fR در این کاربرد از اقدام learn، نخستین بسته از هر MAC مبدأ به درگاه 2 ارسال خواهد شد. بسته‌های بعدی با مهلت بیکاری 10 ثانیه به درگاه 3 فرستاده می‌شوند. هم نام‌های فیلد NXM و هم نام‌های فیلد تطبیق پذیرفته می‌شوند، مثلاً \fBNXM_NX_REG0\fR یا \fBreg0\fR برای نخستین ثبات، و براکت‌های خالی ممکن است حذف شوند. .IP مثال‌های بیشتر را می‌توان به صورت مستندشده در بخش‌های مرتبط یافت. . .SH "همچنین ببینید (SEE ALSO)" . .BR ovs\-fields (7), .BR ovs\-actions (7), .BR ovs\-appctl (8), .BR ovs\-vswitchd (8), .BR ovs\-vswitchd.conf.db (8)