IP-MPTCP(8) Linux IP-MPTCP(8)

ip-mptcp - پیکربندی و مدیریت پروتکل MPTCP (Multipath TCP)


ip [ OPTIONS ] mptcp { endpoint | limits | help }

ip mptcp endpoint add IFADDR [ port PORT ] [ dev IFNAME ] [ id ID ] [ FLAG-LIST ]

ip mptcp endpoint delete id ID [ IFADDR ]

ip mptcp endpoint change [ id ID ] [ IFADDR ] [ port PORT ] CHANGE-OPT

ip mptcp endpoint show [ id ID ]

ip mptcp endpoint flush

FLAG-LIST := [ FLAG-LIST ] FLAG

FLAG := [ signal | subflow | backup | fullmesh ]

CHANGE-OPT := [ backup | nobackup | fullmesh | nofullmesh ]

ip mptcp limits set [ subflow SUBFLOW_NR ] [ add_addr_accepted ADD_ADDR_ACCEPTED_NR ]

ip mptcp limits show

ip mptcp monitor

پروتکل MPTCP (Multipath TCP) یک پروتکل لایه انتقال است که بر روی TCP ساخته شده و به اتصالات TCP امکان می‌دهد از چندین مسیر مختلف برای بیشینه‌سازی بهره‌وری از منابع و افزایش افزونگی (redundancy) استفاده کنند. زیردستورهای ip-mptcp پیکربندی بخش‌های مختلف مدیر مسیر (path manager) پروتکل MPTCP را که مسئول ایجاد زیرجریان‌ها (subflows) است ممکن می‌سازند:

شیء endpoint نشانی‌های IP را مشخص می‌کند که برای زیرجریان‌های اضافی استفاده یا اعلان خواهند شد:

ip mptcp endpoint add افزودن نقطه پایانی (endpoint) جدید MPTCP
ip mptcp endpoint delete حذف نقطه پایانی موجود MPTCP
ip mptcp endpoint show دریافت و نمایش نقطه پایانی موجود MPTCP
ip mptcp endpoint flush پاکسازی تمام نقاط پایانی موجود MPTCP
یک نشانی IPv4 یا IPv6 است. هنگام استفاده با عملیات delete id، شناسه IFADDR تنها زمانی گنجانده می‌شود که مقدار ID برابر با 0 باشد.
هنگامی که یک شماره پورت تعیین شود، زیرجریان‌های ورودی MPTCP برای سوکت‌های MPTCP از قبل برقرارشده، بر روی پورت مشخص‌شده پذیرفته می‌شوند؛ صرف‌نظر از پورت شنونده اصلی که اولین زیرجریان MPTCP را پذیرفته بود و/یا اینکه این همتا در واقع در سمت کلاینت قرار داشته باشد. این گزینه باید در ترکیب با فلگ signal استفاده شود.
نام رابط شبکه متصل به نقطه پایانی است. تعیین نام دستگاه پیوندیافته به این نشانی حائز اهمیت است تا اطمینان حاصل شود سیستم می‌داند بسته‌ها را چگونه از نشانی IP مشخص‌شده به رابط شبکه درست مسیریابی کند. بدون تعیین این پارامتر، ممکن است برای دستیابی به رفتار مورد انتظار نیاز به افزودن قوانین و مسیرهای IP باشد.
یک شناسه عددی یکتا بین 0 تا 255 برای نقطه پایانی داده‌شده است. امکان افزودن نقاط پایانی با شناسه 0 وجود ندارد، زیرا این شناسه خاص برای زیرجریان اولیه رزرو شده است. برای قواعد مرتبط با زیرجریان اولیه، مدیر مسیر نقاط پایانی منطبق با همان نشانی (و پورت در صورت تعیین) را بدون در نظر گرفتن شناسه بررسی خواهد کرد.
نقطه پایانی از طریق زیرگزینه ADD_ADDR در MPTCP به هر همتا اعلان/سیگنال داده خواهد شد. معمولاً یک سرور مسئول این کار است. با دریافت زیرگزینه ADD_ADDR، طرف دیگر (معمولاً سمت کلاینت) می‌تواند برای ایجاد زیرجریان‌های اضافی تلاش کند؛ بخش ADD_ADDR_ACCEPTED_NR را ببینید.
اگر ایجاد زیرجریان اضافی توسط محدودیت‌های MPTCP مجاز باشد، مدیر مسیر MPTCP پس از برقراری اتصال MPTCP، تلاش می‌کند یک زیرجریان اضافی با استفاده از این نقطه پایانی به عنوان نشانی مبدأ ایجاد کند. معمولاً کلاینت این کار را انجام می‌دهد.
اگر این یک نقطه پایانی subflow باشد، زیرجریان‌های ایجادشده با استفاده از این نقطه پایانی، در طول فرآیند اتصال دارای فلگ backup خواهند بود. این فلگ به همتای راه دور دستور می‌دهد که فقط زمانی داده‌ها را روی این زیرجریان ارسال کند که تمامی زیرجریان‌های غیرپشتیبان (non-backup) در دسترس نباشند. هنگام استفاده از زمان‌بند پیش‌فرض بسته‌ها به همراه یک نقطه پایانی backup، داده‌های خروجی از همتای محلی نیز تحت تأثیر قرار می‌گیرند: بسته‌ها تنها زمانی از این نقطه پایانی ارسال خواهند شد که تمامی زیرجریان‌های غیرپشتیبان از دسترس خارج باشند.
اگر این یک نقطه پایانی subflow بوده و ایجاد زیرجریان اضافی توسط محدودیت‌های MPTCP مجاز باشد، مدیر مسیر MPTCP تلاش می‌کند پس از برقراری اتصال MPTCP، برای هر نشانی شناخته‌شده همتا، یک زیرجریان اضافی با استفاده از این نقطه پایانی به عنوان نشانی مبدأ ایجاد کند. چنانچه همتا هیچ نشانی اضافی را با استفاده از زیرگزینه ADD_ADDR در MPTCP اعلان نکرده باشد، این حالت رفتاری همانند یک نقطه پایانی معمولی subflow خواهد داشت. اما هنگامی که همتا نشانی‌ها را اعلان کند، هر زیرگزینه ADD_ADDR دریافتی، باعث ایجاد یک زیرجریان اضافی برای شکل‌دهی به توپولوژی تمام‌مش (full mesh) خواهد شد. این فلگ fullmesh برای کاربردی بودن همیشه باید در ترکیب با فلگ subflow استفاده شود، به جز برای نشانی استفاده‌شده توسط زیرجریان اولیه که در آن صورت استفاده از subflow اختیاری است.
در برخی سناریوها، یک زیرجریان (subflow) پروتکل MPTCP می‌تواند از یک نشانی محلی نگاشت‌شده توسط یک نقطه پایانی ضمنی (implicit endpoint) استفاده کند که توسط مدیر مسیر درون هسته (in-kernel path manager) ایجاد شده است. پس از تنظیم، فلگ implicit قابل حذف نیست، اما فلگ‌های دیگر را می‌توان به نقطه پایانی اضافه کرد. نقاط پایانی ضمنی از فضای کاربری (user-space) قابل ایجاد نیستند.

شیء limits محدودیت‌ها و قیود مربوط به ایجاد زیرجریان‌ها را مشخص می‌کند:

ip mptcp limits show دریافت و نمایش محدودیت‌های فعلی ایجاد زیرجریان در MPTCP
ip mptcp limits set تغییر محدودیت‌های ایجاد زیرجریان در MPTCP
حداکثر تعداد زیرجریان‌های اضافی مجاز را برای هر اتصال MPTCP مشخص می‌کند. زیرجریان‌های اضافی می‌توانند به دلایل زیر ایجاد شوند: دریافت و پذیرش زیرگزینه ADD_ADDR، نقاط پایانی محلی subflow، یا آغاز زیرجریان‌های اضافی توسط همتا.
حداکثر تعداد زیرگزینه‌های ADD_ADDR ورودی پذیرفته‌شده برای هر اتصال MPTCP را مشخص می‌کند. پس از دریافت تعداد مشخص‌شده از زیرگزینه‌های ADD_ADDR، هر گزینه ورودی دیگر در طول عمر آن اتصال MPTCP نادیده گرفته خواهد شد. هنگامی که یک زیرگزینه ADD_ADDR پذیرفته شود و هیچ نقطه پایانی محلی fullmesh وجود نداشته باشد، مدیر مسیر MPTCP تلاش می‌کند با استفاده از نشانی موجود در زیرگزینه ADD_ADDR به عنوان نشانی مقصد و نشانی مبدأ تعیین‌شده از طریق مسیریابی محلی، یک زیرجریان جدید ایجاد کند. هنگامی که نقاط پایانی fullmesh در دسترس باشند، مدیر مسیر MPTCP تلاش خواهد کرد زیرجریان‌های جدیدی با استفاده از هر نقطه پایانی fullmesh به عنوان نشانی مبدأ و نشانی ADD_ADDR همتا به عنوان مقصد ایجاد نماید. در هر دو حالت، محدودیت SUBFLOW_NR اعمال می‌شود.

دستور monitor رویدادهای ایجاد و حذف اتصالات MPTCP و همچنین اضافه یا حذف شدن نشانی‌ها و زیرجریان‌های راه دور را نمایش می‌دهد.

ip(8), ip-route(8), ip-address(8)

صفحه راهنمای اصلی توسط Paolo Abeni <pabeni@redhat.com>

4 Apr 2020 iproute2