CN117971400B - 一种网卡设备仿真系统、方法、电子设备及存储介质 - Google Patents
一种网卡设备仿真系统、方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117971400B CN117971400B CN202410389274.8A CN202410389274A CN117971400B CN 117971400 B CN117971400 B CN 117971400B CN 202410389274 A CN202410389274 A CN 202410389274A CN 117971400 B CN117971400 B CN 117971400B
- Authority
- CN
- China
- Prior art keywords
- simulation module
- end simulation
- tlp
- network card
- component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 212
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000004891 communication Methods 0.000 claims abstract description 13
- 230000003993 interaction Effects 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 15
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 4
- 239000000306 component Substances 0.000 description 56
- 230000006399 behavior Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 239000008358 core component Substances 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/40—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种网卡设备仿真系统,其至少包括前端仿真模块和后端仿真模块,两者通过进程间通信模块进行通信;其中:所述前端仿真模块,用于仿真网卡设备的前端功能,实现与网卡设备的前端驱动程序之间的交互;后端仿真模块,用于仿真网卡设备的后端功能;所述进程间通信模块,用于前端仿真模块与后端仿真模块之间进行数据交互。本申请还公开了相应的方法、电子设备及存储介质。实施本申请,可以快速地对网卡设备的前后端进行仿真,提高了对网卡设备的硬件方案验证的可行性和准确性。
Description
技术领域
本申请涉及网卡仿真实现技术领域,特别是涉及一种网卡设备仿真系统、方法、电子设备及存储介质。
背景技术
在现有技术中,对当前的一些常规网卡设备进行仿真时,会把该网卡设备作为全虚拟化设备,由一些设备仿真模拟器(如QEMU、Xen等)使用软件对设备进行直接模拟,对驱动程序提供和真实硬件一样的寄存器接口,主机(Host)中的操作系统不需要修改或新增驱动程序就可以直接使用,并且这些设备的内部处理逻辑也可以直接由设备仿真器中的软件实现。
尽管设备仿真器可以模拟硬件设备的外部行为,但在模拟内部处理逻辑方面会存在一些不足之处。例如,真实的网卡设备内部通常包含MCU(微控制器)处理器,用于处理数据包转发、队列管理等核心功能。
在当前的设备仿真技术中,这些内部逻辑处理往往仅由仿真器的软件实现,而缺少对MCU处理器和网卡内部核心组件的仿真。这导致仿真设备与真实设备在内部行为上存在诸多差异,从而可能导致一些功能限制、性能瓶颈或兼容性问题,例如:由于缺少对内部逻辑的处理,仿真设备可能在某些功能上与真实设备存在差异,这可能导致在仿真环境中运行的应用程序或操作系统出现意外的行为;由于仿真设备在内部处理上的不足,可能导致在处理大量数据或执行复杂任务时出现性能瓶颈;如果仿真设备与真实设备在行为上存在差异,那么为真实设备编写的驱动程序或应用程序可能无法在仿真设备上正常运行。
发明内容
本申请所要解决的技术问题在于,提供一种网卡设备仿真系统、方法、电子设备及存储介质,可以快速地对网卡设备的前后端进行仿真,提高了对网卡设备的硬件方案验证的可行性和准确性。
作为本申请的一方面,提供一种网卡设备仿真系统,其至少包括前端仿真模块和后端仿真模块,两者通过进程间通信模块进行通信;其中:
所述前端仿真模块,用于仿真网卡设备的前端功能,至少包括:用于对仿真网卡设备进行访问时,截获其寄存器中的内容,并发送给后端仿真模块;并用于接收来自后端仿真模块的反馈数据,以及接收后端仿真模块的内存读写请求;
后端仿真模块,用于仿真网卡设备的后端功能,至少包括:用于接收来自前端仿真模块的寄存器的内容,组成TLP报文数据;并用于向前端仿真模块反馈数据,以及发起对前端仿真模块的内存读写请求;
所述进程间通信模块,用于前端仿真模块与后端仿真模块之间进行数据交互。
其中,所述前端仿真模块进一步设置有操作系统、虚拟网卡设备以及系统存储器,在所述虚拟网卡设备中设置有BAR寄存器;所述进程间通信模块为Unix Socket;
其中,在对仿真网卡设备进行访问时,前端仿真模块截获对BAR寄存器的访问内容,获取相应的BAR地址数据,通过Unix Socket发送给后端仿真模块;
所述前端仿真模块通过Unix Socket接收来自后端仿真模块的内存访问请求,并对所述系统存储器进行读写操作。
其中,所述后端仿真模块中设置有:
RTOS组件,用于收发TLP报文,以及发起对前端仿真模块的内存读写请求;
TLP Ring组件,用于将TLP报文数据发送给RTOS组件,或从RTOS组件接收TLP报文数据;
Req Ring组件,用于接收RTOS组件对前端仿真模块的内存读写请求;
Cmpl Ring组件,用于在对前端仿真模块的内存读写请求操作完成后进行通知。
其中,所述TLP Ring组件进一步用于:
通过Unix Socket接收来自前端仿真模块的BAR地址数据,并按照TLP格式构建TLP报文,发给RTOS组件处理;
解析RTOS组件下发的TLP报文,并通过Unix Socket发送给前端仿真模块。
其中,在所述TLP Ring组件中,在构建TLP报文时,通过ring head指针和tail指针与RTOS组件进行交互。
其中,所述前端仿真模块中运行的操作系统为linux操作系统;在所述后端仿真模块中的RTOS组件采用cortex-m3架构,运行有RTOS操作系统。
相应地,本申请的另一方面,还提供一种网卡设备仿真方法,其采用如前述的网卡设备仿真系统所实现,所述方法至少包括如下步骤:
在对仿真网卡设备进行访问时,前端仿真模块截获其寄存器中的内容,并发送给后端仿真模块;
后端仿真模块接收来自前端仿真模块的寄存器的内容,组成TLP报文数据;
后端仿真模块向前端仿真模块反馈数据,以及发起对前端仿真模块的内存读写请求;
前端仿真模块接收来自后端仿真模块的反馈数据,以及接收后端仿真模块的内存读写请求,并进行相应处理。
其中,进一步包括:
在对仿真网卡设备进行访问时,前端仿真模块截获对BAR寄存器的访问内容,获取相应的BAR地址数据,通过Unix Socket发送给后端仿真模块,并接收来自后端仿真模块的反馈数据;
所述前端仿真模块通过Unix Socket接收来自后端仿真模块的内存访问请求,并对其系统存储器进行读写操作。
其中,进一步包括:
在所述后端仿真模块中,通过Unix Socket接收来自前端仿真模块的BAR地址数据,并按照TLP格式构建TLP报文;通过TLP Ring组件发给RTOS组件处理;
TLP Ring组件解析RTOS组件下发的TLP报文,并通过Unix Socket发送给前端仿真模块;
Req Ring组件接收RTOS组件对前端仿真模块的内存读写请求,并通过UnixSocket发送给前端仿真模块,在发送完成后,通过Cmpl Ring组件通知RTOS组件已完成相应操作。
相应地,本申请的再一方面,还提供一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如前述的系统的功能。
相应地,本申请的再一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的方法的步骤。
实施本申请实施例,具有如下的有益效果:
本申请提供一种网卡设备仿真系统、方法、电子设备及存储介质,通过采用两个QEMU模拟器来快速地分别对网卡设备的前端和后端进行仿真,提高了对网卡设备的硬件方案验证的可行性和准确性。
在本申请中,通过一个QEMU模拟器仿真网卡设备的前端;通过另一个QEMU模块器来仿真网卡设备的后端,同时在后端中实现TLP Ring和DMA ring等核心组件,并集成有RTOS功能,能够更真实地模拟网卡的后端处理逻辑;另外,通过Unix Socket实现前后端数据交互,可以更加真实的仿真网卡设备的实现过程;通过快速准确地仿真,可以节省硬件成本;
在本申请中,采用双QEMU架构以及RTOS集成方式,具有更高的灵活性和可扩展性,可以方便地调整仿真参数、添加新的功能或支持不同的网卡型号,能够适应不同的测试需求;另外,在本申请中,在前端仿真模块中,采用Linux作为其操作系统,其与现有的操作系统和驱动程序之间的兼容性非常好,无需对操作系统或驱动程序进行修改或新增。同时,通过Unix Socket进行前后端数据交互,使得整个仿真系统更易于部署和使用。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本申请的范畴。
图1为本申请提供的一种网卡设备仿真系统的一个实施例的结构示意图;
图2为本申请提供的一种网卡设备仿真方法的一个实施例的主流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。
如图1所示,示出了本申请提供的一种网卡设备仿真系统的一个实施例的结构示意图。其至少包括前端仿真模块和后端仿真模块,两者通过进程间通信模块(Unix Socket)进行通信;其中:
一个前端仿真模块,用于仿真网卡设备的前端功能,实现与网卡设备的前端驱动程序之间的交互;具体地,至少包括:用于在对仿真网卡设备进行访问时,截获其寄存器中的内容,并发送给后端仿真模块;并用于接收来自后端仿真模块的反馈数据,以及接收后端仿真模块的内存读写请求;
一个后端仿真模块,用于仿真网卡设备的后端功能,用于设备后端控制通路处理,实现对真实网卡设备的一些核心组件仿真(如TLP Ring、DMA控制器等);具体地,至少包括:用于接收来自前端仿真模块的寄存器的内容,组成TLP报文数据;并用于向前端仿真模块反馈数据,以及发起对前端仿真模块的内存读写请求;其中,事务层数据包(TransactionLayer Packet,TLP)是PCIe协议中用于数据传输的基本单位;
进程间通信模块,用于前端仿真模块与后端仿真模块之间进行数据交互,在本实施例中,所述进程间通信模块为Unix Socket(Unix 套接字)组件。
其中
在对仿真网卡设备进行访问时,前端仿真模块截获对BAR寄存器的访问内容,获取相应的BAR地址数据,通过Unix Socket发送给后端仿真模块;
所述前端仿真模块通过Unix Socket接收来自后端仿真模块的内存访问请求,并对其系统存储器进行读写操作。
所述后端仿真模块向前端仿真模块发送回馈数据,并发起对前端仿真模块的内存读写请求。
具体地,在本申请的实施例中,采用两个QEMU模拟器来分别模拟网卡设备(NIC)的前端仿真模块和后端仿真模块。其中,QEMU(Quick Emulator)是一个虚拟化平台,可以模拟各种硬件设备。
其中,前端仿真模块是在一个QEMU模拟器(前端QEMU模拟器)中用于模拟网络接口卡(NIC)前端的部分,其在虚拟机(VM)提供一个虚拟的网卡设备,使其模拟一个真实的物理网卡。在前端仿真模块中,可用于截获对其寄存器的访问,通过Unix Socket与后端仿真模块进行数据交互;同时,所述前端仿真模块通过Unix Socket接收来自后端仿真模块的内存访问请求,并进行读写操作。
具体地,在前端仿真模块中部署有:操作系统(Guest OS)、虚拟网卡设备(PCIENIC EP)以及系统存储器(Sys RAM)。
其中,在前端仿真模块中运行着一个Linux操作系统(VM linux)。所述Linux操作系统作为前端guest OS,可以提供一个兼容性好、功能丰富的环境,以支持大多数常见的驱动程序和开发工具,可以运行应用程序、测试软件、开发等。它允许用户在虚拟环境中模拟Linux系统的行为,而不会影响宿主机或其他虚拟机的操作。从而允许测试和开发人员在不需要实际硬件的情况下,验证和调试前端驱动程序的行为。
在VM linux中设置有用户空间(User Space)和内核空间(Kernel Space);其中,User Space指的是操作系统中用户应用程序运行的地址空间,在QEMU的虚拟环境中,UserSpace仍然代表了虚拟机中用户应用程序的运行空间。用户应用程序在User Space中运行,受到操作系统内核的限制和管理,以保护系统的稳定性和安全性。在QEMU的虚拟环境中,Kernel Space代表了虚拟机内核的运行空间;Kernel Space负责管理系统的硬件资源、提供系统服务(如进程调度、内存管理、设备驱动等)、维护系统安全性。Kernel Space具有最高权限,其中的代码可以直接访问硬件和修改系统状态,为用户空间提供必要的服务和支持。
同时,在内核空间中部署有网卡驱动(NIC Driver),网卡驱动用于管理虚拟网卡设备的驱动程序,其提供了与虚拟网卡设备的接口,使得虚拟机操作系统能够识别、配置和控制虚拟网卡设备,例如,可以初始化虚拟网卡设备、配置网络参数、发送和接收网络数据包、处理中断等。
而虚拟网卡设备(PCIE NIC EP)是在QEMU虚拟环境中模拟的PCIe接口的网卡端点设备。PCIE NIC EP通常包含网络处理逻辑、PCIe接口控制逻辑等,以实现高速、高效的网络通信。虚拟网卡设备作为虚拟机与外部网络之间的接口,与主机系统通过PCIe接口进行通信,以处理网络数据的传输。它模拟了真实的网卡设备的行为,使得虚拟机能够通过PCIe接口与外部网络进行通信。
在虚拟网卡设备中设置有基础地址寄存器存储资源(Base Address RegisterMemory Resources,BAR MR),即虚拟机的物理内存。其中,BAR是PCI或PCIe设备用来报告其内存或I/O资源需求的寄存器,而MR指的是这些资源中的内存资源部分。BAR MR提供了设备所需的内存地址范围信息,以便操作系统能够正确地分配和映射内存资源给设备。这对于设备驱动程序与硬件之间的通信至关重要。前端仿真模块可以截获对这些寄存器的访问内容,以便能够模拟设备的内存映射和I/O行为。
在QEMU的虚拟环境中,Sys RAM是虚拟机用于存储数据和运行应用程序的主要内存资源。它允许CPU快速访问数据和指令,它决定了虚拟机的性能和能够同时运行的应用程序数量。
可以理解的是,前端QEMU模拟器可以截获从前端QEMU模拟器拉起的镜像(即虚拟机VM的linux操作系统)里通过驱动或用户态APP写pcie设备的bar地址的数据,然后通过Unix Scoket发给后端的QEMU模拟器,后端QEMU模拟器后端利用该数据来组合成TLP报文。
后端仿真模块是在另一个QEMU模拟器(后端QEMU模拟器)中用于模拟网络接口卡(NIC)后端的部分,而在后端仿真模块中部署有:RTOS组件、TLP Ring组件、Req Ring组件以及Cmpl Ring组件。
其中,RTOS组件为后端仿真模块提供guest os,其是一个实时操作系统可以运行于cortex-m3架构的CPU中。RTOS组件用于处理TLP报文和发起对前端内存读写请求;后端仿真模块接收TLP数据,并模拟设备对TLP的处理。RTOS组件也可以下发TLP报文和对前端内存读写请求;
TLP Ring组件,用于处理TLP数据,以及与RTOS组件进行交互。具体地,TLP Ring是一个环形缓冲区,用于在后端仿真模块中RTOS组件与前端仿真设备之间高效地传输TLP数据。当RTOS组件需要发送数据到前端仿真设备时,它将TLP报文放入TLP Ring,然后从TLPRing中取出报文,处理并发送给前端仿真设备。同样,前端仿真设备需要发送的TLP数据也通过TLP Ring传递给RTOS组件进行处理。这种环形缓冲区的设计允许连续的数据传输,而无需每次都进行昂贵的内存分配和释放操作。
具体地,TLP Ring组件实现接收前端信息,并组成TLP报文,通过ring head和tail指针进行和RTOS组件交互,head和tail指针通过寄存器的模拟实现;对于往前端发送的TLP报文,RTOS通过寄存器直接下发,TLP Ring组件对下发数据进行解析处理并发给前端。
Req Ring组件,用于接收RTOS组件对前端驱动的内存读写请求;其中,Req Ring(请求环)是一个用于传输内存读写请求的环形缓冲区。在仿真环境中,当RTOS组件需要访问前端驱动程序的内存时,它会将请求放入Req Ring。这些请求可以包括读取或写入内存的操作。
Cmpl Ring组件,用于通知RTOS组件已完成对前端驱动的内存读写操作。CmplRing(完成环)是一个用于通知操作完成的环形缓冲区。当后端仿真组件完成一个来自ReqRing的请求(如内存读写操作)发送时,它会在Cmpl Ring中放置一个完成描述符,指示该操作已经完成。RTOS会定期检查Cmpl Ring,以了解哪些请求已经完成。这样,RTOS可以继续执行后续的操作,或者处理其他任务。
可以理解的是,Req Ring和Cmpl Ring这两个组件为一个组合,Req ring用于接收RTOS对前端内存的读写,Cmpl ring对完成的读写请求对RTOS进行通知。
在本申请中,这些环形缓冲区的机制允许仿真环境中的不同组件以高效、同步的方式通信和交互。通过使用环形缓冲区,可以避免频繁的内存分配和释放操作,提高仿真的性能和效率。同时,这些机制也允许仿真环境更准确地模拟真实硬件的行为和性能。
从上可知,在所述后端仿真模块可以实现的功能为:通过Unix Socket接收来自前端仿真模块的数据(如BAR地址数据),并按照TLP格式构建TLP报文;TLP Ring组件解析RTOS组件下发的TLP报文,并通过Unix Socket发送给前端仿真模块;通过Req Ring组件接收RTOS组件对前端驱动的内存读写请求,并通过Unix Socket发送给前端仿真模块,发送完成后,通过Cmpl Ring组件通知RTOS组完成操作。
综上可知,在本申请中使用两个QEMU模拟器来实现网卡的仿真,一个QEMU用于仿真网卡设备的前端功能,另一个QEMU用于仿真网卡后端仿真模块,从而可以快速地对网卡设备的前后端进行仿真,提高了对网卡设备的硬件方案验证的可行性和准确性。
相应地,如图2所示,示出了本申请提供的网卡设备仿真方法的一个实施例的主流程示意图。在本实施例中,其采用如前述图1所描述的网卡设备仿真系统来实现,该方法至少包括如下步骤:
步骤S10,在对仿真网卡设备进行访问时,前端仿真模块截获其寄存器中的内容,并发送给后端仿真模块;
步骤S11,后端仿真模块接收来自前端仿真模块的寄存器的内容,组成TLP报文数据;
步骤S12,后端仿真模块向前端仿真模块反馈数据,以及发起对前端仿真模块的内存读写请求;
步骤S13,前端仿真模块接收来自后端仿真模块的反馈数据,以及接收后端仿真模块的内存读写请求,并进行相应处理。
进一步包括:
在对仿真网卡设备进行访问时,前端仿真模块截获对BAR寄存器的访问内容,获取相应的BAR地址数据,通过Unix Socket发送给后端仿真模块,并接收来自后端仿真模块的反馈数据;
所述前端仿真模块通过Unix Socket接收来自后端仿真模块的内存访问请求,并对其系统存储器进行读写操作。
进一步包括,在所述后端仿真模块中,通过Unix Socket接收来自前端仿真模块的BAR地址数据,并按照TLP格式构建TLP报文;通过TLP Ring组件发给RTOS组件处理;
TLP Ring组件解析RTOS组件下发的TLP报文,并通过Unix Socket发送给前端仿真模块;
Req Ring组件接收RTOS组件对前端仿真模块的内存读写请求,并通过UnixSocket发送给前端仿真模块,在发送完成后,通过Cmpl Ring组件通知RTOS组件已完成相应操作。
更多细节,可以参考并结合前述对图1的描述,在此不进行赘述。
相应地,本申请的再一方面,还提供一种电子设备(如计算机设备),包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如前述图1所描述的系统的功能。更多细节,可以参考并结合前述对图1的描述,在此不进行赘述。
相应地,本申请的再一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述图2所描述的方法的步骤。更多细节,可以参考并结合前述对图2的描述,在此不进行赘述。
实施本申请实施例,具有如下的有益效果:
本申请提供一种网卡设备仿真系统、方法、电子设备及存储介质,通过采用两个QEMU模拟器来快速地分别对网卡设备的前端和后端进行仿真,提高了对网卡设备的硬件方案验证的可行性和准确性。
在本申请中,通过一个QEMU模拟器仿真网卡设备的前端;通过另一个QEMU模块器来仿真网卡设备的后端,同时在后端中实现TLP Ring和DMA ring等核心组件,并集成有RTOS功能,能够更真实地模拟网卡的后端处理逻辑;另外,通过Unix Socket来进行前后端数据交互,可以更加真实的仿真网卡设备的实现过程;通过快速准确地仿真,可以节省硬件成本;
在本申请中,采用双QEMU架构以及RTOS集成方式,具有更高的灵活性和可扩展性,可以方便地调整仿真参数、添加新的功能或支持不同的网卡型号,能够适应不同的测试需求;另外,在本申请中,在前端仿真模块中,采用Linux作为其操作系统,其与现有的操作系统和驱动程序之间的兼容性非常好,无需对操作系统或驱动程序进行修改或新增。同时,通过Unix Socket进行前后端数据交互,使得整个仿真系统更易于部署和使用。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (9)
1.一种网卡设备仿真系统,其特征在于,其至少包括前端仿真模块和后端仿真模块,两者通过进程间通信模块进行通信;其中:
所述前端仿真模块,用于在一个QEMU模拟器中仿真网卡设备的前端功能,至少包括:用于在对仿真网卡设备进行访问时,截获其寄存器中的内容,并发送给后端仿真模块;并用于接收来自后端仿真模块的反馈数据,以及接收后端仿真模块的内存读写请求;
所述后端仿真模块,用于在另一个QEMU模拟器中仿真网卡设备的后端功能,至少包括:用于接收来自前端仿真模块的寄存器的内容,组成TLP报文数据;并用于向前端仿真模块反馈数据,以及发起对前端仿真模块的内存读写请求;
所述进程间通信模块,用于前端仿真模块与后端仿真模块之间进行数据交互;
其中,所述后端仿真模块中设置有:
RTOS组件,用于收发TLP报文,以及发起对前端仿真模块的内存读写请求;
TLP Ring组件,用于将TLP报文数据发送给RTOS组件,或从RTOS组件接收TLP报文数据;
Req Ring组件,用于接收RTOS组件对前端仿真模块的内存读写请求;
Cmpl Ring组件,用于在对前端仿真模块的内存读写请求操作完成后进行通知。
2.根据权利要求1所述的系统,其特征在于,所述前端仿真模块进一步设置有操作系统、虚拟网卡设备以及系统存储器,在所述虚拟网卡设备中设置有BAR寄存器;所述进程间通信模块为Unix Socket;
其中,在对仿真网卡设备进行访问时,前端仿真模块截获对BAR寄存器的访问内容,获取相应的BAR地址数据,通过Unix Socket发送给后端仿真模块;
所述前端仿真模块通过Unix Socket接收来自后端仿真模块的内存访问请求,并对所述系统存储器进行读写操作。
3.根据权利要求2所述的系统,其特征在于,所述TLP Ring组件进一步用于:
通过Unix Socket接收来自前端仿真模块的BAR地址数据,并按照TLP格式构建TLP报文,发给RTOS组件处理;
解析RTOS组件下发的TLP报文,并通过Unix Socket发送给前端仿真模块。
4.根据权利要求3所述的系统,其特征在于,在所述TLP Ring组件中,在构建TLP报文时,通过ring head指针和tail指针与RTOS组件进行交互。
5.根据权利要求1至4任一项所述的系统,其特征在于,所述前端仿真模块中运行的操作系统为linux操作系统;在所述后端仿真模块中的RTOS组件采用cortex-m3架构,运行有RTOS操作系统。
6.一种网卡设备仿真方法,其采用如权利要求1至5中任一项所述的网卡设备仿真系统所实现,其特征在于,所述方法至少包括如下步骤:
在对仿真网卡设备进行访问时,前端仿真模块截获其寄存器中的内容,并发送给后端仿真模块;
后端仿真模块接收来自前端仿真模块的寄存器的内容,组成TLP报文数据;
后端仿真模块向前端仿真模块反馈数据,以及发起对前端仿真模块的内存读写请求;
前端仿真模块接收来自后端仿真模块的反馈数据,以及接收后端仿真模块的内存读写请求,并进行读写操作处理;
进一步包括:
在所述后端仿真模块中,通过Unix Socket接收来自前端仿真模块的BAR地址数据,并按照TLP格式构建TLP报文;通过TLP Ring组件发给RTOS组件处理;
TLP Ring组件解析RTOS组件下发的TLP报文,并通过Unix Socket发送给前端仿真模块;
Req Ring组件接收RTOS组件对前端仿真模块的内存读写请求,并通过Unix Socket发送给前端仿真模块;在发送完成后,通过Cmpl Ring组件通知RTOS组件已完成相应操作。
7.如权利要求6所述的方法,其特征在于,进一步包括:
在对仿真网卡设备进行访问时,前端仿真模块截获对BAR寄存器的访问内容,获取相应的BAR地址数据,通过Unix Socket发送给后端仿真模块,并接收来自后端仿真模块的反馈数据;
所述前端仿真模块通过Unix Socket接收来自后端仿真模块的内存访问请求,并对其系统存储器进行读写操作。
8.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述的系统的功能。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求6至7任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410389274.8A CN117971400B (zh) | 2024-04-02 | 2024-04-02 | 一种网卡设备仿真系统、方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410389274.8A CN117971400B (zh) | 2024-04-02 | 2024-04-02 | 一种网卡设备仿真系统、方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117971400A CN117971400A (zh) | 2024-05-03 |
CN117971400B true CN117971400B (zh) | 2024-08-16 |
Family
ID=90866132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410389274.8A Active CN117971400B (zh) | 2024-04-02 | 2024-04-02 | 一种网卡设备仿真系统、方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117971400B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116681013A (zh) * | 2023-08-01 | 2023-09-01 | 无锡沐创集成电路设计有限公司 | 网络芯片的仿真验证方法、平台、装置、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514074B (zh) * | 2013-09-06 | 2015-12-09 | 清华大学 | Mvb网卡开发方法及平台 |
US11593529B2 (en) * | 2019-07-29 | 2023-02-28 | Intel Corporation | Device interface security management for computer buses |
CN114880977B (zh) * | 2022-05-11 | 2023-04-25 | 北京百度网讯科技有限公司 | 软硬件联合仿真系统、方法、装置、设备和存储介质 |
CN116069453B (zh) * | 2023-04-04 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种仿真系统 |
-
2024
- 2024-04-02 CN CN202410389274.8A patent/CN117971400B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116681013A (zh) * | 2023-08-01 | 2023-09-01 | 无锡沐创集成电路设计有限公司 | 网络芯片的仿真验证方法、平台、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117971400A (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3382536B1 (en) | Emulation of hardware components | |
RU2532708C2 (ru) | Способ и устройство для осуществления операции ввода/вывода в среде виртуализации | |
US9418181B2 (en) | Simulated input/output devices | |
JP7321839B2 (ja) | ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム | |
CN114818599A (zh) | 芯片仿真验证系统 | |
CN111796912A (zh) | 申威平台存储输入输出设备虚拟化性能优化方法及系统 | |
CN116069453B (zh) | 一种仿真系统 | |
WO2022143714A1 (zh) | 服务器系统、虚拟机创建方法及装置 | |
WO2022001808A1 (zh) | 一种系统以及中断处理方法 | |
CN117389694B (zh) | 基于virtio-blk技术提升虚拟存储IO性能的方法 | |
EP4092531A1 (en) | Systems, methods, and apparatus for coordinating computation systems | |
CN114397999B (zh) | 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备 | |
CN111857943B (zh) | 数据处理的方法、装置与设备 | |
CN112764981B (zh) | 一种协同测试系统及方法 | |
CN117555832A (zh) | 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 | |
CN116611375A (zh) | 软硬件协同仿真平台及软硬件测试方法 | |
CN117971400B (zh) | 一种网卡设备仿真系统、方法、电子设备及存储介质 | |
US7447618B2 (en) | Method and system for ASIC simulation | |
Zhang et al. | NVMe-over-RPMsg: A Virtual Storage Device Model Applied to Heterogeneous Multi-Core SoCs | |
JP5226848B2 (ja) | シミュレーション装置及びプログラム | |
Stetter et al. | IBM eServer z990 improvements in firmware simulation | |
Ribeiro | VirtIO Infrastructure for a Static Partition Hypervisor: virtio-blk and virtio-console | |
CN103140830B (zh) | 对虚拟网络的输入/输出进行控制的系统和方法 | |
CN117874748A (zh) | 一种跨平台操作系统的混合安全虚拟化方法 | |
CN115373797A (zh) | 用于协调计算系统的系统、方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |