CN116094918A - 一种用于配置管理三层交换机端口的虚拟网卡实现方法 - Google Patents
一种用于配置管理三层交换机端口的虚拟网卡实现方法 Download PDFInfo
- Publication number
- CN116094918A CN116094918A CN202310081114.2A CN202310081114A CN116094918A CN 116094918 A CN116094918 A CN 116094918A CN 202310081114 A CN202310081114 A CN 202310081114A CN 116094918 A CN116094918 A CN 116094918A
- Authority
- CN
- China
- Prior art keywords
- message
- pcie
- network card
- virtual network
- cpu
- 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.)
- Pending
Links
Images
Classifications
-
- 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/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- 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/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出了一种用于配置管理三层交换机端口的虚拟网卡实现方法,基于Linux系统,将PCIE RC、DDR、PCIE EP、DMA集成到同一个虚拟网卡的驱动中,并且支持同时创建多个虚拟网卡,通过上送/下发的报文中头信息来区分报文来自/发往相应端口;实现三层交换芯片与SONiC等网络协议栈之间的交互,解决配置管理三层交换机端口的需求,同一个驱动程序减少了不同驱动之间的交互,便于管理。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种用于配置管理三层交换机端口的虚拟网卡实现方法。
背景技术
网卡是用来处理计算机或者嵌入式设备与外部网络通信的设备,在传统OSI(OpenSystem Interconnect)模型七层结构中的第二层。网卡主要的功能是报文数据接收与发送,其接收到的数据报文需要传给网络协议栈,发送的报文数据需要通过网卡传给光纤或者电缆。
三层交换机是具有一部分路由器功能的交换机,在传统OS I模型七层结构的第三层,即网络层。与传统的二层交换机不同,三层交换机可以在大型网络拓扑结构的局域网内加快数据报文交换,能够一次路由多次转发。规律性的数据报文通过芯片硬件高速实现,但是对于路由表信息维护、计算等则需要软件介入实现。
Linux内核网络子系统主要负责管理各种网络设备,并实现各种网络协议栈,最终实现通过网络连接其它系统的功能。在Linux内核中,网络子系统几乎是自成体系,它包括5个子模块,它们的功能如下:
1.Network Device Drivers,网络设备的驱动,和虚拟文件系统(Virtual FileSystem,VFS)子系统中的设备驱动是一样的;
2.Device Independent Interface,设备无关的接口,和VF S子系统中的是一样的;
3.Network Protocols,网络协议,实现各种网络传输协议,例如IP,TCP,UDP等等;
4.Protocol Independent Interface,协议无关的接口,屏蔽不同的硬件设备和网络协议,以相同的格式提供接口(socket);
5.System Call interface,系统调用接口,向用户空间提供访问网络设备的统一的接口。
基于上述结构,如果三层交换机需要上送报文时,需要通过网卡接收数据传给内核网络协议栈,下发配置时,则需要网卡接收内核网络协议栈的数据并转发给光纤或者电缆。
本发明虚拟网卡针对三层交换芯片,能够做到配置管理交换芯片的每一端口,可以用于上层网络协议栈SONiC(Software for Open Networking in the Cloud)的需要管理交换芯片的端口,为网络协议栈与交换芯片架起一座“沟通”的桥梁。
为了解决上述技术问题,本发明提供了一种用于配置管理三层交换机端口的虚拟网卡实现方法,基于Linux系统,将PCIERC、DDR、PCIE EP、DMA集成到同一个虚拟网卡的驱动中,并且支持同时创建多个虚拟网卡,通过上送/下发的报文中头信息来区分报文来自/发往相应端口;功能上可以满足三层交换芯片与SONiC等网络协议栈之间的交互,解决配置管理三层交换机端口的需求,同一个驱动程序减少了不同驱动之间的交互,便于管理。
发明内容
为了解决上述技术问题,本发明提供了一种用于配置管理三层交换机端口的虚拟网卡实现方法,基于Linux系统,将PCIERC、DDR、PCIE EP、DMA集成到同一个虚拟网卡的驱动中,并且支持同时创建多个虚拟网卡,通过上送/下发的报文中头信息来区分报文来自/发往相应端口;功能上可以满足三层交换芯片与SONiC等网络协议栈之间的交互,解决配置管理三层交换机端口的需求,同一个驱动程序减少了不同驱动之间的交互,便于管理。
为实现上述目的,本发明采用如下的技术方案。
在本发明实施例中,提出了一种用于配置管理三层交换机端口的虚拟网卡实现方法,该方法包括如下步骤:
S1将PCIE RC、DDR、PCIE EP、DMA集成到同一个虚拟网卡的驱动中;
S2交换芯片侧PRO将需要上送CPU的报文,通过DMA将报文数据通过PCIE EP、RC将报文数据写入到DDR开辟的上送空间中,同时会产生PCIE MSI中断;所述MSI中断会上报给主控侧CPU,此时CPU会进入MSI中断服务函数;所述中断服务函数会调用Linux网络协议栈API将报文传给Linux内核网络协议栈或者其他网络协议栈;
S3当主控CPU有配置需要下发时,CPU通过虚拟网卡的发送API将携带配置信息的报文数据写到DDR中的下发空间中,DMA取出所述报文数据传送给交换芯片侧PRO模块,当报文传输结束,会产生一个PCIE MSI中断告诉CPU报文处理完成。
进一步的,当管理三层交换机多个端口时,在上送/下发的报文前添加私有头,所述私有头中包含报文来自/发往的端口信息,在网卡驱动中解析所述端口信息并将报文上送/下发到对应的处理函数。
进一步的,所述主控CPU上电时PCIE RC根节点通过深度优先法则扫描总线各个支路,枚举发现所述PCIE终端节点EP。
进一步的,所述虚拟网卡包括主控与交换芯片,其中主控侧包括:PCIE RC端和DDR;交换芯片侧包括:PCIE EP端、DMA以及PRO,PCIE EP端实现报文的传输通道,与主控RC端通信,DMA隔离CPU实现数据的高速传输,PRO为业务报文处理模块。
进一步的,DMA将交换芯片需要上送CPU的报文放到主控的DDR上以及将主控CPU的配置报文从DDR上取出下发给交换芯片。
进一步的,所述虚拟网卡驱动程序包括交换芯片DMA、EP和DDR(DMA Buffer)部分,主要功能是上送/下发报文,与Linux内核网络协议栈或者其他网络协议栈进行交互。
本发明的有益效果在于,针对现有的网络通信系统中存在的问题,提出了一种用于配置管理三层交换机端口的虚拟网卡实现方法,基于Linux系统,将PCIE RC、DDR、PCIEEP、DMA集成到同一个虚拟网卡的驱动中,并且支持同时创建多个虚拟网卡,通过上送/下发的报文中头信息来区分报文来自/发往相应端口;功能上可以满足三层交换芯片与SONiC等网络协议栈之间的交互,解决配置管理三层交换机端口的需求,同一个驱动程序减少了不同驱动之间的交互,便于管理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实现流程示意图;
图2为本发明实施例一的系统构成示意图;
图3为本发明实施例一的实现流程成示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。以下实施用例仅用于更加清楚地说明本发明的系统方法及技术方案,而不能以此来限制本申请的保护范围。
根据本发明的实施方式,本发明提出了一种用于配置管理三层交换机端口的虚拟网卡实现方法,基于Linux系统,将PCIERC、DDR、PCIE EP、DMA集成到同一个虚拟网卡的驱动中,并且支持同时创建多个虚拟网卡,通过上送/下发的报文中头信息来区分报文来自/发往相应端口;功能上可以满足三层交换芯片与SONiC等网络协议栈之间的交互,解决配置管理三层交换机端口的需求,同一个驱动程序减少了不同驱动之间的交互,便于管理。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
图1是一种用于配置管理三层交换机端口的虚拟网卡实现方法的处理流程示意图。如图1所示,该方法包括如下步骤:
S1将PCIE RC、DDR、PCIE EP、DMA集成到同一个虚拟网卡的驱动中;
S2交换芯片侧PRO将需要上送CPU的报文,通过DMA将报文数据通过PCIE EP、RC将报文数据写入到DDR开辟的上送空间中,同时会产生PCIE MSI中断;所述MSI中断会上报给主控侧CPU,此时CPU会进入MSI中断服务函数;所述中断服务函数会调用Linux网络协议栈API将报文传给Linux内核网络协议栈或者其他网络协议栈;
S3当主控CPU有配置需要下发时,CPU通过虚拟网卡的发送API将携带配置信息的报文数据写到DDR中的下发空间中,DMA取出所述报文数据传送给交换芯片侧PRO模块,当报文传输结束,会产生一个PCIE MSI中断告诉CPU报文处理完成。
具体实施时,当管理三层交换机多个端口时,在上送下发的报文前添加私有头,该私有头中包含报文来自/发往的所述端口信息,在网卡驱动中解析所述端口信息并将该报文上送/下发到对应的处理函数。
具体实施时,所述主控CPU上电时PCIE RC根节点通过深度优先法则扫描总线各个支路,枚举发现所述PCIE终端节点EP。
具体实施时,所述虚拟网卡包括主控与交换芯片,其中主控侧包括:PCIE RC端、DDR;交换芯片侧包括:PCIE EP端、DMA、PRO,PCIE EP实现报文的传输通道,与主控PCIE RC端通信;DMA隔离CPU实现数据的高速传输;PRO为业务报文处理模块。
具体实施时,DMA将交换芯片需要上送CPU的报文放到主控的DDR上以及将主控CPU的配置报文从DDR上取出下发给交换芯片。
具体实施时,所述虚拟网卡驱动程序包括交换芯片DMA、EP和DDR(DMA Buffer)部分,主要功能是上送、下发报文与Linux内核或者其他网络协议栈进行交互。
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
为了对上述一种用于配置管理三层交换机端口的虚拟网卡实现方法进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
实施例一:
本发明公开了一种用于配置管理三层交换机端口的虚拟网卡实现方法,通过虚拟网卡可以实现业务协议栈对三层交换机端口的配置与管理,集成了PCIE、DMA和虚拟网卡驱动,集成度高,便于管理。
所述虚拟网卡如图2虚线框图中,包括:主控PCIE(高速串行计算机扩展总线标准,Peripheral Component Interconnect Express)RC(Root Complex)、主控DDR、交换机芯片PCIE EP(Endpoint,端点)端驱动程序、交换机芯片DMA驱动程序、主控DDR访问程序以及虚拟网卡驱动程序。
虚拟网卡包括主控与交换芯片:
主控侧:RC为PCIE RC端、DDR;
交换芯片侧:EP为PCIE EP端,实现报文的传输通道,与主控RC端通信;DMA隔离CPU实现数据的高速传输;PRO为业务报文处理模块。
具体实现过程由三部分驱动构成:
1、编写PCIE EP端驱动程序,主控CPU上电时PCIE RC根节点通过深度优先法则扫描总线各个支路,枚举发现该PCIE终端节点EP;
编写PCIE EP端驱动程序,主控CPU上电时,对于CPU而言不清楚下面挂接了什么设备;所以通过扫描总线各个支路,对终端节点EP进行探测发现。
2、编写交换芯片DMA驱动程序;
该部分的主要功能是将交换芯片需要上送CPU的报文放到主控的DDR上以及将主控CPU的配置报文从DDR上取出下发给交换芯片。
3、编写虚拟网卡驱动程序,该部分包括交换芯片DMA、EP和DMA Buffer部分,主要功能是上送、下发报文与Linux内核网络协议栈通道。
报文接收整个过程可以概述为:
当交换芯片侧PRO有需要上送CPU的报文时,通过DMA将报文数据通过PCIE EP、RC将报文数据写入到DDR开辟的上送空间中,同时会产生PCIE MSI(消息信号中断,MessageSignaled Interrupts)中断,该中断会上报给主控侧CPU,此时CPU会进入MSI中断服务函数。该中断服务函数会调用Linux网络协议栈API将报文传给Linux内核或者其他网络协议栈(例如SONiC、Quagga等)。
配置下发的过程如下:
当主控CPU有配置需要下发时,此时,CPU通过虚拟网卡的发送API将报文数据写到DDR中的下发空间中,DMA取出该报文数据传送给PRO模块,当报文传输结束,会产生一个PCIE MSI中断告诉CPU报文处理完成。本发明将交换芯片的配置管理集成到一个驱动中,便于以后的维护。
具体实施时,如图3以ARP报文为例:
当有协议报文需要上送时,交换芯片通过上行报文调度模块ISCH传给DMA,DMA将报文直接通过PCIE写到配置的上送报文DDR(DMA Buffer)空间,即主控的DDR,此时会触发PCIE MSI中断,CPU响应虚拟网卡virt_net中的中断的服务函数中将DDR上送空间(图3中的UP部分)的报文取走,再按照约定好的格式将该数据通过Linux内核API(netif_rx或者netif_receive_skb)传给Linux内核网络协议栈;
当Linux协议栈反馈或者下发配置时,最终会调用到注册到Linux内核的虚拟网卡的xmit函数,该函数会将内核传来的数据写入到DDR中的下发空间,DMA控制器时刻轮询着这块下发空间,当发现BD(Buffer Descriptor)表空间中有valid的数据时,自动从DDR下发空间(图3中的DOWN部分)取数据传给下行报文调度模块OSCH,完成后同时产生PCIE MSI中断上报给CPU决策后续动作。
具体实施时,当管理三层交换机多个端口时,在上送下发的报文前添加私有头,该私有头中包含报文来自/发往的端口号,在网卡驱动中解析该端口信息并将该报文上送/下发到对应的处理函数。
本发明的有益效果在于,针对现有的网络通信系统中存在的问题,提出了一种用于配置管理三层交换机端口的虚拟网卡实现方法,基于Linux系统,将PCIE RC、DDR、PCIEEP、DMA集成到同一个虚拟网卡的驱动中,并且支持同时创建多个虚拟网卡,通过上送/下发的报文中头信息来区分报文来自/发往相应端口;功能上可以满足三层交换芯片与SONiC等网络协议栈之间的交互,解决配置管理三层交换机端口的需求,同一个驱动程序减少了不同驱动之间的交互,便于管理。
本发明申请人结合说明书附图对本发明的实施用例做了详细的说明与描述,以上实施用例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。
Claims (6)
1.一种用于配置管理三层交换机端口的虚拟网卡实现方法,其特征在于,该方法包括如下步骤:
S1将PCIE RC、DDR、PCIE EP、DMA集成到同一个虚拟网卡的驱动中;
S2交换芯片侧PRO将需要上送CPU的报文,通过DMA将报文数据通过PCIE EP、RC将报文数据写入到DDR开辟的上送空间中,同时会产生PCIE MSI中断;所述MSI中断会上报给主控侧CPU,此时CPU会进入MSI中断服务函数;所述中断服务函数会调用Linux网络协议栈API将报文传给Linux内核网络协议栈或者其他网络协议栈;
S3当主控CPU有配置需要下发时,CPU通过虚拟网卡的发送API将携带配置信息的报文数据写到DDR中的下发空间中,DMA取出所述报文数据传送给交换芯片侧PRO模块,当报文传输结束,会产生一个PCIE MSI中断告诉CPU报文处理完成。
2.根据权利要求1所述的一种用于配置管理三层交换机端口的虚拟网卡实现方法,其特征在于:当管理三层交换机多个端口时,在上送/下发的报文前添加私有头,所述私有头中包含报文来自/发往的端口信息,在网卡驱动中解析所述端口信息并将报文上送/下发到对应的处理函数。
3.根据权利要求1所述的一种用于配置管理三层交换机端口的虚拟网卡实现方法,其特征在于:所述主控CPU上电时PCIE RC根节点通过深度优先法则扫描总线各个支路,枚举发现所述PCIE终端节点EP。
4.根据权利要求1所述的一种用于配置管理三层交换机端口的虚拟网卡实现方法,其特征在于:所述虚拟网卡包括主控与交换芯片,其中主控侧包括:PCIE RC端和DDR;交换芯片侧包括:PCIE EP端、DMA以及PRO,PCIE EP端实现报文的传输通道,与主控RC端通信,DMA隔离CPU实现数据的高速传输,PRO为业务报文处理模块。
5.根据权利要求1所述的一种用于配置管理三层交换机端口的虚拟网卡实现方法,其特征在于:DMA将交换芯片需要上送CPU的报文放到主控的DDR上以及将主控CPU的配置报文从DDR上取出下发给交换芯片。
6.根据权利要求1所述的一种用于配置管理三层交换机端口的虚拟网卡实现方法,其特征在于:所述虚拟网卡驱动程序包括交换芯片DMA、EP和DDR部分,主要功能是上送/下发报文,与Linux内核网络协议栈或者其他网络协议栈进行交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310081114.2A CN116094918A (zh) | 2023-02-06 | 2023-02-06 | 一种用于配置管理三层交换机端口的虚拟网卡实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310081114.2A CN116094918A (zh) | 2023-02-06 | 2023-02-06 | 一种用于配置管理三层交换机端口的虚拟网卡实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116094918A true CN116094918A (zh) | 2023-05-09 |
Family
ID=86202252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310081114.2A Pending CN116094918A (zh) | 2023-02-06 | 2023-02-06 | 一种用于配置管理三层交换机端口的虚拟网卡实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116094918A (zh) |
-
2023
- 2023-02-06 CN CN202310081114.2A patent/CN116094918A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10986171B2 (en) | Method for unified communication of server, baseboard management controller, and server | |
US6636519B1 (en) | Network access method and network access server therefor | |
US5247626A (en) | Fddi controller having flexible buffer management | |
US5528595A (en) | Modem input/output signal processing techniques | |
JP2537017B2 (ja) | 通信ネットワ―ク相互接続装置 | |
CN201100949Y (zh) | 网络设备 | |
US6584109B1 (en) | Automatic speed switching repeater | |
JPH07501188A (ja) | ローカル・エリア・ネットワーク伝送エミュレータ | |
US20120113990A1 (en) | Communication switching apparatus for switching data in multiple protocol data frame formats | |
JPH0687569B2 (ja) | 端末アダプタおよびデータ伝送方法 | |
US11558315B2 (en) | Converged network interface card, message coding method and message transmission method thereof | |
CN102594802B (zh) | 低延迟联网的方法及系统 | |
CN102185833A (zh) | 一种基于fpga的fc i/o并行处理方法 | |
US9154449B2 (en) | Inter-board communication apparatus, method for transmitting and receiving message of inter-board communication | |
CN111800226A (zh) | 一种基于硬件仲裁的边带管理电路及方法 | |
CN112929418B (zh) | 一种基于发布订阅的RapidIO高速通信方法及系统 | |
CN116094918A (zh) | 一种用于配置管理三层交换机端口的虚拟网卡实现方法 | |
CN113938443B (zh) | 一种无线物联网协议交换机 | |
CN109600457B (zh) | 一种多至一映射的phy-mac接口控制装置及方法 | |
CN102089750B (zh) | 将串行scsi阵列控制器连接至存储区域网络的系统 | |
CN207801973U (zh) | 一种网桥及物联网设备 | |
Hertweck et al. | X25 based process—process communication | |
CN116828076A (zh) | 基于turnIP网关服务器的通信方法、系统及应用 | |
JP2003289315A (ja) | パケット転送装置およびパケット転送方法 | |
CN116016017A (zh) | 一种Modbus网关处理多主机数据访问的方法 |
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 |