Sunday, February 12, 2012

Default Router`s CEF entries

موضوع اليوم هو احد المواضيع المتعلقة بال Cisco Express Forwarding او ما يسمى بال CEF .. سوف اتناول فى تدوينة اليوم ال default CEF entries على اى router بمعنى انه فى حالة شراء router جديد و لم نقم بعمل اى configuration على ال router وقمنا بعرض ال CEF entries الموجودة بال FIB  سوف نلاحظ عدة entries تكون مخزنة وموجودة بالفعل by default على ال router ..


ولعرض ال cef entries الموجودة بال FIB نستخدم ال command الاتى :
Router#show ip cef 
نسخة ال ios المستخدمة فى المثال الاتى هى :
c2691-adventerprisek9_ivs-mz[1].124-9.T7.BIN
واعتقد ان ال output لن يختلف مع تغيير اى نسخة تدعم ال CEF 
                    " اضغط على الصورة لكى تظهر  بالحجم الاصلى "

- 224.0.0.0/24 : مخصصة ل range ال ip addresses المحجوزة لل multicast ddresses. مثل ال range الخاص بكل من ال OSPF او ال EIGRP وغيرهم ففى حالة حدوث matching فسوف يستلمها ال router . 


- 224.0.0.0/4 : entry مخصص بباقى انواع وعناوين ال multicast addresses اى الغير محجوزة و الغير مخصصة سواء ل routing protocols او لل services الاخرى . فى حالة حدوث matching سوف يقوم ال router بعمل drop لهذه ال packet .

- 255.255.255.255/32 : عبارة عن ال broadcast address لاى subnet فى ال network و سيستلمها ال router .

- 0.0.0.0/0 : عبارة عن entry مخصص لاى ip addresses اخرى غير المحددة فى ال entries السابقة " معد لل default routes الموجهة الى ال Router للتعامل معها " وفى هذه الحالة by default سيقوم ال router بتوجيهها الى ال NULL 0 او ما يسمى بال black hole ومن ثم يحصل drop لل packet .

- 0.0.0.0/32 : يمثل ال source address لل packets الصادرة من ال locally attached hosts ويمكن القول بانه مخصص لل link local addresses . فعندما يستلم ال router اى packet وتكون matched مع هذا ال entry فال router سوف يستلمها by default .



مصادر المعلومات:
1- packet life blog 
2- IANA documentations

ارجو ان يكون الموضوع كان بسيط ومفهوم ...


    Friday, February 10, 2012

    set next-hop using route-map

    موضوع اليوم متعلق بال roue-map وهو تحديد next-hop address لكل ال routes الخارجة من ال Router باكثر من طريقة مع شرح الاختلافات بين هذه الطرق و التوضيح بامثلة باستخدام ال topology التالية :




    وهذه هى الاعدادات الابتدائية :
    R2 :
    ip route 192.168.1.0 255.255.255.0 10.0.0.1

    R3 :
    ip route 10.0.0.0 255.255.255.0 192.168.1.1 

    وبذلك يكون ال RTG لكل ال Routers كالاتى :
    R3#sh ip route 
    C       172.16.10.0 is directly connected, FastEthernet1/1
    S       10.0.0.0 [1/0] via 192.168.1.1
    C    192.168.1.0/24 is directly connected, FastEthernet1/0

    R2#sh ip route 
    C       10.0.0.0 is directly connected, FastEthernet1/0
    S    192.168.1.0/24 [1/0] via 10.0.0.1

    ولعمل check سريع على ال connectivity بين ال routers :

    R2#ping 192.168.1.2
    Type escape sequence to abort
    :Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 60/88/112 ms

    R3#ping 10.0.0.2
    Type escape sequence to abort
    :Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 80/108/140 ms


    والان سوف ننتقل لموضوعنا الرئيسى الا وهو ال route-map وبالتحديد  التطرق لل جزئية الخاصة بتحديد وتحجيم ال next-hop و اجبار ال router على اتخاذ مسار بعينه من خلال عمل set لل next-hop التى سيستخدمها فى الذهاب لاى route :


    R3(config)#route-map NETWORKING-GEEK  permit 10

    R3(config-route-map)#set ip next-hop 172.16.10.1

    R3(config-route-map)#exit

    R3(config)#ip local policy route-map 
    NETWORKING-GEEK 

    قمنا بعمل creat ل route-map بالاسم NETWORKING-GEEK و ب seq number = 10 ,و قمنا بتحديد ال ip الخاص بال next hop المراد اعداده على ال router  وقمنا باضافة الcommand الاخير الذى يخبر ال router بانه يجب عليك تطبيق ال route-map اللى اسمها NETWORKING-GEEK على ال local policy اى انك سوف تكون ملزم باستخدام ال next-hop المحدد للخروج لاى route .

    وبعد عمل configure لل route-map :

    R3#ping 10.0.0.2
    Type escape sequence to abort
    :Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds
    U.U.U
    (Success rate is 0 percent (0/5
    نلاحظ بان ال success rate 0/5 و هذا لان ال router قام بارسال ال icmp req و ال packets من خلال ال int f1/1 لل next hop 172.16.10.1 الا وهو R4 وبالتالى لن يفلح ال R3 فى الوصول ل R2 .

    R3#ping 10.0.0.2 source 192.168.1.2 
    Type escape sequence to abort
    :Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds
    Packet sent with a source address of 192.168.1.2 
    .....
    (Success rate is 0 percent (0/5


    نلاحظ هنا انه بالرغم من تحديد ال ip الخاص بال f0/1 و نقوم بعمل ping ل R2 فانه لن ينجح ايضا وذلك لان ال R3 سوف يستخدم ال int f1/1 ولن يستخدم ال f0/1 



    R3#ping 192.168.1.1 source 192.168.1.2

    Type escape sequence to abort

    :Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds
    Packet sent with a source address of 192.168.1.2 
    .....
    (Success rate is 0 percent (0/5


    وفشل ايضا فى انه ي connect بال R1 مع انه directly connected معه , لنفس السبب ايضا ان جميع ال packets تخرج من ال int f1/1 وبذلك لن يستطيع ال R3 التواصل وتوجيه ال packets الى اى router موصل به او يستطيع الوصول له من جهة ال intf0/1 وانما يستطيع الوصول فقط الى جميع ال routers الموصلة به من جهة ال int f1/1 كما نشاهد :

    R3#ping 172.16.10.1
    Type escape sequence to abort
     :Sending 5, 100-byte ICMP Echos to 172.16.10.1, timeout is 2 seconds
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 20/58/124 ms

    و يحدث هذا كله بالرغم من ان ال RTG الخاص بال R3 يحتوى على جميع ال routes الى كل ال routers فى ال topology كما نرى :
    R3#sh ip route

    C       172.16.10.0 is directly connected, FastEthernet1/1

    S       10.0.0.0 [1/0] via 192.168.1.1

    C    192.168.1.0/24 is directly connected, FastEthernet1/0

    ولعمل verification او monitoring لل route-map ...

    R3#sh route-map 
    route-map NETWORKING-GEEK , permit, sequence 10
     :  Match clauses
    :  Set clauses
        ip next-hop 172.16.10.1
      Policy routing matches: 30 packets, 3000 bytes

    دعنا الان نلغى كل الاعدادات الخاصة بال route-map 
    R3(config)#route-map NETWORKING-GEEK permit 10
    R3(config-route-map)#no set ip next-hop 172.16.10.1

    وكما نلاحظ ان ال ping نجح بصورة طبيعية ورجعت الامور الى طبيعتها :


    R3#ping 10.0.0.2

    Type escape sequence to abort.

    Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 92/132/168 ms

    والان ننتقل للطريقة الاخرى لتطبيق ال route-map :


    R3(config)#route-map NETWORKING-GEEK permit 10   

    R3(config-route-map)#set ip default next-hop 172.16.10.1

    R3(config-route-map)#exit
    R3(config)#ip local policy route-map 
    NETWORKING-GEEK 

    مقارنة بالطريقة الاولى اختلف فقط كلمة (default) و الان دعنا نقوم بفحص ال connectivity بباقى ال routers :


    R3#ping 10.0.0.2

    Type escape sequence to abort

     :Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds
    *Jan 28 09:14:27.723: %SYS-5-CONFIG_I: Configured from console by console
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 120/146/176 ms


    نلاحظ ان ال success rate 5/5 طبعا الكل مندهش !!!! فى ال configurations السابقة فشل ال ping وكان ال success rate 0/5 ولكن ماذا حدث الان ؟؟!! 
    بالفعل حدث اختلاف تام عند اضافة كلمة default فى ال route-map وهذا ما سوف اشرحه الان :

    R3(config-route-map)#set ip next-hop 172.16.10.1


    عند تطبيق هذا ال command فان ال R يطبق ال route-map بكل حذافيرها دون النظر لل RTG فكما لاحظنا ان ال R3 كان لديه فى ال RTG مسارات لكل ال Routers فى ال topology , ولم يكن يرى سوى R4 المواجه له من ال next-hop الموجودة فى ال route-map وبذلك نستنتج ان هذا الامر يلغى تماما ال routing table فى ال router ويجبلر ال router بدلا من ان ينظر لل RTG ويتخذ قرارة فى عمل توجيه لل packets فانه يمنعه من كا هذا ويجعله ينظر لل route-map database و يتفحص ال rules ويطبقها ..

    اما هذا ال command :

    R3(config-route-map)#set ip default next-hop 172.16.10.1

    اضافة كلمة default تتيح لل router ان ينظر لل RTG ويتخذ قرارة بناءا عليه يحدد كيفية توجيه ال packets و ان لم يجد مسار ل route معينة فى ال RTG يستطيع بعد ذلك عمل check على ال route-map و يطبق ال roules الخاصة بها و لذلك نجحت عملية ال ping من R3 الى R2 لان ال R وجد فى ال RTG انه يستطيع الوصول له من خلال int f0/1 ..


    ارجو ان يكون الموضوع كان بسيط ومفهوم ...