IP-ROUTE(8) Linux IP-ROUTE(8)

ip-route - مدیریت جدول مسیریابی


ip [ ip-OPTIONS ] route { COMMAND | help }

ip route { show | flush } SELECTOR

ip route save SELECTOR

ip route restore

ip route get ROUTE_GET_FLAGS [ to ] ADDRESS [ from ADDRESS iif STRING ] [ oif STRING ] [ mark MARK ] [ tos TOS ] [ vrf NAME ] [ ipproto PROTOCOL ] [ sport NUMBER ] [ dport NUMBER ] [ as ADDRESS ] [ flowlabel FLOWLABEL ]

ip route { add | del | change | append | replace } ROUTE

SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ] [ table TABLE_ID ] [ vrf NAME ] [ proto RTPROTO ] [ type TYPE ] [ scope SCOPE ]

ROUTE := NODE_SPEC [ INFO_SPEC ]

NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ] [ table TABLE_ID ] [ proto RTPROTO ] [ scope SCOPE ] [ metric METRIC ] [ ttl-propagate { enabled | disabled } ]

INFO_SPEC := { NH | nhid ID } OPTIONS FLAGS [ nexthop NH ] ...

NH := [ encap ENCAP ] [ via [ FAMILY ] ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS

FAMILY := [ inet | inet6 | mpls | bridge | link ]

OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ] rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ] [ window NUMBER ] [ cwnd NUMBER ] [ ssthresh NUMBER ] [ realms REALM ] [ rto_min TIME ] [ initcwnd NUMBER ] [ initrwnd NUMBER ] [ features FEATURES ] [ quickack BOOL ] [ congctl NAME ] [ pref PREF ] [ expires TIME ] [ fastopen_no_cookie BOOL ]

TYPE := [ unicast | local | broadcast | multicast | throw | unreachable | prohibit | blackhole | nat ]

TABLE_ID := [ local| main | default | all | NUMBER ]

SCOPE := [ host | link | global | NUMBER ]

NHFLAGS := [ onlink | pervasive ]

RTPROTO := [ kernel | boot | static | NUMBER ]

FEATURES := [ ecn | ]

PREF := [ low | medium | high ]

ENCAP := [ ENCAP_MPLS | ENCAP_IP | ENCAP_BPF | ENCAP_SEG6 | ENCAP_SEG6LOCAL | ENCAP_IOAM6 ]

ENCAP_MPLS := mpls [ LABEL ] [ ttl TTL ]

ENCAP_IP := ip id TUNNEL_ID dst REMOTE_IP [ src SRC ] [ tos TOS ] [ ttl TTL ] [ key ] [ csum ] [ seq ] [ GENEVE_OPTS | VXLAN_OPTS | ERSPAN_OPTS ]

ENCAP_BPF := bpf [ in PROG ] [ out PROG ] [ xmit PROG ] [ headroom SIZE ]

ENCAP_SEG6 := seg6 mode [ encap | encap.red | inline | l2encap | l2encap.red ] segs SEGMENTS [ hmac KEYID ]

ENCAP_SEG6LOCAL := seg6local action SEG6_ACTION [ SEG6_ACTION_PARAM ] [ count ]

ENCAP_IOAM6 := ioam6 [ freq K/N ] mode [ inline | encap | auto ] [ tunsrc ADDRESS ] [ tundst ADDRESS ] trace prealloc type IOAM6_TRACE_TYPE ns IOAM6_NAMESPACE size IOAM6_TRACE_SIZE

ROUTE_GET_FLAGS := ROUTE_GET_FLAG [ ROUTE_GET_FLAGS ]

ROUTE_GET_FLAG := [ connected | fibmatch | notify ]

ip route برای مدیریت و دستکاری مدخل‌ها در جدول‌های مسیریابی هسته استفاده می‌شود.

انواع مسیر:


unicast - مدخل مسیر، مسیرهای واقعی به مقصدهای تحت پوشش پیشوند مسیر را توصیف می‌کند.

unreachable - این مقصدها غیرقابل دسترسی هستند. بسته‌ها دور ریخته می‌شوند و پیام ICMP host unreachable تولید می‌شود. ارسال‌کنندگان محلی خطای EHOSTUNREACH را دریافت می‌کنند.

blackhole - این مقصدها غیرقابل دسترسی هستند. بسته‌ها بی‌صدا دور ریخته می‌شوند. ارسال‌کنندگان محلی خطای EINVAL را دریافت می‌کنند.

prohibit - این مقصدها غیرقابل دسترسی هستند. بسته‌ها دور ریخته می‌شوند و پیام ICMP communication administratively prohibited تولید می‌شود. ارسال‌کنندگان محلی خطای EACCES را دریافت می‌کنند.

local - مقصدها به این میزبان اختصاص داده شده‌اند. بسته‌ها به صورت لوپ‌بک بازگردانده شده و به صورت محلی تحویل داده می‌شوند.

broadcast - مقصدها نشانی‌های پخشی (broadcast) هستند. بسته‌ها به عنوان پخش همگانی روی پیوند ارسال می‌شوند.

throw - یک مسیر کنترلی ویژه که همراه با قوانین خط‌مشی استفاده می‌شود. اگر چنین مسیری انتخاب شود، جستجو در این جدول متوقف شده و وانمود می‌شود که هیچ مسیری پیدا نشده است. بدون مسیریابی مبتنی بر خط‌مشی، این معادل عدم وجود مسیر در جدول مسیریابی است. بسته‌ها دور ریخته می‌شوند و پیام ICMP net unreachable تولید می‌شود. ارسال‌کنندگان محلی خطای ENETUNREACH را دریافت می‌کنند.

nat - یک مسیر ویژه NAT. مقصدهای تحت پوشش پیشوند، نشانی‌های صوری (یا خارجی) در نظر گرفته می‌شوند که قبل از ارسال نیازمند ترجمه به نشانی‌های واقعی (یا داخلی) هستند. نشانی‌هایی که باید به آن‌ها ترجمه شود با مشخصه via انتخاب می‌شوند. هشدار: مسیریابی NAT دیگر در لینوکس 2.6 پشتیبانی نمی‌شود.

anycast - پیاده‌سازی نشده مقصدها نشانی‌های anycast اختصاص‌یافته به این میزبان هستند. آن‌ها اساساً معادل local هستند، با یک تفاوت: استفاده از چنین نشانی‌هایی به عنوان نشانی مبدا هر بسته‌ای نامعتبر است.

multicast - یک نوع ویژه که برای مسیریابی چندپخشی (multicast) استفاده می‌شود. این نوع در جدول‌های مسیریابی عادی وجود ندارد.

جدول‌های مسیریابی: لینوکس 2.x می‌تواند مسیرها را در چندین جدول مسیریابی که با عددی در بازه 1 تا 2^32-1 یا با نامی از /usr/share/iproute2/rt_tables یا /etc/iproute2/rt_tables (در صورت وجود اولویت دارد) مشخص می‌شوند، دسته‌بندی کند. به‌طور پیش‌فرض تمام مسیرهای عادی در جدول main (شناسه 254) درج می‌شوند و هسته هنگام محاسبه مسیرها تنها از این جدول استفاده می‌کند. مقادیر (0، 253، 254 و 255) برای استفاده‌های توکار رزرو شده‌اند.

در واقع، همواره یک جدول دیگر نیز وجود دارد که نامرئی است اما حتی اهمیت بیشتری دارد. آن جدول local (شناسه 255) است. این جدول شامل مسیرهایی برای نشانی‌های محلی و پخشی است. هسته این جدول را به‌طور خودکار نگهداری می‌کند و مدیر سیستم معمولاً نیازی به تغییر یا حتی بررسی آن ندارد.

جدول‌های مسیریابی چندگانه زمانی وارد کار می‌شوند که مسیریابی مبتنی بر خط‌مشی (policy routing) استفاده شود.

افزودن مسیر جدید
تغییر مسیر
تغییر مسیر موجود یا افزودن مسیر جدید
پیشوند مقصد مسیر. اگر TYPE حذف شود، ip نوع را unicast فرض می‌کند. سایر مقادیر TYPE در بالا فهرست شده‌اند. PREFIX یک نشانی IP یا IPv6 است که به‌صورت اختیاری یک اسلش و طول پیشوند به دنبال آن می‌آید. اگر طول پیشوند ذکر نشود، ip یک مسیر میزبان با طول کامل را فرض می‌کند. همچنین یک PREFIX ویژه به نام default وجود دارد که معادل IP 0/0 یا IPv6 ::/0 است.
کلید نوع سرویس (TOS). این کلید ماسک مرتبطی ندارد و طولانی‌ترین تطابق به این صورت تعبیر می‌شود: ابتدا، TOS مسیر و TOS بسته مقایسه می‌شوند. اگر برابر نباشند، ممکن است بسته با مسیری که دارای TOS صفر است تطابق یابد. TOS یا یک عدد هگزادسیمال ۸ بیتی است یا شناسه‌ای برگرفته از /usr/share/iproute2/rt_dsfield یا /etc/iproute2/rt_dsfield (در صورت وجود اولویت دارد).
مقدار اولویت (preference) مسیر. NUMBER یک عدد دلخواه ۳۲ بیتی است، که در آن مسیرهای دارای مقادیر کمتر ترجیح داده می‌شوند.
جدولی که این مسیر به آن افزوده می‌شود. TABLEID می‌تواند یک عدد یا رشته‌ای از /usr/share/iproute2/rt_tables یا /etc/iproute2/rt_tables باشد (در صورت وجود اولویت دارد). اگر این پارامتر حذف شود، ip جدول main را فرض می‌کند، به استثنای مسیرهای local، broadcast و nat که به‌طور پیش‌فرض در جدول local قرار می‌گیرند.
نام vrf برای افزودن این مسیر به آن. به‌طور ضمنی به معنای جدول مرتبط با آن VRF است.
نام دستگاه خروجی.
نشانی مسیریاب جهش بعدی، در خانواده نشانی FAMILY. در واقع مفهوم این فیلد بستگی به نوع مسیر دارد. برای مسیرهای عادی unicast یا خود مسیریاب جهش بعدی واقعی است، یا اگر یک مسیر مستقیم نصب‌شده در حالت سازگاری BSD باشد، می‌تواند یک نشانی محلی از رابط کاربری باشد. برای مسیرهای NAT، این نشانی اولین نشانی از بلوک مقصدهای IP ترجمه‌شده است.
نشانی مبدا ترجیحی هنگام ارسال به مقصدهای تحت پوشش پیشوند مسیر.
ناحیه‌ای (realm) که این مسیر به آن اختصاص یافته است. REALMID می‌تواند یک عدد یا رشته‌ای برگرفته از /usr/share/iproute2/rt_realms یا /etc/iproute2/rt_realms باشد (در صورت وجود اولویت دارد).
mtu lock MTU
مقدار MTU در امتداد مسیر به سمت مقصد. اگر اصلاح‌کننده lock استفاده نشود، ممکن است MTU به دلیل کشف MTU مسیر (Path MTU Discovery) توسط هسته به‌روزرسانی شود. اگر اصلاح‌کننده lock استفاده شود، هیچ تلاشی برای کشف MTU مسیر انجام نمی‌شود؛ همه بسته‌ها در حالت IPv4 بدون بیت DF ارسال می‌شوند و در حالت IPv6 تا اندازه MTU قطعه‌قطعه (fragment) خواهند شد.
حداکثر اندازه پنجره برای اعلان توسط TCP به این مقصدها، بر حسب بایت. این گزینه حداکثر فوران داده‌ها (data bursts) را که همتایان TCP ما مجاز به ارسال به ما هستند محدود می‌کند.
تخمین اولیه RTT (زمان رفت و برگشت یا «Round Trip Time»). اگر هیچ پسوندی مشخص نشود، واحدها مقادیر خامی هستند که برای حفظ سازگاری با نسخه‌های قبلی مستقیماً به کد مسیریابی منتقل می‌شوند. در غیر این صورت از پسوندهای s، sec یا secs برای ثانیه و ms، msec یا msecs برای میلی‌ثانیه استفاده می‌شود.
تخمین اولیه واریانس RTT. مقادیر همانند rtt در بالا مشخص می‌شوند.
حداقل مهلت بازپخش TCP (یا Retransmission TimeOut) برای استفاده در هنگام ارتباط با این مقصد. مقادیر همانند rtt در بالا مشخص می‌شوند.
تخمینی برای آستانه شروع آهسته (slow start threshold) اولیه.
مهارکننده (clamp) برای پنجره تراکم (congestion window). اگر پرچم lock استفاده نشود، نادیده گرفته می‌شود.
اندازه پنجره تراکم اولیه برای ارتباط‌ها با این مقصد. اندازه واقعی پنجره برابر است با حاصل‌ضرب این مقدار در MSS (حداکثر اندازه قطعه یا «Maximal Segment Size») برای همان اتصال. مقدار پیش‌فرض صفر است، به این معنی که از مقادیر مشخص‌شده در RFC2414 استفاده می‌شود.
اندازه پنجره دریافت اولیه برای ارتباط‌ها با این مقصد. اندازه واقعی پنجره برابر با حاصل‌ضرب این مقدار در MSS اتصال است. مقدار پیش‌فرض صفر است که به معنای استفاده از مقدار شروع آهسته (Slow Start) می‌باشد.
فعال یا غیرفعال کردن ویژگی‌های مبتنی بر مسیر. در حال حاضر تنها ویژگی موجود ecn برای فعال‌سازی اعلان صریح تراکم (explicit congestion notification) هنگام برقراری ارتباط با شبکه مقصد داده‌شده است. هنگام پاسخ به درخواست اتصال از شبکه مشخص‌شده، ecn حتی اگر متغیر sysctl net.ipv4.tcp_ecn روی 0 تنظیم شده باشد نیز استفاده خواهد شد.
فعال یا غیرفعال کردن تایید سریع (quick ack) برای اتصال‌ها به این مقصد.
فعال کردن TCP Fastopen بدون کوکی برای ارتباط‌ها با این مقصد.
congctl lock NAME (فقط لینوکس 3.20+)
تنظیم یک الگوریتم کنترل تراکم TCP خاص تنها برای یک مقصد مشخص. اگر مشخص نشود، لینوکس الگوریتم پیش‌فرض سراسری فعلی کنترل تراکم TCP یا الگوریتم تعیین‌شده توسط برنامه را نگه می‌دارد. اگر اصلاح‌کننده lock استفاده نشود، یک برنامه با این حال می‌تواند الگوریتم کنترل تراکم پیشنهادی را برای آن مقصد بازنویسی کند. اگر اصلاح‌کننده lock استفاده شود، آنگاه برنامه اجازه بازنویسی الگوریتم کنترل تراکم مشخص‌شده برای آن مقصد را نخواهد داشت؛ بنابراین استفاده از الگوریتم پیشنهادی اجباری و تضمین خواهد شد.
مقدار MSS (حداکثر اندازه قطعه یا «Maximal Segment Size») برای اعلام به این مقصدها هنگام برقراری ارتباط‌های TCP. اگر ارائه نشود، لینوکس از یک مقدار پیش‌فرض محاسبه‌شده از MTU دستگاه جهش اول استفاده می‌کند. (اگر مسیر منتهی به این مقصدها نامتقارن باشد، این حدس ممکن است اشتباه باشد.)
حداکثر به‌هم‌ریختگی ترتیب بسته‌ها (reordering) در مسیر به سمت این مقصد. اگر ارائه نشود، لینوکس از مقدار تعیین‌شده توسط متغیر sysctl به نام net/ipv4/tcp_reordering استفاده می‌کند.
جهش بعدی (nexthop) مربوط به یک مسیر چندمسیره (multipath). NEXTHOP یک مقدار پیچیده همراه با نحو مخصوص خود و مشابه با فهرست‌های آرگومان سطح بالا است:


via [ FAMILY ] ADDRESS - مسیریاب جهش بعدی است.

dev NAME - دستگاه خروجی است.

weight NUMBER - وزنی برای این عنصر از مسیر چندمسیره است که پهنای باند یا کیفیت نسبی آن را نشان می‌دهد.

بافر داخلی مورداستفاده در iproute2 حداکثر تعداد nexthopهایی را که می‌توان در یک‌باره مشخص کرد محدود می‌سازد. اگر فقط ADDRESS ارائه شود، اندازه بافر فعلی اجازه تعیین ۱۴۴ جهش بعدی برای IPv6 و ۲۵۳ جهش بعدی برای IPv4 را می‌دهد. برای IPv4، این امر در عمل تعداد nexthopهای ممکن در هر مسیر را محدود می‌کند. در IPv6، جهش‌های بعدی بیشتر را می‌توان از طریق دستور ip route append به همان مسیر ضمیمه کرد.

دامنه (scope) مقصدهای تحت پوشش پیشوند مسیر. SCOPE_VAL می‌تواند یک عدد یا رشته‌ای از /usr/share/iproute2/rt_scopes یا /etc/iproute2/rt_scopes باشد (در صورت وجود اولویت دارد). اگر این پارامتر حذف شود، ip دامنه global را برای تمام مسیرهای دارای دروازه unicast، دامنه link را برای مسیرهای مستقیم unicast و broadcast و دامنه host را برای مسیرهای local فرض می‌کند.
شناسه پروتکل مسیریابی این مسیر. RTPROTO می‌تواند یک عدد یا رشته‌ای از /usr/share/iproute2/rt_protos یا /etc/iproute2/rt_protos باشد (در صورت وجود اولویت دارد). اگر شناسه پروتکل مسیریابی داده نشود، ip پروتکل را boot فرض می‌کند (یعنی فرض می‌کند که مسیر توسط فردی اضافه شده که دقیقاً متوجه کاری که انجام می‌دهد نیست). چندین مقدار پروتکل دارای تفسیر ثابت هستند؛ از جمله:


redirect - مسیر به دلیل یک ICMP redirect نصب شده است.

kernel - مسیر توسط هسته در طول پیکربندی خودکار نصب شده است.

boot - مسیر در طول فرآیند راه‌اندازی نصب شده است. اگر یک دیمن مسیریابی آغاز به کار کند، تمام آن‌ها را پاکسازی خواهد کرد.

static - مسیر توسط مدیر سیستم برای لغو مسیریابی پویا نصب شده است. دیمن مسیریابی به آن‌ها احترام می‌گذارد و احتمالاً حتی آن‌ها را به همتایان خود اعلام می‌کند.

ra - مسیر توسط پروتکل Router Discovery نصب شده است.

بقیه مقادیر رزرو نشده‌اند و مدیر سیستم در تخصیص (یا عدم تخصیص) برچسب‌های پروتکل مختار است.

وانمود می‌کند که جهش بعدی (nexthop) مستقیماً به این پیوند متصل است، حتی اگر با هیچ پیشوند رابطی تطابق نداشته باشد.
اولویت مسیر IPv6. PREF رشته‌ای است که اولویت مسیر را همان‌طور که در RFC4191 برای پیام‌های Router Discovery تعریف شده مشخص می‌کند؛ از جمله:


low - مسیر دارای کمترین اولویت است

medium - مسیر دارای اولویت پیش‌فرض است

high - مسیر دارای بالاترین اولویت است

استفاده از شیء nexthop با شناسه مشخص‌شده به عنوان مشخصات جهش بعدی.
پیوست مشخصه‌های کپسوله‌سازی تونل به این مسیر.

ENCAPTYPE رشته‌ای است که نوع کپسوله‌سازی پشتیبانی‌شده را مشخص می‌کند؛ از جمله:


mpls - نوع کپسوله‌سازی MPLS

ip - کپسوله‌سازی IP (مانند Geneve، GRE، VXLAN، ...)

bpf - اجرای برنامه BPF

seg6 - نوع کپسوله‌سازی IPv6 Segment Routing

seg6local - پردازش قطعه SRv6 محلی

ioam6 - نوع کپسوله‌سازی IPv6 IOAM

xfrm - نوع کپسوله‌سازی XFRM


ENCAPHDR مجموعه‌ای از مشخصه‌های کپسوله‌سازی خاص برای ENCAPTYPE است.


mpls
MPLSLABEL - پشته برچسب mpls با برچسب‌هایی که با / از هم جدا شده‌اند

ttl TTL - مقدار TTL برای استفاده در هدر MPLS یا 0 برای ارث‌بری از هدر IP

ip
id TUNNEL_ID - شناسه تونل (برای مثال VNI در تونل VXLAN)

dst REMOTE_IP - نشانی IP مقصد در هدر بیرونی (IPv4 یا IPv6)

src SRC - نشانی IP مبدا در هدر بیرونی (IPv4 یا IPv6)

tos TOS - مقدار TOS در هدر بیرونی

ttl TTL - مقدار TTL در هدر بیرونی

key - پرچم‌های هدر بیرونی همراه با کلید در تونل GRE

csum - پرچم‌های هدر بیرونی همراه با csum در تونل GRE

seq - پرچم‌های هدر بیرونی همراه با seq در تونل GRE

GENEVE_OPTS - به صورت CLASS:TYPE:DATA مشخص می‌شود، که در آن CLASS به صورت یک مقدار هگزادسیمال ۱۶ بیتی، TYPE به صورت یک مقدار هگزادسیمال ۸ بیتی و DATA به صورت یک مقدار هگزادسیمال با طول متغیر نمایش داده می‌شود. همچنین می‌توان چندین گزینه را با استفاده از کاما فهرست کرد.

VXLAN_OPTS - به صورت GBP، به شکل یک عدد ۳۲ بیتی مشخص می‌شود. استفاده از چندین گزینه پشتیبانی نمی‌شود.

ERSPAN_OPTS - به صورت VERSION:INDEX:DIR:HWID مشخص می‌شود، که در آن VERSION به صورت یک عدد ۸ بیتی، INDEX به صورت یک عدد ۳۲ بیتی، و DIR و HWID به صورت یک عدد ۸ بیتی نمایش داده می‌شوند. استفاده از چندین گزینه پشتیبانی نمی‌شود. توجه داشته باشید که هنگامی که VERSION برابر با 1 باشد INDEX استفاده می‌شود، و هنگامی که VERSION برابر با 2 باشد DIR و HWID استفاده می‌شوند.

bpf
in PROG - برنامه BPF برای اجرا بر روی بسته‌های ورودی

out PROG - برنامه BPF برای اجرا بر روی بسته‌های خروجی

xmit PROG - برنامه BPF برای اجرا بر روی بسته‌های ارسال‌شده

headroom SIZE - اندازه هدری که برنامه BPF پیوست خواهد کرد (xmit)

seg6
mode inline - درج مستقیم هدر مسیریابی قطعه (SRH) بلافاصله پس از هدر IPv6

mode encap - کپسوله‌سازی بسته در یک هدر بیرونی IPv6 به همراه SRH

mode encap.red - کپسوله‌سازی بسته در یک هدر بیرونی IPv6 به همراه SRH با اعمال فهرست قطعات کاهش‌یافته. هنگامی که تنها یک قطعه وجود داشته باشد و HMAC حضور نداشته باشد، SRH حذف می‌شود.

mode l2encap - کپسوله‌سازی فریم لایه ۲ ورودی در یک هدر بیرونی IPv6 و SRH

mode l2encap.red - کپسوله‌سازی فریم لایه ۲ ورودی در یک هدر بیرونی IPv6 و SRH با اعمال فهرست قطعات کاهش‌یافته. هنگامی که تنها یک قطعه وجود داشته باشد و HMAC حضور نداشته باشد، SRH حذف می‌شود.

SEGMENTS - فهرستی از نشانی‌های IPv6 جداشده با کاما

KEYID - مقدار عددی در قالب ده‌دهی. به ip-sr(8) مراجعه کنید.

seg6local
SEG6_ACTION [ SEG6_ACTION_PARAM ] [ count ] - عملیاتی که باید بر روی بسته‌های منطبق انجام شود. مشخصه اختیاری count برای جمع‌آوری آمار در مورد پردازش اقدامات استفاده می‌شود. سه شمارنده پیاده‌سازی شده است: ۱) بسته‌هایی که به درستی پردازش شده‌اند؛ ۲) بایت‌هایی که به درستی پردازش شده‌اند؛ ۳) بسته‌هایی که باعث خطای پردازش می‌شوند (مانند SID List گم‌شده، SID List نادرست و غیره). برای بازیابی شمارنده‌های مرتبط با یک اقدام، از گزینه -s در دستور show استفاده کنید. در حال حاضر اقدامات زیر پشتیبانی می‌شوند (فقط لینوکس 4.14+).

End [ flavors FLAVORS ] - پردازش استاندارد SRv6 به عنوان نقطه پایانی قطعه میانی. این اقدام فقط بسته‌هایی با مقدار Segments Left غیرصفر را می‌پذیرد. سایر بسته‌های منطبق دور ریخته می‌شوند. وجود flavors می‌تواند پردازش استاندارد رفتار End را با توجه به عملیات Flavor ارائه‌شده توسط کاربر و اطلاعات حمل‌شده در بسته تغییر دهد. به بخش Flavors parameters مراجعه کنید.

End.X nh6 NEXTHOP [ flavors FLAVORS ] - پردازش استاندارد SRv6 به عنوان نقطه پایانی قطعه میانی. علاوه بر این، بسته‌های پردازش‌شده را به جهش بعدی مشخص‌شده هدایت (forward) می‌کند. این اقدام فقط بسته‌هایی با مقدار Segments Left غیرصفر را می‌پذیرد. سایر بسته‌های منطبق دور ریخته می‌شوند. وجود flavors می‌تواند پردازش استاندارد رفتار End.X را بر اساس عملیات Flavor ارائه‌شده توسط کاربر و اطلاعات موجود در بسته تغییر دهد. به بخش Flavors parameters مراجعه کنید.

End.DX6 nh6 NEXTHOP - بازگشایی کپسوله‌سازی بسته داخلی IPv6 و هدایت آن به جهش بعدی مشخص‌شده. اگر آرگومان روی :: تنظیم شده باشد، جهش بعدی بر اساس قوانین انتخاب محلی انتخاب می‌شود. این اقدام فقط بسته‌هایی را می‌پذیرد که دارای مقدار Segments Left صفر بوده یا کاملاً فاقد SRH باشند و یک بسته داخلی IPv6 داشته باشند. سایر بسته‌های منطبق دور ریخته می‌شوند.

End.DT6 { table | vrftable } TABLEID - بازگشایی کپسوله‌سازی بسته داخلی IPv6 و هدایت آن بر اساس جدول جستجوی مشخص‌شده. TABLEID یک عدد یا رشته‌ای از /usr/share/iproute2/rt_tables یا /etc/iproute2/rt_tables است (در صورت وجود اولویت دارد). اگر vrftable استفاده شود، آرگومان باید یک دستگاه VRF مرتبط با شناسه جدول باشد. علاوه بر این، جدول VRF مرتبط با شناسه جدول باید به گونه‌ای پیکربندی شود که حالت سخت‌گیرانه VRF فعال باشد (net.vrf.strict_mode=1). این اقدام فقط بسته‌هایی را می‌پذیرد که دارای مقدار Segments Left صفر بوده یا فاقد هرگونه SRH باشند و یک بسته داخلی IPv6 داشته باشند. سایر بسته‌های منطبق دور ریخته می‌شوند.

End.DT4 vrftable TABLEID - بازگشایی کپسوله‌سازی بسته داخلی IPv4 و هدایت آن بر اساس جدول جستجوی مشخص‌شده. TABLEID یک عدد یا رشته‌ای از /usr/share/iproute2/rt_tables یا /etc/iproute2/rt_tables است (در صورت وجود اولویت دارد). آرگومان باید یک دستگاه VRF مرتبط با شناسه جدول باشد. علاوه بر این، جدول VRF مرتبط با شناسه جدول باید به گونه‌ای پیکربندی شود که حالت سخت‌گیرانه VRF فعال باشد (net.vrf.strict_mode=1). این اقدام فقط بسته‌هایی را می‌پذیرد که دارای مقدار Segments Left صفر بوده یا کاملاً بدون SRH باشند و یک بسته داخلی IPv4 داشته باشند. سایر بسته‌های منطبق دور ریخته می‌شوند.

End.DT46 vrftable TABLEID - بازگشایی کپسوله‌سازی بسته داخلی IPv4 یا IPv6 و هدایت آن بر اساس جدول جستجوی مشخص‌شده. TABLEID یک عدد یا رشته‌ای از /usr/share/iproute2/rt_tables یا /etc/iproute2/rt_tables است (در صورت وجود اولویت دارد). آرگومان باید یک دستگاه VRF مرتبط با شناسه جدول باشد. علاوه بر این، جدول VRF مرتبط با شناسه جدول باید به گونه‌ای پیکربندی شود که حالت سخت‌گیرانه VRF فعال باشد (net.vrf.strict_mode=1). این اقدام فقط بسته‌هایی را می‌پذیرد که دارای مقدار Segments Left صفر بوده یا کاملاً بدون SRH باشند و یک بسته داخلی IPv4 یا IPv6 داشته باشند. سایر بسته‌های منطبق دور ریخته می‌شوند.

End.B6 srh segs SEGMENTS [ hmac KEYID ] - درج SRH مشخص‌شده بلافاصله پس از هدر IPv6، به‌روزرسانی DA با اولین قطعه از SRH تازه درج‌شده، و سپس هدایت بسته حاصل. SRH اصلی اصلاح نمی‌شود. این اقدام فقط بسته‌هایی با مقدار Segments Left غیرصفر را می‌پذیرد. سایر بسته‌های منطبق دور ریخته می‌شوند.

End.B6.Encaps srh segs SEGMENTS [ hmac KEYID ] - پردازش استاندارد SRv6 به عنوان نقطه پایانی قطعه میانی. علاوه بر این، بسته منطبق را در یک هدر بیرونی IPv6 به دنبال SRH مشخص‌شده کپسوله‌سازی می‌کند. نشانی مقصد هدر بیرونی IPv6 روی اولین قطعه از SRH جدید تنظیم می‌شود. نشانی مبدا همان‌طور که در ip-sr(8) شرح داده شده تنظیم می‌گردد.

پارامترهای Flavors

مفهوم flavors نشان‌دهنده عملیات اضافی است که می‌توانند زیرمجموعه‌ای از رفتارهای موجود را تغییر داده یا گسترش دهند.

flavors OPERATION[,OPERATION] [ATTRIBUTES]

OPERATION := { psp | usp | usd | next-csid }

ATTRIBUTES := { KEY VALUE } [ ATTRIBUTES ]

KEY := { lblen | nflen }

psp - عملیات Penultimate Segment Pop (یا PSP) آخرین SID را از فهرست SIDها (که توسط بیرونی‌ترین SRH حمل می‌شود) در نشانی مقصد IPv6 (یا DA) کپی کرده و SRH را از هدر IPv6 حذف (pop) می‌کند. عملیات PSP فقط در یک گره نقطه پایانی قطعه ماقبل آخر SR (برای مثال وقتی Segment Left برابر ۱ باشد) انجام می‌شود و در گره‌های پایانی غیر ماقبل آخر اتفاق نمی‌افتد. این flavor در حال حاضر فقط توسط رفتار End پشتیبانی می‌شود.

usp - عملیات Ultimate Segment Pop مربوط به SRH (هنوز در هسته پشتیبانی نمی‌شود)

usd - عملیات Ultimate Segment Decapsulation (هنوز در هسته پشتیبانی نمی‌شود)

next-csid - سازوکار NEXT-C-SID امکان کدگذاری چندین قطعه SRv6 را در یک نشانی SID منفرد ۱۲۸ بیتی فراهم می‌کند. این flavor از NEXT-C-SID می‌تواند به گونه‌ای پیکربندی شود که از طول‌های Locator-Block و Locator-Node Function ارائه‌شده توسط کاربر پشتیبانی کند. اگر طول‌های Locator-Block و/یا Locator-Node Function در زمان پیکربندی یک نمونه رفتار End مربوط به SRv6 با طعم NEXT-C-SID توسط کاربر ارائه نشود، مقدار پیش‌فرض ۳۲ بیت برای Locator-Block و ۱۶ بیت برای Locator-Node Function است.

lblen VALUE - طول Locator-Block را برای طعم NEXT-C-SID تعریف می‌کند. طول Locator-Block باید بزرگتر از 0 و بخش‌پذیر بر 8 باشد. این مشخصه فقط با طعم NEXT-C-SID قابل استفاده است.

nflen VALUE - طول Locator-Node Function را برای طعم NEXT-C-SID تعریف می‌کند. طول Locator-Node Function باید بزرگتر از 0 و بخش‌پذیر بر 8 باشد. این مشخصه فقط با طعم NEXT-C-SID قابل استفاده است.

ioam6
freq K/N - تزریق IOAM در K بسته از هر N بسته (پیش‌فرض 1/1 است).

mode inline - درج مستقیم IOAM پس از هدر IPv6 (حالت پیش‌فرض).

mode encap - کپسوله‌سازی بسته در یک هدر بیرونی IPv6 به همراه IOAM.

mode auto - استفاده خودکار از حالت inline برای بسته‌های محلی و حالت encap برای بسته‌های عبوری (in-transit).

tunsrc ADDRESS - نشانی IPv6 مبدا تونل (هدر بیرونی)، در حالت inline استفاده نمی‌شود. اختیاری است: اگر ارائه نشود، نشانی مبدا تونل به‌طور خودکار انتخاب می‌شود.

tundst ADDRESS - نشانی IPv6 مقصد تونل (هدر بیرونی)، در حالت inline استفاده نمی‌شود.

type IOAM6_TRACE_TYPE - فهرستی از داده‌های IOAM موردنیاز در ردگیری، که توسط یک فیلد بیتی (۲۴ بیت) نشان داده می‌شود.

ns IOAM6_NAMESPACE - مقدار عددی برای نمایش یک فضای نام IOAM. به ip-ioam(8) مراجعه کنید.

size IOAM6_TRACE_SIZE - اندازه بلوک داده ردگیری از پیش تخصیص‌یافته، بر حسب بایت (اکتت).

xfrm
if_id IF_ID [ link_dev LINK_DEV ]


مسیر پس از زمان انقضا حذف خواهد شد. در حال حاضر فقط از IPv6 پشتیبانی می‌کند.
کنترل اینکه آیا TTL باید از هرگونه کپسوله‌سازی به بسته کپسوله‌نشده منتشر شود یا خیر، با لغو هرگونه پیکربندی سراسری. در حال حاضر فقط برای MPLS پشتیبانی می‌شود.
حذف مسیر
ip route del دارای آرگومان‌هایی یکسان با ip route add است، اما مفاهیم آن‌ها کمی تفاوت دارد.

مقادیر کلیدی (to، tos، preference و table) مسیر موردنظر برای حذف را انتخاب می‌کنند. اگر مشخصه‌های اختیاری وجود داشته باشند، ip تطابق آن‌ها را با مشخصه‌های مسیر جهت حذف بررسی می‌کند. اگر هیچ مسیری با کلید و مشخصه‌های ارائه‌شده یافت نشود، ip route del با شکست روبرو می‌شود.

فهرست کردن مسیرها
این دستور محتویات جدول‌های مسیریابی یا مسیر(های) انتخاب‌شده توسط معیارهایی را نمایش می‌دهد.
تنها مسیرها را از محدوده مقصدهای مشخص‌شده انتخاب می‌کند. SELECTOR شامل یک اصلاح‌کننده اختیاری (root، match یا exact) و یک پیشوند است. root PREFIX مسیرهایی با پیشوندهایی را انتخاب می‌کند که کوتاه‌تر از PREFIX نباشند. برای مثال: root 0/0 کل جدول مسیریابی را انتخاب می‌کند. match PREFIX مسیرهایی با پیشوندهایی را انتخاب می‌کند که طولانی‌تر از PREFIX نباشند. برای مثال: match 10.0/16 مسیرهای 10.0/16، 10/8 و 0/0 را انتخاب می‌کند، اما 10.1/16 و 10.0.0/24 را انتخاب نمی‌کند. و exact PREFIX (یا فقط PREFIX) مسیرهایی با این پیشوند دقیق را انتخاب می‌کند. اگر هیچ‌یک از این گزینه‌ها وجود نداشته باشند، ip گزینه root 0/0 را فرض می‌کند؛ یعنی کل جدول را فهرست می‌کند.
تنها مسیرهایی با TOS داده‌شده را انتخاب می‌کند.
مسیرهای این جدول(ها) را نمایش می‌دهد. تنظیم پیش‌فرض نمایش جدول main است. TABLEID می‌تواند شناسه یک جدول واقعی یا یکی از مقادیر ویژه زیر باشد:


all - فهرست کردن همه جدول‌ها.

cache - نمایش محتوای حافظه پنهان مسیریابی.

نمایش مسیرهای جدول مرتبط با نام vrf
فهرست کردن مسیرهای کلون‌شده، یعنی مسیرهایی که به دلیل به‌روزرسانی مشخصه‌ای از مسیر (مثلاً MTU) به‌طور پویا از سایر مسیرها منشعب شده‌اند. در واقع، این گزینه معادل table cache است.
همان نحو مربوط به گزینه to را دارد، اما به جای مقصدها، محدوده نشانی مبدا را مقید می‌سازد. توجه داشته باشید که گزینه from فقط با مسیرهای کلون‌شده کار می‌کند.
تنها مسیرهای این پروتکل را فهرست می‌کند.
تنها مسیرهای با این دامنه را فهرست می‌کند.
تنها مسیرهای از این نوع را فهرست می‌کند.
تنها مسیرهایی را فهرست می‌کند که از این دستگاه عبور می‌کنند.
تنها مسیرهایی را فهرست می‌کند که از طریق مسیریاب‌های جهش بعدی انتخاب‌شده توسط PREFIX عبور می‌کنند.
تنها مسیرهایی با نشانی‌های مبدا ترجیحی انتخاب‌شده توسط PREFIX را فهرست می‌کند.
تنها مسیرهایی با این ناحیه‌ها (realms) را فهرست می‌کند.
تخلیه جدول‌های مسیریابی
این دستور مسیرهای انتخاب‌شده بر اساس معیارهایی را پاکسازی و تخلیه می‌کند.

آرگومان‌ها نحو و مفاهیمی مشابه آرگومان‌های ip route show دارند، با این تفاوت که جدول‌های مسیریابی فهرست نمی‌شوند بلکه پاکسازی می‌گردند. تنها تفاوت در اقدام پیش‌فرض است: show تمام جدول مسیریابی اصلی IP را نمایش می‌دهد اما flush صفحه راهنما را چاپ می‌کند.

با گزینه -statistics، دستور با جزئیات کامل عمل می‌کند. این دستور تعداد مسیرهای حذف‌شده و تعداد دفعات اجرای دوره‌ها برای تخلیه جدول مسیریابی را چاپ می‌کند. اگر این گزینه دو بار مشخص شود، ip route flush همچنین تمام مسیرهای حذف‌شده را در قالبی که در زیربخش پیشین شرح داده شد نمایش می‌دهد.

دریافت یک مسیر منفرد
این دستور یک مسیر منفرد به یک مقصد را دریافت کرده و محتویات آن را دقیقاً همان‌گونه که هسته می‌بیند چاپ می‌کند.
بازگرداندن مسیر منطبق بر جستجوی کامل fib. حالت پیش‌فرض بازگرداندن مدخل مقصد (dst) حل‌شده است.
نشانی مقصد.
نشانی مبدا.
نوع سرویس (Type Of Service).
دستگاهی که انتظار می‌رود این بسته از آن وارد شود.
اجبار دستگاه خروجی که این بسته باید روی آن مسیریابی شود.
نشان فایروال (fwmark)
اجبار دستگاه vrf که این بسته باید روی آن مسیریابی شود.
پروتکل ip آن‌طور که توسط جستجوی مسیر مشاهده می‌شود.
درگاه مبدا آن‌طور که توسط جستجوی مسیر مشاهده می‌شود.
درگاه مقصد آن‌طور که توسط جستجوی مسیر مشاهده می‌شود.
اگر هیچ نشانی مبدایی (گزینه from) داده نشده باشد، مسیر را مجدداً با مبدایی که روی نشانی ترجیحی حاصل از جستجوی اول تنظیم شده جستجو می‌کند. در صورت استفاده از مسیریابی مبتنی بر خط‌مشی، ممکن است مسیر متفاوتی باشد.
برچسب جریان ipv6 آن‌طور که توسط جستجوی مسیر مشاهده می‌شود.

توجه داشته باشید که این عملیات معادل ip route show نیست. دستور show مسیرهای موجود را نمایش می‌دهد. دستور get آن‌ها را تفکیک و حل کرده و در صورت لزوم کلون‌های جدیدی می‌سازد. اساساً، get معادل ارسال یک بسته در طول این مسیر است. اگر آرگومان iif داده نشود، هسته مسیری را برای خروج بسته‌ها به سمت مقصد درخواستی ایجاد می‌کند. این کار معادل پینگ کردن مقصد و سپس اجرای متعاقب ip route ls cache است، اما در واقع هیچ بسته‌ای ارسال نمی‌شود. با وجود آرگومان iif، هسته وانمود می‌کند که بسته‌ای از این رابط وارد شده است و به دنبال مسیری برای هدایت (forward) بسته می‌گردد.

ذخیره اطلاعات جدول مسیریابی در stdout
این دستور مشابه ip route show رفتار می‌کند، با این تفاوت که خروجی آن داده‌های خامی است که برای انتقال به ip route restore مناسب است.
بازیابی اطلاعات جدول مسیریابی از stdin
این دستور انتظار دارد جریان داده‌ای را همان‌طور که از ip route save بازگردانده شده بخواند. این دستور تلاش می‌کند اطلاعات جدول مسیریابی را دقیقاً همان‌گونه که در زمان ذخیره‌سازی بوده بازیابی کند، بنابراین هرگونه تبدیل و ترجمه اطلاعات در جریان داده‌ها (مانند اندیس‌های دستگاه) باید ابتدا انجام شود. تمام مسیرهای موجود بدون تغییر باقی می‌مانند. هر مسیری که در جریان داده‌ها مشخص شده و از قبل در جدول وجود داشته باشد نادیده گرفته خواهد شد.

از نسخه 3.6 هسته لینوکس به بعد، دیگر هیچ حافظه پنهان مسیریابی (routing cache) برای IPv4 وجود ندارد. بنابراین ip route show cached روی سیستم‌هایی با این نسخه از هسته یا نسخه‌های جدیدتر، هرگز هیچ مدخلی را چاپ نخواهد کرد.

ip ro

نمایش تمام مدخل‌های مسیر در هسته.

ip route add default via 192.168.1.1 dev eth0

افزودن یک مسیر پیش‌فرض (برای تمام نشانی‌ها) از طریق دروازه محلی 192.168.1.1 که روی دستگاه eth0 قابل دسترسی است.

ip route add 10.1.1.0/30 encap mpls 200/300 via 10.1.1.1 dev eth0

افزودن یک مسیر ipv4 همراه با مشخصه‌های کپسوله‌سازی mpls متصل به آن.

ip -6 route add 2001:db8:1::/64 encap seg6 mode encap segs 2001:db8:42::1,2001:db8:ffff::2 dev eth0

افزودن یک مسیر IPv6 همراه با کپسوله‌سازی SRv6 و دو قطعه متصل به آن.

ip -6 route add 2001:db8:1::/64 encap seg6local action End.DT46 vrftable 100 dev vrf100

افزودن یک مسیر IPv6 همراه با بازگشایی کپسوله‌سازی SRv6 و هدایت با جستجو در جدول VRF.

ip -6 route add 2001:db8:1::/64 encap seg6local action End flavors psp dev eth0

افزودن یک مسیر IPv6 با رفتار End مربوط به SRv6 با ویژگی psp فعال‌شده.

ip -6 route add 2001:db8:1::/64 encap seg6local action End flavors next-csid dev eth0

افزودن یک مسیر IPv6 با رفتار End مربوط به SRv6 با ویژگی next-csid فعال‌شده.

ip -6 route add 2001:db8:1::/64 encap seg6local action End flavors next-csid lblen 48 nflen 16 dev eth0

افزودن یک مسیر IPv6 با رفتار End مربوط به SRv6 با ویژگی next-csid فعال‌شده و طول‌های Locator-Block و Locator-Node Function تعیین‌شده توسط کاربر.

ip -6 route add 2001:db8:1::/64 encap ioam6 freq 2/5 mode encap tundst 2001:db8:42::1 trace prealloc type 0x800000 ns 1 size 12 dev eth0

افزودن یک مسیر IPv6 همراه با کپسوله‌سازی ردگیری از پیش تخصیص‌یافته IOAM (به‌صورت ip6ip6) که تنها شامل حد جهش و شناسه گره است، پیکربندی‌شده برای فضای نام IOAM شماره 1 و یک بلوک داده از پیش تخصیص‌یافته ۱۲ بایتی (در ۲ بسته از هر ۵ بسته تزریق خواهد شد).

ip route add 10.1.1.0/30 nhid 10

افزودن یک مسیر ipv4 با استفاده از شیء nexthop با شناسه 10.

ip(8)

صفحه راهنمای اصلی توسط Michail Litvak <mci@owl.openwall.com> نگاشته شده است.

13 Dec 2012 iproute2