CN109062542A - 一种国产万兆网卡实现网络通讯的方法 - Google Patents
一种国产万兆网卡实现网络通讯的方法 Download PDFInfo
- Publication number
- CN109062542A CN109062542A CN201810570967.1A CN201810570967A CN109062542A CN 109062542 A CN109062542 A CN 109062542A CN 201810570967 A CN201810570967 A CN 201810570967A CN 109062542 A CN109062542 A CN 109062542A
- Authority
- CN
- China
- Prior art keywords
- network
- domestic
- layer
- thousand
- operating system
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000004519 manufacturing process Methods 0.000 claims abstract description 17
- 238000004458 analytical method Methods 0.000 claims abstract description 6
- 230000000875 corresponding effect Effects 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 12
- 238000005314 correlation function Methods 0.000 claims description 4
- 238000000547 structure data Methods 0.000 claims description 3
- 239000010410 layer Substances 0.000 description 42
- 238000013461 design Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- 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/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种国产万兆网卡实现网络通讯的方法,包括如下步骤:分析操作系统内核、网络驱动和万兆网卡驱动程序的关系;根据分析的操作系统网络驱动的结构在操作系统内核中补丁国产万兆网卡驱动;将补丁后的国产万兆网卡驱动移植到国产服务器平台的操作系统内核中。基于X86架构linux操作系统,分析了Linux内核及其与网络设备驱动程序的关系,根据Linux网络设备驱动的结构保证了国产化万兆网卡能应用于国产服务器平台的linux操作系统。
Description
技术领域
本发明属于万兆网络通讯技术领域,具体涉及一种国产万兆网卡实现网络通讯的方法。
背景技术
随着互联网技术的更新与发展,万兆以太网技术将在不久的将来成为网络应用的主流。万兆以太网使用IEEE 802.3以太网介质接入控制(MAC)协议、IEEE 802.3以太网帧格式和IEEE 802.3帧格式,不需要修改以太网介质接入控制(MAC)协议或分组格式。所以,能够支持所有网络的上层服务,包括在OSI七层模型的第二/三层或更高层次上运行的智能网络服务,具有高可用性、多协议标记交换(MPLS)、含IP语音(VoIP)在内的服务质量(QoS)、安全与策略实施、服务器负载均衡(SLB)和Web高速缓存等特点。为了满足国产服务器平台用户对网络带宽和处理能力的特殊要求,提升国产服务器平台网络通讯功能和性能需设计一种实现万兆网络通讯的方法。
发明内容
本发明的目的在于,针对上述现有技术存在的缺陷,提供设计一种国产万兆网卡实现网络通讯的方法,以解决上述技术问题。
为了达到上述目的,本发明的技术方案是:
一种国产万兆网卡实现网络通讯的方法,包括如下步骤:
分析操作系统内核、网络驱动和万兆网卡驱动程序的关系;
根据分析的操作系统网络驱动的结构在操作系统内核中补丁国产万兆网卡驱动;
将补丁后的国产万兆网卡驱动移植到国产服务器平台的操作系统内核中。
进一步的,步骤分析操作系统内核、网络驱动和万兆网卡驱动程序的关系中,分析网络驱动的结构包括网络协议接口层、网络设备接口层、设备驱动功能层和网络设备与媒介层;其中,
网络协议接口层向网络层协议提供统一的数据包收发接口;
网络设备接口层向网络协议接口层提供统一的用于描述具体网络设备属性和操作的结构体;
设备驱动功能层各函数是网络设备接口层结构体数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序;
网络设备与媒介层是完成数据包发送和接受的物理实体。
进一步的,网络协议接口层向网络层协议提供统一的数据包收发接口,通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据。
进一步的,网络设备接口层向网络协议接口层提供统一的用于描述具体网络设备属性和操作的结构体,其中,结构体为net_device,所述结构体是设备驱动功能层中各函数的容器。
进一步的,设备驱动功能层各函数是网络设备接口层结构体net_device数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序,通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接受操作。进一步的,网络设备与媒介层是完成数据包发送和接受的物理实体,包括网络适配器和具体的传输媒介,网络适配器被驱动功能层中的函数物理上驱动。
进一步的,步骤根据操作系统网络设备驱动的结构在操作系统内核中补丁万兆网卡驱动中:根据国产化万兆网卡驱动信息编写设备驱动功能层的相关函数,包括如下:
设置国产化万兆网卡网络设备的名称;
设置国产化万兆网卡设备所使用的共享内存的起始地址/结束地址、网络设备I/O断号、网络设备使用的中断号以及指定分配给网络设备的DMA通道;
设置国产化万兆网卡设备的硬件头长度、接口的硬件类型、最大传输单元(MTU)、存放网络设备的硬件地址、存放网络设备的广播地址;
打开网络接口设备、停止网络接口设备、启动数据包的发送、数据包的发送超时、网络设备特定的I/O 控制、网络设备的I/O 地址和中断号、网络设置设备的MAC地址;
net_device结构体的属性和函数指针将被设备驱动功能层的具体数值和函数赋予。
进一步的,步骤根据操作系统网络设备驱动的结构在操作系统内核中补丁万兆网卡驱动中,具体步骤如下:
通过硬件信息确定需要初始化的网卡驱动,其中,根据硬件的参数来取得对应的驱动值:
将网卡驱动挂载到对应的回调中,通过对应的net_device结构体取得adapter,其中,所有的核心操作都是保存在adapter中;
将所有回调拷贝至adapter;
设置网卡属性。
本发明的有益效果在于,基于X86架构linux操作系统,分析了Linux内核及其与网络设备驱动程序的关系,根据Linux网络设备驱动的结构保证了国产化万兆网卡能应用于国产服务器平台的linux操作系统。本发明设计能够顺利完成万兆网络通讯,解决国产服务器平台用户对网络带宽和处理能力的特殊要求,提升国产服务器平台网络通讯功能和性能。在国产服务器平台万兆网络通讯调试中,本发明技术方案可以作为一种调试方法,具有通用性强、简单可控、性价比高等特点。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
图1为本发明提供的一种国产万兆网卡实现网络通讯的方法流程图;
图2为本发明提供的一种国产万兆网卡实现网络通讯的方法流程图。
具体实施方式
下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。
如图1、图2所示,本发明实施例提供的一种国产万兆网卡实现网络通讯的方法,包括如下步骤:
分析操作系统内核、网络驱动和万兆网卡驱动程序的关系;
根据分析的操作系统网络驱动的结构在操作系统内核中补丁国产万兆网卡驱动;
将补丁后的国产万兆网卡驱动移植到国产服务器平台的操作系统内核中。
步骤分析操作系统内核、网络驱动和万兆网卡驱动程序的关系中,分析网络驱动的结构包括网络协议接口层、网络设备接口层、设备驱动功能层和网络设备与媒介层;其中,
网络协议接口层向网络层协议提供统一的数据包收发接口;
网络设备接口层向网络协议接口层提供统一的用于描述具体网络设备属性和操作的结构体;
设备驱动功能层各函数是网络设备接口层结构体数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序;
网络设备与媒介层是完成数据包发送和接受的物理实体。
网络协议接口层向网络层协议提供统一的数据包收发接口,通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据。
网络设备接口层向网络协议接口层提供统一的用于描述具体网络设备属性和操作的结构体,其中,结构体为net_device,所述结构体是设备驱动功能层中各函数的容器。
设备驱动功能层各函数是网络设备接口层结构体net_device数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序,通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接受操作。 进一步的,网络设备与媒介层是完成数据包发送和接受的物理实体,包括网络适配器和具体的传输媒介,网络适配器被驱动功能层中的函数物理上驱动。
步骤根据操作系统网络设备驱动的结构在操作系统内核中补丁万兆网卡驱动中:根据国产化万兆网卡驱动信息编写设备驱动功能层的相关函数,包括:
设置国产化万兆网卡网络设备的名称;
设置国产化万兆网卡设备所使用的共享内存的起始地址/结束地址、网络设备I/O断号、网络设备使用的中断号以及指定分配给网络设备的DMA通道;
设置国产化万兆网卡设备的硬件头长度、接口的硬件类型、最大传输单元(MTU)、存放网络设备的硬件地址、存放网络设备的广播地址
打开网络接口设备、停止网络接口设备、启动数据包的发送、数据包的发送超时、网络设备特定的I/O 控制、网络设备的I/O 地址和中断号、网络设置设备的MAC地址;
net_device结构体的属性和函数指针将被设备驱动功能层的具体数值和函数赋予。
步骤根据操作系统网络设备驱动的结构在操作系统内核中补丁万兆网卡驱动中,具体步骤如下:
通过硬件信息确定需要初始化的网卡驱动,其中,根据硬件的参数来取得对应的驱动值:
const struct txgbe_info*ii= txgbe_info_tbl[ent->driver_data];
将网卡驱动挂载到对应的回调中,通过对应的net_device结构体取得adapter,其中,所有的核心操作都是保存在adapter中;
将所有回调拷贝至adapter;
设置网卡属性,通过ethtool设置网卡的属性;
每个网络设备都有一个回调函数表(比如ndo_start_xmit)来供上层调用, ndo_start_xmit回调,它是驱动提供给协议栈的发送回调接口,就是选取对应的队列,然后调用txgbe_xmit_frame_ring来发送数据。
按照Linux内核、网络驱动及其与国产化万兆网卡驱动程序的关系,编写国产化万兆网卡设备驱动功能层的相关函数以填充net_device数据结构的内容,并将net_device注册入Linux内核的网络驱动程序,再经过编译生成网络驱动模块或是内核文件,加载到Linux系统下,实现国产化万兆网卡在国产服务器平台上的应用。
以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。
Claims (8)
1.一种国产万兆网卡实现网络通讯的方法,其特征在于包括如下步骤:
分析操作系统内核、网络驱动和万兆网卡驱动程序的关系;
根据分析的操作系统网络驱动的结构在操作系统内核中补丁国产万兆网卡驱动;
将补丁后的国产万兆网卡驱动移植到国产服务器平台的操作系统内核中。
2.根据权利要求1所述的一种国产万兆网卡实现网络通讯的方法,其特征在于,步骤分析操作系统内核、网络驱动和万兆网卡驱动程序的关系中,分析网络驱动的结构包括网络协议接口层、网络设备接口层、设备驱动功能层和网络设备与媒介层;其中,
网络协议接口层向网络层协议提供统一的数据包收发接口;
网络设备接口层向网络协议接口层提供统一的用于描述具体网络设备属性和操作的结构体;
设备驱动功能层各函数是网络设备接口层结构体数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序;
网络设备与媒介层是完成数据包发送和接受的物理实体。
3.根据权利要求2所述的一种国产万兆网卡实现网络通讯的方法,其特征在于,
网络协议接口层向网络层协议提供统一的数据包收发接口,通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据。
4.根据权利要求3所述的一种国产万兆网卡实现网络通讯的方法,其特征在于,
网络设备接口层向网络协议接口层提供统一的用于描述具体网络设备属性和操作的结构体,其中,结构体为net_device,所述结构体是设备驱动功能层中各函数的容器。
5.根据权利要求4所述的一种国产万兆网卡实现网络通讯的方法,其特征在于,
设备驱动功能层各函数是网络设备接口层结构体net_device数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序,通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接受操作。
6.根据权利要求5所述的一种国产万兆网卡实现网络通讯的方法,其特征在于,
网络设备与媒介层是完成数据包发送和接受的物理实体,包括网络适配器和具体的传输媒介,网络适配器被驱动功能层中的函数物理上驱动。
7.根据权利要求6所述的一种国产万兆网卡实现网络通讯的方法,其特征在于,步骤根据操作系统网络设备驱动的结构在操作系统内核中补丁万兆网卡驱动中:根据国产化万兆网卡驱动信息编写设备驱动功能层的相关函数,包括如下:
设置国产化万兆网卡网络设备的名称;
设置国产化万兆网卡设备所使用的共享内存的起始地址/结束地址、网络设备I/O断号、网络设备使用的中断号以及指定分配给网络设备的DMA通道;
设置国产化万兆网卡设备的硬件头长度、接口的硬件类型、最大传输单元(MTU)、存放网络设备的硬件地址、存放网络设备的广播地址;
打开网络接口设备、停止网络接口设备、启动数据包的发送、数据包的发送超时、网络设备特定的I/O 控制、网络设备的I/O 地址和中断号、网络设置设备的MAC地址;
net_device结构体的属性和函数指针将被设备驱动功能层的具体数值和函数赋予。
8.根据权利要求7所述的一种国产万兆网卡实现网络通讯的方法,其特征在于,步骤根据操作系统网络设备驱动的结构在操作系统内核中补丁万兆网卡驱动中,具体步骤如下:
通过硬件信息确定需要初始化的网卡驱动,其中,根据硬件的参数来取得对应的驱动值:
将网卡驱动挂载到对应的回调中,通过对应的net_device结构体取得adapter,其中,所有的核心操作都是保存在adapter中;
将所有回调拷贝至adapter;
设置网卡属性。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2018102146720 | 2018-03-15 | ||
CN201810214672 | 2018-03-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109062542A true CN109062542A (zh) | 2018-12-21 |
Family
ID=64820472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810570967.1A Pending CN109062542A (zh) | 2018-03-15 | 2018-06-05 | 一种国产万兆网卡实现网络通讯的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109062542A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109818982A (zh) * | 2019-03-27 | 2019-05-28 | 深圳市吉祥腾达科技有限公司 | 一种提升网络通信设备新建性能的方法 |
CN112328313A (zh) * | 2020-11-09 | 2021-02-05 | 中国船舶重工集团公司第七0七研究所九江分部 | 一种应用于嵌入式系统的通用架构 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100333206A1 (en) * | 2009-06-30 | 2010-12-30 | Prashant Dewan | Protecting a software component using a transition point wrapper |
CN103428226A (zh) * | 2013-08-30 | 2013-12-04 | 天津汉柏汉安信息技术有限公司 | 一种用户态与内核通信的方法与系统 |
CN103645945A (zh) * | 2013-11-04 | 2014-03-19 | 天津汉柏信息技术有限公司 | 一种虚拟网卡的自动探测及驱动加载方法 |
CN103853683A (zh) * | 2014-03-07 | 2014-06-11 | 山东超越数控电子有限公司 | 一种多串口数据通讯实现方法 |
CN103853586A (zh) * | 2014-03-05 | 2014-06-11 | 中南大学 | 一种在uefi层实现无线网卡驱动的方法 |
CN105652813A (zh) * | 2014-11-13 | 2016-06-08 | 沈阳高精数控智能技术股份有限公司 | 一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法 |
CN105808320A (zh) * | 2016-03-11 | 2016-07-27 | 四川安嵌科技有限公司 | 基于Linux容器的设备虚拟化系统及方法 |
CN106341391A (zh) * | 2016-08-17 | 2017-01-18 | 汉柏科技有限公司 | 一种可快速移植适配硬件的方法及防火墙 |
CN107196948A (zh) * | 2017-06-08 | 2017-09-22 | 上海中兴电力建设发展有限公司 | 基于能源互联网的高效应用式安全专网传输方法与系统 |
-
2018
- 2018-06-05 CN CN201810570967.1A patent/CN109062542A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100333206A1 (en) * | 2009-06-30 | 2010-12-30 | Prashant Dewan | Protecting a software component using a transition point wrapper |
CN103428226A (zh) * | 2013-08-30 | 2013-12-04 | 天津汉柏汉安信息技术有限公司 | 一种用户态与内核通信的方法与系统 |
CN103645945A (zh) * | 2013-11-04 | 2014-03-19 | 天津汉柏信息技术有限公司 | 一种虚拟网卡的自动探测及驱动加载方法 |
CN103853586A (zh) * | 2014-03-05 | 2014-06-11 | 中南大学 | 一种在uefi层实现无线网卡驱动的方法 |
CN103853683A (zh) * | 2014-03-07 | 2014-06-11 | 山东超越数控电子有限公司 | 一种多串口数据通讯实现方法 |
CN105652813A (zh) * | 2014-11-13 | 2016-06-08 | 沈阳高精数控智能技术股份有限公司 | 一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法 |
CN105808320A (zh) * | 2016-03-11 | 2016-07-27 | 四川安嵌科技有限公司 | 基于Linux容器的设备虚拟化系统及方法 |
CN106341391A (zh) * | 2016-08-17 | 2017-01-18 | 汉柏科技有限公司 | 一种可快速移植适配硬件的方法及防火墙 |
CN107196948A (zh) * | 2017-06-08 | 2017-09-22 | 上海中兴电力建设发展有限公司 | 基于能源互联网的高效应用式安全专网传输方法与系统 |
Non-Patent Citations (1)
Title |
---|
DAEMON_1994: "intel万兆网卡驱动简要分析", 《HTTPS://BLOG.CSDN.NET/G_HK/ARTICLE/DETAILS/42586463》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109818982A (zh) * | 2019-03-27 | 2019-05-28 | 深圳市吉祥腾达科技有限公司 | 一种提升网络通信设备新建性能的方法 |
CN109818982B (zh) * | 2019-03-27 | 2021-08-17 | 深圳市吉祥腾达科技有限公司 | 一种提升网络通信设备新建性能的方法 |
CN112328313A (zh) * | 2020-11-09 | 2021-02-05 | 中国船舶重工集团公司第七0七研究所九江分部 | 一种应用于嵌入式系统的通用架构 |
CN112328313B (zh) * | 2020-11-09 | 2023-07-14 | 中国船舶重工集团公司第七0七研究所九江分部 | 一种应用于嵌入式软件的通用系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3447973B1 (en) | Packet switching service recognition method and terminal | |
CN101789877B (zh) | 一种构建网络的方法和系统 | |
Kerpez et al. | Software-defined access networks | |
WO2015051704A1 (zh) | 移动终端多apn网络并发系统及其联网方法 | |
EP3806407A1 (en) | Method, system, and routing device for establishing network | |
US9451502B2 (en) | Service control method and system, evolved nodeB, and packet data network gateway | |
US8832141B2 (en) | Method, device and system for combination of resource and admission control | |
US20100205466A1 (en) | System and Method for Power Over Ethernet Power Mode Policy and Network Management | |
WO2015096417A1 (zh) | 一种软件定义网络中的状态迁移方法及交换机 | |
WO2013174178A1 (zh) | 一种管理虚拟网络服务的方法、装置和系统 | |
WO2015051706A1 (zh) | 多apn网络并发联网的多apn通道管理方法 | |
WO2015139724A1 (en) | Device and method for managing policies and/or resources used for configuring a network | |
WO2019128989A1 (zh) | 一种智能路由器服务质量的实现方法、路由器及电子设备 | |
CN109818867A (zh) | 一种配置方法及装置 | |
CN101321054B (zh) | 自动防止网络侧媒体接入控制地址被仿冒的方法及其装置 | |
WO2012174917A1 (zh) | 数据卡启动方法及数据卡 | |
CN109062542A (zh) | 一种国产万兆网卡实现网络通讯的方法 | |
WO2015051703A1 (zh) | 有序管理多路apn并发联网数据传输通道的方法 | |
WO2016172958A1 (zh) | 一种流量动态控制方法、设备及网关、融合接入汇聚点 | |
CN103974339B (zh) | 一种数据缓存的方法和装置 | |
CN106375486A (zh) | 一种云平台软件定义dhcp服务的系统 | |
WO2017063511A1 (zh) | 一种基于sdn的住宅小区网络控制系统 | |
EP3085067B1 (en) | Method for an automatic selection of an ip qos mechanism, respective cpe device and computer readable storage medium | |
CN1538666A (zh) | 一种xDSL终端设备管理系统 | |
Jain et al. | Evolving to 6G: Improving the Cellular Core to lower control and data plane latency |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181221 |