Забони барномасозии P4

Забони барномасозии P4
P4 забони барномасозист, ки барои барномарезии қоидаҳои масири пакетҳо пешбинӣ шудааст. Баръакси забони умумӣ ба монанди C ё Python, P4 як забони мушаххаси домен аст, ки як қатор тарҳҳо барои масири шабака оптимизатсия шудаанд.

P4 забони кушодаасос аст, ки аз ҷониби ташкилоти ғайритиҷоратӣ бо номи P4 Consortium Language литсензия ва нигоҳдорӣ мешавад. Он инчунин аз ҷониби Фонди Шабакаи Кушода (ONF) ва Фонди Linux (LF), ду созмони калонтарини чатр барои лоиҳаҳои шабакавии кушодаасос дастгирӣ карда мешавад.
Ин забон дар ибтидо дар соли 2013 таҳия шуда буд ва дар як коғази CCR SIGCOMM дар соли 2014 бо номи "Протоколи мустақил, барномасозии протсессори масири пакетӣ" тавсиф шудааст.

Аз замони таъсиси худ, P4 ба таври экспоненсиалӣ рушд ва таҳаввул карда, зуд ба стандарт барои тавсифи интиқоли пакетҳо тавассути дастгоҳҳои шабакавӣ, аз ҷумла адаптерҳои шабакавӣ, коммутаторҳо ва роутерҳо табдил ёфт.

"SDN саноати шабакавиро тағир дод ва P4 тавассути имкон додани барномасозӣ дар масир SDN-ро ба сатҳи оянда мебарад" гуфт Гуру Парулкар, директори иҷроияи Фонди Шабакаи Кушода.

Забони P4 дар ибтидо аз ҷониби як гурӯҳи муҳандисон ва муҳаққиқон аз Google, Intel, Microsoft Research, Barefoot, Принстон ва Стэнфорд сохта шудааст. Ҳадаф оддӣ буд: эҷод кардани забони ба осонӣ истифодашаванда, ки таҳиягари нармафзор метавонад дар як рӯз омӯзад ва барои дақиқ тавсиф кардани тарзи фиристодани пакетҳо дар шабакаҳо истифода кунад.

Аз ибтидо, P4 барои мустақилияти ҳадаф тарҳрезӣ шуда буд (яъне барномаи дар P4 навишташуда метавонад бидуни тағир тартиб дода шавад, то дар як қатор ҳадафҳо, аз қабили ASICs, FPGAs, CPUs, NPUs ва GPUs кор кунад).

Забон инчунин аз протокол мустақил аст (яъне барномаи P4 метавонад протоколҳои стандартии мавҷударо тавсиф кунад ё барои муайян кардани шеваҳои нави суроғаи фармоишӣ истифода шавад).

Дар саноат, P4 барои барномасозии дастгоҳ истифода мешавад. Шояд дар оянда стандартҳои Internet-RFC ва IEEE низ мушаххасоти P4-ро дар бар гиранд.

P4 метавонад ҳам барои дастгоҳҳои функсионалии барномарезишаванда ва ҳам собит истифода шавад. Масалан, он барои дақиқ сабт кардани рафтори лӯлаи коммутатор дар API-ҳои Switch Abstraction Interface (SAI) истифода мешавад, ки аз ҷониби OS switch SONiC манбаи кушода истифода мешавад. P4 инчунин дар лоиҳаи ONF Stratum барои тавсифи рафтори гузариш дар дастгоҳҳои гуногуни собит ва барномарезишаванда истифода мешавад.

Бори аввал тавсифи рафтори коммутаторҳо ва адаптерҳои шабакавӣ ба шумо имкон медиҳад, ки модели дақиқи иҷрошавандаи тамоми шабакаро пеш аз ҷойгиркунӣ эҷод кунед. Провайдерҳои абрии калон метавонанд шабакаро пурра бо истифода аз нармафзор санҷида ва ислоҳ кунанд ва вақт ва арзиши санҷиши ҳамоҳангсозиро дар лаборатория бидуни ниёз ба сахтафзори гаронбаҳо кам кунанд.

Бо истифода аз P4, фурӯшандагони таҷҳизоти шабакавӣ метавонанд рафтори маъмулии масирро дар тамоми маҳсулот интизор шаванд, ки имкон медиҳад истифодаи дубораи инфрасохтори санҷишӣ, содда кардани таҳияи нармафзори идоракунӣ ва дар ниҳоят таъмини ҳамоҳангсозӣ.

Албатта, P4 метавонад барои навиштани барномаҳое истифода шавад, ки роҳҳои комилан нави масирро тавсиф мекунанд. Масалан, P4 барои телеметрия ва андозагирӣ дар марказҳои додаҳо, шабакаҳои корхонаҳо ва провайдерҳои хидматрасон васеъ истифода мешавад.

Ҷамъияти тадқиқотӣ низ афзоиш ёфт. Якчанд гурӯҳҳои пешбари тадқиқотии шабакавии академӣ барномаҳои нави ҷолибро дар асоси барномаҳои P4, аз ҷумла мувозинати сарборӣ, протоколҳои консенсус ва кэшкунии арзиши калидӣ нашр карданд. Парадигмаи нави барномасозӣ эҷод шуда истодааст, навоварӣ аз сахтафзор ба нармафзор мегузарад ва имкон медиҳад, ки ғояҳои зиёди ғайричашмдошт, нав ва моҳирона пайдо шаванд.

Ҷамъияти таҳиягарон дар таҳияи кодҳо, аз ҷумла компиляторҳо, қубурҳо, моделҳои рафторӣ, APIҳо, чаҳорчӯбаҳои санҷишӣ, барномаҳо ва ғайра саҳми назаррас гузоштааст. Ширкатҳо ба монанди Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx ва ZTE таҳиягарони бахшидашуда доранд; аз донишгоҳҳо, аз ҷумла BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass ва USI; ва лоиҳаҳои кушодаасос, аз ҷумла CORD, FD.io, OpenDaylight, ONOS, OvS, SAI ва Stratum далели он аст, ки P4 лоиҳаи мустақили ҷомеа аст.

Насли маъмулии контроллерҳо барои забони P4:

Забони барномасозии P4

Дурнамои татбиқ

Забони барномасозии P4
Азбаски ин забон барои барномаҳои масир пешбинӣ шудааст, рӯйхати талабот ва имконоти тарроҳӣ нисбат ба забонҳои барномасозии таъиноти умумӣ фарқ мекунад. Хусусиятҳои асосии забон инҳоянд:

  1. Истиқлолият аз татбиқи ҳадаф;
  2. Истиқлолияти протокол(ҳо)-и истифодашаванда;
  3. Аз нав танзимкунии майдон.

Истиқлолият аз татбиқи ҳадаф

Барномаҳои P4 ба таври мустақил тарҳрезӣ шудаанд, яъне онҳо метавонанд барои бисёр намудҳои гуногуни муҳаррикҳои иҷро, аз қабили протсессори таъиноти умумӣ, FPGA, чипҳои система, протсессори шабакавӣ ва ASIC тартиб дода шаванд. Ин навъҳои гуногуни мошинҳо ҳамчун ҳадафҳои P4 маълуманд ва ҳар як ҳадаф аз компилятор талаб мекунад, ки рамзи сарчашмаи P4-ро ба модели гузариши ҳадаф табдил диҳад. Компилятор метавонад дар дастгоҳи мавриди ҳадаф, нармафзори беруна ё ҳатто хидмати абрӣ сохта шавад. Азбаски бисёре аз ҳадафҳои аслии барномаҳои P4 барои гузариши оддии бастаҳо буданд, шунидани истилоҳи "гузариши P4" хеле маъмул аст, гарчанде ки "ҳадафи P4" дақиқтар аст.

Истиқлолияти протокол(ҳо)-и истифодашуда

P4 мустақили протокол аст. Ин маънои онро дорад, ки забон барои протоколҳои умумӣ, ба монанди IP, Ethernet, TCP, VxLAN ё MPLS пуштибонии модарӣ надорад. Ба ҷои ин, барномасози P4 форматҳои сарлавҳа ва номҳои майдони протоколҳои лозимиро дар барнома тавсиф мекунад, ки дар навбати худ аз ҷониби барномаи тартибдодашуда ва дастгоҳи мавриди ҳадаф тафсир ва коркард мешаванд.

Аз нав танзимкунии майдон

Истиқлолияти протокол ва модели абстрактии забон имкон медиҳад, ки аз нав танзим карда шавад - Ҳадафҳои P4 бояд пас аз ҷойгиркунии система коркарди бастаҳоро тағир диҳанд. Ин қобилият ба таври анъанавӣ бо масир тавассути протсессорҳои таъиноти умумӣ ё протсессори шабакавӣ алоқаманд аст, на микросхемаҳои интегралии функсияи собит.

Ҳарчанд дар забон чизе вуҷуд надорад, ки ба оптимизатсияи иҷрои маҷмӯи мушаххаси протоколҳо монеъ шавад, ин оптимизатсияҳо барои муаллифи забон ноаёнанд ва дар ниҳоят метавонад чандирии система ва ҳадафҳо ва аз нав танзимшавандагии онҳоро коҳиш диҳад.

Ин хислатҳои забон дар ибтидо аз ҷониби созандагони он бо таваҷҷӯҳ ба истифодаи густурдаи он дар инфрасохтори шабакавӣ гузошта шуда буданд.

Забон аллакай дар бисёр ширкатҳо истифода мешавад:

1) Марказҳои маълумотии гипермиқёс;

Ширкати чинии Tencent бузургтарин ширкати сармоягузорӣ дар ҷаҳон ва яке аз бузургтарин ширкатҳои сармояи венчурӣ мебошад. Шӯъбаҳои Tencent, чи дар Чин ва ҳам дар кишварҳои дигари ҷаҳон, дар бахшҳои гуногуни тиҷорати технологӣ, аз ҷумла хидматҳои гуногуни интернетӣ, таҳаввулот дар соҳаи зеҳни сунъӣ ва фароғатии электронӣ тахассус доранд.

P4 ва масири барномарезишаванда технологияҳои пешрафта мебошанд, ки дар меъмории шабакаи ширкат истифода мешаванд.

Ҳамчун яке аз ташаббускорон, Google бо ифтихор қабули босуръати P4-ро дар соҳаи шабакавӣ ва махсусан дар тарҳрезии меъмории маркази додаҳо қайд мекунад.

2) Ширкатҳои тиҷоратӣ;

Goldman Sachs аз кор бо ҷомеаи кушодаасос ва таҳияи стандартҳо ва ҳалли умумӣ барои навоварӣ дар инфрасохтори шабакавӣ ва пешниҳоди ҳалли беҳтар барои муштариён бартарият дорад.

3) истеҳсолот;

Тамоми саноати шабакавӣ аз забоне ба мисли P4, ки рафтори интиқолро ба таври нотакрор муайян мекунад, баҳра хоҳад бурд. Cisco инчунин боварӣ дорад, ки хатҳои маҳсулоти худро барои истифодаи ин забон интиқол диҳад.

Juniper Networks дар як қатор маҳсулот P4 ва P4 Runtime -ро дар бар гирифтааст ва дастрасии барномавӣ ба протсессори дарунсохташудаи Juniper ва рамзи нармафзори онро таъмин мекунад.

Ruijie Networks як ҷонибдори қавии P4 ва манфиатҳои он ба шабакаҳо мебошад. Бо P4, ширкат метавонад барои доираи васеи муштариён ҳалли беҳтарини синфро эҷод ва пешниҳод кунад.

4) провайдерҳои алоқаи барқӣ;

AT&T қабулкунандаи барвақти P4 буд, ки яке аз аввалинҳоест, ки P4-ро барои муайян кардани рафторе, ки дар шабакаҳои худ дидан мехоҳад ва истифода мебарад, дастгоҳҳои интиқоли барномарезишавандаи P4 дар шабакаи худ истифода кардааст.

Дар Deutsche Telekom, ин забон барои прототипи функсияҳои асосии шабака ҳамчун як қисми барномаи Access 4.0 истифода мешавад.

5) Саноати нимноқилҳо;

Ин забон ба Barefoot имкон дод, ки парадигмаи навро барои интиқоли қобилиятҳои нармафзор ба ҳавопаймои масирсозии шабака амалӣ кунад.

Xilinx яке аз муассисони P4.org буд ва дар таҳияи забони P4 фаъолона ширкат дошт ва онро дар платформаҳои барномарезишавандаи FPGA барои сахтафзори SmartNIC ва NFV татбиқ намуда, яке аз аввалин компиляторҳои P416-ро ҳамчун як қисми тарҳи SDNet баровардааст.

6) Нармафзор.

VMware боварӣ дорад, ки P4 энергияи азим, навоварӣ ва ҷомеаро эҷод мекунад, ки тағироти пурмазмун ва заруриро дар шабака пеш мебарад. VMware аз ибтидо як қисми ин ҳаракати саноатӣ буд, зеро мавҷи нави инноватсия тавассути равишҳои нармафзор асос ёфтааст, ки қобилиятҳои инфрасохторро васеъ мекунанд ва онро дар маҳсулоти навтарин татбиқ мекунанд.

Ҳамин тариқ, P4 як забони барномасозии аз ҳадаф ва аз протокол мустақил аст, ки аз ҷониби саноат ва академия барои муайян кардани рафтори масири пакет ҳамчун барнома истифода мешавад, ки дар навбати худ метавонад барои якчанд ҳадафҳо тартиб дода шавад. Имрӯз ҳадафҳо коммутаторҳои сахтафзор ва нармафзор, коммутаторҳои гипервизор, NPU, GPU, FPGA, SmartNIC ва ASIC мебошанд.

Хусусиятҳои асосии забон доираи татбиқи онро хеле васеъ намуда, татбиқи босуръати онро дар архитектураҳои шабакавӣ таъмин мекунанд.

саршавӣ

P4 лоиҳаи кушода аст, ҳама маълумоти дахлдор дар вебсайт аст P4.org

Истиноди репозиторий https://github.com/p4lang, ки дар он шумо метавонед намунаи коди сарчашма ва дастурҳои дарсӣ гиред.

Plugin барои Eclipse бо дастгирии P4, аммо мо метавонем тавсия диҳем Студияи 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;
        }
    }…
}

Ҷадвалиҳо — дорои ҳолати мошин, ки калидҳои корбарро бо амалҳо мепайвандад. Амалиётҳо — шарҳи он, ки бастаро чӣ гуна бояд идора кард.

Ҷадвалҳо дорои ҳолати (дар сатҳи идоракунӣ муайян) барои интиқоли бастаҳо, тавсиф воҳиди Match-Action

Бастаҳо мувофиқат мекунанд:

  • Мутобиқати дақиқ
  • Мутобиқати дарозтарин префикс (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;
}

Модулҳои Match-Action — амалҳо барои сохтани калиди ҷустуҷӯ, ҷустуҷӯ дар ҷадвал, иҷро кардани амалҳо.

Намунаи маъмулии модул дар расм нишон дода шудааст:

Забони барномасозии P4

Назорати ҷараёни — тартиби истифода бурдани модулҳои Match-Action -ро нишон медиҳад. Ин як барномаи ҳатмист, ки мантиқи сатҳи баланд ва пайдарпаии Match-Action-ро муайян мекунад. Ҷараёни назорат ҳама объектҳоро тавассути муайян кардани сатҳи назорат мепайвандад.

Объектҳои беруна объектҳои мушаххас бо меъмории дақиқ ва интерфейсҳои 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: конфигуратсияи JSON барои bmv2 эҷод мекунад
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>


Рамзи сарчашма барномаи simple_switch_CLI-ро барои истифодаи қулайи API switch-и нармафзор дар бар мегирад.

Шумо метавонед ин ва дигар мисолҳоро аз анбор зеркашӣ кунед.

Забони барномасозии P4

PS Аввали тобистон, Intel созишномаеро имзо кард, ки Шабакаҳои Барефотро харидорӣ кунад, то эҳтиёҷоти корбарони Hyperscale Cloud-ро зуд қонеъ кунад. Тавре Навин Шеной (ноиби президенти иҷроия ва менеҷери генералии Гурӯҳи Маркази маълумот дар Корпоратсияи Intel) гуфт, ин ба Intel имкон медиҳад, ки сарбории бештари корӣ ва имкониятҳои бештарро барои муштариёни маркази додаҳо таъмин намояд.

Ба андешаи шахсии ман, мо набояд фаромӯш кунем, ки Intel дар истеҳсоли микросхемаҳои FPGA пешсаф аст ва он муҳити аълои Quartus дорад. Ин маънои онро дорад, ки мо метавонем интизор шавем, ки бо омадани Intel, Barefoot на танҳо хатти маҳсулоти худро васеъ хоҳад кард, балки Quartus ва P4 Studio ба хати Toffino ва Toffino 2 навсозиҳо ва иловаҳои ҷиддӣ мегиранд.

Узви расмии ҷомеаи P4 - ширкат гурӯҳи омилҳо.

Манбаъ: will.com

Илова Эзоҳ