CN105871718A - 一种sdn域间路由实现方法 - Google Patents
一种sdn域间路由实现方法 Download PDFInfo
- Publication number
- CN105871718A CN105871718A CN201610162083.3A CN201610162083A CN105871718A CN 105871718 A CN105871718 A CN 105871718A CN 201610162083 A CN201610162083 A CN 201610162083A CN 105871718 A CN105871718 A CN 105871718A
- Authority
- CN
- China
- Prior art keywords
- domain
- controller
- routing
- sdn
- switch
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种SDN域间路由实现方法,在此方法下,SDN自治域的控制器承担域间路由功能,负责与相邻SDN自治域的控制器交互BGP路由信息,依据本自治域的路由策略生成最优路径,并将路径通告给邻居自治域;SDN自治域的控制器实现OpenFlow协议和BGP协议的交互接口,根据生成的最优路径和域内拓扑信息,计算得到域内OpenFlow交换机流表的更新表项,并下发流表项到指定的交换机,实现自身的路由策略。本发明公开的方法的优势在于能够在不破坏现有SDN网络结构的前提下将BGP协议应用于SDN域间路由,并且为控制器设计了协议交互接口,助其实现路由策略。
Description
技术领域
本发明属于计算机网络领域,涉及SDN网络域间路由方法,具体涉及一种SDN域间路由实现方法。
背景技术
近年来,研究人员提出的一种新的网络架构,软件定义网络(Software-DefinedNetworking,SDN)。SDN将网络配置平面从嵌入式结点中独立出来,以开放软件模式的控制平面替代了传统基于系统嵌入的控制平面,由软件驱动的中央控制结点来自动化控制整个网络。SDN技术通过软件平台来打造弹性化的可控互联网,给网络的发展带来巨大冲击。
随着云计算和数据中心的发展,SDN的应用模式和研究工作主要在数据中心网络内部进行,这是由于数据中心的数据流量大,交换机层次管理复杂。然而随着技术的发展,数据中心之间的数据迁移、备份和传输愈加引起重视,尤其是跨多个数据中心的大数据传输成为很多数据应用的主要组成部分,因此以SDN技术为管理模式的数据中心网络即SDN自治域之间的数据传输成为亟需研究的难点。
研究人员提出了一种基于SDN技术的域间路由结构,它借用MPLS的网络边缘与核心分离的思想,实现域间和域内路由的隔离。每个自治域内只有边界路由器以及与之关联的控制器参与域间路由进程。这种方法专注于路由的分离,并没有提出具体的实现方法。另外研究人员提出了一种基于Pathlets的SDN路由机制,但是他只提出一个Pathlets和SDN技术相结合的思想,并没有介绍协议的细节。
发明内容
本发明目的是,针对现有SDN网络缺乏域间路由方法的问题,设计一种SDN域间路由实现方法,能够在不破坏现有SDN网络结构的前提下将BGP协议应用于SDN域间路由,并且为控制器设计了协议交互接口,助其实现路由策略。
本发明的技术方案是:一种SDN域间路由实现方法,主要包括:
1、域间路由交互模型。域间路由交互实体是SDN自治域的控制器,控制器的IP地址是自治域的身份标识,其网络地址即是本网络的网络地址;控制器之间逻辑交互BGP路由信息,建立连接通道,定期维护连接消息,并发送BGP路由更新通告建立路由路径。
2、域内控制器与边界交换机对BGP协议报文的交互过程。由于SDN自治域控制器之间是逻辑连接,实际物理连接是通过边界交换机实现,因此边界交换机是接收和发送数据报文以及路由报文的具体实体。接收报文后,边界交换机需要实时检索流表项,匹配报文流,执行流表项中的action,将报文发送至指定交换机或者控制器;当没有流表项与报文流匹配时,边界交换机直接将报文流发送至控制器;控制器依据报文流的类型选择自己处理还是发送至上层路由服务器;控制器分析非路由报文流,直接下发流表更新指令至指定的交换机;路由服务器分析路由报文流,根据自身的路由策略生成相应的答复报文,通过协议转换接口将路由策略转变为流表配置指令,并下发流表项至指定的交换机,完成路由策略配置和路由报文转发的功能。
3、域内控制器将路由策略转变为交换机流表项的控制过程。SDN自治域的控制器存储域间路由RIB表,RIB表中的内容直接反映其路由策略;为了将RIB表中的最优路径转变为交换机配置指令,控制器需要考虑例如域内链路带宽、链路负载和链路可靠性等诸多因素。同时在数据中心网络中,控制器本身的负载很高,一个控制器往往需要控制多达上千个交换机。如果1条最优路径需要生成并下发100条流表项,那么RIB表中的多条最优路径会使控制器产生很大的开销。同时庞大的流表项会产生链路冲突和冗余等问题,因此我们必须减少控制器添加和修改流表项的动作,在选择域内路径时尽量包含已有的子路径。具体地,SDN自治域的控制器存储域内交换机的拓扑信息,拓扑信息不局限于传统的连接表,而直接反映相邻节点的流表项状态,拓扑信息以矩阵的形式如公式1所示:
其中ri,j=1表示交换机i有到达邻居交换机j的流表项,ri,j=0表示交换机i没有到达邻居交换机j的流表项;此处的流表项命名为基础流表项。流表项本身有优先级选项priority,表示当匹配域相同时,流表项的匹配优先级。基础流表项指匹配域和action仅包含端口信息,例如匹配域为从当前交换机port1进入,action为将报文流从当前交换机port3发出;为了减少流表项的添加、删除和修改的开销,控制器确定了报文流入和报文流出边界交换机后,选择连接两个边界交换机的路径时,将拓扑信息中∏rij=1且尽可能长的子路径作为考虑因素,综合带宽和链路负载等因此选择连接路径。
本发明的有益效果是:本发明方法与现有技术相比,实现SDN域间路由有如下优点:
1、能够在不破坏现有SDN网络结构的前提下将BGP协议应用于SDN域间路由,提出兼容现有网络的SDN域间路由的实现方法。
2、为控制器设计了协议交互接口,通过协议交互接口实现路由策略。
3、在协议交互接口中,为了节省控制器生成流表项的开销,提出了一种基于基本流表项的最长子路径作为选路因素。
附图说明
图1 SDN域间路由过程图。
图2域间路由模型示意图。
图3域内控制器与边界交换机对BGP协议报文的交互过程。
图4域内控制器将路由策略转变为交换机流表项的控制过程。
具体实施方式
本发明在SDN自治域间运行,下面结合附图及具体实施方式对本发明再做进一步说明。
如图2所示,3个SDN自治域分别以a、b和c标记。SDN自治域内交换机组成域内网络,域间通过边界交换机物理连接,控制器宏观控制所有交换机。不同自治域的控制器逻辑连接,构成域间路由拓扑。控制器的IP地址是自治域的身份标识,其网络地址即是本网络的网络地址。邻居控制器直接发送路由报文至本自治域的控制器,实现路由信息交互。控制器之间建立并保持连接通道,定期维护连接消息,并发送BGP路由更新通告建立路由路径。
当边界交换机收到报文流后,执行动作如下(图3所示):
(1)首先判断报文流特征是否与流表中流表项的匹配域匹配。如果匹配,执行流表项的action动作,将报文发送到指定交换机转到(2)或者发送到控制器转到(3);如果不匹配,则将报文流直接发送到控制器,转到(3);
(2)接收报文流的交换机继续依据流表项转发,直至到达目的地。如果中途交换无法匹配报文流和流表项,将报文流发送至控制器,转到(3);
(3)控制器检测报文流是BGP消息还是普通报文。如果报文流是普通报文,转到(4),如果报文流是BGP消息,转到(5);
(4)控制器根据拓扑信息和报文载荷生成流表项,并下发到指定的交换机,选择转发或者丢弃报文,然后转发报文流到指定的交换机;
(5)控制器将BGP消息转发至上层的路由服务器,路由服务器根据路由策略处理BGP消息,更新最优路径,同时生成本自治域的BGP消息,发送至邻居自治域的控制器,转到(6);
(6)控制器根据路由服务器的消息处理结果,生成流表项配置指令下发到边界交换机和内部交换机,完成路由配置。
公式1显示了控制器中存储的域内交换机的拓扑信息。以图4为例,SDN自治域b在收到a的路由通告后,产生最优路径ba,并将ba通告给邻居节点c。此时自治域b在域内需要建立一条连接c和a的路径。编号为1和12的交换机分别被选为边界交换机。自治域b的控制器的域内拓扑信息表中可知r16=1、r69=1、r84=1、r411=1和r1112=1。即根据当前基础流表项,r16*r69=1且r84*r41*r1112=1。子路径1-6-9和8-4-11-12是当前域内拓扑中存在的默认路径,不需要新增流表项就可以转发数据报文。为了节省控制器的运算开销,b的控制器将两条子路径作为主要考虑因素构建主路径,分别可以选择1-6-9-7-8-4-11-12或者1-6-9-10-8-4-11-12作为域内路径,在实现其路由策略的同时达到节省开销的目的。
本发明还可有其他多种实施方式,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (4)
1.一种SDN域间路由实现方法,其特征包括:域内控制器执行域间路由服务功能,不同SDN自治域的控制器交互路由信息生成路由路径;域内控制器通过协议转换接口将本自治域的路由策略转变为交换机流表配置指令,下发流表更新指令到交换机完成配置;具体如下:
1)域间路由交互模型:域间路由交互方式从传统的边界路由器交互模式转变为自治域的域内控制器逻辑交互模式,每个自治域的边界交换机与本域的控制器交互域间路由指令,执行域间路由服务功能;
2)域内控制器与边界交换机对BGP协议报文的交互过程:按照功能交换机可以分为流入报文交换机、内部交换机和流出报文交换机,不同的交换机与域内控制器交互不同报文,实现BGP协议报文的转换和控制;
3)域内控制器将路由策略转变为交换机流表项的控制过程:域内控制器本着节省开销的目的,根据其域间路由策略计算得出域内最短路径,并将路径转为变交换机流表项下发至交换机。
2.根据权利要求1所述的SDN域间路由实现方法,其特征在于:所述步骤1)中域间路由交互实体是SDN自治域的控制器,所述控制器的IP地址是自治域的身份标识,其网络地址即是本网络的网络地址;所述控制器之间逻辑交互BGP路由信息,建立连接通道,定期维护连接消息,并发送BGP路由更新通告建立路由路径。
3.根据权利要求1所述的SDN域间路由实现方法,其特征在于:所述步骤2)中SDN自治域控制器之间是逻辑连接,实际物理连接是通过边界交换机实现,所述边界交换机是接收和发送数据报文以及路由报文的具体实体;接收报文后,边界交换机需要实时检索流表项,匹配报文流,执行流表项中的动作action,将报文发送至指定交换机或者控制器;当没有流表项与报文流匹配时,边界交换机直接将报文流发送至控制器;控制器收到报文流后,依据报文流的类型选择自己处理还是发送至上层路由服务器;控制器分析非路由报文流,直接下发流表更新指令至指定的交换机;路由服务器分析路由报文流,根据自身的路由策略生成相应的答复报文,通过协议转换接口将路由策略转变为流表配置指令,并下发流表项至指定的交换机,完成路由策略配置和路由报文转发的功能。
4.根据权利要求1所描述的SDN域间路由实现方法,其特征在于:所述步骤3)中SDN自治域的控制器存储域间路由RIB表,所述RIB表中的内容直接反映其路由策略;SDN自治域的控制器同时存储域内交换机的拓扑信息,拓扑信息不局限于传统的连接表,而直接反映相邻节点的流表项状态,{x,y}=1表示x交换机有到达邻居交换机y的流表项,{x,y}=0表示x交换机没有到达邻居交换机y的流表项;此处的流表项命名为基础流表项;流表项本身有优先级选项priority,表示当匹配域相同时,流表项的匹配优先级;基础流表项指匹配域和action仅包含端口信息;为了减少流表项的增、删和改的开销,控制器确定了报文流入和报文流出边界交换机后,选择连接两个边界交换机的路径时,将拓扑信息中基础流表项状态之积为1且尽可能长的子路径作为考虑因素,综合带宽和链路负载,选择连接路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610162083.3A CN105871718B (zh) | 2016-03-21 | 2016-03-21 | 一种sdn域间路由实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610162083.3A CN105871718B (zh) | 2016-03-21 | 2016-03-21 | 一种sdn域间路由实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105871718A true CN105871718A (zh) | 2016-08-17 |
CN105871718B CN105871718B (zh) | 2019-08-13 |
Family
ID=56624772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610162083.3A Active CN105871718B (zh) | 2016-03-21 | 2016-03-21 | 一种sdn域间路由实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105871718B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106550043A (zh) * | 2016-11-25 | 2017-03-29 | 中国银联股份有限公司 | 基于sdn组网技术的云计算系统 |
CN107018073A (zh) * | 2017-03-14 | 2017-08-04 | 电子科技大学 | 一种基于子路径串接的sdn流控系统 |
CN107181688A (zh) * | 2017-03-31 | 2017-09-19 | 武汉绿色网络信息服务有限责任公司 | 一种sdn网络中实现服务器端跨域数据传输优化的系统和方法 |
CN107645445A (zh) * | 2017-09-15 | 2018-01-30 | 安徽大学 | 一种基于虚拟节点技术的sdn网络跨域通信方法 |
TWI643478B (zh) * | 2016-12-15 | 2018-12-01 | 新加坡商雲網科技新加坡有限公司 | Sdn控制器及網路服務動態部署系統及方法 |
CN110708245A (zh) * | 2019-09-29 | 2020-01-17 | 华南理工大学 | 多控制器架构下的sdn数据平面故障监测与恢复方法 |
CN111245716A (zh) * | 2018-11-28 | 2020-06-05 | 中国电信股份有限公司 | 域间路由方法、设备和系统 |
CN112491724A (zh) * | 2020-12-09 | 2021-03-12 | 福建农林大学 | 基于SDN的IPv4及IPv6的管理系统及方法 |
CN113872669A (zh) * | 2021-09-27 | 2021-12-31 | 中国电子科技集团公司第五十四研究所 | 一种适用于低轨卫星网络的无状态分布式组网控制系统 |
CN114827011A (zh) * | 2022-01-19 | 2022-07-29 | 融智通科技(北京)股份有限公司 | 一种可编程的路由交换机、系统及方法 |
CN115514691A (zh) * | 2022-09-05 | 2022-12-23 | 郑州工程技术学院 | 基于区块链的sdn域间协同转发控制架构及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103051565A (zh) * | 2013-01-04 | 2013-04-17 | 中兴通讯股份有限公司 | 一种等级软件定义网络控制器的架构系统及实现方法 |
US20130329601A1 (en) * | 2012-06-11 | 2013-12-12 | Futurewei Technologies, Inc. | Defining Data Flow Paths in Software-Defined Networks with Application-Layer Traffic Optimization |
CN103929422A (zh) * | 2014-04-08 | 2014-07-16 | 北京工业大学 | 基于sdn的可信域间安全认证协议 |
WO2015009939A1 (en) * | 2013-07-17 | 2015-01-22 | Interdigital Patent Holdings, Inc. | Software defined networking distributed and dynamic mobility management |
US20150043589A1 (en) * | 2013-08-09 | 2015-02-12 | Futurewei Technologies, Inc. | Extending OpenFlow to Support Packet Encapsulation for Transport over Software-Defined Networks |
-
2016
- 2016-03-21 CN CN201610162083.3A patent/CN105871718B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130329601A1 (en) * | 2012-06-11 | 2013-12-12 | Futurewei Technologies, Inc. | Defining Data Flow Paths in Software-Defined Networks with Application-Layer Traffic Optimization |
CN103051565A (zh) * | 2013-01-04 | 2013-04-17 | 中兴通讯股份有限公司 | 一种等级软件定义网络控制器的架构系统及实现方法 |
WO2015009939A1 (en) * | 2013-07-17 | 2015-01-22 | Interdigital Patent Holdings, Inc. | Software defined networking distributed and dynamic mobility management |
US20150043589A1 (en) * | 2013-08-09 | 2015-02-12 | Futurewei Technologies, Inc. | Extending OpenFlow to Support Packet Encapsulation for Transport over Software-Defined Networks |
CN103929422A (zh) * | 2014-04-08 | 2014-07-16 | 北京工业大学 | 基于sdn的可信域间安全认证协议 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106550043A (zh) * | 2016-11-25 | 2017-03-29 | 中国银联股份有限公司 | 基于sdn组网技术的云计算系统 |
CN106550043B (zh) * | 2016-11-25 | 2020-03-31 | 中国银联股份有限公司 | 基于sdn组网技术的云计算系统 |
TWI643478B (zh) * | 2016-12-15 | 2018-12-01 | 新加坡商雲網科技新加坡有限公司 | Sdn控制器及網路服務動態部署系統及方法 |
US10666742B2 (en) | 2016-12-15 | 2020-05-26 | Nanning Fugui Precision Industrial Co., Ltd. | Software defined network controller and network service allocating system and method |
CN107018073A (zh) * | 2017-03-14 | 2017-08-04 | 电子科技大学 | 一种基于子路径串接的sdn流控系统 |
CN107018073B (zh) * | 2017-03-14 | 2019-12-27 | 电子科技大学 | 一种基于子路径串接的sdn流控系统 |
CN107181688B (zh) * | 2017-03-31 | 2019-12-31 | 武汉绿色网络信息服务有限责任公司 | 一种sdn网络中实现服务器端跨域数据传输优化的系统和方法 |
CN107181688A (zh) * | 2017-03-31 | 2017-09-19 | 武汉绿色网络信息服务有限责任公司 | 一种sdn网络中实现服务器端跨域数据传输优化的系统和方法 |
CN107645445A (zh) * | 2017-09-15 | 2018-01-30 | 安徽大学 | 一种基于虚拟节点技术的sdn网络跨域通信方法 |
CN111245716A (zh) * | 2018-11-28 | 2020-06-05 | 中国电信股份有限公司 | 域间路由方法、设备和系统 |
CN110708245A (zh) * | 2019-09-29 | 2020-01-17 | 华南理工大学 | 多控制器架构下的sdn数据平面故障监测与恢复方法 |
CN110708245B (zh) * | 2019-09-29 | 2021-10-22 | 华南理工大学 | 多控制器架构下的sdn数据平面故障监测与恢复方法 |
CN112491724A (zh) * | 2020-12-09 | 2021-03-12 | 福建农林大学 | 基于SDN的IPv4及IPv6的管理系统及方法 |
CN112491724B (zh) * | 2020-12-09 | 2022-12-09 | 福建农林大学 | 基于SDN的IPv4及IPv6的管理系统及方法 |
CN113872669A (zh) * | 2021-09-27 | 2021-12-31 | 中国电子科技集团公司第五十四研究所 | 一种适用于低轨卫星网络的无状态分布式组网控制系统 |
CN114827011A (zh) * | 2022-01-19 | 2022-07-29 | 融智通科技(北京)股份有限公司 | 一种可编程的路由交换机、系统及方法 |
CN114827011B (zh) * | 2022-01-19 | 2024-05-10 | 融智通科技(北京)股份有限公司 | 一种可编程的路由交换机、系统及方法 |
CN115514691A (zh) * | 2022-09-05 | 2022-12-23 | 郑州工程技术学院 | 基于区块链的sdn域间协同转发控制架构及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105871718B (zh) | 2019-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105871718A (zh) | 一种sdn域间路由实现方法 | |
CN105553849B (zh) | 一种传统ip网络与sptn网络互通方法与系统 | |
EP1863235B1 (en) | Method and system for multi-domain route computation | |
CN104584491B (zh) | 提供分布式虚拟路由和交换(dvrs)的系统和方法 | |
CA2922541C (en) | Buffer-less virtual routing | |
CN102884763B (zh) | 跨数据中心的虚拟机迁移方法、服务控制网关及系统 | |
WO2021007963A1 (zh) | 路由分发方法及控制器、信息路由方法及网络节点设备 | |
CN107819742B (zh) | 一种动态部署网络安全服务的系统架构及其方法 | |
CN106063195A (zh) | 具有单独控制设备和转发设备的网络中的控制设备发现 | |
US20170230290A1 (en) | Multi-domain centralized content-centric networking | |
JP6544401B2 (ja) | パケット転送装置、制御装置、通信システム、通信方法及びプログラム | |
CN106165322A (zh) | 向冗余控制器路由协议的代理 | |
CN105721321B (zh) | 一种等价多路径的出接口更新方法及装置 | |
JP2012090058A (ja) | 通信システム、制御装置、処理規則の設定方法およびプログラム | |
CN103152267A (zh) | 路由管理方法及路由方法及网络控制器及路由器 | |
CN105531966B (zh) | 一种网络中实现报文路由的方法、设备和系统 | |
CN107306222A (zh) | 标签交换路径上的流量工程隧道建立的方法和设备 | |
CN105830405A (zh) | 用于可扩展的域间覆盖联网的系统和方法 | |
CN105391635A (zh) | 一种基于sdn的网络虚拟化方法 | |
CN108737169A (zh) | 一种基于sdn的异构工业网络集中式融合管理方法 | |
CN101335685A (zh) | 一种利用重定向技术实现特定报文优先处理的方法 | |
CN108833232A (zh) | 一种基于VPP的PPPoE客户端实现方法及PPPoE客户端 | |
CN105763439A (zh) | 一种多链接透明互联网络中数据中心的互联方法及装置 | |
CN106982162B (zh) | 用于转发业务流的方法、装置和系统 | |
CN101478489B (zh) | 一种is-is协议控制默认路由通告的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |