المحتويات

المقدمة

الخلفية

المشكلة

الحل

التحقق

القرار

المقدمة

يصف هذا المستند كيفية تشخيص مشكلة تقارب BGP البطيء على موجهات Cisco IOS® XR التي تحدث بسبب سياسات المسار غير المثالية.

الخلفية

يتكون وقت تقارب BGP من عدد من العوامل. أحدها هو الوقت اللازم لمعالجة تحديثات BGP الخاصة بالمدخل أو المخرج بواسطة سياسات المسار التي تم تكوينها. هناك طرق متعددة لكتابة سياسة مسار للقيام بمهمة معينة. وتساعد الطريقة المثلى على تحسين تقارب BGP وتقليل حالات إسقاط حركة المرور المحتملة وتجنب حلقات التوجيه المؤقتة. يتضمن Cisco IOS® XR أداة تصنيف تقوم بقياس الوقت المستغرق بواسطة سياسة مسار معينة من أجل تقدير وقت المعالجة الخاص بها.

المشكلة

يكون تقارب BGP البطيء أحيانا نتيجة لسياسات المسار المكتوبة بطريقة غير مثالية.

الحل

هناك أداة لتحديد ملامح السياسة الخاصة بسياسات المسار يمكن إستخدامها دون التأثير على الأداء لقياس الوقت المستغرق في كل بيان بنهج المسار عند نقطة إرفاق محددة. يمكنك التحقق من وقت تشغيل نهج المسار في نقطة الإرفاق المحددة هذه. وبشكل افتراضي، يتم تمكين عملية التنميط فقط لإحصاءات نهج المسار الكلي.

router bgp 65000

neighbor 10.0.54.6

remote-as 65000

update-source Loopback0

address-family ipv4 unicast

route-policy INGRESS-ROUTE-POLICY in

!

neighbor 10.0.54.11

remote-as 65001

ebgp-multihop 255

update-source Loopback0

address-family ipv4 unicast

route-policy EGRESS-ROUTE-POLICY out

RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile

Policy profiling data

Policy : INGRESS-ROUTE-POLICY

Pass : 1440233

Drop : 0

# of executions : 1440233

Total execution time : 57095msec     <===========

RP/0/RSP1/CPU0:XR1#show bgp ipv4 unicast neighbors 10.0.54.11 | i Update group

Update group: 0.3 Filter-group: 0.5 No Refresh request being processed

RP/0/RSP1/CPU0:XR1#

RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile

Policy profiling data

Policy : EGRESS-ROUTE-POLICY

Pass : 726751

Drop : 0

# of executions : 726751

Total execution time : 108099msec <===========

RP/0/RSP1/CPU0:XR1#

يمكنك رؤية المبلغ التراكمي للوقت المستغرق لمعالجة سياسة الدخول-المسار وسياسة الخروج-route.

يمكن تطبيق التنميط لنهج مسار الدخول أو الخروج لأي نقطة إرفاق.

RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 ?

debug-policy                 Attachpoint name

permnet                      Attachpoint name

import                       Attachpoint name

export                       Attachpoint name

interafi-import              Attachpoint name

source-rt                    Attachpoint name

interafi-export              Attachpoint name

retain-rt                    Attachpoint name

addpath                      Attachpoint name

neighbor-in-dflt             Attachpoint name

neighbor-in-vrf              Attachpoint name

neighbor-out-dflt            Attachpoint name

neighbor-out-vrf             Attachpoint name

orf-dflt                     Attachpoint name

orf-vrf                      Attachpoint name

dampening-dflt               Attachpoint name

dampening-vrf                Attachpoint name

default-originate-dflt       Attachpoint name

default-originate-vrf        Attachpoint name

clear-policy                 Attachpoint name

show-policy-node0_RSP1_CPU0  Attachpoint name

aggregation-dflt             Attachpoint name

aggregation-vrf              Attachpoint name

nexthop                      Attachpoint name

allocate-label               Attachpoint name

label-mode                   Attachpoint name

l2vpn-import                 Attachpoint name

l2vpn-export                 Attachpoint name

redistribution-dflt          Attachpoint name

redistribution-vrf           Attachpoint name

rib-install-dflt             Attachpoint name

rib-install-vrf              Attachpoint name

network-dflt                 Attachpoint name

network-vrf                  Attachpoint name

redistribution-dflt          Attachpoint name

redistribution-vrf           Attachpoint name

rib-install-dflt             Attachpoint name

rib-install-vrf              Attachpoint name

network-dflt                 Attachpoint name

network-vrf                  Attachpoint name

l2vpn-export-mp2mp           Attachpoint name

l2vpn-export-vfi             Attachpoint name

l2vpn-export-evi             Attachpoint name

l2vpn-export-mspw            Attachpoint name

l2vpn-export-instance        Attachpoint name

WORD                         Attachpoint name

RP/0/RSP1/CPU0:XR1#

يمكنك مسح الإحصائيات حسب الحاجة.

RP/0/RSP1/CPU0:XR1#clear pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile

RP/0/RSP1/CPU0:XR1#clear pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile

إذا قمت بتمكين تفاصيل ملف تعريف PCL الخاص بتصحيح الأخطاء، فستحصل على الحالات التفصيلية لكل إدخال نهج مسار.

RP/0/RSP1/CPU0:XR1#debug pcl profile detail

وقد جمعت هذه النواتج بعد أن أعيد حساب الجدول الكامل لبروتوكول بوابة الحدود (BGP) على شبكة الإنترنت وزيادة نشره.

RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile

Policy profiling data

Policy : INGRESS-ROUTE-POLICY

Pass : 720100

Drop : 0

# of executions : 720100

Total execution time : 222788msec <============== about 3.7 minutes to process ingress updates

Node Id   Num visited      Exec time  Policy engine operation

--------------------------------------------------------------------------------

PXL_0_1        720100     221796msec  if as-path aspath-match ... then    <==============

PXL_0_3 3525 3msec set local-preference 150 3525 0msec

PXL_0_2 716575 225msec set local-preference 50 716575 82msec

RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile

Policy profiling data

Policy : EGRESS-ROUTE-POLICY

Pass : 720105

Drop : 0

# of executions : 720105

Total execution time : 221975msec  <============== about 3.7 minutes to process egress updates

Node Id   Num visited      Exec time  Policy engine operation

--------------------------------------------------------------------------------

PXL_0_1        720105       3005msec  if as-path aspath-match ... then

PXL_0_5 0 0msec set med 70 0 0msec

PXL_0_2 720105 218008msec if as-path aspath-match ... then <==============

PXL_0_3 25 0msec set med 80 25 0msec

PXL_0_4 720080 145msec set med 90 720080 76msec

RP/0/RSP1/CPU0:XR1#

وكما ترى، فإن كلا من PXL_0_1 للمدخل-route-policy و PXL_0_2 ل egress-route-policy تستهلك الوقت بشكل خاص وتبطئ التقارب.

إذا قمت بربطها مع سياسات المسار، بعد ذلك يمكنك أن ترى أن as-path-set-11 في مدخل-route-policy و as-path-set-22 في egress-route-policy يتسبب في المشكلة. كل مجموعة مسار AS مكونة من 100 خط تعبير عادي وهي طريقة غير فعالة إلى حد كبير لكتابة سياسة بما أنها لا تستغل أي تحسين ممكن أو قوة regex.

route-policy INGRESS-ROUTE-POLICY

if as-path in AS-PATH-SET-11 then

set local-preference 150

else

set local-preference 50

endif

end-policy

route-policy EGRESS-ROUTE-POLICY

if as-path in AS-PATH-SET-21 then

set med 70

elseif as-path in AS-PATH-SET-22 then

set med 80

else

set med 90

endif

end-policy

as-path-set AS-PATH-SET-11

ios-regex '^65101 65201_',

ios-regex '^65102 65202_',

ios-regex '^65103 65203_',

ios-regex '^65104 65204_',

ios-regex '^65105 65205_',

--- removed 90 similar lines ---

ios-regex '^65195 65295_',

ios-regex '^65196 65296_',

ios-regex '^65197 65297_',

ios-regex '^65198 65298_',

ios-regex '^65199 65299_'

end-set

as-path-set AS-PATH-SET-21

ios-regex '^$'

end-set

as-path-set AS-PATH-SET-22

ios-regex '^65169(_65169)*$',

ios-regex '^65392(_65392)*$',

ios-regex '^65133(_65133)*$',

ios-regex '^65231(_65231)*$',

ios-regex '^65161(_65161)*$',

--- removed 90 similar lines ---

ios-regex '^65281(_65281)*$',

ios-regex '^65336(_65336)*$',

ios-regex '^65238(_65238)*$',

ios-regex '^65381(_65381)*$',

ios-regex '^65103(_65103)*$'

end-set

لتحسين أداء السياسة، يمكنك تقييم تكوين مجموعات مسار AS باستخدام عملية تطابق المسار الأصلي بدلا من التعبير العادي. بدلا من ذلك، يمكنك إستخدام التعبيرات العادية داخل سياسات المسار بطريقة مطوية وبالتالي تقليل عدد خطوط التعبير العادي المستخدمة.

يسرد هذا الجدول معايير تطابق مسار AS التي تقدمها لغة سياسة المسار (RPL). تستخدم وظائف المطابقة الأصلية خوارزمية مطابقة ثنائية توفر أداء أفضل مقارنة بمحرك مطابقة التعبير العادي. يمكن كتابة معظم سيناريوهات تطابق IOS-Regex الشائعة معها (أو تركيباتها).

الوصف

IS-محلي

تحديد ما إذا كان الموجه (أو موجه آخر داخل هذا النظام الذاتي أو الاتحاد) قد أنشأ المسار

طول

تنفيذ تحقق شرطي استنادا إلى طول مسار AS

جار

إختبار رقم النظام الذاتي أو أرقامه في بداية مسار AS مقابل تسلسل لقيمة أو معلمات متكاملة أو أكثر.

ينشأ من

إختبار مسار AS مقابل تسلسل AS من البدايةباستخدام رقم AS الذي أنشأ مسارا.

مرق

إختبار لمعرفة ما إذا كان العدد الصحيح المحدد أو المعلمة تظهر في أي مكان في مسار AS أو إذا كان تسلسل الأعداد الصحيحة والمعلمات يظهر.

طول فريد

يقوم بإجراء تحققات محددة استنادا إلى طول مسار AS الذي يتجاهل التكرارات

التحقق

وهي سياسات مسار معاد ترتيبها مكتوبة بمساعدة معايير المطابقة الأصلية. وهذا يؤدي إلى تقليل وقت المعالجة إلى حد كبير.

route-policy INGRESS-ROUTE-POLICY

if as-path in AS-PATH-SET-11 then

set local-preference 150

else

set local-preference 50

endif

end-policy

route-policy EGRESS-ROUTE-POLICY

if as-path is-local then

set med 70

elseif as-path in AS-PATH-SET-22 and as-path unique-length is 1 then

set med 80

else

set med 90

endif

end-policy

as-path-set AS-PATH-SET-11

neighbor-is '65101 65201',

neighbor-is '65102 65202',

neighbor-is '65103 65203',

neighbor-is '65104 65204',

neighbor-is '65105 65205',

--- removed 90 similar lines ---

neighbor-is '65195 65295',

neighbor-is '65196 65296',

neighbor-is '65197 65297',

neighbor-is '65198 65298',

neighbor-is '65199 65299'

end-set

as-path-set AS-PATH-SET-22

originates-from '65169',

originates-from '65392',

originates-from '65133',

originates-from '65231',

originates-from '65161',

--- removed 90 similar lines ---

originates-from '65281',

originates-from '65336',

originates-from '65238',

originates-from '65381',

originates-from '65103'

end-set

وتجمع هذه النواتج بعد إستلام الجدول الكامل لبروتوكول بوابة الحدود (BGP) على الإنترنت وزيادة نشره.

RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile

Policy profiling data

Policy : INGRESS-ROUTE-POLICY

Pass : 720100

Drop : 0

# of executions : 720100

Total execution time : 9612msec <============== about 10 seconds to process ingress updates

Node Id   Num visited      Exec time  Policy engine operation

--------------------------------------------------------------------------------

PXL_0_1        720100       8540msec  if as-path aspath-match ... then

PXL_0_3 7128 2msec set local-preference 150 7128 1msec

PXL_0_2 712972 276msec set local-preference 50 712972 80msec

RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile

Policy profiling data

Policy : EGRESS-ROUTE-POLICY

Pass : 720126

Drop : 0

# of executions : 720126

Total execution time : 12399msec <============== about 12 seconds to process egress updates

Node Id   Num visited      Exec time  Policy engine operation

--------------------------------------------------------------------------------

PXL_0_1        720126        190msec  if as-path is-local then

PXL_0_7 0 0msec set med 70 0 0msec

PXL_0_2 720126 11190msec if as-path aspath-match ... then

PXL_0_4 262734 65msec if as-path unique-length is 1 then

PXL_0_5 25 0msec set med 80 25 0msec

PXL_0_6 720101 164msec set med 90 720101 57msec

GOTO : PXL_0_6

RP/0/RSP1/CPU0:XR1#

وبدلا من ذلك، يمكن طي خطوط IOS-regex. ويساعد ذلك أيضا على تحسين الأداء.

route-policy INGRESS-ROUTE-POLICY

if as-path in (ios-regex '^(65101_65201|65102_65202|65103_65203|65104_65204|65105_65205|65106_65206|65107_65207|65108_65208|65109_65209|65110_65210)') then

set local-preference 150

endif

if as-path in (ios-regex '^(65111_65211|65112_65212|65113_65213|65114_65214|65115_65215|65116_65216|65117_65217|65118_65218|65119_65219|65120_65220)') then

set local-preference 150

endif

if as-path in (ios-regex '^(65121_65221|65122_65222|65123_65223|65124_65224|65125_65225|65126_65226|65127_65227|65128_65228|65129_65229|65130_65230)') then

set local-preference 150

endif

if as-path in (ios-regex '^(65131_65231|65132_65232|65133_65233|65134_65234|65135_65235|65136_65236|65137_65237|65138_65238|65139_65239|65140_65240)') then

set local-preference 150

endif

if as-path in (ios-regex '^(65141_65241|65142_65242|65143_65243|65144_65244|65145_65245|65146_65246|65147_65247|65148_65248|65149_65249|65150_65250)') then

set local-preference 150

endif

if as-path in (ios-regex '^(65151_65251|65152_65252|65153_65253|65154_65254|65155_65255|65156_65256|65157_65257|65158_65258|65159_65259|65160_65260)') then

set local-preference 150

endif

if as-path in (ios-regex '^(65161_65261|65162_65262|65163_65263|65164_65264|65165_65265|65166_65266|65167_65267|65168_65268|65169_65269|65170_65270)') then

set local-preference 150

endif

if as-path in (ios-regex '^(65171_65271|65172_65272|65173_65273|65174_65274|65175_65275|65176_65276|65177_65277|65178_65278|65179_65279|65180_65280)') then

set local-preference 150

endif

if as-path in (ios-regex '^(65181_65281|65182_65282|65183_65283|65184_65284|65185_65285|65186_65286|65187_65287|65188_65288|65189_65289|65190_65290)') then

set local-preference 150

else

set local-preference 50

endif

end-policy

route-policy EGRESS-ROUTE-POLICY

if as-path in (ios-regex '^$') then

set med 70

endif

if as-path in (ios-regex '^65169(_65169)*$|^65392(_65392)*$|^65133(_65133)*$|^65231(_65231)*$|^65161(_65161)*$') then

set med 80

endif

if as-path in (ios-regex '^65354(_65354)*$|^65331(_65331)*$|^65342(_65342)*$|^65295(_65295)*$|^65208(_65208)*$') then

set med 80

endif

if as-path in (ios-regex '^65149(_65149)*$|^65350(_65350)*$|^65115(_65115)*$|^65300(_65300)*$|^65322(_65322)*$') then

set med 80

endif

if as-path in (ios-regex '^65102(_65102)*$|^65329(_65329)*$|^65237(_65237)*$|^65218(_65218)*$|^65153(_65153)*$') then

set med 80

endif

if as-path in (ios-regex '^65263(_65263)*$|^65116(_65116)*$|^65112(_65112)*$|^65114(_65114)*$|^65378(_65378)*$') then

set med 80

endif

if as-path in (ios-regex '^65105(_65105)*$|^65296(_65296)*$|^65211(_65211)*$|^65317(_65317)*$|^65115(_65115)*$') then

set med 80

endif

if as-path in (ios-regex '^65371(_65371)*$|^65214(_65214)*$|^65325(_65325)*$|^65354(_65354)*$|^65384(_65384)*$') then

set med 80

endif

if as-path in (ios-regex '^65220(_65220)*$|^65277(_65277)*$|^65219(_65219)*$|^65213(_65213)*$|^65336(_65336)*$') then

set med 80

endif

if as-path in (ios-regex '^65249(_65249)*$|^65112(_65112)*$|^65314(_65314)*$|^65385(_65385)*$|^65152(_65152)*$') then

set med 80

endif

if as-path in (ios-regex '^65196(_65196)*$|^65252(_65252)*$|^65162(_65162)*$|^65271(_65271)*$|^65357(_65357)*$') then

set med 80

endif

if as-path in (ios-regex '^65317(_65317)*$|^65360(_65360)*$|^65198(_65198)*$|^65256(_65256)*$|^65246(_65246)*$') then

set med 80

endif

if as-path in (ios-regex '^65356(_65356)*$|^65359(_65359)*$|^65302(_65302)*$|^65118(_65118)*$|^65346(_65346)*$') then

set med 80

endif

if as-path in (ios-regex '^65225(_65225)*$|^65307(_65307)*$|^65313(_65313)*$|^65189(_65189)*$|^65288(_65288)*$') then

set med 80

endif

if as-path in (ios-regex '^65381(_65381)*$|^65292(_65292)*$|^65145(_65145)*$|^65325(_65325)*$|^65361(_65361)*$') then

set med 80

endif

if as-path in (ios-regex '^65156(_65156)*$|^65184(_65184)*$|^65367(_65367)*$|^65302(_65302)*$|^65290(_65290)*$') then

set med 80

endif

if as-path in (ios-regex '^65351(_65351)*$|^65116(_65116)*$|^65341(_65341)*$|^65123(_65123)*$|^65258(_65258)*$') then

set med 80

endif

if as-path in (ios-regex '^65397(_65397)*$|^65302(_65302)*$|^65188(_65188)*$|^65187(_65187)*$|^65358(_65358)*$') then

set med 80

endif

if as-path in (ios-regex '^65217(_65217)*$|^65107(_65107)*$|^65203(_65203)*$|^65377(_65377)*$|^65381(_65381)*$') then

set med 80

endif

if as-path in (ios-regex '^65219(_65219)*$|^65308(_65308)*$|^65364(_65364)*$|^65277(_65277)*$|^65396(_65396)*$') then

set med 80

endif

if as-path in (ios-regex '^65281(_65281)*$|^65336(_65336)*$|^65238(_65238)*$|^65381(_65381)*$|^65103(_65103)*$') then

set med 80

else

set med 90

endif

end-policy

وقد جمعت هذه النواتج بعد إستلام الجدول الكامل لبروتوكول بوابة الحدود (BGP) على الإنترنت وزيادة نشره.

RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile

Policy profiling data

Policy : INGRESS-ROUTE-POLICY

Pass : 720100

Drop : 0

# of executions : 720100

Total execution time : 30119msec  <============== about 30 seconds to process ingress updates

Node Id   Num visited      Exec time  Policy engine operation

--------------------------------------------------------------------------------

PXL_0_1        720100       4434msec  if as-path aspath-match ... then

PXL_0_2 361 0msec set local-preference 150 PXL_0_3 720100 3039msec if as-path aspath-match ... then

--- removed lines --- GOTO : PXL_0_3 RP/0/RSP1/CPU0:XR1#

show pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile Policy profiling data Policy : EGRESS-ROUTE-POLICY Pass : 720110 Drop : 0 # of executions : 720110 Total execution time : 106566msec <============== about 1.8 minutes to process egress updates Node Id Num visited Exec time Policy engine operation -------------------------------------------------------------------------------- PXL_0_1 720110 2958msec if as-path aspath-match ... then

PXL_0_2 0 0msec set med 70 PXL_0_3 720110 5222msec if as-path aspath-match ... then

PXL_0_4 3 0msec set med 80 PXL_0_5 720110 4979msec if as-path aspath-match ... then

PXL_0_6 set med 80

--- removed lines --- GOTO : PXL_0_3 RP/0/RSP1/CPU0:XR1#

القرار

يمكن تحسين أداء سياسة المسار باستخدام تماثل المسار الأصلي أو أنماط التعبير العادية المطوية.