همانطور که پیشتر گفته شد در شبکه های IP مسیریابی بر اساس آدرس مقصد صورت می پذیرد که البته منطقی هم هست. بدین معنی که ترافیک های دریافتی روی روتر با توجه به آدرس مقصد مسیریابی می شوند. تجربه در شبکه های IP نشان داده است که مسیریابی بر اساس پارامترهای غیر از مقصد ممکن است از نیازهای هر سازمان و یا سرویس دهنده ای باشد.

به عنوان مثال تصور کنید، سازمانی به دو اینترنت از طریق دو ISP مختلف متصل است و حالا قصد دارد ترافیک های اینترنت بخش هایی از سازمان را به ISP اول و بقیه ترافیک های اینترنت را از طریق ISP دوم ارسال نماید. خود صورت مسئله مسیریابی بر اساس آدرس مبدا را القا می کند. بدین معنی که اگر ترافیک های به مقصد اینترنت از مبدا های خاصی دریافت شدند، به ISP اول و در غیر این صورت به ISP دوم ارسال شوند. به عنوان مثال دوم تصور کنید که سازمانی بین دفاتر خود در سرتاسر کشور دو بستر ارتباطی مختلف (دو بستر MPLS VPN) اجاره نموده است. حال قصد دارد ترافیک های Voice و Video که به تاخیر حساس هستند را روی بستر ارتباطی اول و ما بقی ترافیک را روی بستر دوم ارسال نماید. در چنین شرایطی مسیریابی باید بر اساس نوع ترافیک صورت پذیرد.

ابزار PBR و یا مسیریابی بر اساس Policy، اجازه پیاده سازی سناریوهای فوق را فراهم می کند. PBR با route-map پیاده سازی می شود و به عنوان دومین کاربرد اساسی route-map است. دیگر کاربردهای route-map همچون فیلترینگ و دستکاری مسیر و همچنین اعمال سیاست های مسیریابی در BGP از کاربردهای Control Plane محسوب می شوند اما این کاربرد از route-map که در این بخش به آن می پردازیم، تنها کاربردی از route-map است که در Data Plane کار می کند. بدین معنی که روی مسیر ترافیک داده در حین ارسال تاثیر می گذارد.

پیاده سازی PBR به مراحل زیر قابل دسته بندی است:

  1. ابتدا ترافیک هایی که قصد داریم مسیرهای مختلفی برای آنها در نظر بگیریم را بر اساس مشخصات لایه 3 و 4 ترافیک و یا طول بسته جدا می کنیم. جدا سازی ترافیک معمولا با یکی از شیوه های زیر انجام می شود
    • o با ابزار access-list ترافیک ها را جدا می کنیم و سپس با دستور match ip address و یا match ipv6 address در route-map آن را صدا می زنیم.
    • o با دستور match length در route-map بسته های با طول مشخصی را جدا می کنیم.
  2. با ابزار route-map مسیر هر یک از ترافیک های تعیین شده در مرحله قبل را با یکی از دستورات زیر تعیین می کنیم. تفاوت این دستورات را ادامه بررسی می کنیم. البته این ابزار غیر از تعیین مسیر ترافیک، امکان برچسب کردن ترافیک در لایه 3 و یا تنظیم بیت df برای جلوگیری از fragmentation را نیز فراهم می کند.
    • o set {ip|ipv6} next-hop
    • o set {ip|ipv6} default next-hop
    • o set interface
    • o و یا set default interface
  3. route-map ایجاد شده را به اینترفیس اعمال می کنیم. این اینترفیس، همان اینترفیسی است که با دریافت ترافیک روی آن مسیر خروجی ترافیک را تعیین می کنیم. برای نسبت دادن route-map به اینترفیس از دستور ip policy route-map روی اینترفیس استفاده می کنیم.

برای درک بهتر مراحل فوق با یک سناریو ساده شروع می کنیم سپس تفاوت انواع دستورات را در جدولی ارائه خواهیم داد.

در سناریوی ذیل دو مبدا با نام های SOURCE1 و SOURCE2 داریم. هر دو قصد دارند با مقصد به آدرس 1.1.1.1 در ارتباط باشند. در شرایط عادی با توحه به نوع پروتکل مسیریابی روی شبکه، مسیر خروجی از طریق یکی از دو ISP1 و یا ISP2 و یا از هر دو ISP برقرار می گردد. در سناریوی ما نیز تفاوتی نمی کند که از کدام یک از پروتکل های مسیریابی و یا حتی از روش Static استفاده شود، زیرا PBR به هر روش دیگر مسیریابی اولویت دارد (مگر در شرایط خاص که بعدا در مورد آن صحبت خواهیم کرد).

قصد داریم روی روتر GW، در صورتی که ترافیک با مبداء SOURCE1 با آدرس 192.168.1.10 دریافت شود، ترافیک را از مسیر ISP1 و در صورتی که ترافیک از SOURCE2 با آدرس 192.168.1.20  دریافت گردد، آن را از مسیر ISP2 ارسال نماییم در غیر این صورت نیز مسیریابی را به جدول مسیریابی واگذار می کنیم.

مسیریابی بر اساس Policy

مسیریابی بر اساس Policy

ابتدا دو access-list به شماره های 101 و 102 می نویسسم که اولی به ترافیک های با مبدا 192.168.1.10 و دومی به ترافیک های با مبدا 192.168.1.20 اشاره می کند. سپس route-map با نام PBR و با دو rule نوشته شده است که در rule اول در صورت دریافت ترافیک های SOURCE1 آن را روی اینترفیس S2/0 خارج می کنیم و در صورت دریافت ترافیک های SOURCE2 آن را به روتر بعدی 12.1.2.2 که آدرس ISP2 است تحویل می دهیم. اگر دقت کرده باشید در این route-map از هر دو دستور set ip next-hop و set interface استفاده شده است تا کارایی هر دو نشان داده شود. استفاده از دستور set ip next-hop برای تعیین مسیر خروجی همواره امکان پذیر است اما دستور set interface فقط وقتی قابل استفاده است که اینترفیس خروجی point-to-point باشد. از آنجایی که در این مثال اینترفیس های خروجی روتر GW از نوع point-to-point هستند، لذا استفاده از هر دو دستور فوق امکان پذیر است.

حتما می دانید که آخرین خط route-map همواره deny all است اما در PBR دستور deny به معنی فیلتر کردن ترافیک نیست، بلکه بدین معنی است که ترافیک در PBR بررسی نمی شود و به صورت معمول توسط جدول مسیریابی ارسال خواهد شد.

نهایتا دستور route-map به اینترفیسی از روتر GW که ترافیک های مورد نظر به آن وارد می شوند با دستور ip policy route-map PBR نسبت داده شده است.

برای اطمینان از عملکرد صحیح PBR یکبار از روی SOURCE1 و یکبار از روی SOURCE2 ترافیک را به مقصد 1.1.1.1 ارسال و مسیر را با ابزار traceroute مانیتور می کنیم. خروجی دستور نشان می دهد که یکی از مسیر بالا و دیگری از مسیر پایین ارسال می گردد.

روش دومی نیز برای تست عملکرد  PBR وجود دارد و آن اینکه روی روتر GW از دستور debug ip policy استفاده کنیم که در صورت match شدن ترافیک با PBR و تعیین مسیر توسط این ابزار در خروجی دستور debug نشان داده می شود. برای تست عملکرد PBR در این روش یکبار از روی SOURCE1 و یکبار از روی SOURCE2 با ابزار ping فقط یک بسته به سمت مقصد 1.1.1.1 ارسال می کنیم، خروجی دستور debug ip policy در هر دو حالت نشان داده شده است. خروجی نشان می دهد که در که در حالت اول ترافیک از روی اینترفیس S2/0 خارج می شود و در حالت دوم که ترافیک از SOURCE2 دریافت می گردد، از مسیر 12.1.2.2 ارسال می شود.

در محیط واقعی مراقب باشید چگونه از دستور debug ip policy استفاده می کنید. چنانچه حجم زیادی از ترافیک با Policy مطابقت داشته باشد، حجم خروجی دستور debug غیر قابل کنترل خواهد بود و روتر از کار می افتد.

 

!!! GW

! first STEP

access-list 101 permit ip host 192.168.1.10 any

access-list 102 permit ip host 192.168.1.20 any

!

! scond STEP

route-map PBR permit 10

 match ip address 101

 set interface Serial2/0

route-map PBR permit 20

 match ip address 102

 set ip next-hop 12.1.2.2

!

! third STEP

interface Ethernet0/0

 ip policy route-map PBR

!

!!!

!!! ترافیک از مسیر بالا ارسال می شود.

SOURCE1#traceroute 1.1.1.1

Type escape sequence to abort.

Tracing the route to 1.1.1.1

  1 192.168.1.1 4 msec 4 msec 0 msec

  2 12.1.1.2 12 msec 16 msec 8 msec

  3 13.1.1.2 20 msec 24 msec *

!

!!! ترافیک از مسیر پایین ارسال می شود.

SOURCE2#traceroute 1.1.1.1

Type escape sequence to abort.

Tracing the route to 1.1.1.1

  1 192.168.1.1 0 msec 4 msec 0 msec

  2 12.1.2.2 4 msec 12 msec 8 msec

  3 13.1.2.2 20 msec 16 msec *

!

!!! خروجی دستور debug ip policy نشان می دهد که ترافیک از طریق PBR و از مسیر بالا ارسال می شود.

SOURCE1#ping 1.1.1.1 repeat 1

!

GW#debug ip policy

*Dec  2 19:47:35.239: IP: s=192.168.1.10 (Ethernet0/0), d=1.1.1.1, len 100, FIB policy match

*Dec  2 19:47:35.239: IP: s=192.168.1.10 (Ethernet0/0), d=1.1.1.1, len 100, PBR Counted

*Dec  2 19:47:35.239: IP: s=192.168.1.10 (Ethernet0/0), d=1.1.1.1 (Serial2/0), len 100, FIB policy routed

!

!!! خروجی دستور debug ip policy نشان می دهد که ترافیک از طریق PBR و از مسیر پایین ارسال می شود.

SOURCE2#ping 1.1.1.1 repeat 1

!

*Dec  2 19:48:13.791: IP: s=192.168.1.20 (Ethernet0/0), d=1.1.1.1, len 100, FIB policy match

*Dec  2 19:48:13.791: IP: s=192.168.1.20 (Ethernet0/0), d=1.1.1.1, len 100, PBR Counted

*Dec  2 19:48:13.791: IP: s=192.168.1.20 (Ethernet0/0), d=1.1.1.1, g=12.1.2.2, len 100, FIB policy routed

چگونگی پیاده سازی و تست Policy Based Routing

در سناریوی فوق از هر دو دستور set ip next-hop و set interface برای تعیین مسیر خروجی استفاده شده است. دستور set ip next—hop همواره قابل استفاده است اما دستور set interface فقط زمانی قابل استفاده است که اینترفیس خروجی از نوع point-to-point باشد.

علاوه بر دو دستور فوق می توان از دو دستور set default ip next-hop و set default interface نیز برای تعیین مسیر خروجی استفاده کرد. تفاوت این دو دستور با دستورات قبلی در چیست؟ در دو دستور قبلی ترافیک های که با route-map نوشته شده match می شوند، از طریق مسیر تعیین شده در route-map ارسال می شوند و ترافیک هایی که match نمی شوند، به صورت معمول از طریق جدول مسیریابی ارسال می گردند. به عبارت دیگر PBR نسبت به جدول مسیریابی در اولویت است.

این دو دستور (set default ip next-hop و set default interface) که کلمه default نسبت به دستورات قبلی به آن اضافه شده است، به نوعی بر عکس عمل می کند. بدین معنی که جدول مسیریابی نسبت به PBR در اولویت است. به عبارت دیگر ترافیک های دریافتی همواره بر اساس جدول مسیریابی ارسال می شوند، اگر مسیر مشخصی (غیر از مسیر default) در جدول مسیریابی وجود داشته باشد، بر اساس آن مسیر ارسال می گردد در غیر این صورت با توجه به سیاست های PBR ارسال خواهد شد و اگر با هیچ یک از rule های نوشته شده در route-map نیز match نشود، آنگاه از مسیر default ارسال خواهد شد.

جدول زیر به صورت خلاصه مجموعه دستورات set قابل استفاده در route-map را به همراه تفاوت آنها نشان می دهد

         مجموعه دستورات Set در PBR در Data Plane

مجموعه دستورات Set در PBR در Data Plane

دیدگاه‌ها  

+4 #1 محمد قلي زاده 1397-12-08 08:22
سلام و عرض ادب خدمت مهندس اسدپور
بسيار مقاله کاملي در زمينه PBR بود . استفاده کردم از دانش شما در اين زمينه. شاد و پيروز باشيد.
نقل قول کردن

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید