د P4 پروګرام کولو ژبه

د P4 پروګرام کولو ژبه
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 پروګرام کولو ژبه

د غوښتنلیک امکانات

د P4 پروګرام کولو ژبه
څرنګه چې ژبه د روټینګ غوښتنلیکونو لپاره ده، د اړتیاوو او ډیزاین انتخابونو لیست د عمومي هدف پروګرام کولو ژبو په پرتله توپیر لري. د ژبې اصلي ځانګړتیاوې په لاندې ډول دي:

  1. د هدف پلي کولو څخه خپلواکي؛
  2. د کارول شوي پروتوکولونو خپلواکي؛
  3. د ساحې بیا تنظیم کول.

د هدف پلي کولو څخه خپلواکي

د 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 یوه پرانیستې پروژه ده، ټول اړوند معلومات په ویب پاڼه کې دي P4.org

د ذخیره کولو لینک https://github.com/p4lang، چیرې چې تاسو کولی شئ د مثال سرچینې کوډ او ښوونې ترلاسه کړئ.

Плагин د P4 ملاتړ سره Eclipse لپاره، مګر موږ وړاندیز کولی شو P4 سټوډیو له پښې څخه

د 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;
}

پارسرز - د دوی دنده د سرلیکونو تحلیل کول دي.

لاندې پارسر بیلګه به د ماشین وروستي حالت لیږد له یوه لومړني حالت څخه یو له دوه وروستي حالتونو ته وټاکي:

د P4 پروګرام کولو ژبه

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;
}

د میچ - عمل ماډلونه - د لټون کیلي رامینځته کولو لپاره کړنې ، په میز کې لټون کول ، کړنې ترسره کول.

د ماډل یو عادي مثال په انځور کې ښودل شوی:

د P4 پروګرام کولو ژبه

د جریان کنټرول - هغه ترتیب ته اشاره کوي په کوم کې چې د میچ - عمل ماډلونه کارول کیږي. دا یو لازمي برنامه ده چې د لوړې کچې منطق او د میچ - عمل ترتیب تعریفوي. د کنټرول جریان ټول توکي د کنټرول کچې په ټاکلو سره نښلوي.

بهرني توکي د روښانه تعریف شوي جوړښت او 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) تولیدوي:

  1. د ډیټا الوتکې چلولو وخت
  2. د ډیټا په الوتکه کې د ماشین حالت اداره کولو لپاره API

د P4 پروګرام کولو ژبه

په P4 ژبه کې د سافټویر سویچ بیلګه

د سرچینې کوډونه د ذخیره کولو څخه ډاونلوډ کیدی شي.

p4lang/p4c-bm: د bmv2 لپاره د JSON تشکیلات رامینځته کوي
p4lang/bmv2: د سافټویر سویچ چې د Bmv2 نسخه JSON تشکیلات پوهیږي

انځور د پروژې تالیف ډیاګرام ښیې:

د P4 پروګرام کولو ژبه

د میزونو سره لاسوهنه، د لوستلو راجسترونه، شمیرونکي:

  • 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 برنامه لري.

تاسو کولی شئ دا او نور مثالونه له ذخیره څخه ډاونلوډ کړئ.

د P4 پروګرام کولو ژبه

PS د دې دوبي په پیل کې ، انټیل د هایپرسکل کلاوډ کاروونکو اړتیاو د ګړندي کولو په هڅه کې د بار فوټ شبکې ترلاسه کولو لپاره یو تړون لاسلیک کړ. لکه څنګه چې نوين شینای (د انټیل کارپوریشن کې د ډیټا مرکز ګروپ اجرایوي رییس او عمومي مدیر) وویل ، دا به انټیل ته اجازه ورکړي چې د ډیټا مرکز پیرودونکو لپاره لوی کاري بار او ډیر فرصتونه چمتو کړي.

زما په شخصي نظر ، موږ باید هیر نکړو چې انټیل د FPGA چپس تولید کې مشر دی او دا د کوارټس عالي چاپیریال لري. د دې معنی دا ده چې موږ تمه کولی شو چې د انټیل په راتګ سره ، بارفوټ به نه یوازې د خپل محصول لاین پراخه کړي ، بلکه کوارټس او P4 سټوډیو به د توفینو او توفینو 2 لاین کې جدي تازه معلومات او اضافې ترلاسه کړي.

د P4 ټولنې رسمي غړی - شرکت د فکتور ګروپ.

سرچینه: www.habr.com

Add a comment