P4 د پروګرام کولو ژبه ده چې د پیکټ روټینګ قواعدو پروګرام کولو لپاره ډیزاین شوی. د عمومي هدف ژبې برعکس لکه C یا Python، P4 د ډومین لپاره ځانګړې ژبه ده چې د شبکې روټینګ لپاره غوره شوي ډیری ډیزاینونه لري.
P4 د خلاصې سرچینې ژبه ده چې د P4 ژبې کنسورشیم په نوم د غیر انتفاعي سازمان لخوا جواز لري او ساتل کیږي. دا د خلاصې شبکې بنسټ (ONF) او لینکس فاونډیشن (LF) لخوا هم ملاتړ کیږي، د خلاصې سرچینې شبکې پروژو لپاره دوه لوی چترۍ سازمانونه.
ژبه په اصل کې په 2013 کې جوړه شوې وه او د 2014 SIGCOMM CCR کاغذ کې د "پروتوکول خپلواکه، د پاکټ روټینګ پروسیسر پروګرام کولو" سرلیک کې تشریح شوې.
د هغې له پیل راهیسې، P4 په چټکۍ سره وده کړې او وده کړې، په چټکۍ سره د شبکې وسیلو لخوا د پیکټونو لیږد تشریح کولو لپاره یو معیار شو، په شمول د شبکې اډاپټرونه، سویچونه، او روټرونه.
"SDN د شبکې صنعت بدل کړی، او P4 د روټینګ لپاره د پروګرام وړتیا په راوستلو سره SDN بلې کچې ته رسوي،" گرو پارولکر، د خلاصې شبکې بنسټ اجرایوي رییس وویل.
د P4 ژبه په اصل کې د ګوګل، انټیل، مایکروسافټ ریسرچ، بیر فوټ، پرنسټن او سټینفورډ څخه د انجینرانو او څیړونکو یوې ډلې لخوا رامینځته شوې. هدف ساده و: د کارولو لپاره اسانه ژبه رامینځته کړئ چې د سافټویر جوړونکی کولی شي په یوه ورځ کې زده کړي او په سمه توګه تشریح کولو لپاره وکاروي چې څنګه په شبکو کې پاکټونه لیږل کیږي.
له پیل څخه، P4 د هدف خپلواکه کولو لپاره ډیزاین شوی و (د بیلګې په توګه په P4 کې لیکل شوی برنامه په مختلفو اهدافو لکه ASICs، FPGAs، CPUs، NPUs، او GPUs کې د چلولو لپاره بې بدله ترتیب کیدی شي).
ژبه هم د پروتوکول خپلواکه ده (د بیلګې په توګه، د P4 پروګرام کولی شي موجوده معیاري پروتوکولونه تشریح کړي یا د نوي دودیز پته کولو طریقو مشخص کولو لپاره وکارول شي).
په صنعت کې، P4 د وسایلو پروګرام کولو لپاره کارول کیږي. شاید په راتلونکي کې د انټرنیټ-RFC او IEEE معیارونو کې به د P4 مشخصات هم شامل وي.
P4 د پروګرام وړ او ثابت فعالیت وسیلو لپاره کارول کیدی شي. د مثال په توګه ، دا د سویچ ابسټریکشن انٹرفیس (SAI) APIs کې د سویچ پایپ لاین چلند په سمه توګه ثبتولو لپاره کارول کیږي چې د خلاصې سرچینې SONiC سویچ OS لخوا کارول کیږي. P4 د ONF Stratum پروژه کې هم کارول کیږي ترڅو د مختلف ثابت او برنامه وړ وسیلو کې د سویچ کولو چلند تشریح کړي.
د لومړي ځل لپاره ، د سویچ او شبکې اډاپټرونو چلند تشریح کول تاسو ته اجازه درکوي د پلي کیدو دمخه د ټولې شبکې دقیق اجرا وړ ماډل رامینځته کړئ. لوی کلاوډ چمتو کونکي کولی شي شبکه په بشپړ ډول د سافټویر په کارولو سره معاینه او ډیبګ کړي ، په لابراتوار کې د ګران هارډویر اړتیا پرته د مداخلې ازموینې وخت او لګښت د پام وړ کموي.
د P4 په کارولو سره ، د شبکې تجهیزات پلورونکي کولی شي په ټولو محصولاتو کې د عام لاندې روټینګ چلند تمه وکړي ، د ازموینې زیربنا بیا کارولو ته اجازه ورکوي ، د مدیریت سافټویر پراختیا ساده کول ، او په نهایت کې د متقابل عمل تضمین کول.
البته، P4 د برنامو لیکلو لپاره کارول کیدی شي چې د روټینګ بشپړ نوي لارې تشریح کوي. د مثال په توګه، P4 په پراخه کچه د ټیلی میټری او اندازه کولو لپاره د ډیټا مرکزونو، تصدۍ او خدماتو چمتو کونکو شبکو کې کارول کیږي.
څیړنیزې ټولنې هم پرمختګ کړی دی. د اکاډمیک شبکې ډیری مخکښو څیړنیزو ډلو د P4 برنامو پراساس په زړه پوري نوي غوښتنلیکونه خپاره کړي ، پشمول د بار توازن کول ، د توافق پروتوکولونه ، او د کلیدي ارزښت کیشینګ. د برنامه کولو نوی تمثیل رامینځته کیږي ، نوښت له هارډویر څخه سافټویر ته حرکت کوي ، ډیری غیر متوقع ، نوي او هوښیار نظرونه راڅرګندیدو ته اجازه ورکوي.
د پراختیا کونکي ټولنې د کوډ پراختیا کې د پام وړ مرستې کړې دي ، پشمول کمپیلرونه ، پایپ لاینونه ، د چلند ماډلونه ، APIs ، د ازموینې چوکاټونه ، غوښتنلیکونه او نور ډیر څه. شرکتونه لکه Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx, and ZTE وقف جوړونکي لري؛ د پوهنتونونو څخه په شمول د BUPT، کارنیل، هارورډ، MIT، NCTU، پرنسټن، سټینفورډ، تخنیک، سنګهوا، UMass، او USI؛ او د خلاصې سرچینې پروژې لکه CORD, FD.io, OpenDaylight, ONOS, OvS, SAI او Stratum دا حقیقت روښانه کوي چې P4 یوه خپلواکه ټولنه پروژه ده.
د P4 ژبې لپاره د کنټرولرونو عادي نسل:
د غوښتنلیک امکانات
څرنګه چې ژبه د روټینګ غوښتنلیکونو لپاره ده، د اړتیاوو او ډیزاین انتخابونو لیست د عمومي هدف پروګرام کولو ژبو په پرتله توپیر لري. د ژبې اصلي ځانګړتیاوې په لاندې ډول دي:
- د هدف پلي کولو څخه خپلواکي؛
- د کارول شوي پروتوکولونو خپلواکي؛
- د ساحې بیا تنظیم کول.
د هدف پلي کولو څخه خپلواکي
د P4 پروګرامونه د پلي کولو خپلواکه کولو لپاره ډیزاین شوي، پدې معنی چې دوی د ډیری مختلف ډوله اجرا کولو انجنونو لپاره تالیف کیدی شي، لکه د عمومي هدف پروسیسرونه، FPGAs، سیسټم-آن چپس، د شبکې پروسیسرونه، او ASICs. دا مختلف ډوله ماشینونه د P4 هدفونو په نوم پیژندل کیږي، او هر هدف یو کمپیلر ته اړتیا لري ترڅو د P4 سرچینې کوډ د هدف سویچ ماډل ته بدل کړي. کمپیلر د هدف وسیلې ، بهرني سافټویر ، یا حتی د کلاوډ خدمت کې رامینځته کیدی شي. ځکه چې د P4 پروګرامونو ډیری اصلي هدفونه د ساده پیکټ سویچ کولو لپاره وو، دا د "P4 سویچ" اصطلاح اوریدل خورا عام دي که څه هم "P4 هدف" ډیر درست دی.
د کارول شوي پروتوکولونو خپلواکي
P4 پروتوکول خپلواک دی. دا پدې مانا ده چې ژبه د عام پروتوکولونو لکه IP، Ethernet، TCP، VxLAN یا MPLS لپاره اصلي ملاتړ نلري. پرځای یې، د P4 پروګرامر په برنامه کې د اړتیا وړ پروتوکولونو سرلیکونه او د ساحې نومونه بیانوي، کوم چې په پایله کې د ترتیب شوي پروګرام او هدف وسیله لخوا تشریح او پروسس کیږي.
د ساحې بیا تنظیم کول
د پروتوکول خپلواکي او د خلاصې ژبې ماډل د بیا تنظیم کولو لپاره اجازه ورکوي — د P4 هدفونه باید د سیسټم له مینځه وړلو وروسته د پیکټ پروسس بدلولو وړتیا ولري. دا وړتیا په دودیز ډول د فکسډ فنکشن مدغم سرکیټونو پرځای د عمومي هدف پروسیسرونو یا د شبکې پروسیسرونو له لارې روټینګ سره تړاو لري.
که څه هم په ژبه کې داسې څه نشته چې د پروتوکولونو د یوې ځانګړې سیټ د فعالیت د اصلاح مخه ونیسي، دا اصلاح کول د ژبې لیکوال ته نه لیدل کیږي او په نهایت کې کولی شي د سیسټم او اهدافو انعطاف او د دوی د بیا تنظیم کولو وړتیا کمه کړي.
د ژبې دا ځانګړتیاوې په پیل کې د هغې د جوړونکو لخوا د شبکې په زیربنا کې د هغې په پراخه کارونې تمرکز سره ایښودل شوي.
ژبه لا دمخه په ډیری شرکتونو کې کارول کیږي:
1) د هایپرسکیل ډیټا مرکزونه؛
چینایي شرکت Tencent په نړۍ کې د پانګونې ترټولو لوی شرکت او یو له لویو پانګوالو شرکتونو څخه دی. د Tencent فرعي شرکتونه، په چین او د نړۍ په نورو هیوادونو کې، د لوړ ټیکنالوژۍ سوداګرۍ په مختلفو برخو کې تخصص لري، په شمول د مختلف انټرنیټ خدماتو، د مصنوعي استخباراتو او بریښنایی تفریح په برخه کې پرمختګونه.
P4 او د پروګرام وړ روټینګ پرمختللي ټیکنالوژي دي چې د شرکت د شبکې په جوړښت کې کارول کیږي.
د یو پیل کونکي په توګه، ګوګل په دې ویاړي چې د شبکې صنعت او په ځانګړي توګه د ډیټا سنټر معمارۍ ډیزاین کې د P4 ګړندۍ منل یادونه کوي.
2) سوداګریز شرکتونه؛
Goldman Sachs د خلاصې سرچینې ټولنې سره د کار کولو او د شبکې زیربنا نوي کولو لپاره د ګډ معیارونو او حلونو رامینځته کولو څخه ګټه پورته کوي او د پیرودونکو لپاره غوره حلونه چمتو کوي.
3) تولید؛
د شبکې ټول صنعت به د P4 په څیر د ژبې څخه ګټه پورته کړي چې په ځانګړي ډول د لیږد چلند تعریفوي. سیسکو هم د دې ژبې کارولو لپاره د خپلو محصولاتو لینونو لیږدولو باور لري.
د جونیپر شبکې په یو شمیر محصولاتو کې P4 او P4 Runtime شامل کړي، او د جونیپر ایمبیډ شوي پروسیسر او د هغې سافټویر کوډ ته پروګراماتي لاسرسی چمتو کوي.
Ruijie شبکې د P4 قوي ملاتړی دی او هغه ګټې چې دا شبکې ته راوړي. د P4 سره، شرکت کولی شي د پیرودونکو پراخه لړۍ ته په ټولګي کې غوره حلونه رامینځته او وړاندې کړي.
4) د مخابراتو چمتو کونکي؛
AT&T د P4 لومړنی اختیار کونکی و، یو له لومړیو څخه چې د P4 کارولو لپاره د هغه چلند تعریف کولو لپاره چې غوښتل یې په خپلو شبکو کې وګوري، او په شبکه کې د P4 پروګرام وړ فارورډینګ وسیلو کارولو لپاره.
په Deutsche Telekom کې، ژبه د لاسرسي 4.0 پروګرام برخې په توګه د شبکې کلیدي فعالیتونو پروټوټایپ لپاره کارول کیږي.
5) د سیمی کنډکټر صنعت؛
ژبې بېئرفوټ ته وړتیا ورکړه چې د شبکې روټینګ الوتکې ته د سافټویر وړتیاو وړاندې کولو لپاره یو نوی تمثیل پلي کړي.
Xilinx د P4.org یو له بنسټ ایښودونکو څخه و او په فعاله توګه د P4 ژبې په پراختیا کې ښکیل و او د SmartNIC او NFV هارډویر لپاره یې د FPGA-based پروګرام وړ پلیټ فارمونو کې پلي کړ، د SDNet ډیزاین برخې په توګه د لومړي P416 کمپیلرونو څخه یو خپور کړ.
6) سافټویر.
VMware باور لري چې P4 خورا انرژي ، نوښت او ټولنه رامینځته کوي چې په شبکه کې معنی لرونکي او اړین بدلون رامینځته کوي. VMware له پیل راهیسې د دې صنعت حرکت برخه وه، ځکه چې د نوښت نوې څپې د سافټویر پر بنسټ تګلارې لخوا پرمخ وړل کیږي چې د زیربناوو وړتیاوې پراخوي او په وروستي محصولاتو کې پلي کوي.
په دې توګه، P4 د هدف څخه خپلواکه او د پروتوکول څخه خپلواک پروګرام کولو ژبه ده چې د صنعت او اکاډیمیا لخوا کارول کیږي ترڅو د پروګرام په توګه د پیکټ روټینګ چلند په ځانګړي ډول تعریف کړي، کوم چې په پایله کې د ډیری هدفونو لپاره ترتیب کیدی شي. نن ورځ په هدفونو کې هارډویر او سافټویر سویچونه، هایپروایزر سویچونه، NPUs، GPUs، FPGAs، SmartNICs او ASICs شامل دي.
د ژبې اصلي ځانګړتیاوې د پام وړ د هغې د غوښتنلیک ساحه پراخه کوي او د شبکې په جوړښتونو کې د هغې چټک تطبیق یقیني کوي.
کول پیل شول
P4 یوه پرانیستې پروژه ده، ټول اړوند معلومات په ویب پاڼه کې دي
د ذخیره کولو لینک
راځئ چې د کرنل اصلي خلاصون وګورو:
د سرلیکونو تعریف کول - د دوی په مرسته، د پروتوکول سرلیکونه ټاکل کیږي.
د سرلیک تعریف مشخص کوي:
- د پاکټ فارمیټونو او د سرلیک ساحې نومونو توضیحات
- ثابت او متغیر اجازه ورکړل شوي ساحې
د مثال په توګه
header Ethernet_h{
bit<48> dstAddr;
bit<48> srcAddr;
bit<16> etherType;
}
header IPv4_h{
bit<4> version;
bit<4> ihl;
bit<8> diffserv;
bit<16> totalLen;
bit<16> identification;
bit<3> flags;
bit<13> fragOffset;
bit<8> ttl;
bit<8> protocol;
bit<16> hdrChecksum;
bit<32> srcAddr;
bit<32> dstAddr;
varbit<320> options;
}
پارسرز - د دوی دنده د سرلیکونو تحلیل کول دي.
لاندې پارسر بیلګه به د ماشین وروستي حالت لیږد له یوه لومړني حالت څخه یو له دوه وروستي حالتونو ته وټاکي:
parser MyParser(){
state start{transition parse_ethernet;}
state parse_ethernet{
packet.extract(hdr.ethernet);
transition select(hdr.ethernet.etherType){
TYPE_IPV4: parse_ipv4;
default: accept;
}
}…
}
میزونه - د ماشین حالتونه لري چې د کارونکي کیلي د عملونو سره نښلوي. کړنې - د دې تشریح چې څنګه کڅوړه باید مینځل شي.
جدولونه د بسته بندۍ لپاره حالتونه (د مدیریت په کچه تعریف شوي) لري، د میچ - عمل واحد تشریح کوي
کڅوړې د دې سره سمون لري:
- دقیقه لوبه
- تر ټولو اوږد مخفف میچ (LPM)
- درې اړخیزه سمون (ماسک کول)
table ipv4_lpm{
reads{
ipv4.dstAddr: lpm;
} actions {
forward();
}
}
ټول ممکنه کړنې باید مخکې له مخکې په جدولونو کې تعریف شي.
عملونه د کوډ او معلوماتو څخه جوړ دي. ډاټا د مدیریت کچې څخه راځي (د بیلګې په توګه د IP پتې/پورټ شمیرې). ځینې، له لوپ څخه پاک ابتدايي په مستقیم ډول په عمل کې مشخص کیدی شي، مګر د لارښوونو شمیر باید د وړاندوینې وړ وي. نو ځکه، کړنې نشي کولی هیڅ لوپ یا مشروط بیانات ولري.
action ipv4_forward(macAddr_t dstAddr, egressSpec_t port){
standard_metadata.egress_spec = port;
hdr.ethernet.srcAddr = hdr.ethernet.dstAddr;
hdr.ethernet.dstAddr = dstAddr;
hdr.ipv4.ttl = hdr.ipv4.ttl - 1;
}
د میچ - عمل ماډلونه - د لټون کیلي رامینځته کولو لپاره کړنې ، په میز کې لټون کول ، کړنې ترسره کول.
د ماډل یو عادي مثال په انځور کې ښودل شوی:
د جریان کنټرول - هغه ترتیب ته اشاره کوي په کوم کې چې د میچ - عمل ماډلونه کارول کیږي. دا یو لازمي برنامه ده چې د لوړې کچې منطق او د میچ - عمل ترتیب تعریفوي. د کنټرول جریان ټول توکي د کنټرول کچې په ټاکلو سره نښلوي.
بهرني توکي د روښانه تعریف شوي جوړښت او API انٹرفیسونو سره ځانګړي توکي دي. د مثال په توګه، د چکسم محاسبه، راجسترونه، شمیرونکي، شمیرونکي، او نور.
extern register{
register(bit<32> size);
void read(out T result, in bit<32> index);
void write(in bit<32> index, in T value);
}
extern Checksum16{
Checksum16(); //constructor
void clear(); //prepare unit for computation
void update(in T data); //add data to checksum
void remove(in T data); /remove data from existing checksum
bit<16> get(); //get the checksum for the data added since last clear
}
میټاډاټا - د معلوماتو جوړښتونه چې د هرې کڅوړې سره تړاو لري.
د میټاډاټا 2 ډولونه شتون لري:
دودیز میټاډاټا (د ټولو کڅوړو لپاره خالي جوړښت)
تاسو کولی شئ هر هغه څه چې تاسو یې غواړئ دلته یې واچوئ
د پایپ لاین په اوږدو کې شتون لري
ستاسو د خپلو موخو لپاره د کارولو لپاره مناسب، د بیلګې په توګه، د کڅوړې هش ذخیره کولو لپاره
داخلي میټاډاټا - د معمارۍ لخوا چمتو شوي
د ننوتلو بندر، د محصول بندر دلته تعریف شوي
مهال ویش کله چې پیکټ په قطار کې و، د قطار ژوروالی
ملټي کاسټ هش / ملټي کاسټ قطار
د بسته بندي لومړیتوب، د بسته بندي اهمیت
د محصول بندر مشخصات (د بیلګې په توګه د محصول کتار)
P4 کمپیلر
د P4 کمپیلر (P4C) تولیدوي:
- د ډیټا الوتکې چلولو وخت
- د ډیټا په الوتکه کې د ماشین حالت اداره کولو لپاره API
په P4 ژبه کې د سافټویر سویچ بیلګه
د سرچینې کوډونه د ذخیره کولو څخه ډاونلوډ کیدی شي.
p4lang/p4c-bm: د bmv2 لپاره د JSON تشکیلات رامینځته کوي
p4lang/bmv2: د سافټویر سویچ چې د Bmv2 نسخه JSON تشکیلات پوهیږي
انځور د پروژې تالیف ډیاګرام ښیې:
د میزونو سره لاسوهنه، د لوستلو راجسترونه، شمیرونکي:
- table_set_default <table name> <action name> <action parameters>
- table_add <table name> <action name> <match fields> => <action
parameters> [priority]
- table_delete <table name> <entry handle>
د سرچینې کوډ د سافټویر سویچ API د اسانه کارولو لپاره ساده_switch_CLI برنامه لري.
تاسو کولی شئ دا او نور مثالونه له ذخیره څخه ډاونلوډ کړئ.
PS د دې دوبي په پیل کې ، انټیل د هایپرسکل کلاوډ کاروونکو اړتیاو د ګړندي کولو په هڅه کې د بار فوټ شبکې ترلاسه کولو لپاره یو تړون لاسلیک کړ. لکه څنګه چې نوين شینای (د انټیل کارپوریشن کې د ډیټا مرکز ګروپ اجرایوي رییس او عمومي مدیر) وویل ، دا به انټیل ته اجازه ورکړي چې د ډیټا مرکز پیرودونکو لپاره لوی کاري بار او ډیر فرصتونه چمتو کړي.
زما په شخصي نظر ، موږ باید هیر نکړو چې انټیل د FPGA چپس تولید کې مشر دی او دا د کوارټس عالي چاپیریال لري. د دې معنی دا ده چې موږ تمه کولی شو چې د انټیل په راتګ سره ، بارفوټ به نه یوازې د خپل محصول لاین پراخه کړي ، بلکه کوارټس او P4 سټوډیو به د توفینو او توفینو 2 لاین کې جدي تازه معلومات او اضافې ترلاسه کړي.
د P4 ټولنې رسمي غړی - شرکت
سرچینه: www.habr.com