P4 ప్రోగ్రామింగ్ భాష

P4 ప్రోగ్రామింగ్ భాష
P4 అనేది ప్యాకెట్ రూటింగ్ నియమాలను ప్రోగ్రామ్ చేయడానికి రూపొందించబడిన ప్రోగ్రామింగ్ భాష. C లేదా Python వంటి సాధారణ-ప్రయోజన భాష వలె కాకుండా, P4 అనేది నెట్‌వర్క్ రూటింగ్ కోసం ఆప్టిమైజ్ చేయబడిన అనేక డిజైన్‌లతో కూడిన డొమైన్-నిర్దిష్ట భాష.

P4 అనేది P4 లాంగ్వేజ్ కన్సార్టియం అనే లాభాపేక్ష లేని సంస్థ ద్వారా లైసెన్స్ పొందిన మరియు నిర్వహించబడే ఓపెన్ సోర్స్ భాష. దీనికి ఓపెన్ నెట్‌వర్కింగ్ ఫౌండేషన్ (ONF) మరియు లైనక్స్ ఫౌండేషన్ (LF), ఓపెన్ సోర్స్ నెట్‌వర్కింగ్ ప్రాజెక్ట్‌ల కోసం అతిపెద్ద గొడుగు సంస్థలలో రెండు కూడా మద్దతు ఇస్తుంది.
ఈ భాష వాస్తవానికి 2013లో రూపొందించబడింది మరియు 2014 SIGCOMM CCR పేపర్‌లో “ప్రోటోకాల్ ఇండిపెండెంట్, ప్యాకెట్ రూటింగ్ ప్రాసెసర్ ప్రోగ్రామింగ్” పేరుతో వివరించబడింది.

దాని ప్రారంభం నుండి, P4 విపరీతంగా అభివృద్ధి చెందింది మరియు అభివృద్ధి చెందింది, నెట్‌వర్క్ ఎడాప్టర్‌లు, స్విచ్‌లు మరియు రూటర్‌లతో సహా నెట్‌వర్క్ పరికరాల ద్వారా ప్యాకెట్‌ల ప్రసారాన్ని వివరించడానికి త్వరగా ప్రమాణంగా మారింది.

"SDN నెట్‌వర్కింగ్ పరిశ్రమను మార్చింది మరియు P4 రూటింగ్‌కు ప్రోగ్రామబిలిటీని తీసుకురావడం ద్వారా SDNని తదుపరి స్థాయికి తీసుకువెళుతుంది" అని ఓపెన్ నెట్‌వర్కింగ్ ఫౌండేషన్ ఎగ్జిక్యూటివ్ డైరెక్టర్ గురు పరుల్కర్ అన్నారు.

P4 భాషని వాస్తవానికి గూగుల్, ఇంటెల్, మైక్రోసాఫ్ట్ రీసెర్చ్, బేర్‌ఫుట్, ప్రిన్స్‌టన్ మరియు స్టాన్‌ఫోర్డ్‌కు చెందిన ఇంజనీర్లు మరియు పరిశోధకుల బృందం సృష్టించింది. లక్ష్యం చాలా సులభం: సాఫ్ట్‌వేర్ డెవలపర్ ఒక రోజులో నేర్చుకోగలిగే సులభమైన భాషని సృష్టించండి మరియు నెట్‌వర్క్‌లలో ప్యాకెట్లు ఎలా పంపబడతాయో ఖచ్చితంగా వివరించడానికి ఉపయోగించండి.

ప్రారంభం నుండి, P4 లక్ష్యం స్వతంత్రంగా రూపొందించబడింది (అనగా P4లో వ్రాసిన ప్రోగ్రామ్‌ను ASICలు, FPGAలు, CPUలు, NPUలు మరియు GPUలు వంటి విభిన్న లక్ష్యాలపై అమలు చేయడానికి మార్చకుండా కంపైల్ చేయవచ్చు).

భాష కూడా ప్రోటోకాల్ స్వతంత్రంగా ఉంటుంది (అనగా, P4 ప్రోగ్రామ్ ఇప్పటికే ఉన్న ప్రామాణిక ప్రోటోకాల్‌లను వివరించగలదు లేదా కొత్త అనుకూల చిరునామా మోడ్‌లను పేర్కొనడానికి ఉపయోగించబడుతుంది).

పరిశ్రమలో, పరికరం ప్రోగ్రామింగ్ కోసం P4 ఉపయోగించబడుతుంది. బహుశా భవిష్యత్తులో ఇంటర్నెట్-RFC మరియు IEEE ప్రమాణాలు కూడా P4 స్పెసిఫికేషన్‌ను కలిగి ఉండవచ్చు.

ప్రోగ్రామబుల్ మరియు ఫిక్స్‌డ్ ఫంక్షన్ పరికరాల కోసం P4ని ఉపయోగించవచ్చు. ఉదాహరణకు, ఓపెన్ సోర్స్ SONiC స్విచ్ OS ఉపయోగించే స్విచ్ అబ్‌స్ట్రాక్షన్ ఇంటర్‌ఫేస్ (SAI) APIలలో స్విచ్ పైప్‌లైన్ ప్రవర్తనను ఖచ్చితంగా రికార్డ్ చేయడానికి ఇది ఉపయోగించబడుతుంది. P4 ONF స్ట్రాటమ్ ప్రాజెక్ట్‌లో వివిధ రకాల స్థిర మరియు ప్రోగ్రామబుల్ పరికరాలలో మారే ప్రవర్తనను వివరించడానికి కూడా ఉపయోగించబడుతుంది.

మొదటి సారి, స్విచ్ మరియు నెట్‌వర్క్ ఎడాప్టర్‌ల ప్రవర్తనను వివరించడం వలన మీరు విస్తరణకు ముందు మొత్తం నెట్‌వర్క్ యొక్క ఖచ్చితమైన ఎక్జిక్యూటబుల్ మోడల్‌ను రూపొందించడానికి అనుమతిస్తుంది. పెద్ద క్లౌడ్ ప్రొవైడర్‌లు సాఫ్ట్‌వేర్‌ను ఉపయోగించి నెట్‌వర్క్‌ను పూర్తిగా పరీక్షించవచ్చు మరియు డీబగ్ చేయవచ్చు, ఖరీదైన హార్డ్‌వేర్ అవసరం లేకుండా ల్యాబ్‌లో ఇంటర్‌ఆపెరాబిలిటీ టెస్టింగ్ సమయం మరియు ఖర్చును గణనీయంగా తగ్గిస్తుంది.

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, కార్నెల్, హార్వర్డ్, MIT, NCTU, ప్రిన్స్‌టన్, స్టాన్‌ఫోర్డ్, టెక్నియన్, సింఘువా, UMass మరియు USIలతో సహా విశ్వవిద్యాలయాల నుండి; మరియు CORD, FD.io, OpenDaylight, ONOS, OvS, SAI మరియు స్ట్రాటమ్‌తో సహా ఓపెన్ సోర్స్ ప్రాజెక్ట్‌లు P4 ఒక స్వతంత్ర కమ్యూనిటీ ప్రాజెక్ట్ అనే వాస్తవాన్ని హైలైట్ చేస్తాయి.

P4 భాష కోసం సాధారణ తరం కంట్రోలర్‌లు:

P4 ప్రోగ్రామింగ్ భాష

అప్లికేషన్ అవకాశాలు

P4 ప్రోగ్రామింగ్ భాష
భాష రూటింగ్ అప్లికేషన్‌ల కోసం ఉద్దేశించబడినందున, సాధారణ-ప్రయోజన ప్రోగ్రామింగ్ భాషలతో పోలిస్తే అవసరాలు మరియు డిజైన్ ఎంపికల జాబితా భిన్నంగా ఉంటుంది. భాష యొక్క ప్రధాన లక్షణాలు:

  1. లక్ష్యం అమలు నుండి స్వతంత్రం;
  2. ఉపయోగించిన ప్రోటోకాల్(ల) స్వతంత్రత;
  3. ఫీల్డ్ పునర్నిర్మాణం.

లక్ష్యం అమలు నుండి స్వతంత్రం

P4 ప్రోగ్రామ్‌లు ఇంప్లిమెంటేషన్ ఇండిపెండెంట్‌గా రూపొందించబడ్డాయి, అంటే సాధారణ-ప్రయోజన ప్రాసెసర్‌లు, FPGAలు, సిస్టమ్-ఆన్-చిప్స్, నెట్‌వర్క్ ప్రాసెసర్‌లు మరియు ASICలు వంటి అనేక రకాల ఎగ్జిక్యూషన్ ఇంజిన్‌ల కోసం వాటిని సంకలనం చేయవచ్చు. ఈ విభిన్న రకాల యంత్రాలు P4 లక్ష్యాలుగా పిలువబడతాయి మరియు ప్రతి లక్ష్యానికి P4 సోర్స్ కోడ్‌ను టార్గెట్ స్విచ్ మోడల్‌గా మార్చడానికి కంపైలర్ అవసరం. కంపైలర్ లక్ష్య పరికరం, బాహ్య సాఫ్ట్‌వేర్ లేదా క్లౌడ్ సేవలో కూడా నిర్మించబడవచ్చు. P4 ప్రోగ్రామ్‌ల యొక్క అనేక అసలైన లక్ష్యాలు సాధారణ ప్యాకెట్ స్విచింగ్‌కు సంబంధించినవి కాబట్టి, "P4 లక్ష్యం" మరింత ఖచ్చితమైనది అయినప్పటికీ "P4 స్విచ్" అనే పదాన్ని వినడం చాలా సాధారణం.

ఉపయోగించిన ప్రోటోకాల్(ల) స్వతంత్రత

P4 ప్రోటోకాల్ స్వతంత్రమైనది. IP, ఈథర్నెట్, TCP, VxLAN లేదా MPLS వంటి సాధారణ ప్రోటోకాల్‌లకు భాషకు స్థానిక మద్దతు లేదని దీని అర్థం. బదులుగా, P4 ప్రోగ్రామర్ ప్రోగ్రామ్‌లోని అవసరమైన ప్రోటోకాల్‌ల యొక్క హెడర్ ఫార్మాట్‌లు మరియు ఫీల్డ్ పేర్లను వివరిస్తుంది, అవి కంపైల్డ్ ప్రోగ్రామ్ మరియు టార్గెట్ డివైజ్ ద్వారా వివరించబడతాయి మరియు ప్రాసెస్ చేయబడతాయి.

ఫీల్డ్ పునర్నిర్మాణం

ప్రోటోకాల్ స్వాతంత్ర్యం మరియు వియుక్త భాషా నమూనా రీకాన్ఫిగరబిలిటీని అనుమతిస్తుంది-P4 లక్ష్యాలు సిస్టమ్ అమలు చేయబడిన తర్వాత ప్యాకెట్ ప్రాసెసింగ్‌ను మార్చగలగాలి. ఈ సామర్ధ్యం సాంప్రదాయకంగా స్థిర-ఫంక్షన్ ఇంటిగ్రేటెడ్ సర్క్యూట్‌ల కంటే సాధారణ-ప్రయోజన ప్రాసెసర్‌లు లేదా నెట్‌వర్క్ ప్రాసెసర్‌ల ద్వారా రూటింగ్‌తో అనుబంధించబడింది.

నిర్దిష్ట ప్రోటోకాల్‌ల పనితీరు యొక్క ఆప్టిమైజేషన్‌ను నిరోధించే భాషలో ఏదీ లేనప్పటికీ, ఈ ఆప్టిమైజేషన్‌లు భాషా రచయితకు కనిపించవు మరియు అంతిమంగా సిస్టమ్ మరియు లక్ష్యాల సౌలభ్యాన్ని మరియు వాటి రీకాన్ఫిగరబిలిటీని తగ్గించగలవు.

భాష యొక్క ఈ లక్షణాలను మొదట్లో దాని సృష్టికర్తలు నెట్‌వర్క్ అవస్థాపనలో దాని విస్తృత వినియోగంపై దృష్టి సారించారు.

ఈ భాష ఇప్పటికే చాలా కంపెనీలలో ఉపయోగించబడింది:

1) హైపర్‌స్కేల్ డేటా సెంటర్‌లు;

చైనీస్ కంపెనీ టెన్సెంట్ ప్రపంచంలోనే అతిపెద్ద పెట్టుబడి సంస్థ మరియు అతిపెద్ద వెంచర్ క్యాపిటల్ సంస్థల్లో ఒకటి. టెన్సెంట్ యొక్క అనుబంధ సంస్థలు, చైనాలో మరియు ప్రపంచవ్యాప్తంగా ఉన్న ఇతర దేశాలలో, వివిధ ఇంటర్నెట్ సేవలు, కృత్రిమ మేధస్సు మరియు ఎలక్ట్రానిక్ వినోద రంగంలో అభివృద్ధిలతో సహా హై-టెక్ వ్యాపారం యొక్క వివిధ రంగాలలో ప్రత్యేకతను కలిగి ఉన్నాయి.

P4 మరియు ప్రోగ్రామబుల్ రూటింగ్ అనేది కంపెనీ నెట్‌వర్క్ ఆర్కిటెక్చర్‌లో ఉపయోగించే అధునాతన సాంకేతికతలు.

మూలకర్తలలో ఒకరిగా, నెట్‌వర్కింగ్ పరిశ్రమలో మరియు ముఖ్యంగా డేటా సెంటర్ ఆర్కిటెక్చరల్ డిజైన్‌లో P4 యొక్క వేగవంతమైన స్వీకరణను గమనించడానికి Google గర్విస్తుంది.

2) వాణిజ్య సంస్థలు;

గోల్డ్‌మ్యాన్ సాచ్స్ ఓపెన్ సోర్స్ కమ్యూనిటీతో కలిసి పని చేయడం మరియు నెట్‌వర్క్ అవస్థాపనను ఆవిష్కరించడానికి మరియు క్లయింట్‌లకు మెరుగైన పరిష్కారాలను అందించడానికి సాధారణ ప్రమాణాలు మరియు పరిష్కారాలను అభివృద్ధి చేయడం ద్వారా ప్రయోజనాన్ని పొందుతుంది.

3) ఉత్పత్తి;

ఫార్వార్డింగ్ ప్రవర్తనను ప్రత్యేకంగా నిర్వచించే P4 వంటి భాష నుండి మొత్తం నెట్‌వర్కింగ్ పరిశ్రమ ప్రయోజనం పొందుతుంది. సిస్కో ఈ భాషను ఉపయోగించడానికి దాని ఉత్పత్తి లైన్లను బదిలీ చేయాలని కూడా విశ్వసిస్తుంది.

జునిపర్ నెట్‌వర్క్‌లు అనేక ఉత్పత్తులలో P4 మరియు P4 రన్‌టైమ్‌లను చేర్చాయి మరియు జునిపర్ ఎంబెడెడ్ ప్రాసెసర్ మరియు దాని సాఫ్ట్‌వేర్ కోడ్‌కు ప్రోగ్రామాటిక్ యాక్సెస్‌ను అందిస్తుంది.

Ruijie నెట్‌వర్క్‌లు P4 మరియు నెట్‌వర్క్‌లకు అందించే ప్రయోజనాలకు బలమైన మద్దతుదారు. P4తో, కంపెనీ విస్తృత శ్రేణి కస్టమర్‌లకు అత్యుత్తమ-తరగతి పరిష్కారాలను సృష్టించగలదు మరియు అందించగలదు.

4) టెలికమ్యూనికేషన్స్ ప్రొవైడర్లు;

AT&T అనేది P4ని ముందుగా స్వీకరించింది, దాని నెట్‌వర్క్‌లలో చూడాలనుకునే ప్రవర్తనను నిర్వచించడానికి మరియు దాని నెట్‌వర్క్‌లో P4 ప్రోగ్రామబుల్ ఫార్వార్డింగ్ పరికరాలను ఉపయోగించడానికి P4ని ఉపయోగించిన మొదటి వాటిలో ఒకటి.

డ్యుయిష్ టెలికామ్‌లో, యాక్సెస్ 4.0 ప్రోగ్రామ్‌లో భాగంగా కీ నెట్‌వర్క్ ఫంక్షన్‌లను ప్రోటోటైప్ చేయడానికి భాష ఉపయోగించబడుతుంది.

5) సెమీకండక్టర్ పరిశ్రమ;

నెట్‌వర్క్ రూటింగ్ ప్లేన్‌కు సాఫ్ట్‌వేర్ సామర్థ్యాలను అందించడానికి కొత్త నమూనాను అమలు చేయడానికి భాష బేర్‌ఫుట్‌ను ఎనేబుల్ చేసింది.

Xilinx P4.org స్థాపకుల్లో ఒకరు మరియు P4 భాష అభివృద్ధిలో చురుకుగా పాల్గొంది మరియు SmartNIC మరియు NFV హార్డ్‌వేర్ కోసం FPGA-ఆధారిత ప్రోగ్రామబుల్ ప్లాట్‌ఫారమ్‌లలో దీనిని అమలు చేసింది, SDNet డిజైన్‌లో భాగంగా మొదటి P416 కంపైలర్‌లలో ఒకదానిని విడుదల చేసింది.

6) సాఫ్ట్‌వేర్.

నెట్‌వర్క్‌లో అర్ధవంతమైన మరియు అవసరమైన పరివర్తనను నడిపించే విపరీతమైన శక్తి, ఆవిష్కరణ మరియు సమాజాన్ని P4 సృష్టిస్తుందని VMware విశ్వసిస్తుంది. ఇన్‌ఫ్రాస్ట్రక్చర్ సామర్థ్యాలను విస్తరించి, తాజా ఉత్పత్తులలో అమలు చేసే సాఫ్ట్‌వేర్ ఆధారిత విధానాల ద్వారా నూతన ఆవిష్కరణల ద్వారా నడపబడుతున్నందున, VMware మొదటి నుండి ఈ పరిశ్రమ ఉద్యమంలో భాగంగా ఉంది.

అందువల్ల, P4 అనేది లక్ష్యం-స్వతంత్ర మరియు ప్రోటోకాల్-స్వతంత్ర ప్రోగ్రామింగ్ భాష, దీనిని పరిశ్రమ మరియు విద్యాసంస్థలు ప్యాకెట్ రూటింగ్ ప్రవర్తనను ఒక ప్రోగ్రామ్‌గా ప్రత్యేకంగా నిర్వచించాయి, ఇది బహుళ లక్ష్యాల కోసం కంపైల్ చేయబడుతుంది. నేడు, లక్ష్యాలలో హార్డ్‌వేర్ మరియు సాఫ్ట్‌వేర్ స్విచ్‌లు, హైపర్‌వైజర్ స్విచ్‌లు, NPUలు, GPUలు, FPGAలు, SmartNICలు మరియు ASICలు ఉన్నాయి.

భాష యొక్క ప్రధాన లక్షణాలు దాని అప్లికేషన్ యొక్క పరిధిని గణనీయంగా విస్తరిస్తాయి మరియు నెట్‌వర్క్ ఆర్కిటెక్చర్‌లలో దాని వేగవంతమైన అమలును నిర్ధారిస్తాయి.

ప్రారంభ విధానం

P4 అనేది ఓపెన్ ప్రాజెక్ట్, అన్ని సంబంధిత సమాచారం వెబ్‌సైట్‌లో ఉంది P4.org

రిపోజిటరీ లింక్ https://github.com/p4lang, ఇక్కడ మీరు ఉదాహరణ సోర్స్ కోడ్ మరియు ట్యుటోరియల్‌లను పొందవచ్చు.

Плагин 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;
        }
    }…
}

పట్టికలు — యూజర్ కీలను చర్యలతో అనుసంధానించే యంత్ర స్థితులను కలిగి ఉంటుంది. చర్యలు — ప్యాకేజీని ఎలా మార్చాలి అనే వివరణ.

పట్టికలు ప్యాకెట్ ఫార్వార్డింగ్ కోసం స్థితులను (నిర్వహణ స్థాయిలో నిర్వచించబడ్డాయి) కలిగి ఉంటాయి, మ్యాచ్-యాక్షన్ యూనిట్‌ను వివరించండి

ప్యాకెట్లు వీటి ద్వారా సరిపోలాయి:

  • ఖచ్చితమైన మ్యాచ్
  • పొడవైన ఉపసర్గ సరిపోలిక (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 యొక్క అనుకూలమైన ఉపయోగం కోసం సోర్స్ కోడ్ simple_switch_CLI ప్రోగ్రామ్‌ను కలిగి ఉంది.

మీరు దీన్ని మరియు ఇతర ఉదాహరణలను రిపోజిటరీ నుండి డౌన్‌లోడ్ చేసుకోవచ్చు.

P4 ప్రోగ్రామింగ్ భాష

PS ఈ వేసవి ప్రారంభంలో, హైపర్‌స్కేల్ క్లౌడ్ వినియోగదారుల అవసరాలను త్వరగా తీర్చే ప్రయత్నంలో ఇంటెల్ బేర్‌ఫుట్ నెట్‌వర్క్‌లను కొనుగోలు చేయడానికి ఒప్పందంపై సంతకం చేసింది. నవీన్ షెనాయ్ (ఇంటెల్ కార్పొరేషన్‌లోని డేటా సెంటర్ గ్రూప్ ఎగ్జిక్యూటివ్ వైస్ ప్రెసిడెంట్ మరియు జనరల్ మేనేజర్) చెప్పినట్లుగా, ఇది డేటా సెంటర్ కస్టమర్‌లకు పెద్ద పనిభారాన్ని మరియు మరిన్ని అవకాశాలను అందించడానికి ఇంటెల్‌ను అనుమతిస్తుంది.

నా వ్యక్తిగత అభిప్రాయం ప్రకారం, ఇంటెల్ FPGA చిప్‌ల ఉత్పత్తిలో అగ్రగామిగా ఉందని మరియు ఇది అద్భుతమైన క్వార్టస్ వాతావరణాన్ని కలిగి ఉందని మనం మర్చిపోకూడదు. దీని అర్థం, ఇంటెల్ రాకతో, బేర్‌ఫుట్ దాని ఉత్పత్తి శ్రేణిని విస్తరింపజేయడమే కాకుండా, క్వార్టస్ మరియు P4 స్టూడియో కూడా టోఫినో మరియు టోఫినో 2 లైన్‌కు తీవ్రమైన అప్‌డేట్‌లు మరియు జోడింపులను అందుకుంటాయని మేము ఆశించవచ్చు.

P4 సంఘం యొక్క అధికారిక సభ్యుడు - కంపెనీ కారకం సమూహం.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి