پیش از آنکه کسی تغییری را در کانفیگ وارد کند، ببینید با شبکهتان چه میکند. کدام ترافیک قطع میشود، برقرار میشود یا از راه دیگری میرود و چرا، هر مدخل جدول مسیریابی که تغییر میکند، و نقاط شکست تکیای که میسازد. در صفحهٔ سایت، از خط فرمان، و روی هر درخواست ادغام.
پنجرهٔ نگهداری وقتی خراب میشود که تغییری کاری کند که کسی انتظارش را نداشت: یک خط ACL که پشتیبانگیری را هم میبندد، یک cost در OSPF که همهچیز را از لینک کند میفرستد، یا یک shutdown «بیخطر» که همهٔ دفتر را به یک روتر وابسته میکند. **دوقلوی دیجیتال** این را پیش از آنکه تغییر به دستگاهی برسد نشان میدهد.
کانفیگها را همانطور که خواهند بود به آن میدهید، و اینها را پاسخ میدهد:
- **کدام ترافیک قطع میشود، برقرار میشود یا از راه دیگری میرود.** هر جفت زیرشبکه، هر loopback، جریانهایی که قانونهای تغییرکردهٔ ACL نام میبرند، و [مسیرهای زیرنظر و پروبهایتان](/docs/fa/network-paths). هر کدام گامبهگام روی شبکهٔ کنونی و شبکهٔ پس از تغییر بررسی میشود.
- **چرا.** دستگاه و قانون یا روتی که تفاوت را میسازد، با کل مسیر برای هر دو نسخه کنار هم.
- **تغییر به زبان ساده.** «interface Gi0/1 shut down»، «OSPF cost on eth1: default → 100»، «EDGE: rule added: deny tcp any host 10.2.0.10 eq 22»، «BGP no longer announces 10.2.0.0/24».
- **هر مدخل جدول مسیریابی که تغییر میکند،** روی همهٔ دستگاهها، نه فقط دستگاهی که ویرایش کردید.
- **تمرین خرابی (پریمیوم).** هر دستگاه و هر لینک به نوبت، پیش و پس از تغییر، از کار انداخته میشود. نقاط شکست تکیای را که این تغییر میسازد و آنهایی را که برمیدارد میبینید.
هیچچیز به دستگاهها فرستاده نمیشود. دوقلو از آخرین چیزهایی کار میکند که دستگاههای یک [سایت](/docs/fa/network-sites) گفتهاند.
## آزمودن یک تغییر در صفحهٔ سایت
سایتی را باز کنید و سپس **آزمودن یک تغییر** را. دستگاهی را برگزینید تا کانفیگ کنونیاش در ویرایشگر باز شود. آن را ویرایش کنید یا فایلی بارگذاری کنید، و اگر تغییر چند دستگاه را دربر میگیرد، دستگاههای دیگر را هم بیفزایید. سپس **ببینید چه میکند** را بزنید.
جریانهایی که قطع میشوند اول و به رنگ قرمز میآیند. هر کدام را باز کنید تا **اکنون** و **با این تغییر** را گامبهگام ببینید. زیر نتیجهها میتوانید **هر مسیری را روی دوقلو توضیح دهید**: هر مبدأ و مقصدی را روی شبکهٔ پس از تغییر بپرسید.
## از خط فرمان یا CI: zev site diff
```bash
zev site diff acme/hq r1=r1.cfg core-sw=core-sw.cfg
```
```text
✗ 212 of 214 flows tested behave the same; 1 stop working; 1 take another way. 3 routing table entries change.
What changes
r1 EDGE: rule added: deny tcp any host 10.2.0.10 eq 22
r1 OSPF cost on GigabitEthernet0/1: default → 100
Stop working
✗ 10.1.0.100 → 10.2.0.10 tcp/22 (r1 EDGE: added deny tcp any host 10.2.0.10 eq 22)
before: 10.1.0.100 reaches 10.2.0.10 (tcp/22), and the reply comes back
after: r1 drops it out GigabitEthernet0/2: EDGE rule "deny tcp any host 10.2.0.10 eq 22"
Take another way
~ 10.1.0.100 → 10.3.0.100 icmp (10.1.0.0/24 → 10.3.0.0/24)
r1 → r3 ⇒ r1 → r2 → r3
```
وقتی چیزی قطع شود (یا با `--drills`، وقتی نقطهٔ شکست تکی تازهای پیدا شود)، با کد ۱ خارج میشود، پس یک کار CI میتواند جلوی تغییر را بگیرد. `--json` کل پاسخ را چاپ میکند. از `zev login` شما استفاده میکند، یا در CI از `ZEV_SERVER` و `ZEV_TOKEN`.
## درخواستهای ادغام روی مخزن کانفیگ
کانفیگهای سایت را در مخزنی روی زارین نگه دارید، برای هر دستگاه یک فایل به نام همان دستگاه: `configs/r1.cfg`، `configs/core-sw.rsc` (پسوند اختیاری است: `.cfg`، `.conf`، `.rsc`، `.txt`، `.boot` و چند پسوند دیگر). سپس در **جمعکننده و تنظیمات** سایت، آن را زیر **مخزن کانفیگ** پیوند دهید. فقط مدیر مخزن میتواند آن را پیوند دهد.
از آن پس، هر درخواست ادغامی که فایل دستگاهی را تغییر دهد دوقلو را میگیرد:
- درخواست ادغام یک بررسی **دوقلوی شبکه** نشان میدهد: رفتار همان است، رفتار فرق میکند، یا چیزی را خراب میکند. کسانی که سایت را میبینند کل پاسخ را میگیرند.
- «پیش» فایلهای شاخهٔ مقصد است (و جایی که فایلی نیست، آخرین کانفیگِ خواندهشدهٔ دستگاه)، و «پس» فایلهای درخواست ادغام.
- تا وقتی ترافیک قطع شود، یا نقطهٔ شکست تکی تازهای پیدا شود (با تمرین خرابیِ پریمیوم)، **ادغام منتظر میماند**.
- **مدیر مخزن میتواند با این حال ادغام کند.** زارین نگه میدارد چه کسی، کی، و دوقلو چه گفته بود، و این در «تغییرها»ی سایت هم دیده میشود.
هر بار یکی از دو شاخه جلو برود، دوقلو دوباره حساب میشود.
## تمرین خرابی (پریمیوم)
افزونگی را آسان میشود بیآنکه بفهمید از دست داد: لینکی که «برای مدتی» shut شده، یا روتی که فقط یک طرف دارد. تمرین خرابی هر دستگاه و هر لینک را به نوبت، با تغییر و بی آن، از کار میاندازد و جریانهایی را که کار میکنند میآزماید.
- **نقاط شکست تکیِ تازه:** چیزی که اگر از کار بیفتد، حالا جریانهایی را قطع میکند که پیش از تغییر از خرابیاش جان به در میبردند. اینها هم مثل جریانهای قطعشده جلوی درخواست ادغام را میگیرند.
- **دیگر نقطهٔ شکست تکی نیستند:** تغییر افزونگی افزوده است.
- **لینکهایی که از پیش نقطهٔ شکست تکی بودند** هم فهرست میشوند تا بدانید کجا ایستادهاید.
## چطور کار میکند
دوقلو مسیریابی را از کانفیگ هر دستگاه دو بار شبیهسازی میکند: با کانفیگها همانطور که هستند، و همانطور که پیشنهاد شدهاند. فقط **تفاوت** روی آخرین چیزهایی اعمال میشود که دستگاهها گفتهاند: جدولهای مسیریابی، اینترفیسها و فیلترهایشان. پس:
- روتهایی که شبیهسازی نمیبیند، مثل روت پیشفرضی که از ISP آموخته شده یا روتهای دستگاههای بیرون از سایت، همانطور میمانند.
- هر سادهسازیِ شبیهسازی در هر دو بار یکسان است و اثرش خنثی میشود.
آنچه از کانفیگها شبیهسازی میشود:
- **اینترفیسها:** آدرسها، shutdown و no shutdown.
- **روتهای استاتیک،** از جمله Null0 و blackhole، distanceها، و next hopهایی که از راه روتهای دیگر پیدا میشوند.
- **OSPF:** کدام اینترفیسها شرکت دارند (network statementها، area روی اینترفیس، templateهای میکروتیک)، costها، اینترفیسهای passive، مسیرهای همهزینه، بازتوزیع روتهای connected و static، و اعلام روت پیشفرض.
- **BGP** میان دستگاههای سایت: نشستهای eBGP و iBGP که دو طرف پیکربندی کردهاند، network statementها، بازتوزیع، next-hop-self، و بهترین مسیر بر اساس طول AS path و سپس eBGP پیش از iBGP.
- **ACLها و قانونهای فایروال** از کانفیگ تازه: ACLهای سیسکو و جایی که اعمال شدهاند، traffic filterهای هواوی، و فایروال میکروتیک.
administrative distance هر سازنده به کار میرود. سپس هر جریان، دقیقاً مثل [توضیح مسیر](/docs/fa/network-paths)، در هر دو نسخه دنبال میشود.
## آنچه هنوز شبیهسازی نمیشود
بهتر است بدانید تا اینکه چشمبسته اعتماد کنید:
- areaهای OSPF یکی در نظر گرفته میشوند (بی summarization میان areaها و بی stub area)، و روتهای خارجی OSPF از نوع ۲ هستند.
- سیاستهای BGP: route mapها، prefix listها، communityها، local preference و MED. نشستهایی که به دستگاههای بیرون از سایت میروند همانچه آموختهاند را نگه میدارند.
- VRFها، مسیریابی بر پایهٔ سیاست، NAT، IPv6، IS-IS، EIGRP و RIP.
- تغییر فایروال روی دستگاههای لینوکسی (FRR، VyOS، لینوکس): iptables و nftables در کانفیگی که زارین میخواند نیستند، پس فقط تغییر مسیریابیشان شبیهسازی میشود.
پاسخ میگوید بر چه چیزی تکیه دارد، از جمله دستگاههای بیکانفیگ و جریانهایی که برای آزمودنشان وقت نبود.
## محدودیتها
- در هر اجرا تا ۴۰۰ جریان. جریانهایی که قانونهای تغییرکرده نام میبرند، مسیرهای زیرنظر و پروبها اول میآیند.
- تمرین خرابی: تا ۶۰ خرابی روی تا ۱۵۰ جریان.
- مقایسهٔ رفتار در همهٔ پلنها رایگان است؛ تمرین خرابی با پریمیوم میآید.
پنجرهٔ نگهداری وقتی خراب میشود که تغییری کاری کند که کسی انتظارش را نداشت: یک خط ACL که پشتیبانگیری را هم میبندد، یک cost در OSPF که همهچیز را از لینک کند میفرستد، یا یک shutdown «بیخطر» که همهٔ دفتر را به یک روتر وابسته میکند. دوقلوی دیجیتال این را پیش از آنکه تغییر به دستگاهی برسد نشان میدهد.
کانفیگها را همانطور که خواهند بود به آن میدهید، و اینها را پاسخ میدهد:
کدام ترافیک قطع میشود، برقرار میشود یا از راه دیگری میرود. هر جفت زیرشبکه، هر loopback، جریانهایی که قانونهای تغییرکردهٔ ACL نام میبرند، و مسیرهای زیرنظر و پروبهایتان. هر کدام گامبهگام روی شبکهٔ کنونی و شبکهٔ پس از تغییر بررسی میشود.
چرا. دستگاه و قانون یا روتی که تفاوت را میسازد، با کل مسیر برای هر دو نسخه کنار هم.
تغییر به زبان ساده. «interface Gi0/1 shut down»، «OSPF cost on eth1: default → 100»، «EDGE: rule added: deny tcp any host 10.2.0.10 eq 22»، «BGP no longer announces 10.2.0.0/24».
هر مدخل جدول مسیریابی که تغییر میکند، روی همهٔ دستگاهها، نه فقط دستگاهی که ویرایش کردید.
تمرین خرابی (پریمیوم). هر دستگاه و هر لینک به نوبت، پیش و پس از تغییر، از کار انداخته میشود. نقاط شکست تکیای را که این تغییر میسازد و آنهایی را که برمیدارد میبینید.
هیچچیز به دستگاهها فرستاده نمیشود. دوقلو از آخرین چیزهایی کار میکند که دستگاههای یک سایت گفتهاند.
سایتی را باز کنید و سپس آزمودن یک تغییر را. دستگاهی را برگزینید تا کانفیگ کنونیاش در ویرایشگر باز شود. آن را ویرایش کنید یا فایلی بارگذاری کنید، و اگر تغییر چند دستگاه را دربر میگیرد، دستگاههای دیگر را هم بیفزایید. سپس ببینید چه میکند را بزنید.
جریانهایی که قطع میشوند اول و به رنگ قرمز میآیند. هر کدام را باز کنید تا اکنون و با این تغییر را گامبهگام ببینید. زیر نتیجهها میتوانید هر مسیری را روی دوقلو توضیح دهید: هر مبدأ و مقصدی را روی شبکهٔ پس از تغییر بپرسید.
zev site diff acme/hq r1=r1.cfg core-sw=core-sw.cfg
Text
✗ 212 of 214 flows tested behave the same; 1 stop working; 1 take another way. 3 routing table entries change.What changes r1 EDGE: rule added: deny tcp any host 10.2.0.10 eq 22 r1 OSPF cost on GigabitEthernet0/1: default → 100Stop working ✗ 10.1.0.100 → 10.2.0.10 tcp/22 (r1 EDGE: added deny tcp any host 10.2.0.10 eq 22) before: 10.1.0.100 reaches 10.2.0.10 (tcp/22), and the reply comes back after: r1 drops it out GigabitEthernet0/2: EDGE rule "deny tcp any host 10.2.0.10 eq 22"Take another way ~ 10.1.0.100 → 10.3.0.100 icmp (10.1.0.0/24 → 10.3.0.0/24) r1 → r3 ⇒ r1 → r2 → r3
وقتی چیزی قطع شود (یا با --drills، وقتی نقطهٔ شکست تکی تازهای پیدا شود)، با کد ۱ خارج میشود، پس یک کار CI میتواند جلوی تغییر را بگیرد. --json کل پاسخ را چاپ میکند. از zev login شما استفاده میکند، یا در CI از ZEV_SERVER و ZEV_TOKEN.
کانفیگهای سایت را در مخزنی روی زارین نگه دارید، برای هر دستگاه یک فایل به نام همان دستگاه: configs/r1.cfg، configs/core-sw.rsc (پسوند اختیاری است: .cfg، .conf، .rsc، .txt، .boot و چند پسوند دیگر). سپس در جمعکننده و تنظیمات سایت، آن را زیر مخزن کانفیگ پیوند دهید. فقط مدیر مخزن میتواند آن را پیوند دهد.
از آن پس، هر درخواست ادغامی که فایل دستگاهی را تغییر دهد دوقلو را میگیرد:
درخواست ادغام یک بررسی دوقلوی شبکه نشان میدهد: رفتار همان است، رفتار فرق میکند، یا چیزی را خراب میکند. کسانی که سایت را میبینند کل پاسخ را میگیرند.
«پیش» فایلهای شاخهٔ مقصد است (و جایی که فایلی نیست، آخرین کانفیگِ خواندهشدهٔ دستگاه)، و «پس» فایلهای درخواست ادغام.
تا وقتی ترافیک قطع شود، یا نقطهٔ شکست تکی تازهای پیدا شود (با تمرین خرابیِ پریمیوم)، ادغام منتظر میماند.
مدیر مخزن میتواند با این حال ادغام کند. زارین نگه میدارد چه کسی، کی، و دوقلو چه گفته بود، و این در «تغییرها»ی سایت هم دیده میشود.
هر بار یکی از دو شاخه جلو برود، دوقلو دوباره حساب میشود.
افزونگی را آسان میشود بیآنکه بفهمید از دست داد: لینکی که «برای مدتی» shut شده، یا روتی که فقط یک طرف دارد. تمرین خرابی هر دستگاه و هر لینک را به نوبت، با تغییر و بی آن، از کار میاندازد و جریانهایی را که کار میکنند میآزماید.
نقاط شکست تکیِ تازه: چیزی که اگر از کار بیفتد، حالا جریانهایی را قطع میکند که پیش از تغییر از خرابیاش جان به در میبردند. اینها هم مثل جریانهای قطعشده جلوی درخواست ادغام را میگیرند.
دیگر نقطهٔ شکست تکی نیستند: تغییر افزونگی افزوده است.
لینکهایی که از پیش نقطهٔ شکست تکی بودند هم فهرست میشوند تا بدانید کجا ایستادهاید.
دوقلو مسیریابی را از کانفیگ هر دستگاه دو بار شبیهسازی میکند: با کانفیگها همانطور که هستند، و همانطور که پیشنهاد شدهاند. فقط تفاوت روی آخرین چیزهایی اعمال میشود که دستگاهها گفتهاند: جدولهای مسیریابی، اینترفیسها و فیلترهایشان. پس:
روتهایی که شبیهسازی نمیبیند، مثل روت پیشفرضی که از ISP آموخته شده یا روتهای دستگاههای بیرون از سایت، همانطور میمانند.
هر سادهسازیِ شبیهسازی در هر دو بار یکسان است و اثرش خنثی میشود.
آنچه از کانفیگها شبیهسازی میشود:
اینترفیسها: آدرسها، shutdown و no shutdown.
روتهای استاتیک، از جمله Null0 و blackhole، distanceها، و next hopهایی که از راه روتهای دیگر پیدا میشوند.
OSPF: کدام اینترفیسها شرکت دارند (network statementها، area روی اینترفیس، templateهای میکروتیک)، costها، اینترفیسهای passive، مسیرهای همهزینه، بازتوزیع روتهای connected و static، و اعلام روت پیشفرض.
BGP میان دستگاههای سایت: نشستهای eBGP و iBGP که دو طرف پیکربندی کردهاند، network statementها، بازتوزیع، next-hop-self، و بهترین مسیر بر اساس طول AS path و سپس eBGP پیش از iBGP.
ACLها و قانونهای فایروال از کانفیگ تازه: ACLهای سیسکو و جایی که اعمال شدهاند، traffic filterهای هواوی، و فایروال میکروتیک.
administrative distance هر سازنده به کار میرود. سپس هر جریان، دقیقاً مثل توضیح مسیر، در هر دو نسخه دنبال میشود.
areaهای OSPF یکی در نظر گرفته میشوند (بی summarization میان areaها و بی stub area)، و روتهای خارجی OSPF از نوع ۲ هستند.
سیاستهای BGP: route mapها، prefix listها، communityها، local preference و MED. نشستهایی که به دستگاههای بیرون از سایت میروند همانچه آموختهاند را نگه میدارند.
VRFها، مسیریابی بر پایهٔ سیاست، NAT، IPv6، IS-IS، EIGRP و RIP.
تغییر فایروال روی دستگاههای لینوکسی (FRR، VyOS، لینوکس): iptables و nftables در کانفیگی که زارین میخواند نیستند، پس فقط تغییر مسیریابیشان شبیهسازی میشود.
پاسخ میگوید بر چه چیزی تکیه دارد، از جمله دستگاههای بیکانفیگ و جریانهایی که برای آزمودنشان وقت نبود.