.\" -*- 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\-vsctl 8 "4.0.0" "Open vSwitch" "Open vSwitch Manual" .\" This program's name: .ds PN ovs\-vsctl . .SH "نام (NAME)" ovs\-vsctl \- ابزاری برای پرس‌وجو و پیکربندی \fBovs\-vswitchd\fR . .SH "خلاصه دستور (SYNOPSIS)" \fBovs\-vsctl\fR [\fIگزینه‌ها\fR] \fB\-\-\fR [\fIگزینه‌ها\fR] \fIدستور\fR [\fIآرگومان‌ها\fR] [\fB\-\-\fR [\fIگزینه‌ها\fR] \fIدستور \fR[\fIآرگومان‌ها\fR]]... . .SH "توضیحات (DESCRIPTION)" برنامه \fBovs\-vsctl\fR با ارائه یک رابط سطح‌بالا به پایگاه داده پیکربندی، \fBovs\-vswitchd\fR(8) را پیکربندی می‌کند. برای مستندات جامع طرح‌واره پایگاه داده، به \fBovs\-vswitchd.conf.db\fR(5) مراجعه کنید. .PP دستور \fBovs\-vsctl\fR به یک فرآیند \fBovsdb\-server\fR که پایگاه داده پیکربندی Open vSwitch را نگهداری می‌کند متصل می‌شود. با استفاده از این اتصال، بسته به دستورات ارائه‌شده، پایگاه داده را پرس‌وجو کرده و در صورت نیاز تغییراتی را در آن اعمال می‌کند. سپس، در صورت اعمال هرگونه تغییر، به طور پیش‌فرض تا زمانی که \fBovs\-vswitchd\fR بازپیکربندی خود را به پایان نرسانده باشد منتظر مانده و پس از آن خارج می‌شود. (اگر از \fBovs\-vsctl\fR در شرایطی که \fBovs\-vswitchd\fR در حال اجرا نیست استفاده می‌کنید، از \fB\-\-no\-wait\fR استفاده کنید.) .PP دستور \fBovs\-vsctl\fR می‌تواند هر تعداد دستور را در یک بار اجرای واحد به انجام برساند که به صورت یک تراکنش اتمیک منفرد روی پایگاه داده پیاده‌سازی می‌شود. .PP خط فرمان \fBovs\-vsctl\fR با گزینه‌های سراسری آغاز می‌شود (برای جزئیات به بخش \fBگزینه‌ها (OPTIONS)\fR در زیر مراجعه کنید). گزینه‌های سراسری با یک یا چند دستور دنبال می‌شوند. هر دستور باید به تنهایی با \fB\-\-\fR به عنوان یک آرگومان خط فرمان آغاز شود تا از دستورات بعدی جدا گردد. (\fB\-\-\fR قبل از دستور اول اختیاری است.) خود دستور با گزینه‌های مختص به آن (در صورت وجود) شروع می‌شود و به دنبال آن نام دستور و هرگونه آرگومان قرار می‌گیرد. برای نمونه‌های نحوه نگارش، به بخش \fBمثال‌ها (EXAMPLES)\fR در زیر مراجعه کنید. . .SS "سازگاری با پل‌زنی VLAN در لینوکس (Linux VLAN Bridging Compatibility)" برنامه \fBovs\-vsctl\fR از مدل پل پیاده‌سازی‌شده توسط Open vSwitch پشتیبانی می‌کند که در آن یک پل واحد از پورت‌ها در چندین VLAN پشتیبانی به عمل می‌آورد. در این مدل، هر پورت روی یک پل یا یک پورت ترانک (trunk) است که احتمالاً بسته‌های برچسب‌خورده با هدرهای 802.1Q (مشخص‌کننده VLANها) را عبور می‌دهد، یا به یک VLAN ضمنی (implicit) واحد اختصاص داده شده است که هرگز با هدر 802.1Q برچسب‌گذاری نمی‌شود. .PP برای سازگاری با نرم‌افزارهای طراحی‌شده برای پل لینوکس (Linux bridge)، برنامه \fBovs\-vsctl\fR همچنین از مدلی پشتیبانی می‌کند که در آن ترافیک مرتبط با یک VLAN 802.1Q مشخص در یک پل جداگانه تفکیک می‌شود. شکل خاصی از دستور \fBadd\-br\fR (در زیر ببینید) یک «پل ساختگی» (fake bridge) را درون یک پل Open vSwitch ایجاد می‌کند تا این رفتار را شبیه‌سازی کند. هنگامی که چنین «پل ساختگی» فعال باشد، \fBovs\-vsctl\fR با آن بسیار شبیه به پلی مجزا از «پل والد» آن رفتار خواهد کرد، اما پیاده‌سازی واقعی در Open vSwitch تنها از یک پل استفاده می‌کند و پورت‌های روی پل ساختگی به VLAN ضمنی همان پل ساختگی که عضو آن هستند اختصاص می‌یابند. (یک پل ساختگی برای VLAN 0 بسته‌هایی را دریافت می‌کند که فاقد برچسب 802.1Q هستند یا برچسبی با VLAN 0 دارند.) . .SH "گزینه‌ها (OPTIONS)" . گزینه‌های زیر بر رفتار کلی \fBovs\-vsctl\fR تأثیر می‌گذارند. برخی از دستورات منفرد نیز گزینه‌های خاص خود را می‌پذیرند که درست قبل از نام دستور مشخص می‌شوند. اگر اولین دستور در خط فرمان دارای گزینه باشد، آن گزینه‌ها باید با \fB\-\-\fR از گزینه‌های سراسری جدا شوند. . .IP "\fB\-\-db=\fIserver\fR" سرور \fIserver\fR را به‌عنوان سرور پایگاه داده‌ای تعیین می‌کند که \fBovs\-vsctl\fR برای پرس‌وجو یا تغییر پیکربندی با آن ارتباط برقرار می‌کند. \fIserver\fR می‌تواند یکی از روش‌های اتصال فعال یا غیرفعال OVSDB باشد، همان‌طور که در \fBovsdb\fR(7) شرح داده شده است. پیش‌فرض \fBunix:/run/openvswitch/db.sock\fR است. .IP "\fB\-\-no\-wait\fR" از منتظر ماندن \fBovs\-vsctl\fR برای بازپیکربندی خودکار \fBovs\-vswitchd\fR مطابق با پایگاه داده تغییریافته جلوگیری می‌کند. این گزینه باید در صورتی استفاده شود که \fBovs\-vswitchd\fR در حال اجرا نباشد؛ در غیر این صورت، \fBovs\-vsctl\fR تا زمان شروع به کار \fBovs\-vswitchd\fR خارج نخواهد شد. .IP اگر دستورات مشخص‌شده پایگاه داده را تغییر ندهند، این گزینه هیچ تأثیری ندارد. . .IP "\fB\-\-no\-syslog\fR" به‌طور پیش‌فرض، \fBovs\-vsctl\fR آرگومان‌های خود و جزئیات هرگونه تغییری را که ایجاد می‌کند در لاگ سیستم ثبت می‌کند. این گزینه ثبت این لاگ‌ها را غیرفعال می‌کند. .IP این گزینه معادل \fB\-\-verbose=vsctl:syslog:warn\fR است. . .IP "\fB\-\-oneline\fR" قالب خروجی را به‌گونه‌ای تغییر می‌دهد که خروجی هر دستور در یک خط چاپ شود. نویسه‌های خط جدید که در حالت عادی خطوط را جدا می‌کنند به‌صورت \fB\\n\fR چاپ می‌شوند و هر نمونه از \fB\\\fR که در خروجی ظاهر شود دو برابر می‌شود. برای هر دستوری که خروجی ندارد یک خط خالی چاپ می‌کند. این گزینه بر قالب‌بندی خروجی دستورات \fBlist\fR یا \fBfind\fR تأثیری ندارد؛ بخش \fBگزینه‌های قالب‌بندی جدول (Table Formatting Options)\fR در زیر را ببینید. . .IP "\fB\-\-dry\-run\fR" از اعمال تغییرات واقعی در پایگاه داده توسط \fBovs\-vsctl\fR جلوگیری می‌کند. . .IP "\fB\-t \fIsecs\fR" .IQ "\fB\-\-timeout=\fIsecs\fR" به‌طور پیش‌فرض، یا با مقدار \fIsecs\fR برابر با \fB0\fR، \fBovs\-vsctl\fR برای همیشه منتظر پاسخ از پایگاه داده می‌ماند. این گزینه زمان اجرا را تقریباً به \fIsecs\fR ثانیه محدود می‌کند. اگر مهلت زمانی به پایان برسد، \fBovs\-vsctl\fR با سیگنال \fBSIGALRM\fR خارج می‌شود. (اتمام مهلت زمانی معمولاً فقط در صورتی رخ می‌دهد که برقراری ارتباط با پایگاه داده امکان‌پذیر نباشد یا بار سیستم بیش از حد باشد.) . .IP "\fB\-\-retry\fR" بدون این گزینه، اگر \fBovs\-vsctl\fR اتصال بیرونی به سرور پایگاه داده برقرار کند (حالت پیش‌فرض)، \fBovs\-vsctl\fR یک بار برای اتصال تلاش می‌کند و در صورت ناموفق بودن اتصال با یک خطا خارج می‌شود (که معمولاً به این معنی است که \fBovsdb\-server\fR در حال اجرا نیست). .IP با این گزینه، یا اگر \fB\-\-db\fR مشخص کند که \fBovs\-vsctl\fR باید منتظر اتصال ورودی از سرور پایگاه داده بماند، در این صورت \fBovs\-vsctl\fR برای همیشه منتظر اتصال به پایگاه داده خواهد ماند. .IP صرف‌نظر از این تنظیم، \fB\-\-timeout\fR همیشه مدت‌زمان انتظار \fBovs\-vsctl\fR را محدود می‌کند. . .SS "گزینه‌های قالب‌بندی جدول (Table Formatting Options)" این گزینه‌ها قالب خروجی دستورات \fBlist\fR و \fBfind\fR را کنترل می‌کنند. .IP "\fB\-f \fIformat\fR" .IQ "\fB\-\-format=\fIformat\fR" نوع قالب‌بندی جدول را تعیین می‌کند. انواع \fIformat\fR زیر در دسترس هستند: .RS .ie '\*(PN'ovsdb\-client' .IP "\fBtable\fR (پیش‌فرض)" .el .IP "\fBtable\fR" جدول‌های متنی دوبعدی با ستون‌های تراز شده. .ie '\*(PN'ovsdb\-client' .IP "\fBlist\fR" .el .IP "\fBlist\fR (پیش‌فرض)" فهرستی با یک ستون در هر خط و سطرهایی که با یک خط خالی جدا شده‌اند. .IP "\fBhtml\fR" جدول‌های HTML. .IP "\fBcsv\fR" مقادیر جداشده با کاما طبق تعریف RFC 4180. .IP "\fBjson\fR" قالب JSON طبق تعریف RFC 4627. خروجی دنباله‌ای از اشیاء JSON است که هر یک مربوط به یک جدول است. هر شیء JSON دارای اعضای زیر با مقادیر ذکر شده است: .RS .IP "\fBcaption\fR" عنوان جدول. اگر جدول عنوان نداشته باشد، این عضو حذف می‌شود. .IP "\fBheadings\fR" آرایه‌ای با یک عنصر به ازای هر ستون جدول. هر عنصر آرایه یک رشته است که سرستون مربوطه را مشخص می‌کند. .IP "\fBdata\fR" آرایه‌ای با یک عنصر به ازای هر سطر جدول. هر عنصر نیز یک آرایه با یک عنصر به ازای هر ستون جدول است. عناصر این آرایه سطح دوم، سلول‌هایی هستند که جدول را تشکیل می‌دهند. سلول‌هایی که نمایانگر داده‌ها یا انواع داده‌های OVSDB هستند در قالبی که در مشخصات OVSDB شرح داده شده بیان می‌شوند؛ سایر سلول‌ها به‌سادگی به‌صورت رشته‌های متنی نمایش داده می‌شوند. .RE .RE . .IP "\fB\-d \fIformat\fR" .IQ "\fB\-\-data=\fIformat\fR" قالب‌بندی سلول‌های درون جدول‌های خروجی را تعیین می‌کند، مگر اینکه قالب جدول روی \fBjson\fR تنظیم شده باشد، که در این صورت هنگام قالب‌بندی سلول‌ها همیشه از قالب‌بندی \fBjson\fR استفاده می‌شود. انواع \fIformat\fR زیر در دسترس هستند: .RS .IP "\fBstring\fR (پیش‌فرض)" قالب ساده شرح‌داده‌شده در .ie '\*(PN'ovs\-vsctl' بخش \fBمقادیر پایگاه داده (Database Values)\fR در زیر. .el بخش \fBمقادیر پایگاه داده (Database Values)\fR از \fBovs\-vsctl\fR(8). .IP "\fBbare\fR" قالب ساده با حذف علائم نگارشی: \fB[]\fR و \fB{}\fR در اطراف مجموعه‌ها، نگاشت‌ها و ستون‌های خالی حذف می‌شوند، موارد درون مجموعه‌ها و نگاشت‌ها با فاصله جدا می‌شوند و رشته‌ها هرگز در علامت نقل‌قول قرار نمی‌گیرند. تجزیه این قالب برای اسکریپت‌ها ممکن است آسان‌تر باشد. .IP "\fBjson\fR" قالب RFC 4627 JSON همان‌طور که در بالا شرح داده شد. .RE .IP . .IP "\fB\-\-no\-headings\fR" این گزینه سطر سرستون را که در حالت عادی در سطر اول خروجی جدول ظاهر می‌شود، حذف می‌کند. . .IP "\fB\-\-pretty\fR" به‌طور پیش‌فرض، JSON در خروجی تا حد ممکن فشرده چاپ می‌شود. این گزینه باعث می‌شود JSON در خروجی به شیوه‌ای خواناتر چاپ شود. اعضای اشیاء و عناصر آرایه‌ها هر کدام در یک خط همراه با تورفتگی چاپ می‌شوند. .IP این گزینه روی JSON در جدول‌ها تأثیری ندارد؛ آن‌ها همیشه به‌صورت فشرده چاپ می‌شوند. .IP "\fB\-\-bare\fR" معادل با \fB\-\-format=list \-\-data=bare \-\-no\-headings\fR. .IP "\fB\-\-max\-column-width=\fIn\fR" فقط برای خروجی جدول، عرض هر ستون را در خروجی به \fIn\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\-\-bootstrap\-ca\-cert=\fIcacert.pem\fR" هنگامی که \fIcacert.pem\fR وجود دارد، این گزینه تأثیری مشابه \fB\-C\fR یا \fB\-\-ca\-cert\fR دارد. اگر وجود نداشته باشد، \fB\*(PN\fR در اولین اتصال SSL/TLS خود تلاش می‌کند گواهی CA را از همتای SSL/TLS دریافت کرده و آن را در فایل PEM نام‌برده ذخیره کند. در صورت موفقیت، بلافاصله اتصال را قطع کرده و مجدداً متصل می‌شود، و از آن پس تمام اتصالات SSL/TLS باید با گواهی امضاشده توسط گواهی CA به‌دست‌آمده احراز هویت شوند. .IP \fBاین گزینه اتصال SSL/TLS را در معرض حمله مرد میانی (man-in-the-middle) در هنگام دریافت گواهی اولیه CA قرار می‌دهد\fR، اما ممکن است برای راه‌اندازی اولیه (bootstrapping) مفید باشد. .IP این گزینه تنها در صورتی مفید است که همتای SSL/TLS گواهی CA خود را به‌عنوان بخشی از زنجیره گواهی SSL/TLS ارسال کند. پروتکل‌های SSL/TLS سرور را ملزم به ارسال گواهی CA نمی‌کنند. .IP این گزینه با \fB\-C\fR و \fB\-\-ca\-cert\fR ناسازگار (مانعة‌الجمع) است. .IP "\fB\-\-peer\-ca\-cert=\fIpeer-cacert.pem\fR" یک فایل PEM را مشخص می‌کند که حاوی یک یا چند گواهی اضافی برای ارسال به همتایان SSL/TLS است. \fIpeer-cacert.pem\fR باید گواهی CA مورد استفاده برای امضای گواهی خود \fB\*(PN\fR باشد، یعنی گواهی مشخص‌شده در \fB\-c\fR یا \fB\-\-certificate\fR. اگر گواهی \fB\*(PN\fR خودامضا (self-signed) باشد، در این صورت \fB\-\-certificate\fR و \fB\-\-peer\-ca\-cert\fR باید یک فایل یکسان را مشخص کنند. .IP این گزینه در عملکرد عادی مفید نیست، زیرا همتای SSL/TLS باید از قبل گواهی CA را داشته باشد تا بتواند به هویت \fB\*(PN\fR اعتماد کند. با این حال، این گزینه روشی را برای یک نصب جدید فراهم می‌کند تا گواهی CA را در اولین اتصال SSL/TLS خود راه‌اندازی اولیه (bootstrap) کند. .IP "\fB\-v\fR[\fIspec\fR] .IQ "\fB\-\-verbose=\fR[\fIspec\fR] . سطوح گزارش‌گیری را تعیین می‌کند. بدون هرگونه \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" حداکثر سطح جزئیات لاگ را تنظیم می‌کند که معادل \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) طبق RFC 5424 را برای پیام لاگ تنظیم می‌کند. \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 به‌عنوان پیش‌فرض برای سیس‌لاگ سیستم محلی استفاده می‌شود و \fBlocal0\fR هنگام ارسال پیام به مقصدی که از طریق گزینه \fB\-\-syslog\-target\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" علاوه بر سیس‌لاگ سیستم، پیام‌های سیس‌لاگ را به پورت UDP به شماره \fIport\fR روی \fIhost\fR ارسال می‌کند. میزبان \fIhost\fR باید یک آدرس IP عددی باشد، نه یک نام میزبان. . .IP "\fB\-\-syslog\-method=\fImethod\fR" روش \fImethod\fR را برای نحوه ارسال پیام‌های سیس‌لاگ به دیمن سیس‌لاگ مشخص می‌کند. فرم‌های زیر پشتیبانی می‌شوند: .RS .IP \(bu \fBlibc\fR، از تابع \fBsyslog()\fR در libc استفاده می‌کند. نقطه ضعف استفاده از این گزینه این است که libc قبل از ارسال واقعی پیام به دیمن سیس‌لاگ از طریق سوکت دامنه یونیکس \fB/dev/log\fR، یک پیشوند ثابت به هر پیام اضافه می‌کند. .IP \(bu \fBunix:\fIfile\fR\fR، از سوکت دامنه یونیکس به‌طور مستقیم استفاده می‌کند. با این گزینه می‌توان قالب پیام دلخواهی را مشخص کرد. با این حال، \fBrsyslogd 8.9\fR و نسخه‌های قدیمی‌تر در هر صورت از یک تابع تجزیه‌کننده کدگذاری‌شده ثابت استفاده می‌کنند که استفاده از سوکت دامنه یونیکس را محدود می‌کند. اگر می‌خواهید از قالب پیام دلخواه با نسخه‌های قدیمی‌تر \fBrsyslogd\fR استفاده کنید، در عوض از سوکت UDP به آدرس IP میزبان محلی استفاده کنید. .IP \(bu \fBudp:\fIip\fR:\fIport\fR\fR، از سوکت UDP استفاده می‌کند. با این روش می‌توان از قالب پیام دلخواه در نسخه‌های قدیمی‌تر \fBrsyslogd\fR نیز استفاده کرد. هنگام ارسال پیام‌های سیس‌لاگ از طریق سوکت UDP احتیاط‌های بیشتری باید در نظر گرفته شود؛ به‌عنوان مثال، دیمن سیس‌لاگ باید برای گوش دادن به پورت UDP مشخص‌شده پیکربندی شود، قوانین ناخواسته iptables ممکن است در ترافیک سیس‌لاگ محلی تداخل ایجاد کنند و برخی ملاحظات امنیتی وجود دارد که برای سوکت‌های UDP اعمال می‌شود اما برای سوکت‌های دامنه یونیکس صدق نمی‌کند. .IP \(bu \fBnull\fR، تمام پیام‌های ارسالی به سیس‌لاگ را دور می‌اندازد. .RE .IP مقدار پیش‌فرض از متغیر محیطی \fBOVS_SYSLOG_METHOD\fR گرفته می‌شود؛ اگر تنظیم نشده باشد، پیش‌فرض \fBlibc\fR است. .IP "\fB\-h\fR" .IQ "\fB\-\-help\fR" یک پیام راهنمای کوتاه در کنسول چاپ می‌کند. . .IP "\fB\-V\fR" .IQ "\fB\-\-version\fR" اطلاعات نسخه را در کنسول چاپ می‌کند. . .SH "دستورات (COMMANDS)" دستورات پیاده‌سازی‌شده توسط \fBovs\-vsctl\fR در بخش‌های زیر شرح داده شده‌اند. .SS "دستورات Open vSwitch (Open vSwitch Commands)" این دستورات با کل یک Open vSwitch به صورت یکپارچه کار می‌کنند. . .IP "\fBinit\fR" در صورت خالی بودن پایگاه داده Open vSwitch، آن را مقداردهی اولیه می‌کند. اگر پایگاه داده قبلاً مقداردهی اولیه شده باشد، این دستور هیچ اثری ندارد. .IP هر دستور موفق \fBovs\-vsctl\fR در صورت خالی بودن پایگاه داده Open vSwitch، به طور خودکار آن را مقداردهی اولیه می‌کند. این دستور برای مقداردهی اولیه پایگاه داده بدون اجرای هیچ دستور دیگری ارائه شده است. . .IP "[\fB\-\-filter\fR=\fIfilter\-rule\fR[,\fIfilter\-rule\fR]...] \fBshow\fR" نمای کلی کوتاهی از محتویات پایگاه داده را چاپ می‌کند. اگر \fB\-\-filter\fR مشخص شده باشد، خروجی طبق قوانین فیلتر می‌شود. هر \fIfilter\-rule\fR دارای قالب \fBtable\-name\fR(\fIfilter\fR[|\fIfilter\fR]...) است. سطر موجود در این جدول تنها در صورتی نمایش داده می‌شود که نسخه چاپ‌شده آن، شامل تمام سطرهایی که از این سطر به آن‌ها ارجاع داده شده است، شامل یکی از \fIfilter\fRها به عنوان زیررشته باشد. . .IP "\fBemer\-reset\fR" پیکربندی را به یک وضعیت پاک بازنشانی می‌کند. این دستور کنترل‌کننده‌های OpenFlow، سرورهای OVSDB و SSL/TLS را لغو پیکربندی کرده و پیکربندی آینه‌سازی پورت، \fBfail_mode\fR، NetFlow، sFlow و IPFIX را حذف می‌کند. این دستور همچنین تمام کلیدهای \fBother\-config\fR را از تمام رکوردهای پایگاه داده حذف می‌کند، به جز اینکه در صورت وجود \fBother\-config:hwaddr\fR در یک رکورد Bridge، حفظ می‌شود. سایر پیکربندی‌های شبکه دست‌نخورده باقی می‌مانند. . .SS "دستورات پل (Bridge Commands)" این دستورات پل‌های Open vSwitch را بررسی و دستکاری می‌کنند. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-br \fIbridge\fR" یک پل جدید به نام \fIbridge\fR ایجاد می‌کند. در ابتدا پل هیچ پورتی نخواهد داشت (به جز خود \fIbridge\fR). .IP بدون \fB\-\-may\-exist\fR، تلاش برای ایجاد پلی که از قبل وجود دارد یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIbridge\fR از قبل به عنوان یک پل واقعی وجود داشته باشد، این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-br \fIbridge parent vlan\fR" یک «پل جعلی» (fake bridge) به نام \fIbridge\fR در داخل پل موجود Open vSwitch به نام \fIparent\fR ایجاد می‌کند؛ \fIparent\fR باید از قبل وجود داشته باشد و خودش نباید یک پل جعلی باشد. پل جعلی جدید روی 802.1Q VLAN مشخص‌شده با \fIvlan\fR قرار می‌گیرد که باید یک عدد صحیح بین 0 تا 4095 باشد. پل والد نباید از قبل دارای یک پل جعلی برای \fIvlan\fR باشد. در ابتدا \fIbridge\fR هیچ پورتی نخواهد داشت (به جز خود \fIbridge\fR). .IP بدون \fB\-\-may\-exist\fR، تلاش برای ایجاد پلی که از قبل وجود دارد یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIbridge\fR از قبل به عنوان یک پل VLAN زیر نظر \fIparent\fR برای \fIvlan\fR وجود داشته باشد، این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-br \fIbridge\fR" پل \fIbridge\fR و تمام پورت‌های آن را حذف می‌کند. اگر \fIbridge\fR یک پل واقعی باشد، این دستور همچنین هرگونه پل جعلی ایجاد‌شده با والد \fIbridge\fR را به همراه تمام پورت‌هایشان حذف می‌کند. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف پلی که وجود ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف پلی که وجود ندارد هیچ اثری ندارد. . .IP "[\fB\-\-real\fR|\fB\-\-fake\fR] \fBlist\-br\fR" تمام پل‌های واقعی و جعلی موجود را در خروجی استاندارد، هر کدام در یک خط، فهرست می‌کند. با \fB\-\-real\fR یا \fB\-\-fake\fR، فقط پل‌های آن نوع برگردانده می‌شوند. . .IP "\fBbr\-exists \fIbridge\fR" بررسی می‌کند که آیا \fIbridge\fR به عنوان یک پل واقعی یا جعلی وجود دارد یا خیر. در این صورت، \fBovs\-vsctl\fR با کد خروج 0 با موفقیت خارج می‌شود. در غیر این صورت، \fBovs\-vsctl\fR با کد خروج 2 بدون موفقیت خارج می‌شود. . .IP "\fBbr\-to\-vlan \fIbridge\fR" اگر \fIbridge\fR یک پل جعلی باشد، 802.1Q VLAN پل را به عنوان یک عدد صحیح ده‌دهی چاپ می‌کند. اگر \fIbridge\fR یک پل واقعی باشد، 0 را چاپ می‌کند. . .IP "\fBbr\-to\-parent \fIbridge\fR" اگر \fIbridge\fR یک پل جعلی باشد، نام پل والد آن را چاپ می‌کند. اگر \fIbridge\fR یک پل واقعی باشد، \fIbridge\fR را چاپ می‌کند. . .IP "\fBbr\-set\-external\-id \fIbridge key\fR [\fIvalue\fR]" یک مقدار «شناسه خارجی» (external ID) را روی \fIbridge\fR تنظیم یا پاک می‌کند. این مقادیر برای شناسایی موجودیت‌های خارج از Open vSwitch که \fIbridge\fR با آن‌ها در ارتباط است در نظر گرفته شده‌اند، مانند شناسه پل در یک پلتفرم مدیریت مجازی‌سازی. طرح پایگاه داده Open vSwitch مقادیر \fIkey\fR شناخته‌شده را مشخص می‌کند، اما \fIkey\fR و \fIvalue\fR در غیر این صورت رشته‌های دلخواه هستند. .IP اگر \fIvalue\fR مشخص شود، آن‌گاه \fIkey\fR برای \fIbridge\fR روی \fIvalue\fR تنظیم می‌شود و هر مقدار قبلی را بازنویسی می‌کند. اگر \fIvalue\fR حذف شود، آن‌گاه \fIkey\fR از مجموعه شناسه‌های خارجی \fIbridge\fR حذف می‌شود (در صورت وجود). .IP برای پل‌های واقعی، اثر این دستور مشابه دستور \fBset\fR یا \fBremove\fR در ستون \fBexternal\-ids\fR از جدول \fBBridge\fR است. برای پل‌های جعلی، در واقع کلیدهایی با پیشوند نام \fBfake\-bridge\-\fR را در جدول \fBPort\fR تغییر می‌دهد. . .IP "\fBbr\-get\-external\-id \fIbridge\fR [\fIkey\fR]" شناسه‌های خارجی روی \fIbridge\fR را پرس‌وجو می‌کند. اگر \fIkey\fR مشخص شود، خروجی مقدار آن \fIkey\fR یا در صورت تنظیم نبودن \fIkey\fR یک رشته خالی است. اگر \fIkey\fR حذف شود، خروجی به صورت \fIkey\fB=\fIvalue\fR، یک مورد در هر خط برای هر جفت کلید-مقدار خواهد بود. .IP برای پل‌های واقعی، اثر این دستور مشابه دستور \fBget\fR در ستون \fBexternal\-ids\fR از جدول \fBBridge\fR است. برای پل‌های جعلی، کلیدهایی با پیشوند نام \fBfake\-bridge\-\fR را در جدول \fBPort\fR پرس‌وجو می‌کند. . .SS "دستورات پورت (Port Commands)" . این دستورات پورت‌های Open vSwitch را بررسی و دستکاری می‌کنند. این دستورات با یک پورت باندشده (bonded) به عنوان یک موجودیت واحد رفتار می‌کنند. . .IP "\fBlist\-ports \fIbridge\fR" تمام پورت‌های درون \fIbridge\fR را در خروجی استاندارد، هر کدام در یک خط، فهرست می‌کند. پورت محلی \fIbridge\fR در این فهرست گنجانده نمی‌شود. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-port \fIbridge port \fR[\fIcolumn\fR[\fB:\fIkey\fR]\fR=\fIvalue\fR]\&...\fR" روی \fIbridge\fR یک پورت جدید به نام \fIport\fR از دستگاه شبکه هم‌نام ایجاد می‌کند. .IP آرگومان‌های اختیاری، مقادیر ستون را در رکورد Port ایجاد‌شده توسط دستور تنظیم می‌کنند. برای مثال، \fBtag=9\fR پورت را به یک پورت دسترسی (access port) برای VLAN 9 تبدیل می‌کند. نحو آن مشابه دستور \fBset\fR است (بخش \fBدستورات پایگاه داده (Database Commands)\fR در زیر را ببینید). .IP بدون \fB\-\-may\-exist\fR، تلاش برای ایجاد پورتی که از قبل وجود دارد یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIport\fR از قبل روی \fIbridge\fR وجود داشته باشد و یک پورت باندشده نباشد، این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-port \fR[\fIbridge\fR] \fIport\fR" پورت \fIport\fR را حذف می‌کند. اگر \fIbridge\fR حذف شود، \fIport\fR از هر پلی که حاوی آن است حذف می‌شود؛ اگر \fIbridge\fR مشخص شود، باید پل واقعی یا جعلی باشد که حاوی \fIport\fR است. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف پورتی که وجود ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف پورتی که وجود ندارد هیچ اثری ندارد. . .IP "[\fB\-\-if\-exists\fR] \fB\-\-with\-iface del\-port \fR[\fIbridge\fR] \fIiface\fR" پورتی به نام \fIiface\fR یا پورتی که رابطی به نام \fIiface\fR دارد را حذف می‌کند. اگر \fIbridge\fR حذف شود، پورت از هر پلی که حاوی آن است حذف می‌شود؛ اگر \fIbridge\fR مشخص شود، باید پل واقعی یا جعلی باشد که حاوی پورت است. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف پورت برای رابطی که وجود ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف پورت برای رابطی که وجود ندارد هیچ اثری ندارد. . .IP "\fBport\-to\-br \fIport\fR" نام پلی که حاوی \fIport\fR است را در خروجی استاندارد چاپ می‌کند. . .SS "دستورات باند (Bond Commands)" . این دستورات با پورت‌هایی کار می‌کنند که بیش از یک رابط دارند، که Open vSwitch آن‌ها را «باند» (bonds) می‌نامد. . .IP "[\fB\-\-fake\-iface\fR] \fBadd\-bond \fIbridge port iface\fR\&... [\fIcolumn\fR[\fB:\fIkey\fR]\fR=\fIvalue\fR]\&...\fR" روی \fIbridge\fR یک پورت جدید به نام \fIport\fR ایجاد می‌کند که دستگاه‌های شبکه ارائه‌شده در هر \fIiface\fR را با یکدیگر پیوند (باند) می‌دهد. حداقل دو رابط باید نام برده شوند. اگر رابط‌ها با DPDK فعال شده باشند، تراکنش باید شامل عملیاتی برای تنظیم صریح نوع رابط روی 'dpdk' باشد. .IP آرگومان‌های اختیاری، مقادیر ستون را در رکورد Port ایجاد‌شده توسط دستور تنظیم می‌کنند. نحو آن مشابه دستور \fBset\fR است (بخش \fBدستورات پایگاه داده (Database Commands)\fR در زیر را ببینید). .IP با \fB\-\-fake\-iface\fR، یک رابط جعلی با نام \fIport\fR ایجاد می‌شود. این گزینه فقط باید برای سازگاری با نرم‌افزارهای قدیمی که به آن نیاز دارند استفاده شود. .IP بدون \fB\-\-may\-exist\fR، تلاش برای ایجاد پورتی که از قبل وجود دارد یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIport\fR از قبل روی \fIbridge\fR وجود داشته باشد و دقیقاً رابط‌های مشخص‌شده را به هم باند کند، این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-bond\-iface \fIbond iface\fR" رابط \fIiface\fR را به عنوان یک رابط باند جدید به پورت موجود \fIbond\fR اضافه می‌کند. اگر \fIbond\fR قبلاً تنها یک پورت داشت، این دستور آن را به یک باند تبدیل می‌کند. .IP بدون \fB\-\-may\-exist\fR، تلاش برای افزودن یک \fIiface\fR که از قبل بخشی از \fIbond\fR است یک خطا است. با \fB\-\-may\-exist\fR، اگر \fIiface\fR از قبل بخشی از \fIbond\fR باشد، این دستور هیچ کاری انجام نمی‌دهد. (اگر \fIiface\fR رابط پورت یا باند دیگری باشد، همچنان یک خطا محسوب می‌شود.) . .IP "[\fB\-\-if\-exists\fR] \fBdel\-bond\-iface\fR [\fIbond\fR] \fIiface\fR" رابط \fIiface\fR را از پورت خود حذف می‌کند. اگر \fIbond\fR حذف شود، \fIiface\fR از هر پورتی که حاوی آن است حذف می‌شود؛ اگر \fIbond\fR مشخص شود، باید پورتی باشد که حاوی \fIbond\fR است. .IP اگر حذف \fIiface\fR باعث شود پورت آن تنها دارای یک رابط شود، آن‌گاه آن پورت از یک باند به یک پورت معمولی تبدیل می‌شود. اگر \fIiface\fR تنها رابط موجود در پورت خود باشد، یک خطا است. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف رابطی که وجود ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف رابطی که وجود ندارد هیچ اثری ندارد. . .SS "دستورات رابط (Interface Commands)" . این دستورات رابط‌های متصل به یک پل Open vSwitch را بررسی می‌کنند. این دستورات با یک پورت باندشده به عنوان مجموعه‌ای از دو یا چند رابط رفتار می‌کنند، نه به عنوان یک پورت منفرد. . .IP "\fBlist\-ifaces \fIbridge\fR" تمام رابط‌های درون \fIbridge\fR را در خروجی استاندارد، هر کدام در یک خط، فهرست می‌کند. پورت محلی \fIbridge\fR در این فهرست گنجانده نمی‌شود. . .IP "\fBiface\-to\-br \fIiface\fR" نام پلی که حاوی \fIiface\fR است را در خروجی استاندارد چاپ می‌کند. . .SS "دستورات ناحیه ردیابی اتصال (Conntrack Zone Commands)" این دستورات نواحی CT مسیر داده (datapath)، سیاست‌های مهلت زمانی و محدودیت‌ها را پرس‌وجو کرده و تغییر می‌دهند. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-zone\-tp \fIdatapath \fBzone=\fIzone_id \fIpolicies\fR" یک سیاست مهلت زمانی برای ناحیه conntrack با \fIzone_id\fR در \fIdatapath\fR ایجاد می‌کند. مقادیر \fIpolicies\fR شامل جفت‌های \fIkey\fB=\fIvalue\fR است که با فاصله از هم جدا شده‌اند. برای مثال، \fBicmp_first=30 icmp_reply=60\fR یک سیاست مهلت زمانی ۳۰ ثانیه‌ای را برای اولین بسته ICMP و یک سیاست ۶۰ ثانیه‌ای را برای بسته‌های پاسخ ICMP مشخص می‌کند. جدول \fBCT_Timeout_Policy\fR در \fBovs\-vswitchd.conf.db\fR(5) را برای کلیدهای پشتیبانی‌شده ببینید. .IP بدون \fB\-\-may\-exist\fR، تلاش برای افزودن یک \fIpolicy\fR برای \fIzone_id\fR که از قبل دارای یک سیاست است، خطا محسوب می‌شود. با \fB\-\-may\-exist\fR، اگر سیاستی برای \fIzone_id\fR از قبل وجود داشته باشد، این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-zone\-tp \fIdatapath \fBzone=\fIzone_id\fR" سیاست مهلت زمانی مرتبط با \fIzone_id\fR را از \fIdatapath\fR حذف می‌کند. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف سیاست برای ناحیه‌ای که وجود ندارد یا سیاستی ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف سیاستی که وجود ندارد هیچ اثری ندارد. . .IP "\fBlist\-zone\-tp \fIdatapath\fR" سیاست‌های مهلت زمانی تمام نواحی در \fIdatapath\fR را چاپ می‌کند. . .IP "\fBset\-zone\-limit \fIdatapath \fIzone_id\fR|\fBdefault \fIzone_limit\fR" یک محدودیت ناحیه conntrack با \fIzone_id\fR|\fIdefault\fR را در \fIdatapath\fR تنظیم می‌کند. مقدار \fB0\fR برای \fIlimit\fR به معنای نامحدود است. .IP . .IP "[\fB\-\-if\-exists\fR] \fBdel\-zone\-limit \fIdatapath \fIzone_id\fR|\fBdefault\fR" محدودیت مرتبط با \fIzone_id\fR را از \fIdatapath\fR حذف می‌کند. .IP بدون \fB\-\-if\-exists\fR، تلاش برای حذف محدودیت برای ناحیه‌ای که وجود ندارد یا محدودیتی ندارد یک خطا است. با \fB\-\-if\-exists\fR، تلاش برای حذف محدودیتی که وجود ندارد هیچ اثری ندارد. . .IP "\fBlist\-zone\-limits \fIdatapath\fR" محدودیت‌های تمام نواحی در \fIdatapath\fR را چاپ می‌کند. . .SS "دستور قابلیت‌های مسیر داده (Datapath Capabilities Command)" این دستور قابلیت‌های مسیر داده (datapath) را پرس‌وجو می‌کند. . .IP "\fBlist\-dp\-cap \fIdatapath\fR" قابلیت‌های مسیر داده را چاپ می‌کند. . .SS "اتصال کنترلر اوپن‌فلو (OpenFlow Controller Connectivity)" . \fBovs\-vswitchd\fR می‌تواند تمام عملیات پل‌زنی و سوئیچینگ پیکربندی‌شده را به صورت محلی انجام دهد، یا می‌تواند برای برقراری ارتباط با یک یا چند کنترلر خارجی OpenFlow پیکربندی شود. سوئیچ معمولاً به گونه‌ای پیکربندی می‌شود که به یک کنترلر اصلی متصل شود که مسئولیت جدول جریان پل را به منظور پیاده‌سازی یک سیاست شبکه به عهده می‌گیرد. علاوه بر این، سوئیچ می‌تواند برای گوش دادن به اتصالات دریافتی از کنترلرهای سرویس پیکربندی شود. کنترلرهای سرویس معمولاً برای پشتیبانی و نگهداری دوره‌ای، به عنوان مثال با \fBovs\-ofctl\fR استفاده می‌شوند. . .IP "\fBget\-controller\fR \fIbridge\fR" مقصد کنترلر پیکربندی‌شده را چاپ می‌کند. . .IP "\fBdel\-controller\fR \fIbridge\fR" مقصد کنترلر پیکربندی‌شده را حذف می‌کند. . .IP "\fBset\-controller\fR \fIbridge\fR \fItarget\fR\&..." مقصد یا مقاصد کنترلر پیکربندی‌شده را تنظیم می‌کند. هر \fItarget\fR می‌تواند از هر یک از قالب‌های زیر استفاده کند: . .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 برای تعیین محدوده (scope) آدرس‌های پیوند-محلی IPv6 استفاده کنید، مانند \fBtcp:[fe80::1234%eth0]:6653\fR. برای \fBssl\fR، گزینه‌های \fB\-\-private\-key\fR، \fB\-\-certificate\fR و \fB\-\-ca\-cert\fR الزامی هستند. .IP اگر \fIport\fR مشخص نشود، مقدار پیش‌فرض آن ۶۶۵۳ است. .TP \fBunix:\fIfile\fR روی سیستم‌های سازگار با POSIX، یک سوکت سرور دامنه یونیکس به نام \fIfile\fR. .IP "\fBpssl:\fR[\fIport\fR][\fB:\fIhost\fR]" .IQ "\fBptcp:\fR[\fIport\fR][\fB:\fIhost\fR]" روی \fIport\fR منتظر اتصالات OpenFlow می‌ماند. مقدار پیش‌فرض \fIport\fR برابر ۶۶۵۳ است. به طور پیش‌فرض، اتصالات از هر آدرس IPv4 مجاز است. \fIhost\fR را به عنوان یک آدرس IPv4 یا یک آدرس IPv6 درون براکت مشخص کنید (مانند \fBptcp:6653:[::1]\fR). در لینوکس، از \fB%\fIdevice\fR برای تعیین محدوده آدرس‌های پیوند-محلی IPv6 استفاده کنید، مانند \fBptcp:6653:[fe80::1234%eth0]\fR. اگر برنامه با کتابخانه unbound ساخته شده باشد، می‌توان از نام‌های DNS استفاده کرد. برای \fBpssl\fR، گزینه‌های \fB\-\-private\-key\fR، \fB\-\-certificate\fR و \fB\-\-ca\-cert\fR الزامی هستند. .IP . .IP "\fBpunix:\fIfile\fR" روی سوکت سرور دامنه یونیکس به نام \fIfile\fR به اتصالات OpenFlow گوش می‌دهد. .RE . .ST "تنظیمات شکست کنترلر" .PP هنگامی که یک کنترلر پیکربندی می‌شود، معمولاً مسئول برپاسازی تمام جریان‌ها روی سوئیچ است. بنابراین، اگر اتصال به کنترلر قطع شود، هیچ اتصال شبکه جدیدی برقرار نخواهد شد. اگر اتصال به کنترلر برای مدت طولانی قطع بماند، هیچ بسته‌ای اصلاً نمی‌تواند از سوئیچ عبور کند. .PP اگر مقدار برابر با \fBstandalone\fR باشد، یا اگر هیچ‌یک از این تنظیمات تعیین نشده باشند، در صورتی که برای مدتی معادل سه برابر بازه پروب عدم‌فعالیت پیامی از کنترلر دریافت نشود، \fBovs\-vswitchd\fR مسئولیت راه‌اندازی جریان‌ها را به عهده خواهد گرفت. در این حالت، \fBovs\-vswitchd\fR باعث می‌شود مسیر داده (datapath) مانند یک سوئیچ یادگیرنده MAC معمولی عمل کند. \fBovs\-vswitchd\fR در پس‌زمینه به تلاش برای اتصال مجدد به کنترلر ادامه خواهد داد و هنگامی که اتصال برقرار شد، رفتار مستقل (standalone) خود را متوقف می‌کند. .PP اگر این گزینه روی \fBsecure\fR تنظیم شود، با قطع اتصال کنترلر، \fBovs\-vswitchd\fR جریان‌ها را خودش به تنهایی راه‌اندازی نخواهد کرد. . .IP "\fBget\-fail\-mode\fR \fIbridge\fR" حالت شکست پیکربندی‌شده را چاپ می‌کند. . .IP "\fBdel\-fail\-mode\fR \fIbridge\fR" حالت شکست پیکربندی‌شده را حذف می‌کند. . .IP "\fBset\-fail\-mode\fR \fIbridge\fR \fBstandalone\fR|\fBsecure\fR" حالت شکست پیکربندی‌شده را تنظیم می‌کند. . .SS "اتصال مدیر (Manager Connectivity)" . این دستورات ستون \fBmanager_options\fR در جدول \fBOpen_vSwitch\fR و ردیف‌های جدول \fBManagers\fR را تغییر می‌دهند. هنگامی که \fBovsdb\-server\fR برای استفاده از ستون \fBmanager_options\fR جهت اتصالات OVSDB پیکربندی شده باشد (همان‌طور که در اسکریپت‌های راه‌اندازی ارائه‌شده همراه با Open vSwitch توضیح داده شده است؛ گزینه دستوری معادل در \fBovsdb\-server\fR برابر \fB\-\-remote=db:Open_vSwitch,Open_vSwitch,manager_options\fR است)، این امکان به مدیر سیستم داده می‌شود تا از \fBovs\-vsctl\fR برای پیکربندی اتصالات پایگاه داده استفاده کند. . .IP "\fBget\-manager\fR" مدیر(های) پیکربندی‌شده را چاپ می‌کند. . .IP "\fBdel\-manager\fR" مدیر(های) پیکربندی‌شده را حذف می‌کند. . .IP "\fBset\-manager\fR \fItarget\fR\&..." مقصد یا مقاصد مدیر پیکربندی‌شده را تنظیم می‌کند. هر \fItarget\fR ممکن است یک روش اتصال فعال یا غیرفعال OVSDB باشد، مانند \fBpssl:6640\fR، همان‌طور که در \fBovsdb\fR(7) توصیف شده است. . .SS "پیکربندی SSL/TLS (SSL/TLS Configuration)" هنگامی که \fBovs\-vswitchd\fR برای اتصال از طریق SSL/TLS به منظور مدیریت یا اتصال کنترلر پیکربندی می‌شود، پارامترهای زیر الزامی هستند: .TP \fIprivate-key\fR یک فایل PEM حاوی کلید خصوصی را مشخص می‌کند که به عنوان هویت سوئیچ مجازی برای اتصالات SSL/TLS به کنترلر استفاده می‌شود. .TP \fIcertificate\fR یک فایل PEM حاوی گواهی امضاشده توسط مرجع صدور گواهی (CA) مورداستفاده کنترلر و مدیر را مشخص می‌کند که کلید خصوصی سوئیچ مجازی را تایید کرده و یک سوئیچ قابل اعتماد را شناسایی می‌کند. .TP \fIca-cert\fR یک فایل PEM حاوی گواهی CA را مشخص می‌کند که برای اعتبارسنجی اتصال سوئیچ مجازی به یک کنترلر قابل اعتماد به کار می‌رود. .PP این فایل‌ها تنها یک بار در زمان راه‌اندازی \fBovs\-vswitchd\fR خوانده می‌شوند. اگر محتوای آن‌ها تغییر کند، \fBovs\-vswitchd\fR باید متوقف و مجدداً راه‌اندازی شود. .PP این تنظیمات SSL/TLS بر روی تمام اتصالات SSL/TLS برقرارشده توسط سوئیچ مجازی اعمال می‌شوند. . .IP "\fBget\-ssl\fR" پیکربندی SSL/TLS را چاپ می‌کند. . .IP "\fBdel\-ssl\fR" پیکربندی فعلی SSL/TLS را حذف می‌کند. . .IP "[\fB\-\-bootstrap\fR] \fBset\-ssl\fR \fIprivate-key\fR \fIcertificate\fR \fIca-cert\fR" پیکربندی SSL/TLS را تنظیم می‌کند. گزینه \fB\-\-bootstrap\fR در زیر توضیح داده شده است. . .ST "راه‌اندازی اولیه خودکار گواهی CA" .PP معمولاً، تمام فایل‌های نام‌برده در پیکربندی SSL/TLS باید هنگام شروع به کار \fBovs\-vswitchd\fR وجود داشته باشند. با این حال، اگر فایل \fIca-cert\fR وجود نداشته باشد و گزینه \fB\-\-bootstrap\fR داده شده باشد، \fBovs\-vswitchd\fR در اولین اتصال SSL/TLS خود تلاش خواهد کرد گواهی CA را از کنترلر دریافت کرده و آن را در فایل PEM مشخص‌شده ذخیره کند. در صورت موفقیت، بلافاصله اتصال را قطع کرده و مجدداً متصل می‌شود و از آن به بعد تمام اتصالات SSL/TLS باید توسط گواهی امضاشده با گواهی CA به‌دست‌آمده اعتبارسنجی شوند. .PP \fBاین گزینه اتصال SSL/TLS را در معرض حمله مرد میانی (man-in-the-middle) برای دریافت گواهی اولیه CA قرار می‌دهد\fR، اما ممکن است برای راه‌اندازی اولیه (bootstrapping) مفید باشد. .PP این گزینه تنها زمانی مفید است که کنترلر گواهی CA خود را به عنوان بخشی از زنجیره گواهی SSL/TLS ارسال کند. پروتکل‌های SSL/TLS نیازی ندارند که کنترلر گواهی CA را ارسال کند. . .SS "دستورات اتصال خودکار (Auto-Attach Commands)" . پیش‌نویس استاندارد Auto-Attach SPBM از IETF روشی فشرده برای استفاده از پروتکل کشف لایه پیوند (LLDP) تحت استاندارد IEEE 802.1AB همراه با شبکه پل‌زنی کوتاه‌ترین مسیر (SPB) تحت استاندارد IEEE 802.1aq را به منظور اتصال خودکار دستگاه‌های شبکه به سرویس‌های جداگانه در یک شبکه SPB توصیف می‌کند. هدف در اینجا این است که به برنامه‌ها و دستگاه‌های شبکه‌ای که از OVS استفاده می‌کنند اجازه داده شود به سادگی از قابلیت‌های ارائه‌شده توسط شبکه‌های SPB استاندارد صنعت بهره‌مند شوند. یک عنصر بنیادین در ویژگی اتصال خودکار، نگاشت VLANهای سنتی به I_SIDهای شبکه SPB است. این دستورات نگاشت‌های I-SID/VLAN اتصال خودکار را مدیریت می‌کنند. . .IP "\fBadd\-aa\-mapping \fIbridge i-sid vlan\fR" یک نگاشت جدید اتصال خودکار روی \fIbridge\fR برای \fIi-sid\fR و \fIvlan\fR ایجاد می‌کند. . .IP "\fBdel\-aa\-mapping \fIbridge i-sid vlan\fR" یک نگاشت اتصال خودکار روی \fIbridge\fR برای \fIi-sid\fR و \fIvlan\fR را حذف می‌کند. .IP "\fBget\-aa\-mapping \fIbridge\fR" تمام نگاشت‌های اتصال خودکار درون \fIbridge\fR را در خروجی استاندارد فهرست می‌کند. . .SS "دستورات پایگاه داده (Database Commands)" . این دستورات محتوای جدول‌های \fBovsdb\fR را پرس‌وجو و اصلاح می‌کنند. آن‌ها یک انتزاع جزئی از رابط \fBovsdb\fR هستند و به همین دلیل در سطحی پایین‌تر از سایر دستورات \fBovs\-vsctl\fR عمل می‌کنند. .PP .ST "شناسایی جدول‌ها، رکوردها و ستون‌ها" .PP هر یک از این دستورات دارای پارامتر \fItable\fR برای شناسایی یک جدول درون پایگاه داده هستند. بسیاری از آن‌ها پارامتر \fIrecord\fR را نیز دریافت می‌کنند که یک رکورد خاص را درون یک جدول مشخص می‌نماید. پارامتر \fIrecord\fR ممکن است شناسه UUID یک رکورد باشد و بسیاری از جدول‌ها روش‌های دیگری را نیز برای شناسایی رکوردها ارائه می‌دهند. برخی از دستورات پارامترهای \fIcolumn\fR را نیز دریافت می‌کنند که یک فیلد خاص را درون رکوردهای یک جدول مشخص می‌سازد. .PP برای مشاهده فهرستی از جدول‌ها و ستون‌های آن‌ها، به \fBovs\-vswitchd.conf.db\fR(5) مراجعه کنید یا فهرست جدول‌ها را از طریق گزینه \fB\-\-help\fR مشاهده نمایید. .PP نام‌های رکوردها باید به طور کامل و با رعایت حروف بزرگ و کوچک مشخص شوند، با این استثنا که شناسه‌های UUID را می‌توان به ۴ رقم هگزادسیمال اول (یا بیشتر) آن‌ها خلاصه کرد، مشروط بر اینکه درون آن جدول یکتا باشند. نام‌های جدول‌ها و ستون‌ها به بزرگی و کوچکی حروف حساس نیستند، و خط تیره (\fB\-\fR) و زیرخط (\fB_\fR) به جای یکدیگر قابل استفاده هستند. اختصارهای یکتا از نام‌های جدول‌ها و ستون‌ها پذیرفتنی است؛ برای مثال، \fBnet\fR یا \fBn\fR برای شناسایی جدول \fBNetFlow\fR کفایت می‌کند. . .ST "مقادیر پایگاه داده" .PP هر ستون در پایگاه داده نوع مشخصی از داده را می‌پذیرد. انواع پایه تعریف‌شده کنونی و نمایش آن‌ها عبارتند از: .IP "عدد صحیح (integer)" یک عدد صحیح ده‌دهی در محدوده \-2**63 تا 2**63\-1 (شامل هر دو مقدار). .IP "عدد حقیقی (real)" یک عدد ممیز شناور. .IP "بولی (Boolean)" درست یا نادرست، که به ترتیب به صورت \fBtrue\fR یا \fBfalse\fR نوشته می‌شوند. .IP "رشته (string)" یک رشته دلخواه یونیکد، به جز این که بایت‌های تهی (null) مجاز نیستند. نقل‌قول برای اکثر رشته‌هایی که با یک حرف انگلیسی یا زیرخط شروع می‌شوند و تنها شامل حروف، زیرخط، خط تیره و نقطه هستند اختیاری است. با این حال، \fBtrue\fR و \fBfalse\fR و رشته‌هایی که با نحو شناسه‌های UUID مطابقت دارند (زیر را ببینید) باید درون جفت‌گیومه قرار گیرند تا از سایر انواع پایه متمایز شوند. هنگامی که از جفت‌گیومه استفاده می‌شود، نحو شبیه رشته‌ها در JSON است؛ به عنوان مثال، می‌توان از بک‌اسلش برای اسکیپ کردن کاراکترهای خاص استفاده کرد. رشته خالی باید به صورت یک جفت گیومه دوگانه (\fB""\fR) نمایش داده شود. .IP "شناسه یکتا (UUID)" یک شناسه یکتای جهانی به سبک RFC 4122 (مانند \fBf81d4fae\-7dec\-11d0\-a765\-00a0c91e6bf6\fR)، یا یک \fB@\fIname\fR تعریف‌شده توسط یک دستور \fBget\fR یا \fBcreate\fR درون همان فراخوانی \fB\*(PN\fR. .PP چندین مقدار در یک ستون منفرد ممکن است با فاصله یا یک کامای منفرد از یکدیگر جدا شوند. هنگام حضور چندین مقدار، مقادیر تکراری مجاز نیستند و ترتیب آن‌ها اهمیتی ندارد. در مقابل، برخی ستون‌های پایگاه داده می‌توانند دارای یک مجموعه خالی از مقادیر باشند که به صورت \fB[]\fR نشان داده می‌شود، و براکت‌ها می‌توانند به صورت اختیاری سایر مجموعه‌های غیرخالی یا مقادیر منفرد را نیز احاطه کنند. برای ستونی که مجموعه‌ای از اعداد صحیح را می‌پذیرد، دستورات پایگاه داده یک محدوده (range) را می‌پذیرند. یک محدوده با دو عدد صحیح که توسط \fB\-\fR از هم جدا شده‌اند نمایش داده می‌شود. محدوده شامل هر دو نقطه ابتدا و انتها است. یک محدوده دارای بیشینه اندازه ۴۰۹۶ عنصر است. اگر به عناصر بیشتری نیاز باشد، می‌توان آن‌ها را در محدوده‌های جداگانه مشخص کرد. .PP تعداد کمی از ستون‌های پایگاه داده «نگاشت‌ها» (maps) از جفت‌های کلید\-مقدار هستند، که در آن‌ها کلید و مقدار هر کدام یک نوع داده ثابت در پایگاه داده هستند. این موارد به فرم \fIkey\fB=\fIvalue\fR مشخص می‌شوند، که در آن \fIkey\fR و \fIvalue\fR به ترتیب از نحو نوع کلید و نوع مقدار آن ستون پیروی می‌کنند. هنگام حضور چندین جفت (که با فاصله یا کاما از هم جدا شده‌اند)، کلیدهای تکراری مجاز نیستند و باز هم ترتیب آن‌ها اهمیتی ندارد. مقادیر تکراری مجاز هستند. یک نگاشت خالی به صورت \fB{}\fR نشان داده می‌شود. آکولادها می‌توانند به صورت اختیاری نگاشت‌های غیرخالی را نیز در بر گیرند (اما برای جلوگیری از این که پوسته \fBother\-config={0=x,1=y}\fR را به \fBother\-config=0=x other\-config=1=y\fR گسترش دهد، از گیومه استفاده کنید، زیرا ممکن است اثر مطلوب را به همراه نداشته باشد). . .ST "نحو دستورات پایگاه داده" . .IP "[\fB\-\-if\-exists\fR] [\fB\-\-columns=\fIcolumn\fR[\fB,\fIcolumn\fR]...] \fBlist \fItable \fR[\fIrecord\fR]..." داده‌های موجود در هر \fIrecord\fR مشخص‌شده را فهرست می‌کند. اگر هیچ رکوردی مشخص نشده باشد، تمام رکوردهای موجود در \fItable\fR را فهرست می‌کند. .IP اگر \fB\-\-columns\fR مشخص شده باشد، تنها ستون‌های درخواستی و به ترتیب مشخص‌شده فهرست می‌شوند. در غیر این صورت، تمام ستون‌ها به ترتیب الفبایی نام ستون فهرست می‌گردند. .IP بدون \fB\-\-if\-exists\fR، اگر هر یک از \fIrecord\fRهای مشخص‌شده وجود نداشته باشد، خطا رخ می‌دهد. با \fB\-\-if\-exists\fR، این دستور هر \fIrecord\fRی را که وجود نداشته باشد بدون ایجاد هیچ خروجی نادیده می‌گیرد. . .IP "[\fB\-\-columns=\fIcolumn\fR[\fB,\fIcolumn\fR]...] \fBfind \fItable \fR[\fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR]..." داده‌های موجود در هر رکورد از \fItable\fR را که \fIcolumn\fR آن برابر با \fIvalue\fR است، یا اگر \fIkey\fR مشخص شده باشد، رکوردی که \fIcolumn\fR آن شامل یک \fIkey\fR با \fIvalue\fR مشخص‌شده باشد را فهرست می‌کند. در جایی که علامت \fB=\fR در خلاصه نحو نوشته شده است، می‌توان عملگرهای زیر را به کار برد: .RS .IP "\fB= != < > <= >=\fR" به ترتیب رکوردهایی را انتخاب می‌کند که در آن‌ها \fIcolumn\fR[\fB:\fIkey\fR] برابر، نابرابر، کوچک‌تر، بزرگ‌تر، کوچک‌تر یا مساوی، یا بزرگ‌تر یا مساوی با \fIvalue\fR باشد. .IP عبارت‌های \fIcolumn\fR[\fB:\fIkey\fR] و \fIvalue\fR را به عنوان مجموعه‌هایی از عناصر در نظر بگیرید. مجموعه‌های یکسان برابر در نظر گرفته می‌شوند. در غیر این صورت، اگر مجموعه‌ها تعداد عناصر متفاوتی داشته باشند، مجموعه‌ای که عناصر بیشتری دارد بزرگ‌تر محسوب می‌شود. در غیر این صورت، عناصر هر مجموعه به صورت جفت‌جفت و به ترتیب صعودی درون هر مجموعه بررسی می‌شوند؛ نخستین جفتی که تفاوت داشته باشد نتیجه را تعیین می‌کند. (برای ستونی که شامل جفت‌های کلید\-مقدار است، ابتدا تمام کلیدها مقایسه می‌شوند و مقادیر تنها در صورتی بررسی می‌گردند که هر دو مجموعه دارای کلیدهای یکسان باشند.) .IP "\fB{=} {!=}\fR" به ترتیب برابری یا نابرابری مجموعه‌ها را می‌آزماید. .IP "\fB{<=}\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها \fIcolumn\fR[\fB:\fIkey\fR] زیرمجموعه‌ای از \fIvalue\fR باشد. برای مثال، \fBflood\-vlans{<=}1,2\fR رکوردهایی را انتخاب می‌کند که ستون \fBflood\-vlans\fR آن‌ها مجموعه تهی باشد یا شامل ۱ یا ۲ یا هر دو باشد. .IP "\fB{<}\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها \fIcolumn\fR[\fB:\fIkey\fR] زیرمجموعه سره‌ای (proper subset) از \fIvalue\fR باشد. برای مثال، \fBflood\-vlans{<}1,2\fR رکوردهایی را انتخاب می‌کند که ستون \fBflood\-vlans\fR آن‌ها مجموعه تهی باشد یا شامل ۱ یا ۲ باشد اما نه هر دوی آن‌ها. .IP "\fB{>=} {>}\fR" به ترتیب همانند \fB{<=}\fR و \fB{<}\fR است، با این تفاوت که رابطه معکوس می‌شود. برای مثال، \fBflood\-vlans{>=}1,2\fR رکوردهایی را انتخاب می‌کند که ستون \fBflood\-vlans\fR آن‌ها شامل هر دو مقدار ۱ و ۲ باشد. .PP عملگرهای زیر تنها در Open vSwitch نسخه ۲٫۱۶ و بالاتر در دسترس هستند: .IP "\fB{in}\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها هر عنصر موجود در \fIcolumn\fR[\fB:\fIkey\fR] درون \fIvalue\fR نیز موجود باشد. (این معادل همان \fB{<=}\fR است.) .IP "\fB{not-in}\fR" رکوردهایی را انتخاب می‌کند که در آن‌ها هر عنصر موجود در \fIcolumn\fR[\fB:\fIkey\fR] درون \fIvalue\fR وجود نداشته باشد. .RE .IP برای عملگرهای محاسباتی (\fB= != < > <= >=\fR)، هنگامی که \fIkey\fR مشخص شده باشد اما \fIcolumn\fR یک رکورد خاص شامل آن \fIkey\fR نباشد، آن رکورد همواره از نتایج حذف می‌شود. بنابراین، شرط \fBother\-config:mtu!=1500\fR با رکوردهایی مطابقت دارد که کلید \fBmtu\fR داشته باشند و مقدار آن ۱۵۰۰ نباشد، اما با رکوردهایی که فاقد کلید \fBmtu\fR هستند مطابقت ندارد. .IP برای عملگرهای مجموعه‌ای، هنگامی که \fIkey\fR مشخص شده باشد اما \fIcolumn\fR یک رکورد خاص شامل آن \fIkey\fR نباشد، مقایسه با یک مجموعه خالی انجام می‌شود. بنابراین، شرط \fBother\-config:mtu{!=}1500\fR هم با رکوردهایی که کلید \fBmtu\fR با مقداری غیر از ۱۵۰۰ دارند و هم با رکوردهایی که فاقد کلید \fBmtu\fR هستند مطابقت دارد. .IP فراموش نکنید که کاراکترهای \fB<\fR یا \fB>\fR را اسکیپ کنید تا توسط پوسته تفسیر نشوند. .IP اگر \fB\-\-columns\fR مشخص شده باشد، تنها ستون‌های درخواستی به ترتیب مشخص‌شده فهرست می‌شوند. در غیر این صورت، تمام ستون‌ها به ترتیب الفبایی نام ستون فهرست می‌گردند. .IP شناسه‌های UUID نمایش داده شده برای ردیف‌های ایجادشده درون همان فراخوانی \fB\*(PN\fR نادرست خواهند بود. . .IP "[\fB\-\-if\-exists\fR] [\fB\-\-id=@\fIname\fR] \fBget \fItable record \fR[\fIcolumn\fR[\fB:\fIkey\fR]]..." مقدار هر \fIcolumn\fR مشخص‌شده در \fIrecord\fR داده‌شده در \fItable\fR را چاپ می‌کند. برای ستون‌های نگاشت، می‌توان به صورت اختیاری یک \fIkey\fR را مشخص کرد، که در این صورت به جای کل نگاشت، تنها مقدار مرتبط با \fIkey\fR در آن ستون چاپ می‌شود. .IP بدون \fB\-\-if\-exists\fR، اگر \fIrecord\fR وجود نداشته باشد یا اگر \fIkey\fR مشخص شده باشد و آن \fIkey\fR در \fIrecord\fR وجود نداشته باشد، خطا رخ می‌دهد. با \fB\-\-if\-exists\fR، رکورد ناموجود هیچ خروجی تولید نمی‌کند و کلید ناموجود یک خط خالی چاپ می‌کند. .IP اگر \fB@\fIname\fR مشخص شده باشد، شناسه UUID رکورد \fIrecord\fR می‌تواند بعداً در همان فراخوانی \fB\*(PN\fR در جاهایی که یک UUID انتظار می‌رود با این نام ارجاع داده شود. .IP هر دو گزینه \fB\-\-id\fR و آرگومان‌های \fIcolumn\fR اختیاری هستند، اما معمولاً باید حداقل یکی از آن‌ها مشخص شود. اگر هر دو حذف شوند، \fBget\fR هیچ تاثیری به جز بررسی وجود \fIrecord\fR در \fItable\fR ندارد. .IP گزینه‌های \fB\-\-id\fR و \fB\-\-if\-exists\fR را نمی‌توان با هم استفاده کرد. . .IP "[\fB\-\-if\-exists\fR] \fBset \fItable record column\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR..." مقدار هر \fIcolumn\fR مشخص‌شده در \fIrecord\fR داده‌شده در \fItable\fR را برابر با \fIvalue\fR قرار می‌دهد. برای ستون‌های نگاشت، می‌توان به صورت اختیاری یک \fIkey\fR را مشخص کرد، که در این صورت مقدار مرتبط با \fIkey\fR در آن ستون تغییر می‌کند (یا اگر وجود نداشته باشد، اضافه می‌شود)، به جای آنکه کل نگاشت جایگزین شود. .IP بدون \fB\-\-if\-exists\fR، اگر \fIrecord\fR وجود نداشته باشد، یک خطا رخ می‌دهد. با \fB\-\-if\-exists\fR، در صورت عدم وجود \fIrecord\fR این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBadd \fItable record column \fR[\fIkey\fB=\fR]\fIvalue\fR..." مقدار مشخص‌شده یا جفت کلید\-مقدار مشخص‌شده را به \fIcolumn\fR در \fIrecord\fR در \fItable\fR اضافه می‌کند. اگر \fIcolumn\fR یک نگاشت باشد، \fIkey\fR الزامی است، در غیر این صورت ممنوع است. اگر \fIkey\fR از قبل در ستون نگاشت وجود داشته باشد، مقدار فعلی \fIvalue\fR جایگزین نمی‌شود (برای جایگزینی مقدار موجود از دستور \fBset\fR استفاده کنید). .IP بدون \fB\-\-if\-exists\fR، اگر \fIrecord\fR وجود نداشته باشد خطا رخ می‌دهد. با \fB\-\-if\-exists\fR، در صورت عدم وجود \fIrecord\fR این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBremove \fItable record column \fR\fIvalue\fR..." .IQ "[\fB\-\-if\-exists\fR] \fBremove \fItable record column \fR\fIkey\fR..." .IQ "[\fB\-\-if\-exists\fR] \fBremove \fItable record column \fR\fIkey\fB=\fR\fIvalue\fR..." مقادیر مشخص‌شده یا جفت‌های کلید\-مقدار مشخص‌شده را از \fIcolumn\fR در \fIrecord\fR در \fItable\fR حذف می‌کند. قالب اول برای ستون‌هایی که نگاشت نیستند به کار می‌رود: هر \fIvalue\fR مشخص‌شده از ستون حذف می‌شود. قالب‌های دوم و سوم برای ستون‌های نگاشت کاربرد دارند: اگر فقط یک \fIkey\fR مشخص شود، هر جفت کلید\-مقدار با آن \fIkey\fR داده‌شده صرف‌نظر از مقدارش حذف می‌شود؛ اگر یک \fIvalue\fR مشخص شود، یک جفت تنها در صورتی حذف می‌شود که هم کلید و هم مقدار مطابقت داشته باشند. .IP اگر ستون شامل کلید، مقدار یا جفت مشخص‌شده نباشد، خطایی در نظر گرفته نمی‌شود. .IP بدون \fB\-\-if\-exists\fR، اگر \fIrecord\fR وجود نداشته باشد خطا رخ می‌دهد. با \fB\-\-if\-exists\fR، در صورت عدم وجود \fIrecord\fR این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-if\-exists\fR] \fBclear\fR \fItable record column\fR..." هر \fIcolumn\fR در \fIrecord\fR در \fItable\fR را بر حسب مورد به مجموعه تهی یا نگاشت خالی تبدیل می‌کند. این دستور تنها روی ستون‌هایی اعمال می‌شود که مجاز به خالی بودن هستند. .IP بدون \fB\-\-if\-exists\fR، اگر \fIrecord\fR وجود نداشته باشد خطا رخ می‌دهد. با \fB\-\-if\-exists\fR، در صورت عدم وجود \fIrecord\fR این دستور هیچ کاری انجام نمی‌دهد. . .IP "[\fB\-\-id=(@\fIname\fR | \fIuuid\fR] \fBcreate\fR \fItable column\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR..." یک رکورد جدید در \fItable\fR ایجاد می‌کند و مقادیر اولیه هر \fIcolumn\fR را تنظیم می‌نماید. ستون‌هایی که صراحتاً تنظیم نشده‌اند مقادیر پیش‌فرض خود را دریافت خواهند کرد. شناسه UUID سطر جدید را در خروجی چاپ می‌کند. .IP اگر \fB@\fIname\fR مشخص شده باشد، شناسه UUID برای سطر جدید می‌تواند بعداً در بخش‌های دیگر همان فراخوانی \fB\*(PN\fR در زمینه‌هایی که یک UUID مورد انتظار است، با آن نام مورد ارجاع قرار گیرد. این ارجاعات ممکن است قبل یا بعد از دستور \fBcreate\fR بیایند. .IP اگر یک \fIuuid\fR معتبر مشخص شده باشد، از آن به عنوان شناسه UUID سطر جدید استفاده می‌شود. . .RS .IP "هشدار (ovs-vsctl به عنوان مثال)" رکوردها در پایگاه داده Open vSwitch تنها زمانی معنادار و پایدار هستند که بتوان به طور مستقیم یا غیرمستقیم از جدول \fBOpen_vSwitch\fR به آن‌ها دسترسی پیدا کرد. به جز رکوردهای موجود در جدول‌های \fBQoS\fR یا \fBQueue\fR، رکوردهایی که از جدول \fBOpen_vSwitch\fR قابل دسترسی نباشند به طور خودکار از پایگاه داده حذف می‌شوند. این حذف بلافاصله و بدون انتظار برای دستورات اضافی \fBovs\-vsctl\fR یا سایر فعالیت‌های پایگاه داده انجام می‌شود. بنابراین، یک دستور \fBcreate\fR به طور کلی باید با دستورات دیگری \fIدرون همان فراخوانی \fBovs\-vsctl\fR همراه باشد تا زنجیره‌ای از ارجاعات به رکورد تازه‌تولیدشده از رکورد سطح‌بالای \fBOpen_vSwitch\fR اضافه شود. بخش \fBمثال‌ها (EXAMPLES)\fR نمونه‌هایی را ارائه می‌دهد که نحوه انجام این کار را نشان می‌دهند. .RE . .IP "\fR[\fB\-\-if\-exists\fR] \fBdestroy \fItable record\fR..." هر \fIrecord\fR مشخص‌شده را از \fItable\fR حذف می‌کند. مگر اینکه \fB\-\-if\-exists\fR مشخص شده باشد، تک‌تک \fIrecord\fRها باید وجود داشته باشند. .IP "\fB\-\-all destroy \fItable\fR" تمام رکوردهای موجود در \fItable\fR را حذف می‌کند. . .RS .IP "هشدار (ovs-vsctl به عنوان مثال)" دستور \fBdestroy\fR تنها برای رکوردهای موجود در جدول‌های \fBQoS\fR یا \fBQueue\fR مفید است. رکوردها در جدول‌های دیگر زمانی که از جدول \fBOpen_vSwitch\fR غیرقابل دسترسی شوند، به صورت خودکار از پایگاه داده حذف می‌شوند. این بدان معناست که حذف آخرین ارجاع به یک رکورد برای حذف خود آن رکورد کافی است. برای رکوردها در این جدول‌ها، دستور \fBdestroy\fR بدون هشدار نادیده گرفته می‌شود. برای اطلاعات بیشتر بخش \fBمثال‌ها (EXAMPLES)\fR در زیر را ببینید. .RE . .IP "\fBwait\-until \fItable record \fR[\fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR]..." صبر می‌کند تا جدول \fItable\fR حاوی رکوردی به نام \fIrecord\fR شود که ستون \fIcolumn\fR آن برابر با \fIvalue\fR باشد یا اگر \fIkey\fR مشخص شده باشد، ستون \fIcolumn\fR آن حاوی یک \fIkey\fR با مقدار مشخص‌شده \fIvalue\fR باشد. این دستور از همان عملگرها و معانی توصیف‌شده برای دستور \fBfind\fR در بالا پشتیبانی می‌کند. .IP اگر هیچ آرگومان \fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR داده نشود، این دستور تنها تا زمانی که \fIrecord\fR وجود داشته باشد منتظر می‌ماند. اگر بیش از یک آرگومان از این دست داده شود، دستور تا زمانی که تمام آن‌ها برآورده شوند صبر می‌کند. . .RS .IP "هشدار (ovs-vsctl به عنوان مثال)" معمولاً \fBwait\-until\fR باید در ابتدای مجموعه‌ای از دستورات \fBovs\-vsctl\fR قرار گیرد. به عنوان مثال، دستور \fBwait\-until bridge br0 \-\- get bridge br0 datapath_id\fR تا زمانی که پلی به نام \fBbr0\fR ایجاد شود صبر می‌کند، سپس ستون \fBdatapath_id\fR آن را چاپ می‌نماید؛ در حالی که دستور \fBget bridge br0 datapath_id \-\- wait\-until bridge br0\fR اگر در زمان اتصال اولیه \fBovs\-vsctl\fR به پایگاه داده، هیچ پلی به نام \fBbr0\fR وجود نداشته باشد متوقف خواهد شد. .RE .IP بهتر است گزینه \fB\-\-timeout=0\fR را همراه با \fB\-\-wait\-until\fR مشخص کنید تا از خاتمه یافتن \fB\*(PN\fR پس از حداکثر ۵ ثانیه انتظار جلوگیری شود. .IP "\fBcomment \fR[\fIarg\fR]..." این دستور هیچ تاثیری بر رفتار سیستم ندارد، اما هر رکورد گزارش پایگاه داده که توسط این دستور ایجاد شود، شامل این دستور و آرگومان‌های آن خواهد بود. .SH "مثال‌ها (EXAMPLES)" ایجاد یک پل جدید به نام br0 و افزودن پورت eth0 به آن: .IP .B "ovs\-vsctl add\-br br0" .br .B "ovs\-vsctl add\-port br0 eth0" .PP روش دیگر، انجام هر دو عملیات در یک تراکنش اتمیک واحد: .IP .B "ovs\-vsctl add\-br br0 \-\- add\-port br0 eth0" .PP حذف پل \fBbr0\fR، و گزارش خطا در صورتی که پل وجود نداشته باشد: .IP .B "ovs\-vsctl del\-br br0" .PP حذف پل \fBbr0\fR در صورت وجود: .IP .B "ovs\-vsctl \-\-if\-exists del\-br br0" .PP تنظیم ستون \fBqos\fR در رکورد \fBPort\fR برای \fBeth0\fR به گونه‌ای که به یک رکورد جدید \fBQoS\fR اشاره کند، که آن رکورد نیز به نوبه خود با صف شماره ۰ به یک رکورد جدید \fBQueue\fR اشاره می‌کند: .IP .B "ovs\-vsctl \-\- set port eth0 qos=@newqos \-\- \-\-id=@newqos create qos type=linux\-htb other\-config:max\-rate=1000000 queues:0=@newqueue \-\- \-\-id=@newqueue create queue other\-config:min\-rate=1000000 other\-config:max\-rate=1000000" .SH "دستورالعمل‌های پیکربندی (CONFIGURATION COOKBOOK)" .SS "پیکربندی پورت (Port Configuration)" .PP افزودن یک «پورت داخلی» به نام \fBvlan10\fR به پل \fBbr0\fR به عنوان یک پورت دسترسی VLAN برای VLAN شماره ۱۰، و پیکربندی آن با یک آدرس IP: .IP .B "ovs\-vsctl add\-port br0 vlan10 tag=10 \-\- set Interface vlan10 type=internal" .IP .B "ip addr add 192.168.0.123/24 dev vlan10" . .PP افزودن یک پورت تونل GRE به نام \fBgre0\fR به آدرس IP راه دور 1.2.3.4 به پل \fBbr0\fR: .IP .B "ovs\-vsctl add\-port br0 gre0 \-\- set Interface gre0 type=gre options:remote_ip=1.2.3.4" . .SS "آینه‌سازی پورت (Port Mirroring)" .PP آینه‌سازی تمام بسته‌های دریافتی یا ارسالی روی \fBeth0\fR یا \fBeth1\fR بر روی \fBeth2\fR، با این فرض که تمام این پورت‌ها روی پل \fBbr0\fR وجود دارند (به عنوان یک اثر جانبی، این کار باعث نادیده گرفته شدن بسته‌های دریافتی روی \fBeth2\fR می‌شود): .IP .B "ovs\-vsctl \-\- set Bridge br0 mirrors=@m \(rs" .IP .B "\-\- \-\-id=@eth0 get Port eth0 \(rs" .IP .B "\-\- \-\-id=@eth1 get Port eth1 \(rs" .IP .B "\-\- \-\-id=@eth2 get Port eth2 \(rs" .IP .B "\-\- \-\-id=@m create Mirror name=mymirror select-dst-port=@eth0,@eth1 select-src-port=@eth0,@eth1 output-port=@eth2" .PP حذف آینه ایجادشده در بالا از \fBbr0\fR، که باعث نابودی رکورد Mirror نیز می‌شود (زیرا دیگر ارجاعی به آن وجود ندارد): .IP .B "ovs\-vsctl \-\- \-\-id=@rec get Mirror mymirror \(rs" .IP .B "\-\- remove Bridge br0 mirrors @rec" .PP دستور ساده‌تر زیر نیز همین کار را انجام می‌دهد: .IP .B "ovs\-vsctl clear Bridge br0 mirrors" .SS "کیفیت خدمات (Quality of Service - QoS)" .PP ایجاد یک رکورد QoS از نوع \fBlinux\-htb\fR که به چند صف اشاره می‌کند و استفاده از آن روی \fBeth0\fR و \fBeth1\fR: .IP .B "ovs\-vsctl \-\- set Port eth0 qos=@newqos \(rs" .IP .B "\-\- set Port eth1 qos=@newqos \(rs" .IP .B "\-\- \-\-id=@newqos create QoS type=linux\-htb other\-config:max\-rate=1000000000 queues=0=@q0,1=@q1 \(rs" .IP .B "\-\- \-\-id=@q0 create Queue other\-config:min\-rate=100000000 other\-config:max\-rate=100000000 \(rs" .IP .B "\-\- \-\-id=@q1 create Queue other\-config:min\-rate=500000000" .PP حذف پیکربندی رکورد QoS فوق فقط از روی \fBeth1\fR: .IP .B "ovs\-vsctl clear Port eth1 qos" .PP برای حذف پیکربندی رکورد QoS از هر دو پورت \fBeth0\fR و \fBeth1\fR و سپس حذف خود رکورد QoS (که باید صراحتاً انجام شود زیرا رکوردهای QoS بدون ارجاع به صورت خودکار نابود نمی‌شوند): .IP .B "ovs\-vsctl \-\- destroy QoS eth0 \-\- clear Port eth0 qos \-\- clear Port eth1 qos" .PP (این دستور دو رکورد Queue بدون ارجاع را در پایگاه داده باقی می‌گذارد. برای حذف آن‌ها، از "\fBovs\-vsctl list Queue\fR" برای یافتن UUIDهای آن‌ها استفاده کنید، سپس از "\fBovs\-vsctl destroy Queue \fIuuid1\fR \fIuuid2\fR" برای نابودی هر یک از آن‌ها استفاده نمایید یا برای حذف تمام رکوردها دستور "\fBovs\-vsctl \-\- \-\-all destroy Queue\fR" را به کار ببرید.) .SS "پایش اتصال (Connectivity Monitoring)" .PP پایش اتصال به یک نقطه نگهداری راه دور روی eth0. .IP .B "ovs\-vsctl set Interface eth0 cfm_mpid=1" .PP حذف پیکربندی پایش اتصال از موارد فوق: .IP .B "ovs\-vsctl clear Interface eth0 cfm_mpid" .SS "نت‌فلو (NetFlow)" .PP پیکربندی پل \fBbr0\fR برای ارسال رکوردهای NetFlow به پورت UDP شماره ۵۵۶۶ روی میزبان 192.168.0.34، با مهلت زمانی فعال ۳۰ ثانیه: .IP .B "ovs\-vsctl \-\- set Bridge br0 netflow=@nf \(rs" .IP .B "\-\- \-\-id=@nf create NetFlow targets=\(rs\(dq192.168.0.34:5566\(rs\(dq active\-timeout=30" .PP به‌روزرسانی پیکربندی NetFlow ایجادشده با دستور قبلی برای استفاده از مهلت زمانی فعال ۶۰ ثانیه: .IP .B "ovs\-vsctl set NetFlow br0 active_timeout=60" .PP حذف تنظیمات NetFlow از پل \fBbr0\fR، که باعث نابودی رکورد NetFlow نیز می‌شود (چرا که دیگر ارجاعی به آن وجود ندارد): .IP .B "ovs\-vsctl clear Bridge br0 netflow" .SS "اس‌فلو (sFlow)" .PP پیکربندی پل \fBbr0\fR برای ارسال رکوردهای sFlow به یک گردآورنده روی 10.0.0.1 در پورت ۶۳۴۳، با استفاده از آدرس IP پورت \fBeth1\fR به عنوان مبدا و با پارامترهای نمونه‌برداری مشخص: .IP .B "ovs\-vsctl \-\- \-\-id=@s create sFlow agent=eth1 target=\(rs\(dq10.0.0.1:6343\(rs\(dq header=128 sampling=64 polling=10 \(rs" .IP .B "\-\- set Bridge br0 sflow=@s" .PP حذف sFlow از پل \fBbr0\fR، که رکورد sFlow را نیز نابود می‌کند (چرا که دیگر ارجاعی به آن وجود ندارد): .IP .B "ovs\-vsctl \-\- clear Bridge br0 sflow" .SS "آی‌پی‌فیکس (IPFIX)" .PP پیکربندی پل \fBbr0\fR برای ارسال یک رکورد جریان IPFIX به ازای هر نمونه بسته به پورت UDP شماره ۴۷۳۹ روی میزبان 192.168.0.34، با شناسه دامنه مشاهده ۱۲۳ و شناسه نقطه مشاهده ۴۵۶، مهلت زمانی فعال حافظه نهان جریان ۱ دقیقه (۶۰ ثانیه)، بیشینه اندازه حافظه نهان جریان ۱۳ جریان، و نمونه‌برداری از جریان‌ها روی پورت خروجی همراه با اطلاعات تونل (نمونه‌برداری روی پورت‌های ورودی و خروجی در صورت غیرفعال نشدن، به صورت پیش‌فرض فعال است): .IP .B "ovs\-vsctl \-\- set Bridge br0 ipfix=@i \(rs" .IP .B "\-\- \-\-id=@i create IPFIX targets=\(rs\(dq192.168.0.34:4739\(rs\(dq obs_domain_id=123 obs_point_id=456 cache_active_timeout=60 cache_max_flows=13 \(rs" .IP .B "other_config:enable-input-sampling=false other_config:enable-tunnel-sampling=true" .PP حذف تنظیمات IPFIX از پل \fBbr0\fR، که رکورد IPFIX را نیز نابود می‌کند (چرا که دیگر ارجاعی به آن وجود ندارد): .IP .B "ovs\-vsctl clear Bridge br0 ipfix" .SS "پروتکل درخت پوشا (802.1D Spanning Tree Protocol - STP)" .PP پیکربندی پل \fBbr0\fR برای مشارکت در یک درخت پوشای 802.1D: .IP .B "ovs\-vsctl set Bridge br0 stp_enable=true" .PP تنظیم اولویت پل \fBbr0\fR به 0x7800: .IP .B "ovs\-vsctl set Bridge br0 other_config:stp-priority=0x7800" .PP تنظیم هزینه مسیرِ پورت \fBeth0\fR به ۱۰: .IP .B "ovs\-vsctl set Port eth0 other_config:stp-path-cost=10" .PP حذف پیکربندی STP از موارد فوق: .IP .B "ovs\-vsctl set Bridge br0 stp_enable=false" .PP .SS "اسنوپینگ چندپخشی (Multicast Snooping)" .PP پیکربندی پل \fBbr0\fR برای فعال‌سازی اسنوپینگ چندپخشی (multicast snooping): .IP .B "ovs\-vsctl set Bridge br0 mcast_snooping_enable=true" .PP تنظیم زمان کهنگی اسنوپینگ چندپخشی روی \fBbr0\fR به ۳۰۰ ثانیه: .IP .B "ovs\-vsctl set Bridge br0 other_config:mcast-snooping-aging-time=300" .PP تنظیم اندازه جدول اسنوپینگ چندپخشی روی \fBbr0\fR به ۲۰۴۸ مدخل: .IP .B "ovs\-vsctl set Bridge br0 other_config:mcast-snooping-table-size=2048" .PP غیرفعال‌سازی سیلاب‌سازی (flooding) بسته‌های چندپخشی ثبت‌نشده به تمام پورت‌ها. هنگامی که روی \fBtrue\fR تنظیم شود، سوئیچ بسته‌های چندپخشی ثبت‌نشده را تنها به پورت‌های متصل به مسیریاب‌های چندپخشی ارسال می‌کند. هنگامی که روی \fBfalse\fR تنظیم شود، سوئیچ آن‌ها را به تمام پورت‌ها ارسال می‌کند. این دستور ارسال سیل‌آسای بسته‌های ثبت‌نشده روی پل \fBbr0\fR را غیرفعال می‌کند. .IP .B "ovs\-vsctl set Bridge br0 other_config:mcast-snooping-disable-flood-unregistered=true" .PP فعال‌سازی ارسال سیل‌آسای بسته‌های چندپخشی (به جز Reports) روی یک پورت خاص. .IP .B "ovs\-vsctl set Port eth1 other_config:mcast-snooping-flood=true" .PP فعال‌سازی ارسال سیل‌آسای Reports روی یک پورت خاص. .IP .B "ovs\-vsctl set Port eth1 other_config:mcast-snooping-flood-reports=true" .PP حذف پیکربندی اسنوپینگ چندپخشی از موارد فوق: .IP .B "ovs\-vsctl set Bridge br0 mcast_snooping_enable=false" .PP .SS "پروتکل درخت پوشای سریع (802.1D-2004 Rapid Spanning Tree Protocol - RSTP)" .PP پیکربندی پل \fBbr0\fR برای مشارکت در یک پروتکل درخت پوشای سریع 802.1D-2004: .IP .B "ovs\-vsctl set Bridge br0 rstp_enable=true" .PP تنظیم آدرس پل \fBbr0\fR به 00:aa:aa:aa:aa:aa : .IP .B "ovs\-vsctl set Bridge br0 other_config:rstp-address=00:aa:aa:aa:aa:aa" .PP تنظیم اولویت پل \fBbr0\fR به 0x7000. مقدار باید در قالب دهدهی مشخص شود و باید مضربی از ۴۰۹۶ باشد (در غیر این صورت، به نزدیک‌ترین مضرب ۴۰۹۶ به سمت پایین گرد می‌شود). مقدار اولویت پیش‌فرض 0x800 (۳۲۷۶۸) است. .IP .B "ovs\-vsctl set Bridge br0 other_config:rstp-priority=28672" .PP تنظیم زمان کهنگی پل \fBbr0\fR به ۱۰۰۰ ثانیه. مقدار زمان کهنگی باید بین ۱۰ ثانیه و ۱۰۰۰۰۰۰ ثانیه باشد. مقدار پیش‌فرض ۳۰۰ ثانیه است. .IP .B "ovs\-vsctl set Bridge br0 other_config:rstp-ageing-time=1000" .PP تنظیم نسخه اجباری پروتکل پل \fBbr0\fR به ۰. نسخه اجباری پروتکل دو مقدار پذیرفتنی دارد: ۰ (حالت سازگاری با STP) و ۲ (عملکرد عادی). .IP .B "ovs\-vsctl set Bridge br0 other_config:rstp-force-protocol-version=0" .PP تنظیم بیشینه طول عمر پل \fBbr0\fR به ۱۰ ثانیه. مقدار بیشینه طول عمر باید بین ۶ ثانیه و ۴۰ ثانیه باشد. مقدار پیش‌فرض ۲۰ ثانیه است. .IP .B "ovs\-vsctl set Bridge br0 other_config:rstp-max-age=10" .PP تنظیم تاخیر ارسال پل \fBbr0\fR به ۱۵ ثانیه. این مقدار باید بین ۴ ثانیه و ۳۰ ثانیه باشد. مقدار پیش‌فرض ۱۵ ثانیه است. .IP .B "ovs\-vsctl set Bridge br0 other_config:rstp-forward-delay=15" .PP تنظیم تعداد نگه‌داشت ارسال پل \fBbr0\fR به ۷ ثانیه. این مقدار باید بین ۱ ثانیه و ۱۰ ثانیه باشد. مقدار پیش‌فرض ۶ ثانیه است. .IP .B "ovs\-vsctl set Bridge br0 other_config:rstp-transmit-hold-count=7" .PP فعال‌سازی RSTP روی پورت \fBeth0\fR: .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-enable=true" .PP غیرفعال‌سازی RSTP روی پورت \fBeth0\fR: .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-enable=false" .PP تنظیم اولویت پورت \fBeth0\fR به ۳۲. مقدار باید در قالب دهدهی مشخص شود و باید مضربی از ۱۶ باشد (در غیر این صورت، به نزدیک‌ترین مضرب ۱۶ به سمت پایین گرد می‌شود). مقدار اولویت پیش‌فرض 0x80 (۱۲۸) است. .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-port-priority=32" .PP تنظیم شماره پورتِ پورت \fBeth0\fR به ۳: .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-port-num=3" .PP تنظیم هزینه مسیرِ پورت \fBeth0\fR به ۱۵۰: .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-path-cost=150" .PP تنظیم مقدار لبه مدیریتی (admin edge) برای پورت \fBeth0\fR: .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-port-admin-edge=true" .PP تنظیم مقدار لبه خودکار (auto edge) برای پورت \fBeth0\fR: .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-port-auto-edge=true" .PP تنظیم مقدار MAC نقطه به نقطه مدیریتی برای پورت \fBeth0\fR. مقادیر پذیرفتنی شامل \fB0\fR (غیر نقطه به نقطه)، \fB1\fR (نقطه به نقطه، مقدار پیش‌فرض) یا \fB2\fR (تشخیص خودکار) است. حالت تشخیص خودکار در حال حاضر پیاده‌سازی نشده است و مقدار \fB2\fR همان اثر \fB0\fR (غیر نقطه به نقطه) را دارد. .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-admin-p2p-mac=1" .PP تنظیم مقدار وضعیت پورت مدیریتی برای پورت \fBeth0\fR. مقدار \fBtrue\fR مقدار پیش‌فرض است. .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-admin-port-state=false" .PP تنظیم مقدار mcheck برای پورت \fBeth0\fR: .IP .B "ovs\-vsctl set Port eth0 other_config:rstp-port-mcheck=true" .PP حذف پیکربندی RSTP از موارد فوق: .IP .B "ovs\-vsctl set Bridge br0 rstp_enable=false" .PP .SS "نسخه اوپن‌فلو (OpenFlow Version)" .PP پیکربندی پل \fBbr0\fR برای پشتیبانی از نسخه‌های ۱٫۰، ۱٫۲ و ۱٫۳ پروتکل OpenFlow: .IP .B "ovs\-vsctl set bridge br0 protocols=OpenFlow10,OpenFlow12,OpenFlow13" . .SS "پیکربندی جدول جریان (Flow Table Configuration)" تنظیم جدول جریان شماره ۰ روی پل br0 به گونه‌ای که از پذیرش بیش از ۱۰۰ جریان خودداری کند: .IP .B "ovs\-vsctl \-\- \-\-id=@ft create Flow_Table flow_limit=100 overflow_policy=refuse \-\- set Bridge br0 flow_tables=0=@ft" . .PP تنظیم جدول جریان شماره ۰ روی پل br0 برای بیرون انداختن جریان‌ها در صورت فراتر رفتن از ۱۰۰ جریان، با رعایت عدالت بر مبنای پورت ورودی منطبق‌شده: . .IP .B "ovs\-vsctl \-\- \-\-id=@ft create Flow_Table flow_limit=100 overflow_policy=evict groups='\(dqNXM_OF_IN_PORT[]\(dq' \-\- set Bridge br0 flow_tables:0=@ft" .SH "وضعیت خروج (EXIT STATUS)" .IP "0" اجرای موفقیت‌آمیز برنامه. .IP "1" خطای کاربرد، نحو یا فایل پیکربندی. .IP "2" آرگومان \fIbridge\fR برای \fBbr\-exists\fR نام پلی را مشخص کرده است که وجود ندارد. .IP "65" تراکنش پایگاه داده با موفقیت اعمال (commit) شد، اما \fBovs\-vsctl\fR هنگام انتظار برای تکمیل بازپیکربندی خود \fBovs\-vswitchd\fR به منظور اعمال تغییرات شکست خورد. این وضعیت معمولاً زمانی رخ می‌دهد که \fB\-\-no\-wait\fR مشخص نشده باشد و دیمون نتواند در زمان مقرر به‌روزرسانی را تایید کند یا هنگام اعمال آن با خطا مواجه شود. .br .sp توجه داشته باشید که تغییرات در پایگاه داده ثبت باقی می‌مانند و بازگردانی (roll back) نمی‌شوند. این کد خروج برای این طراحی شده است که اعلام کند با وجود به‌روزرسانی پایگاه داده، پیکربندی سیستم ممکن است هنوز تغییرات مورد نظر را اعمال نکرده باشد. .SH "همچنین ببینید (SEE ALSO)" . .BR ovsdb\-server (1), .BR ovs\-vswitchd (8), .BR ovs\-vswitchd.conf.db (5).