150 likes | 401 Views
NetCP - NWAL API Flow. NetCP (HW,SW) Overview. NWAL Feature Overview. Data path offload Control configuration Blocking / Non Blocking support L2: MAC Classification/Lookup L3: IP Classification/Lookup L4: UCP/TCP/GTPU Lookup SA: Crypto offload RX Packet In band IPSec traffic
E N D
NWAL Feature Overview • Data path offload Control configuration • Blocking / Non Blocking support • L2: MAC Classification/Lookup • L3: IP Classification/Lookup • L4: UCP/TCP/GTPU Lookup • SA: Crypto offload • RX Packet In band IPSec traffic • RX Packet Side band IPSec offload • IP/UDP Checksum TX and RX • Routing between PA and SA and EMAC port redirection
Data Path Application Initialization BIOS/ARM Core User Application NWAL System initialization: QMSS/CPPI/Switch Master Core Only: Global Resource Initialization at NWAL for NetCP: PA/SA and common Queues nwal_getBufferReq() nwal_create() For each proc Initializes local per core resources nwal_start()
Interface address Configuration: Blocking BIOS/ARM Cores User Application NWAL PA LLD QMSS LLD Configure Local MAC: nwal_SetMacIface 1 Add MAC 2 Pa_addMac() 3 Qmss_queuePush() 4 Qmss_queuePop() Pa_forwardResult() 5 API return with status 6 Configure Local IP nwal_SetIPAddr 1 Add IP 2 Pa_addIP() 3 Qmss_queuePush() 4 Qmss_queuePop() Pa_forwardResult() 5 API return with status 6
L4 Connection setup: RX/ TX[Optional] BIOS/ARM Core User Application NWAL PA LLD QMSS LLD 1 CREATE_CONNECTION (IP handle) nwal_addConn() 2 Pa_addPort() 3 Qmss_queuePush() 4 Qmss_queuePop() Pa_forwardResult() 5 Store the SRC address. Enable RX flow API return with status 6
L4 Connection: TX config BIOS/ARM Core User App NWAL PA LLD QMSS LLD CONFIGURE_CONNECTION : nwal_cfgConn() 1 Format and store the TX header. Enable TX flow API return with status 2
TX: Data Path Application <->NWAL BIOS/ARM Cores Application NWAL Multicore Navigator Transmit packet with header from App. nwal_sendRaw() Allocate descriptor. Queue Push to Loopback or ENET Higher layer transmit nwal_send() • Optional: • Insert Protocol headers MAC/I[IPSec]/IP/UDP. • Prepare command label for TX offload: • - IP/UDP checksum • -Crypto. Encryption/Authentication tag offload • - Queue Push to destination Queue
RX: Data Path Application <->NWAL BIOS/ARM Cores Application NWAL Multicore Navigator Non blocking: Callback with status/results. Blocking: API return will indicate results nwal_pollCtl( ) Queue Pop Retrieve meta data information including channel handle nwal_cmdCallBack() Queue Pop Retrieve metadata information including channel handle nwal_cmdPaStatsReply() Queue Pop Retrieve meta data information: checksum errors and channel handle One Callback for group of packets nwal_pollPkt(,..,. maxPkts,..) nwal_rxPktCallBack()
NWAL Unit test Overview • Demonstrates multicore capability • Master Proc: • Initializes global system resources • NWAL resources • Configures NetCP for MAC/IP/IPSec • Local Proc • L4 connection establishment • Transmit of packet from each proc • Loopback at NetCP • Receive at host and verify • Metadata • Packet payload • Tests: • MAC Classification & Next Route • IP Classification & Next Route • UDP L4 Connection • Transmit and Receive verification
SP policy offload (RX): (SA Creation) BIOS/ARM Cores Application NWAL PA LLD SA LLD QMSS LLD CREATE_SA: Dir = RX: nwal_setSecAssoc 1 2 Sa_chanCreate() Sa_chanControl(): sa_CHAN_CTRL_GEN_CONFIG 3 Sa_chanControl(): sa_CHAN_CTRL_KEY_CONFIG 4 5 ScAlloc() Callback with Security Context 6 PA_addIP() 7 Qmss_queuePush() Qmss_queuePop() 8 Pa_forwardResult() 9 API return with status 10
SP policy offload (RX): (SP config) BIOS/ARM Cores User App NWAL PA LLD SA LLD QMSS LLD ADD_SP:Dir = RX nwal_setSecPolicy 11 12 PA_addIP() 13 Qmss_queuePush() Qmss_queuePop() 14 Pa_forwardResult() 15 Store the policy info and link it to SA. API return with status 16
SP policy offload (TX): (SA Creation) BIOS/ARM Cores User App NWAL PA LLD SA LLD QMSS LLD CREATE_SA: Dir = TX nwal_setSecAssoc() 1 2 Sa_chanCreate() Sa_chanControl(): sa_CHAN_CTRL_GEN_CONFIG 3 Sa_chanControl(): sa_CHAN_CTRL_KEY_CONFIG 4 5 ScAlloc() Callback with Security Context Format and store the TX header for tunnel. API return with status 6
SP policy offload (TX): (SP config) BIOS/ARM Core App NWAL PA LLD SA LLD QMSS LLD ADD_SP: Dir = TX: nwal_setSecPolicy 7 Store the policy info and link it to SA. API return with status 8