| IP-ROUTE(8) | Linux | IP-ROUTE(8) |
نام (NAME)
ip-route - مدیریت جدول مسیریابی
خلاصه دستور (SYNOPSIS)
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 ]
توضیحات (DESCRIPTION)
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) استفاده شود.
- ip route add
- افزودن مسیر جدید
- ip route change
- تغییر مسیر
- ip route replace
- تغییر مسیر موجود یا افزودن مسیر جدید
- to TYPE PREFIX (پیشفرض)
- پیشوند مقصد مسیر. اگر TYPE حذف شود، ip نوع را unicast فرض میکند. سایر مقادیر TYPE در بالا فهرست شدهاند. PREFIX یک نشانی IP یا IPv6 است که بهصورت اختیاری یک اسلش و طول پیشوند به دنبال آن میآید. اگر طول پیشوند ذکر نشود، ip یک مسیر میزبان با طول کامل را فرض میکند. همچنین یک PREFIX ویژه به نام default وجود دارد که معادل IP 0/0 یا IPv6 ::/0 است.
- tos TOS
- dsfield TOS
- کلید نوع سرویس (TOS). این کلید ماسک مرتبطی ندارد و طولانیترین تطابق به این صورت تعبیر میشود: ابتدا، TOS مسیر و TOS بسته مقایسه میشوند. اگر برابر نباشند، ممکن است بسته با مسیری که دارای TOS صفر است تطابق یابد. TOS یا یک عدد هگزادسیمال ۸ بیتی است یا شناسهای برگرفته از /usr/share/iproute2/rt_dsfield یا /etc/iproute2/rt_dsfield (در صورت وجود اولویت دارد).
- metric NUMBER
- preference NUMBER
- مقدار اولویت (preference) مسیر. NUMBER یک عدد دلخواه ۳۲ بیتی است، که در آن مسیرهای دارای مقادیر کمتر ترجیح داده میشوند.
- table TABLEID
- جدولی که این مسیر به آن افزوده میشود. TABLEID میتواند یک عدد یا رشتهای از /usr/share/iproute2/rt_tables یا /etc/iproute2/rt_tables باشد (در صورت وجود اولویت دارد). اگر این پارامتر حذف شود، ip جدول main را فرض میکند، به استثنای مسیرهای local، broadcast و nat که بهطور پیشفرض در جدول local قرار میگیرند.
- vrf NAME
- نام vrf برای افزودن این مسیر به آن. بهطور ضمنی به معنای جدول مرتبط با آن VRF است.
- dev NAME
- نام دستگاه خروجی.
- via [ FAMILY ] ADDRESS
- نشانی مسیریاب جهش بعدی، در خانواده نشانی FAMILY. در واقع مفهوم این فیلد بستگی به نوع مسیر دارد. برای مسیرهای عادی unicast یا خود مسیریاب جهش بعدی واقعی است، یا اگر یک مسیر مستقیم نصبشده در حالت سازگاری BSD باشد، میتواند یک نشانی محلی از رابط کاربری باشد. برای مسیرهای NAT، این نشانی اولین نشانی از بلوک مقصدهای IP ترجمهشده است.
- src ADDRESS
- نشانی مبدا ترجیحی هنگام ارسال به مقصدهای تحت پوشش پیشوند مسیر.
- realm REALMID
- ناحیهای (realm) که این مسیر به آن اختصاص یافته است. REALMID میتواند یک عدد یا رشتهای برگرفته از /usr/share/iproute2/rt_realms یا /etc/iproute2/rt_realms باشد (در صورت وجود اولویت دارد).
- mtu MTU
- mtu lock MTU
- مقدار MTU در امتداد مسیر به سمت مقصد. اگر اصلاحکننده lock استفاده نشود، ممکن است MTU به دلیل کشف MTU مسیر (Path MTU Discovery) توسط هسته بهروزرسانی شود. اگر اصلاحکننده lock استفاده شود، هیچ تلاشی برای کشف MTU مسیر انجام نمیشود؛ همه بستهها در حالت IPv4 بدون بیت DF ارسال میشوند و در حالت IPv6 تا اندازه MTU قطعهقطعه (fragment) خواهند شد.
- window NUMBER
- حداکثر اندازه پنجره برای اعلان توسط TCP به این مقصدها، بر حسب بایت. این گزینه حداکثر فوران دادهها (data bursts) را که همتایان TCP ما مجاز به ارسال به ما هستند محدود میکند.
- rtt TIME
- تخمین اولیه RTT (زمان رفت و برگشت یا «Round Trip Time»). اگر هیچ پسوندی مشخص نشود، واحدها مقادیر خامی هستند که برای حفظ سازگاری با نسخههای قبلی مستقیماً به کد مسیریابی منتقل میشوند. در غیر این صورت از پسوندهای s، sec یا secs برای ثانیه و ms، msec یا msecs برای میلیثانیه استفاده میشود.
- rttvar TIME (فقط لینوکس 2.3.15+)
- تخمین اولیه واریانس RTT. مقادیر همانند rtt در بالا مشخص میشوند.
- rto_min TIME (فقط لینوکس 2.6.23+)
- حداقل مهلت بازپخش TCP (یا Retransmission TimeOut) برای استفاده در هنگام ارتباط با این مقصد. مقادیر همانند rtt در بالا مشخص میشوند.
- ssthresh NUMBER (فقط لینوکس 2.3.15+)
- تخمینی برای آستانه شروع آهسته (slow start threshold) اولیه.
- cwnd NUMBER (فقط لینوکس 2.3.15+)
- مهارکننده (clamp) برای پنجره تراکم (congestion window). اگر پرچم lock استفاده نشود، نادیده گرفته میشود.
- initcwnd NUMBER (فقط لینوکس 2.5.70+)
- اندازه پنجره تراکم اولیه برای ارتباطها با این مقصد. اندازه واقعی پنجره برابر است با حاصلضرب این مقدار در MSS (حداکثر اندازه قطعه یا «Maximal Segment Size») برای همان اتصال. مقدار پیشفرض صفر است، به این معنی که از مقادیر مشخصشده در RFC2414 استفاده میشود.
- initrwnd NUMBER (فقط لینوکس 2.6.33+)
- اندازه پنجره دریافت اولیه برای ارتباطها با این مقصد. اندازه واقعی پنجره برابر با حاصلضرب این مقدار در MSS اتصال است. مقدار پیشفرض صفر است که به معنای استفاده از مقدار شروع آهسته (Slow Start) میباشد.
- features FEATURES (فقطلینوکس3.18+)
- فعال یا غیرفعال کردن ویژگیهای مبتنی بر مسیر. در حال حاضر تنها ویژگی موجود ecn برای فعالسازی اعلان صریح تراکم (explicit congestion notification) هنگام برقراری ارتباط با شبکه مقصد دادهشده است. هنگام پاسخ به درخواست اتصال از شبکه مشخصشده، ecn حتی اگر متغیر sysctl net.ipv4.tcp_ecn روی 0 تنظیم شده باشد نیز استفاده خواهد شد.
- quickack BOOL (فقط لینوکس 3.11+)
- فعال یا غیرفعال کردن تایید سریع (quick ack) برای اتصالها به این مقصد.
- فعال کردن TCP Fastopen بدون کوکی برای ارتباطها با این مقصد.
- congctl NAME (فقط لینوکس 3.20+)
- congctl lock NAME (فقط لینوکس 3.20+)
- تنظیم یک الگوریتم کنترل تراکم TCP خاص تنها برای یک مقصد مشخص. اگر مشخص نشود، لینوکس الگوریتم پیشفرض سراسری فعلی کنترل تراکم TCP یا الگوریتم تعیینشده توسط برنامه را نگه میدارد. اگر اصلاحکننده lock استفاده نشود، یک برنامه با این حال میتواند الگوریتم کنترل تراکم پیشنهادی را برای آن مقصد بازنویسی کند. اگر اصلاحکننده lock استفاده شود، آنگاه برنامه اجازه بازنویسی الگوریتم کنترل تراکم مشخصشده برای آن مقصد را نخواهد داشت؛ بنابراین استفاده از الگوریتم پیشنهادی اجباری و تضمین خواهد شد.
- advmss NUMBER (فقط لینوکس 2.3.15+)
- مقدار MSS (حداکثر اندازه قطعه یا «Maximal Segment Size») برای اعلام به این مقصدها هنگام برقراری ارتباطهای TCP. اگر ارائه نشود، لینوکس از یک مقدار پیشفرض محاسبهشده از MTU دستگاه جهش اول استفاده میکند. (اگر مسیر منتهی به این مقصدها نامتقارن باشد، این حدس ممکن است اشتباه باشد.)
- reordering NUMBER (فقط لینوکس 2.3.15+)
- حداکثر بههمریختگی ترتیب بستهها (reordering) در مسیر به سمت این مقصد. اگر ارائه نشود، لینوکس از مقدار تعیینشده توسط متغیر sysctl به نام net/ipv4/tcp_reordering استفاده میکند.
- nexthop NEXTHOP
- جهش بعدی (nexthop)
مربوط به یک
مسیر
چندمسیره
(multipath). NEXTHOP یک
مقدار
پیچیده
همراه با
نحو مخصوص
خود و مشابه
با
فهرستهای
آرگومان
سطح بالا
است:
via [ FAMILY ] ADDRESS - مسیریاب جهش بعدی است.dev NAME - دستگاه خروجی است.
weight NUMBER - وزنی برای این عنصر از مسیر چندمسیره است که پهنای باند یا کیفیت نسبی آن را نشان میدهد.
بافر داخلی مورداستفاده در iproute2 حداکثر تعداد nexthopهایی را که میتوان در یکباره مشخص کرد محدود میسازد. اگر فقط ADDRESS ارائه شود، اندازه بافر فعلی اجازه تعیین ۱۴۴ جهش بعدی برای IPv6 و ۲۵۳ جهش بعدی برای IPv4 را میدهد. برای IPv4، این امر در عمل تعداد nexthopهای ممکن در هر مسیر را محدود میکند. در IPv6، جهشهای بعدی بیشتر را میتوان از طریق دستور ip route append به همان مسیر ضمیمه کرد.
- scope SCOPE_VAL
- دامنه (scope) مقصدهای تحت پوشش پیشوند مسیر. SCOPE_VAL میتواند یک عدد یا رشتهای از /usr/share/iproute2/rt_scopes یا /etc/iproute2/rt_scopes باشد (در صورت وجود اولویت دارد). اگر این پارامتر حذف شود، ip دامنه global را برای تمام مسیرهای دارای دروازه unicast، دامنه link را برای مسیرهای مستقیم unicast و broadcast و دامنه host را برای مسیرهای local فرض میکند.
- protocol RTPROTO
- شناسه
پروتکل
مسیریابی
این مسیر. RTPROTO
میتواند
یک عدد یا
رشتهای از
/usr/share/iproute2/rt_protos یا
/etc/iproute2/rt_protos باشد
(در صورت
وجود
اولویت
دارد). اگر
شناسه
پروتکل
مسیریابی
داده نشود،
ip پروتکل
را boot فرض
میکند
(یعنی فرض
میکند که
مسیر توسط
فردی اضافه
شده که
دقیقاً
متوجه کاری
که انجام
میدهد
نیست).
چندین
مقدار
پروتکل
دارای
تفسیر ثابت
هستند؛ از
جمله:
redirect - مسیر به دلیل یک ICMP redirect نصب شده است.kernel - مسیر توسط هسته در طول پیکربندی خودکار نصب شده است.
boot - مسیر در طول فرآیند راهاندازی نصب شده است. اگر یک دیمن مسیریابی آغاز به کار کند، تمام آنها را پاکسازی خواهد کرد.
static - مسیر توسط مدیر سیستم برای لغو مسیریابی پویا نصب شده است. دیمن مسیریابی به آنها احترام میگذارد و احتمالاً حتی آنها را به همتایان خود اعلام میکند.
ra - مسیر توسط پروتکل Router Discovery نصب شده است.
بقیه مقادیر رزرو نشدهاند و مدیر سیستم در تخصیص (یا عدم تخصیص) برچسبهای پروتکل مختار است.
- onlink
- وانمود میکند که جهش بعدی (nexthop) مستقیماً به این پیوند متصل است، حتی اگر با هیچ پیشوند رابطی تطابق نداشته باشد.
- pref PREF
- اولویت
مسیر IPv6. PREF
رشتهای
است که
اولویت
مسیر را
همانطور
که در RFC4191 برای
پیامهای Router
Discovery تعریف
شده مشخص
میکند؛ از
جمله:
low - مسیر دارای کمترین اولویت استmedium - مسیر دارای اولویت پیشفرض است
high - مسیر دارای بالاترین اولویت است
- nhid ID
- استفاده از شیء nexthop با شناسه مشخصشده به عنوان مشخصات جهش بعدی.
- encap ENCAPTYPE ENCAPHDR
- پیوست
مشخصههای
کپسولهسازی
تونل به این
مسیر.
ENCAPTYPE رشتهای است که نوع کپسولهسازی پشتیبانیشده را مشخص میکند؛ از جمله:
mpls - نوع کپسولهسازی MPLSip - کپسولهسازی 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) بلافاصله پس از هدر IPv6mode 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 ]
- expires TIME (فقط لینوکس 4.4+)
- مسیر پس از زمان انقضا حذف خواهد شد. در حال حاضر فقط از IPv6 پشتیبانی میکند.
- ttl-propagate { enabled | disabled }
- کنترل اینکه آیا TTL باید از هرگونه کپسولهسازی به بسته کپسولهنشده منتشر شود یا خیر، با لغو هرگونه پیکربندی سراسری. در حال حاضر فقط برای MPLS پشتیبانی میشود.
- ip route delete
- حذف مسیر
مقادیر کلیدی (to، tos، preference و table) مسیر موردنظر برای حذف را انتخاب میکنند. اگر مشخصههای اختیاری وجود داشته باشند، ip تطابق آنها را با مشخصههای مسیر جهت حذف بررسی میکند. اگر هیچ مسیری با کلید و مشخصههای ارائهشده یافت نشود، ip route del با شکست روبرو میشود.
- ip route show
- فهرست کردن مسیرها
- to SELECTOR (پیشفرض)
- تنها مسیرها را از محدوده مقصدهای مشخصشده انتخاب میکند. 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 TOS
- dsfield TOS
- تنها مسیرهایی با TOS دادهشده را انتخاب میکند.
- table TABLEID
- مسیرهای
این
جدول(ها) را
نمایش
میدهد.
تنظیم
پیشفرض
نمایش جدول
main است. TABLEID
میتواند
شناسه یک
جدول واقعی
یا یکی از
مقادیر
ویژه زیر
باشد:
all - فهرست کردن همه جدولها.cache - نمایش محتوای حافظه پنهان مسیریابی.
- vrf NAME
- نمایش مسیرهای جدول مرتبط با نام vrf
- cloned
- cached
- فهرست کردن مسیرهای کلونشده، یعنی مسیرهایی که به دلیل بهروزرسانی مشخصهای از مسیر (مثلاً MTU) بهطور پویا از سایر مسیرها منشعب شدهاند. در واقع، این گزینه معادل table cache است.
- from SELECTOR
- همان نحو مربوط به گزینه to را دارد، اما به جای مقصدها، محدوده نشانی مبدا را مقید میسازد. توجه داشته باشید که گزینه from فقط با مسیرهای کلونشده کار میکند.
- protocol RTPROTO
- تنها مسیرهای این پروتکل را فهرست میکند.
- scope SCOPE_VAL
- تنها مسیرهای با این دامنه را فهرست میکند.
- type TYPE
- تنها مسیرهای از این نوع را فهرست میکند.
- dev NAME
- تنها مسیرهایی را فهرست میکند که از این دستگاه عبور میکنند.
- via [ FAMILY ] PREFIX
- تنها مسیرهایی را فهرست میکند که از طریق مسیریابهای جهش بعدی انتخابشده توسط PREFIX عبور میکنند.
- src PREFIX
- تنها مسیرهایی با نشانیهای مبدا ترجیحی انتخابشده توسط PREFIX را فهرست میکند.
- realm REALMID
- realms FROMREALM/TOREALM
- تنها مسیرهایی با این ناحیهها (realms) را فهرست میکند.
- ip route flush
- تخلیه جدولهای مسیریابی
آرگومانها نحو و مفاهیمی مشابه آرگومانهای ip route show دارند، با این تفاوت که جدولهای مسیریابی فهرست نمیشوند بلکه پاکسازی میگردند. تنها تفاوت در اقدام پیشفرض است: show تمام جدول مسیریابی اصلی IP را نمایش میدهد اما flush صفحه راهنما را چاپ میکند.
با گزینه -statistics، دستور با جزئیات کامل عمل میکند. این دستور تعداد مسیرهای حذفشده و تعداد دفعات اجرای دورهها برای تخلیه جدول مسیریابی را چاپ میکند. اگر این گزینه دو بار مشخص شود، ip route flush همچنین تمام مسیرهای حذفشده را در قالبی که در زیربخش پیشین شرح داده شد نمایش میدهد.
- ip route get
- دریافت یک مسیر منفرد
- fibmatch
- بازگرداندن مسیر منطبق بر جستجوی کامل fib. حالت پیشفرض بازگرداندن مدخل مقصد (dst) حلشده است.
- to ADDRESS (پیشفرض)
- نشانی مقصد.
- from ADDRESS
- نشانی مبدا.
- tos TOS
- dsfield TOS
- نوع سرویس (Type Of Service).
- iif NAME
- دستگاهی که انتظار میرود این بسته از آن وارد شود.
- oif NAME
- اجبار دستگاه خروجی که این بسته باید روی آن مسیریابی شود.
- mark MARK
- نشان فایروال (fwmark)
- vrf NAME
- اجبار دستگاه vrf که این بسته باید روی آن مسیریابی شود.
- ipproto PROTOCOL
- پروتکل ip آنطور که توسط جستجوی مسیر مشاهده میشود.
- sport NUMBER
- درگاه مبدا آنطور که توسط جستجوی مسیر مشاهده میشود.
- dport NUMBER
- درگاه مقصد آنطور که توسط جستجوی مسیر مشاهده میشود.
- connected
- اگر هیچ نشانی مبدایی (گزینه from) داده نشده باشد، مسیر را مجدداً با مبدایی که روی نشانی ترجیحی حاصل از جستجوی اول تنظیم شده جستجو میکند. در صورت استفاده از مسیریابی مبتنی بر خطمشی، ممکن است مسیر متفاوتی باشد.
- flowlabel FLOWLABEL
- برچسب جریان ipv6 آنطور که توسط جستجوی مسیر مشاهده میشود.
توجه داشته باشید که این عملیات معادل ip route show نیست. دستور show مسیرهای موجود را نمایش میدهد. دستور get آنها را تفکیک و حل کرده و در صورت لزوم کلونهای جدیدی میسازد. اساساً، get معادل ارسال یک بسته در طول این مسیر است. اگر آرگومان iif داده نشود، هسته مسیری را برای خروج بستهها به سمت مقصد درخواستی ایجاد میکند. این کار معادل پینگ کردن مقصد و سپس اجرای متعاقب ip route ls cache است، اما در واقع هیچ بستهای ارسال نمیشود. با وجود آرگومان iif، هسته وانمود میکند که بستهای از این رابط وارد شده است و به دنبال مسیری برای هدایت (forward) بسته میگردد.
- ip route save
- ذخیره اطلاعات جدول مسیریابی در stdout
- ip route restore
- بازیابی اطلاعات جدول مسیریابی از stdin
نکات (NOTES)
از نسخه 3.6 هسته لینوکس به بعد، دیگر هیچ حافظه پنهان مسیریابی (routing cache) برای IPv4 وجود ندارد. بنابراین ip route show cached روی سیستمهایی با این نسخه از هسته یا نسخههای جدیدتر، هرگز هیچ مدخلی را چاپ نخواهد کرد.
مثالها (EXAMPLES)
ip ro
ip route add default via 192.168.1.1 dev eth0
ip route add 10.1.1.0/30 encap mpls 200/300 via 10.1.1.1 dev eth0
ip -6 route add 2001:db8:1::/64 encap seg6 mode encap segs 2001:db8:42::1,2001:db8:ffff::2 dev eth0
ip -6 route add 2001:db8:1::/64 encap seg6local action End.DT46 vrftable 100 dev vrf100
ip -6 route add 2001:db8:1::/64 encap seg6local action End flavors psp dev eth0
ip -6 route add 2001:db8:1::/64 encap seg6local action End flavors next-csid dev eth0
ip -6 route add 2001:db8:1::/64 encap seg6local action End flavors next-csid lblen 48 nflen 16 dev eth0
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
ip route add 10.1.1.0/30 nhid 10
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
صفحه راهنمای اصلی توسط Michail Litvak <mci@owl.openwall.com> نگاشته شده است.
| 13 Dec 2012 | iproute2 |