1、100 Gbps10 Mpps100 nsHow fast is fast?100 Gbps10 Mpps100 nsHow fast is fast?100 Gbps100 Gbps10 Mpps100 nsHow fast is fast?100 Gbps10 Mpps100 Gbps10 Mpps100 nsHow fast is fast?100 Gbps10 Mpps100 ns100 Gbps10 Mpps100 nsHow fast is fast?100 Gbps10 Mpps100 ns300 clocks(per core)100 Gbps100 nsAgenda 10 M
2、ppsOptimizationsData StructuresInterleavingLoop unrollingVector InstructionsInliningBenchmarking100 Gbps100 nsIntroductionsAlan ElderMicrosoftAzure for OperatorsRadio NetworkMobile phone5G Packet CoreInternet5G packet processingRadio NetworkMobile phone5G Packet CoreInternet5G packet processingEther
3、netIPUDPGTPIPPayloadMatch sessionRadio NetworkMobile phone5G Packet CoreInternet5G packet processingEthernetIPUDPGTPIPPayloadMatch sessionRadio NetworkMobile phone5G Packet CoreInternetApply Policy5G packet processingEthernetIPUDPGTPIPPayloadMatch sessionRadio NetworkMobile phone5G Packet CoreIntern
4、etApply PolicyIPPayloadEthernetRewrite5G packet processingPacket Processing DeviceHeaderPayloadRewriteMatchHeaderPayloadA simplified exampleAttempt#0Start simpleAttempt#0void process_packet(Packet*packet)/Extract the lookup key from the packet LookupKey lookup_key;extract_lookup_key(packet-data,look
5、up_mask,lookup_key);/Perform lookup Match*match=lookup_map.find(lookup_key)-second;/Apply the Rewrite apply_rewrite(packet,match-rewrite);Attempt#0void process_packet(Packet*packet)/Extract the lookup key from the packet LookupKey lookup_key;extract_lookup_key(packet-data,lookup_mask,lookup_key);/Pe
6、rform lookup Match*match=lookup_map.find(lookup_key)-second;/Apply the Rewrite apply_rewrite(packet,match-rewrite);Attempt#0void process_packet(Packet*packet)/Extract the lookup key from the packet LookupKey lookup_key;extract_lookup_key(packet-data,lookup_mask,lookup_key);/Perform lookup Match*matc