IXA SDK 3.x 及其程序开发

123
IXA SDK 3.x 及及及及及及 及及及 及及及及及及及及及及

description

IXA SDK 3.x 及其程序开发. 胡越明 上海交通大学计算机系. Agenda. IXA 工作平台和可移植框架 网络处理器软硬件系统结构 微块的开发设计环境 内核构件的开发环境 基本路由器设计实例 主要微块分析 内核构件分析. IXA 工作平台和移植框架. IXA SDK 3.5 的工作平台 Developer Workbench IXA SDK 3.5 的移植框架 Portability Framework. IXA SDK 3.5 的工作平台. 特点 用于开发基于 Intel IXP2xxx 网络处理器的系统 - PowerPoint PPT Presentation

Transcript of IXA SDK 3.x 及其程序开发

  • IXA SDK 3.x

  • AgendaIXA

  • IXA IXA SDK 3.5 Developer WorkbenchIXA SDK 3.5 Portability Framework

  • IXA SDK 3.5 Intel IXP2xxx C (NetSim) Wind River VxWorks 5.4()MontaVista Linux3.0() XScale

  • IXA SDK 3.5(image) (HAL)C:\IXA_SDK_3.5\me_tools\XSC_CoreLibs\uclo(HAL)XScaleCSRSRAMC:\IXA_SDK_3.5\me_tools\XSC_CoreLibs\HalMev2HALC(OSSL)

  • IXA SDK 3.5

  • IXA SDK 3.5(microblock) IPv45 (core component) XScale POS/MAC/ATM API

  • IXA SDK 3.5(Infrastructure Library)(CCI)VxWorks (CP_PDK) (NPF)APIVxWorks

  • 10OC-12 ATMOC-48 POSOC-192 POSCSIX

    IPv4 L3RFC1812IPv6 L3MPLS

  • POSMACATMTCP/IP

  • IXA

  • C CAMIPv4IPv6CRC

  • XScale CSR SRAMDRAM(DRAM)SRAM

  • CCICP_PDK(CCI) API (CP_PDK)(NPF) API

  • (OSSL)

  • OSCCI OSSL

  • \src ApplicationsBuilding_blocksCp_pdk EXAMPLESFrameworkCCRMIncludeCLibraryCRCxscaleCCIWorkspaceWind River Tornadomake

  • \src\applications Dispatch_loopListBuild.listLogScripts.indStreams

  • AgendaIXA

  • (NPF) (Intel) (plug-in) QoSVIDD

  • NPFRIBRIB (element aware)

  • NPF

  • (NPFCSIX)

    MAC

    MAC

    MAC

    MAC

    MAC

    MAC

    Switch fabric

    MAC

    MAC

    MAC

    MAC

    MAC

    MAC

  • DRAM(2KB)

  • SRAM Scratch ring (meta data) SRAM (8)32

    SRAM

    SDRAM

    32b

    32B

    2KB

  • (dispatch loop) dl_source dl_sink dlNextBlock

  • CC / (patches symbols)

  • CCI

  • ICMP

  • SP

  • (property) - MTUMAC IP

  • (call-back)API

  • NPFCP_PDK NPF API

  • CP_PDKAPIAPINPFAPI APIAPI CP

  • CP_PDK FEAPINPF APIAPIAPIshim

  • ARP

  • CP_PDK IETFForCESIETFdraft-ietf-forces-protocol-01.txt (agent) COPSCommon Open Policy Service QoS RFC2748 GSMPGeneral Switch Management ProtocolIPRFC3292-5 CORBA InfinibandPCI

  • CP-PDK(FP)APIAPI ShimAPIFP APINPF APIIntelIXPFP

  • CP-PDK

  • VIDD IP-in-IP (NPT)END

  • AgendaIXA

  • ID 8ID dl_next_block dl_next_block

  • void main(){DL_Source_Init();// initialize DL_Source blockIPFwd_Init(); // initialize the Ipv4 Forwarding blockMeter_Init(); // initialize the meter blockWRED_Init(); // initialize the WRED blockDL_Sink_Init(); // initialize DL_MESink blockwhile(TRUE) { // Run the dispatch loopDL_Source(); // Get a packet from the scratch ringIPFwd(); // call the IP forwarding blockMeter(); // call the metering blockWRED(); // call the WRED blockDL_Sink(); // pass packet to another microengine} // end dispatch loop while} // end main

  • SRAM24SDRAM

    313029:2423:0EOPSOPcell_countLw_offset

  • 31:2827:2423:2019:1615:1211:87:43:0Buffer_nextBuffer_sizeoffsetPacket_sizeFree_list_idRx_statHeader_typeInput_portOutput_portNext_hop_idFabric_portreservedNexthop_id_typecolorFlow_idClass_idreservedPacket_next

    Buffer_nextBuffer_sizeoffsetPacket_sizeFree_list_idIDRx_statHeader_typeInput_portOutput_portNext_hop_idFabric_portNexthop_id_typecolorQoSFlow_idQoSMPLSClass_idPacket_next

  • AgendaIXA

  • APIAPIAPIAPIAPIAPIAPISRAMDRAMAPI

  • APImicroengine.c

    ix_rm_ueng_set_ucodeix_rm_ueng_map_ucodeix_rm_ueng_reset_allix_rm_ueng_patch_symbolsix_rm_ueng_loadix_rm_ueng_set_ucodeix_rm_ueng_startix_rm_ueng_stopix_rm_ueng_resetix_rm_ueng_enableix_rm_ueng_disable

  • API

    ix_rm_hw_queue_createix_rm_hw_queue_deleteix_rm_hw_enqueueix_rm_hw_dequeueix_rm_hw_queue_array_get_base_addressSRAM Q-Arrayix_rm_hw_sram_ring_createSRAMix_rm_hw_scratch_ring_createix_rm_hw_ring_deleteix_rm_hw_ring_putix_rm_hw_ring_get

  • API

    ix_rm_hw_buffer_free_list_createix_rm_sw_buffer_free_list_createix_rm_buffer_free_list_deleteix_rm_buffer_free_list_get_infoix_rm_buffer_allocix_rm_buffer_freeix_rm_buffer_free_chainix_rm_buffer_get_metaix_rm_buffer_get_dataix_rm_buffer_is_eopix_rm_buffer_is_sopix_rm_buffer_get_type

  • API ID32 (end point) ID(dispatch engine) internal_communication.c

  • API ix_cp_property_info /prop1/prop2/prop3/prop4

  • CCIAPI 32

    3362828/CC

  • CCIAPI

    ix_cci_cc_add_event_handler ix_cci_cc_add_message_handler ix_cci_cc_add_packet_handler ix_cci_cc_create ix_cci_cc_destroy ix_cci_cc_remove_event_handler ix_cci_cc_remove_message_handler ix_cci_cc_remove_packet_handlerix_cci_exe_add_policyix_cci_exe_get_info

  • ICMP / IDbindings.h

  • CCIAPI

    create_eventactivate_eventprocess_due_eventsreschedule_eventget_user_contextix_cci_handle_events

  • CCIAPI

    ix_cci_get_first_pendingix_cci_get_next_pendingix_cci_process_selected_childix_cci_process_wrr_policyWRRix_cci_process_rr_policyRRix_cci_process_sp_policySPix_cci_policy_destroyix_cci_policy_add_branchix_cci_policy_add_leafix_cci_policy_clear_entry

  • CCIAPI C:\IXA_SDK_3.1\src\applications\sysapp_common\source\execution_engines.c

    _ix_sa_create_execution_engines_ix_sa_delete_execution_enginesix_cci_exe_shutdown_ix_sa_exe_init_ix_sa_enum_cc_from_listCC_LIST_ix_sa_exe_fini_ix_sa_reg_verify_engines_ix_sa_check_engine_prop_ix_sa_create_default_engine_ix_sa_delete_default_engine_ix_sa_default_exe_init_ix_sa_default_exe_fini_ix_sa_set_cc

  • sysapp_main.c

    ix_sa_create_ix_sa_entry_ix_sa_start_ix_sa_init_ix_sa_finiix_sa_shutdown_ix_sa_msf_initMSF RBUF_ix_sa_media_resetmedia_card_10x1gb_initMSF

  • XML System_PorpertiesAUTO_RESTARTBLAD_IDPORT00IP_VERIP_ADDRIP_MASKIP_BCASTIP_GATEMTULINK_SPEEDMAC_ADDRMEDIA_TYPEPORT01PORT02PORT03ME_01CONTEXTCONTEXT_MASKSystemAppFREELISTSFL_01ELEMENT_COUNTSRAM_SIZESRAM_CHANDRAM_SIZEDRAM_CHANSCRATCH_RINGSSR_01IDCHANELEMENT_SIZESR_02SR_03SA_EXEC_ENGINESSA_EE_00CC_LISTMICROENGINESME_01CONTEXTCONTEXT_MASK

  • CP_PDK C:\IXA_SDK3.1\src\cp_pdk apps cachenetlink.c Common DataTypeIPv4IPv6IPv4IPv6EncapIncInterconnectTCP/IPControlPlane APIImplementationsNPFAPIIPv4ATMDiffServCoreBlocksdataRelayShimincPDKManagerPDKPDKTransportPluginIPv4ATM

  • CP_PDKCppui ForwardingPlane DataRelayShimFPManagerFPModulePacketHandlerTransportPlugin Fpmodule_coreIXA SDK Fpmodule_proxy Npf_api NPF API

  • AgendaIXA

  • Oc-48 POS IPv4

    PPP

    IPv4

    CSIX

    CSIX

    CSIX

    CSIX

    PPP

  • POSIPv4PPPIPv4CSIX04125636CSIX7CSIX_TX

  • CSIXPPP

  • IPv6

  • AgendaIXA

  • Packet_RXPPP_classify Ipv4FwderQMCSIXCSIX

  • Packet_RX OC-48 POSDlSinkpacket_rx.c(mpacket)RBUFRBUF128RBUF8KB DRAM

  • Packet_RXrxc RBUFDRAMRBUF

  • Packet_RX

    SESPSOP SOPEOPSOPEOPSEPPMOPEOP SOPEOPMOPSOPEOPMSPSOP MOP ESPSOP EOP SPPMOPEOP SOPSSPSOP SOP MPPMOPEOP MOP EPPMOPEOP EOP

  • PPP_classify PPPIPv4IPv6LCPIPCP LCPIPCPPPPXScale dlMeta

  • Ipv4Fwder IPv4 RFC1812RFC2644 MPLSIPv6-IPv4

  • Ipv4Fwderdl_next_blockBID_IPV4dl_next_blockIPV4_NEXT1

  • QM SRAMSRAMQ-ArrayCAM16cache

  • QMCSIXATMQMPOSQM

  • QM0CAMCAMLRUCAMCAMLRU

  • CSIX 6416QoS (RR)(WRR) VoQXoff

  • CSIX 323232 4

  • CSIX CSIXC 8/16 C8CC 81632IDQoSIDMPLS/IDMSF(TCW)CSIXCSIX

  • CSIX(TXC)CTXCCTXCTXCDRAM TBUFDRAMTBUF 4CAMTBUFDRAMTBUFTBUF41n-1-3n2n+1-4n

  • AgendaIXA

  • IPv4

  • IPv4

    (RTM)

    CSIX TX

    (CCI)

    (RM)

  • C:\IXA_SDK_3.1\sec\building_blocks

    AtmsarATM SARIpv4ipv4_coreIPv4Ipv6IPv6Qos6DSCPWREDQueue_managerqm_cell\core\queue_managerRxATMCSIXPOSSchedulerATMCSIXStack_driverTxATMCSIXPOS AAL5

  • eth_rx XScaleSRAM 48MAC610 MACMAC

  • 64SRAM_FLT_TABLE_BASESRAM_PORT_BIT_MAP_BASE SRAML2

  • IX_CC_ETH_RX_MSG_GET_STATISTICS_INFOIX_CC_ETH_RX_MSG_GET_INTERFACE_STATEIX_CC_COMMON_MSG_ID_PROP_UPDATEIX_CC_ETH_RX_MSG_ADD_MAC_ADDRMACIX_CC_ETH_RX_MSG_DELETE_MAC_ADDRMACIX_CC_ETH_RX_MSG_LOOKUP_PORT

  • IPARPARPARPARPNPNPARPPCINP

  • APICCI API

    Ix_cc_eth_rx_initIx_cc_eth_rx_finiix_cc_eth_rx_msg_handlerix_cc_eth_rx_low_priority_pkt_handlerix_cc_eth_rx_hdlr.cix_cc_eth_rx_high_priority_pkt_handlerix_cc_eth_rx_hdlr.c

  • APIAPI

    ix_cc_eth_rx_async_get_statistics_infoix_cc_eth_rx_msg_hlp.cix_cc_eth_rx_async_get_interface_stateix_cc_eth_rx_msg_hlp.cix_cc_eth_rx_async_add_mac_addrMACix_cc_eth_rx_msg_hlp.cix_cc_eth_rx_async_delete_mac_addrMACix_cc_eth_rx_msg_hlp.cix_cc_eth_rx_async_lookup_portMACix_cc_eth_rx_msg_hlp.cix_cc_eth_rx_get_statistics_info/ix_cc_eth_rx_core.c

  • APIAPI

    ix_cc_eth_rx_get_interface_stateix_cc_eth_rx_core.cix_cc_eth_rx_set_propertyix_cc_eth_rx_core.cix_cc_eth_rx_add_mac_addrMACMACix_cc_eth_rx_core.cix_cc_eth_rx_del_mac_addrMACMACix_cc_eth_rx._core.cix_cc_eth_rx_lookup_portix_cc_eth_rx_core.c

  • rtmv4 IPv4API

  • API

    Ix_cc_rtmv4_initIx_cc_rtmv4_finiIx_cc_rtmv4_add_next_hopNHDBIx_cc_rtmv4_delete_next_hopNHDBIx_cc_rtmv4_updata_next_hopNHDBIx_cc_rtmv4_get_next_hopIx_cc_rtmv4_set_mtuMTUIx_cc_rtmv4_set_flagsIx_cc_rtmv4_add_routeIx_cc_rtmv4_update_routeIx_cc_rtmv4_delete_routeIx_cc_rtmv4_lookupIx_cc_rtmv4_dump_next_hopsIx_cc_rtmv4_dump_routesIx_cc_rtmv4_purgeIx_cc_rtmv4_purge_routesIx_cc_rtmv4_get_symblesIx_cc_rtmv4_get_statistics

  • IPv4 RFC1812RFC2644IPICMPICMPIPv4 rtmv4

  • IPv4RTM644ICMP

  • IPv4IP IPv4 IP{0, 0}DEE

  • IPv4ICMP ICMP ICMPICMPICMPICMP

  • IPv4ICMPICMP_ix_cc_ipv4_icmp_build_messageix_rm_buffer_get_metaICMPICMP_ix_cc_ipv4_init_ip_headerTTLix_cc_hw_get_packet_data ICMPIP_ix_cc_ipv4_get_port_ip_addressICMPIDICMP_ix_cc_ipv4_get_ip_id() ICMPICMP_ix_cc_ipv4_icmp_queue_message

  • IPv4IPIPIPIPICMPIPIPIP1ICMP

  • IPv4(LSRR)(SSRR)ICMP

  • IPv4MTUMTUDFDFICMPMTU

  • IPv4APICCI API

    ix_cc_ipv4_initix_cc_ipv4_finiix_cc_ipv4_msg_handlerix_cc_ipv4_microblock_high_priority_pkt_handlerIPv4ix_cc_ipv4_microblock_low_priority_pkt_handlerIPv4ix_cc_ipv4_stkdrv_pkt_handlerix_cc_ipv4_common_pkt_handler

  • IPv4APIAPI

    ix_cc_ipv4_async_add_routeix_cc_ipv4_async_delete_routeix_cc_ipv4_async_update_route ix_cc_ipv4_async_lookup_routeix_cc_ipv4_async_purge_routesix_cc_ipv4_async_dump_routesix_cc_ipv4_async_add_next_hopix_cc_ipv4_async_delete_next_hopix_cc_ipv4_async_update_next_hopix_cc_ipv4_async_get_next_hopix_cc_ipv4_async_purge_rtm

  • IPv4APIAPI

    ix_cc_ipv4_add_routeix_cc_ipv4_delete_routeix_cc_ipv4_update_routeix_cc_ipv4_lookup_routeix_cc_ipv4_purge_routesix_cc_ipv4_dump_routesix_cc_ipv4_add_next_hopix_cc_ipv4_delete_next_hopix_cc_ipv4_update_next_hopix_cc_ipv4_get_next_hopix_cc_ipv4_purge_rtm

  • (VIDD)

  • VIDDTCP/IP (VIDD) IXPXScaleTCP/IPMUX

  • IPv4IPv6MPLSID

  • APICCI API

    ix_cc_stkdrv_initix_cc_stkdrv_finiix_cc_stkdrv_high_priority_pkt_handlerix_cc_stkdrv_low_priority_pkt_handlerix_cc_stkdrv_msg_handlerix_cc_stkdrv_pkt_to_remote_handler

  • VIDD

    ix_cc_stkdrv_vidd_initVIDDix_cc_stkdrv_vidd_finiVIDDix_cc_stkdrv_vidd_npt_loadVxWorks MUXix_cc_stkdrv_vidd_receive_pktVIDDix_cc_stkdrv_vidd_npt_sendMUXix_cc_stkdrv_vidd_npt_unloadMUXix_cc_stkdrv_vidd_npt_ioctlVIDDix_cc_stkdrv_vidd_npt_startVIDDix_cc_stkdrv_vidd_npt_stopVIDDix_cc_stkdrv_vidd_npt_mCastAddrAddVIDDix_cc_stkdrv_vidd_npt_mCastAddrDelVIDDix_cc_stkdrv_vidd_npt_mCastAddrGetVIDDix_cc_stkdrv_vidd_npt_pollSendix_cc_stkdrv_vidd_npt_pollRcv

  • QMQM PCI CSIXATMPOS

  • CSIXWRR QoS DRR

  • L2 CSIXATM/POSARP /

  • ARP ARP2IPARPIP ARPARP(aging) ARPIPARP ARP1 ARP