CN107172009B - 通过socket上送VLAN信息至应用模块的方法 - Google Patents
通过socket上送VLAN信息至应用模块的方法 Download PDFInfo
- Publication number
- CN107172009B CN107172009B CN201710221456.4A CN201710221456A CN107172009B CN 107172009 B CN107172009 B CN 107172009B CN 201710221456 A CN201710221456 A CN 201710221456A CN 107172009 B CN107172009 B CN 107172009B
- Authority
- CN
- China
- Prior art keywords
- socket
- vlan
- information
- data
- application module
- 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
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000011664 signaling Effects 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种通过socket上送VLAN信息至应用模块的方法,包括:应用模块创建一个socket包,并绑定到物理接口上,与IP协议栈进行数据收、发;应用模块设置socket选项,设置每个socket控制信息类型及协议级别,用于控制接收附属数据信息;IP协议栈存储VLAN信息,将数据报文存储在socket缓存区;应用模块调用收包接口函数recvmsg从socket缓存区中读取数据;应用模块解析从socket缓存区拷贝的数据报文信息及VLAN附属信息,获取VLAN值。本发明使应用模块可以感知VLAN信息,对业务进行区分隔离,提高网络安全性,节省网络资源,增强用户体验。
Description
技术领域
本发明涉及网络通信技术,具体涉及通过socket上送VLAN信息至应用模块的方法。
背景技术
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域(多个VLAN)的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接互通,从而将广播报文限制在一个VLAN内,由于VLAN间不能直接互访,因此提高了网络安全性。
一个用户网络中往往存在数据、语音、视频等多种业务类型,利用VLAN技术,可以为不同的业务类型封装不同的VLAN Tag,利用不同的VLAN Tag通过接入网接入到运营商的承载网中,方便运营商在承载网中根据业务类型分配网络资源,从而帮助运营商有效利用网络资源,并为不同类型的业务提供不同的服务质量。
在通信网络中,要使网络设备能够分辨不同VLAN的报文,需要在报文中添加标识VLAN的字段,在IEEE(Institude of Electrical and Electronics Engineers,电器和电子工程学会)802.1Q协议规定在目的MAC地址和源MAC地址之后封装的4个字节组成VLANTag(VLAN标签),包括2字节的TPID(Tag Protocol Identifier,标签协议标识符),3比特的Priority,1比特的CFI(Canonical Format Indicator,标准格式指示位)和12比特的VLANID。在以太网协议网络设备利用VLAN ID来识别报文所属的VLAN,根据报文是否携带VLANTag以及携带的VLAN ID值,来对报文进行处理;特别是在基于端口划分VLAN时,由于是按照设备端口来定义VLAN成员,所以一个端口可能拥有多个VLAN成员。
在二层接口下使能网络协议场景中,上层协议模块收到某种业务类型的信令报文进行应答,由于协议模块并不感知VLAN信息,故应答报文中并不包含VLAN Tag;二层信令报文发送时,由上层协议模块通过socket绑定接口后直接发往协议栈,若二层物理口有多个VLAN成员,此时IP协议栈和转发平面并不知道为这个信令报文封装哪种VLAN Tag,这就导致无法区分业务。而IP协议栈和应用模块间的通信采用标准套接字I/O(In/Out,输入/输出)接口函数recvmsg和sendmsg,把大部分参数封装到结构体struct msghdr中以数据报的形式在一个socket上进行数据收、发,应用模块解析报文时只能解析到数据所占缓存区大小及数据起始地址,VLAN信息无法通过I/O接口recvmsg从IP协议栈获取。
发明内容
本发明所要解决的技术问题是IP协议栈和应用模块通过标准套接字I/O接口进行数据通信时,把大部分参数封装到结构体struct msghdr中,以数据报的形式在一个socket上进行数据收、发,应用模块在解析数据报时只能解析到数据所占缓存区大小及缓存区起始地址,无法从数据缓存区里面获取VLAN信息。
为了解决上述技术问题,本发明所采用的技术方案是提供一种通过socket上送VLAN信息至应用模块的方法,包括以下步骤:
应用模块创建一个socket,与IP协议栈进行数据收、发;
应用模块设置socket选项,设置每个socket控制信息类型及协议级别,用于控制接收附属数据信息;
IP协议栈存储VLAN信息,且将数据报文存储在socket缓存区;
应用模块调用收包接口函数recvmsg从socket缓存区中读取数据;
应用模块解析从socket缓存区拷贝的数据报文信息,并通过socket向IP协议栈发送获取附属数据消息,获取VLAN值。
在上述方法中,通过标准的应用程序编程接口函数setsockopt设置socket选项IP_PKTINFO,同时扩展数据结构struct In_pktinfo增加vlan_id属性,通过该结构体的vlan_id字段接收VLAN信息。
在上述方法中,IP协议栈存储VLAN信息,具体包括以下步骤:
步骤S31、主控信令驱动从转发平面收到带VLAN标识的二层信令报文,根据报文的MAC-IN-MAC头解析出收包物理接口,然后将MAC-IN-MAC头剥离,将其上送到IP协议栈里面对应的接口;
步骤S32、IP协议栈接口收到报文后,剥除报文里携带的VLAN信息,并按照结构体struct In_pktinfo中扩展的vlan_id成员保存报文中的VLAN ID值;
步骤S33、IP协议栈根据报文协议号和socket地址族为AF_PACKET查找侦听此数据报文的socket,将报文数据挂接在socket接收链表上,并通知应用模块该socket有可读事件。
在上述方法中,应用模块从socket缓存区中读取数据信息,将分配一段内存用于存储从socket缓存区中读取数据报文信息,独立分配一段内存存储VLAN附属信息;
且由标准接口struct msghdr的成员msg_iov指向用于存储数据报文部分的内存首地址,由struct msghdr的成员msg_control指向用于存储VLAN等附属信息部分的内存首地址。
在上述方法中,应用模块从socket缓存区拷贝数据时,若msg_control指向的内存不为空,则向IP栈通过管道发送消息到IP协议栈,将该数据包的VLAN ID值拷贝至msg_control指向的内存区,将socket链表上的数据信息拷贝至msg_iov指向的内存区。
本发明可以实现在应用模块内部对物理接口相应VLAN信息进行管理,由应用模块对报文VLAN标识进行填充,此时IP协议栈和数据转发平面就可以不再为报文添加VLAN字段,其他网络设备可以根据发送出去的报文携带的VLAN字段区分报文所属VLAN进行处理,做到使应用模块感知VLAN信息,对业务进行区分隔离,提高网络安全性,节省网络资源,增强用户体验。
附图说明
图1为本发明提供一种通过socket上送VLAN信息至应用模块的方法的框架图;
图2为本发明提供一种通过socket上送VLAN信息至应用模块的方法的流程图;
图3为本发明中步骤S30的具体流程图。
具体实施方式
下面结合说明书附图和具体实施例对本发明做出详细的说明。
本发明利用IP协议栈为所有要接收附属数据的应用模块定义一个全局的数据结构,应用模块设置socket选项,通过socket获取附属数据来接收VLAN信息。如图1所示,本发明提供的通过socket上送VLAN信息至应用模块的方法涉及到的模块为应用模块和IP协议栈;其中,IP协议栈包括IP协议栈套接口(L2socket),VLAN信息存储模块和主控信令驱动;涉及到的模块的层次关系如下:
应用模块负责对IP协议栈上送的数据包进行协议层面的处理;
IP协议栈套接口为上层应用模块提供统一的收、发包接口,是统一的收、发包平台,通过套接字进行数据通信;
VLAN信息存储模块用于对数据报文设置VLAN属性信息;
主控信令驱动负责控制平面上MAC-IN-MAC处理,在主控发送报文时封装MAC-IN-MAC头,接收报文时剥离MAC-IN-MAC头。
如图2所示,本发明提供的通过socket上送VLAN信息至应用模块的方法,包括以下步骤:
步骤S10、应用模块通过函数socket(函数参数af设置为PF_PACKET)创建一个套接口socket,创建成功后套接口类型为PACKET类型,通过socket与IP协议栈进行数据收、发。
步骤S20、应用模块设置socket选项,设置每个socket控制信息类型及协议级别,用于控制接收附属数据信息;具体为:
应用模块通过标准的应用程序编程接口函数setsockopt设置socket选项IP_PKTINFO,同时扩展数据结构struct In_pktinfo增加vlan_id属性,通过该结构体的vlan_id字段接收VLAN信息。
步骤S30、IP协议栈存储VLAN信息,且将数据报文存储在socket缓存区。
在本发明中,如图3所示,步骤S30具体包括以下步骤:
步骤S31、主控信令驱动从转发平面收到带VLAN标识的二层信令报文,根据报文的MAC-IN-MAC头解析出收包物理接口,然后将MAC-IN-MAC头剥离,将其上送到IP协议栈里面对应的接口;
步骤S32、IP协议栈接口收到报文后,剥除报文里携带的VLAN信息,并按照结构体struct In_pktinfo中扩展的vlan_id成员保存报文中的VLAN ID值;
步骤S33、IP协议栈根据报文协议号和socket地址族为AF_PACKET查找侦听此数据报文的socket,将报文数据挂接在socket接收链表上,并通知应用模块该socket有可读事件,虽然一个socket特征值包括af地址族、类型、协议号,但对于af为PF_PACKET的socket,只需匹配一个socket根据af和协议号。
这样,当应用模块收到IP协议栈通知socket有事件可读时,就能通过套接字I/O接口recvmsg读取socket接收链表上的数据,填充在msg消息数据缓存区,再通过发送sig消息到IP协议栈请求附属数据,得到VLAN信息。
步骤S40、应用模块调用收包接口函数recvmsg从socket缓存区中读取数据。
在步骤S33后,IP协议栈已经将数据报文放置在相应的socket缓存区,即挂接在socket链表上,并已通知应用模块有可读事件。运行线程被调用后,应用模块从socket缓存区中读取数据信息。通常应用模块分配一段内存用于存储从socket缓存区中读取数据报文信息,若想获取VLAN等附属信息,则会独立分配一段内存。且由标准接口struct msghdr的成员msg_iov指向用于存储数据报文部分的内存首地址,由struct msghdr的成员msg_control指向用于存储VLAN等附属信息部分的内存首地址。IP协议栈与应用模块通过公用结构体struct msghdr进行数据解析。
应用模块从socket缓存区拷贝数据时,若msg_control指向的内存不为空,则向IP栈通过管道发送消息到IP协议栈,将该数据包的VLAN属性信息(步骤S32中存储的VLAN ID值)拷贝至msg_control指向的内存区,将socket链表上的数据信息拷贝至msg_iov指向的内存区。
步骤S50、应用模块解析从socket缓存区拷贝的数据报文信息,并通过socket向IP协议栈发送获取附属数据消息,获取VLAN值,其中,附属信息在标准编程中通常指除了应用模块需要的数据报文外的其他信息,如上送接口、VLAN等信息。
应用模块按照数据结构struct In_pktinfo解析msg_control指向的内存区的数据信息,即可获得存储的VLAN信息。将VLAN信息和对应接口以映射的方式存储在应用模块内部,从而使应用模块拥有数据包发送的接口和对应的VLAN信息。
这样,当应用模块需要对某个VLAN内的信令报文进行应答时,就可以根据接口查找对应的VLAN信息,为报文封装VLAN Tag。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (5)
1.通过socket上送VLAN信息至应用模块的方法,其特征在于,包括步骤如下:
应用模块创建一个socket,与IP协议栈进行数据收、发;
应用模块设置socket选项,设置每个socket控制信息类型及协议级别,用于控制接收附属数据信息;
IP协议栈存储VLAN信息,且将数据报文存储在socket缓存区;
应用模块调用收包接口函数recvmsg从socket缓存区中读取数据;
应用模块解析从socket缓存区拷贝的数据报文信息,并通过socket向IP协议栈发送获取附属数据消息,获取VLAN值。
2.如权利要求1所述的方法,其特征在于,通过标准的应用程序编程接口函数setsockopt设置socket选项IP_PKTINFO,同时扩展数据结构struct In_pktinfo增加vlan_id属性,通过数据结构struct In_pktinfo中的vlan_id字段接收VLAN信息。
3.如权利要求2所述的方法,其特征在于,IP协议栈存储VLAN信息,具体包括以下步骤:
步骤S31、主控信令驱动从转发平面收到带VLAN标识的二层信令报文,根据报文的MAC-IN-MAC头解析出收包物理接口,然后将MAC-IN-MAC头剥离,将其上送到IP协议栈里面对应的接口;
步骤S32、IP协议栈接口收到报文后,剥除报文里携带的VLAN信息,并按照结构体struct In_pktinfo中扩展的vlan_id成员保存报文中的VLAN ID值;
步骤S33、IP协议栈根据报文协议号和socket地址族为AF_PACKET查找侦听此数据报文的socket,将报文数据挂接在socket接收链表上,并通知应用模块该socket有可读事件。
4.如权利要求3所述的方法,其特征在于,应用模块从socket缓存区中读取数据信息,将分配一段内存用于存储从socket缓存区中读取数据报文信息,独立分配一段内存存储VLAN附属信息;
且由标准接口struct msghdr的成员msg_iov指向用于存储数据报文部分的内存首地址,由struct msghdr的成员msg_control指向用于存储VLAN附属信息部分的内存首地址。
5.如权利要求4所述的方法,其特征在于,应用模块从socket缓存区拷贝数据时,若msg_control指向的内存不为空,则向IP栈通过管道发送消息到IP协议栈,将socket缓存区的数据包的VLAN ID值拷贝至msg_control指向的内存区,将socket链表上的数据信息拷贝至msg_iov指向的内存区。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201710221456.4A CN107172009B (zh) | 2017-04-06 | 2017-04-06 | 通过socket上送VLAN信息至应用模块的方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201710221456.4A CN107172009B (zh) | 2017-04-06 | 2017-04-06 | 通过socket上送VLAN信息至应用模块的方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN107172009A CN107172009A (zh) | 2017-09-15 |
| CN107172009B true CN107172009B (zh) | 2020-01-07 |
Family
ID=59848933
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201710221456.4A Active CN107172009B (zh) | 2017-04-06 | 2017-04-06 | 通过socket上送VLAN信息至应用模块的方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN107172009B (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108650295A (zh) * | 2018-03-30 | 2018-10-12 | 深圳市风云实业有限公司 | 协议报文跨层通信方法装置及电子设备 |
| CN108712459B (zh) * | 2018-03-30 | 2021-06-15 | 深圳市风云实业有限公司 | 协议报文跨层通信方法、装置及电子设备 |
| CN116668563A (zh) * | 2023-05-10 | 2023-08-29 | 国网山东省电力公司菏泽供电公司 | 一种多网卡udp通信方法及系统 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1512718A (zh) * | 2002-12-26 | 2004-07-14 | 成都卫士通信息产业股份有限公司 | 利用网卡驱动在以太网上实现vlan技术 |
| CN101184038A (zh) * | 2007-11-05 | 2008-05-21 | 中国网络通信集团公司 | 用户终端及其信息接收方法和发送方法 |
| CN105282034A (zh) * | 2015-09-11 | 2016-01-27 | 烽火通信科技股份有限公司 | Arp/ndp学习系统及学习方法 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7636323B2 (en) * | 2005-06-14 | 2009-12-22 | Broadcom Corporation | Method and system for handling connection setup in a network |
-
2017
- 2017-04-06 CN CN201710221456.4A patent/CN107172009B/zh active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1512718A (zh) * | 2002-12-26 | 2004-07-14 | 成都卫士通信息产业股份有限公司 | 利用网卡驱动在以太网上实现vlan技术 |
| CN101184038A (zh) * | 2007-11-05 | 2008-05-21 | 中国网络通信集团公司 | 用户终端及其信息接收方法和发送方法 |
| CN105282034A (zh) * | 2015-09-11 | 2016-01-27 | 烽火通信科技股份有限公司 | Arp/ndp学习系统及学习方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN107172009A (zh) | 2017-09-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112422393B (zh) | 可扩展虚拟局域网报文发送方法、计算机设备和可读介质 | |
| US10063470B2 (en) | Data center network system based on software-defined network and packet forwarding method, address resolution method, routing controller thereof | |
| US10205657B2 (en) | Packet forwarding in data center network | |
| CN105207873B (zh) | 一种报文处理方法和装置 | |
| TWI521437B (zh) | 用於網路的方法和系統 | |
| CN107733799B (zh) | 一种报文传输方法和装置 | |
| CN105871721B (zh) | 一种段路由处理方法、处理装置及发送装置 | |
| US8094567B2 (en) | Method for transferring test messages and network element device | |
| CN105591971B (zh) | 一种QoS的实现方法和装置 | |
| KR20210024649A (ko) | 네트워크 슬라이스 제어 방법 및 장치 그리고 컴퓨터 판독 가능한 저장 매체 | |
| CN106789667A (zh) | 一种数据转发方法、相关设备及系统 | |
| WO2021004536A1 (zh) | 报文解析方法和装置 | |
| CN101160850B (zh) | 一种转发报文的方法及装置 | |
| RU2011154001A (ru) | Способ и маршрутизатор для выполнения зеркального копирования | |
| CN104579898A (zh) | 一种租户隔离方法及系统 | |
| US12273276B2 (en) | Port resource reservation method, electronic device, and storage medium | |
| CN107172009B (zh) | 通过socket上送VLAN信息至应用模块的方法 | |
| CN104580505A (zh) | 一种租户隔离方法及系统 | |
| US20210392084A1 (en) | Transmission Of Packets Over A TSN Aware Network | |
| JP2024504466A (ja) | パケット転送方法、パケット処理方法、およびデバイス | |
| US20250133014A1 (en) | Routing Method and Apparatus, Cloud Resource Registering Method and Apparatus, and Storage Medium and Electronic Apparatus | |
| CN105207909B (zh) | 一种发送信息的方法和网络装置 | |
| CN110062060A (zh) | 一种ip地址分配的系统和方法 | |
| WO2025180331A1 (zh) | 信息处理方法、装置、设备、存储介质及计算机程序产品 | |
| US20210028957A1 (en) | Allocation and management of tunnel endpoints in software defined networks |
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 |