各位工程师以及同仁们:
使用C6678测试和验证网口的传输带宽:
1. 在100Mbps模式下能够通过修改接收和发送数据缓存大小(65536,缺省下是8192),修改Helloworld将EVM作为TCP服务器负责向上位机发送数据,考虑到最大负载效率 IP包都使用最大包(1518B). 循环发送512*512的数据100 次,PC作为客户端接收数据,能够使用抓包工具测试出来带宽能够达到50Mbps,性能还是不错的。但是使用同样程序发送128*128数据100或者200次,带宽为何只有8Mbps左右????
网口被多核分时复用问题:
1. QMSS CPPI PA只在内核0初始化一次就可,EVM上有两个网口EMAC0和EMAC1,EMAC1是实际链接网口的。那么需要对多个内核配置为不同的IP地址、域名和网关吗?但是一个EMAC是不是应该只能绑定一个IP啊,这样怎么通过IP地址来进行识别不同的内核呢?
2. 请给予我有关网口分时复用的建议???另外:使用信号灯硬件模块来进行共享资源互斥访问,对信号灯的硬件Uint8 semNum,各个资源的semNum是怎样对应的?现在只是知道PA_HW_SEM 等少数几个,请给出定义头文件,csl_sem.h cslr_sem csl_semAux.h中都没有给出。
Andy Yin1:
速率的问题可能跟helloworld底层对包的拆分有关,你可以确认一下底层的实现。
1 C6678买个MAC port可以配置mac地址,但是该mac地址只是在流控的时候起作用,对接收的网络包不会在mac port根据mac地址进行过滤等任何操作。可以使用Netcp中的PA对接收的包进行过滤匹配,而PA内部可以配置多个路由表象,对接收的包可以分IP等进行路由到不同的core,这样也就可以达到类似你说的每个core绑定一个IP。
2 C6678的网口实通过Navigator来管理数据的输入输出,在初始配置完之后,实时收发数据的过程中,都是由硬件队列来管理,如发送的时候,多个core可以同时将packet push到同一个发送队列,不需要软件互斥。
Tony Fang:
回复 Andy Yin1:
Andy, 请教一下NDK网络通信吞吐量的问题。
我用PA_emac这个工程(不带NDK),直接用CSL,LLD配置NETCP进行通信,EVM一直发数据给PC,每包1400byte,PC端通过抓包软件检测接收的速率,1000M模式下可到970Mbps
但是我用HUA(带NDK)同样与PC端进行通信,EVM一直发数据给PC,每包1400byte,PC端检测到吞吐量只有640Mbps, 我理解,NDK加入后,这个软件协议栈需要对发送数据按照TCP/IP协议逐层进行封装,需要花费一定的CYCLES,但是耗费有这么大么?
你们测带NDK的网络通信能达到多大速率? 有什么可以提高吞吐量的途径吗?
zhijun Han:
回复 Tony Fang:
Tony Fang
您好!
我是一个NDK使用的新手,我看您已经可以运行NDK里的helloworld例子了,不知道能否向您请教一下啊,我的qq号是295048425。
谢谢!