CN105282002A - 一种高可靠性无缝冗余环网中副本处理的fpga实现方法 - Google Patents

一种高可靠性无缝冗余环网中副本处理的fpga实现方法 Download PDF

Info

Publication number
CN105282002A
CN105282002A CN201410322775.0A CN201410322775A CN105282002A CN 105282002 A CN105282002 A CN 105282002A CN 201410322775 A CN201410322775 A CN 201410322775A CN 105282002 A CN105282002 A CN 105282002A
Authority
CN
China
Prior art keywords
sequence number
window
fpga
message
record
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
Application number
CN201410322775.0A
Other languages
English (en)
Other versions
CN105282002B (zh
Inventor
汪革
汪超
张皓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI BAUD DATA COMMUNICATION CO Ltd
Original Assignee
SHANGHAI BAUD DATA COMMUNICATION CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHANGHAI BAUD DATA COMMUNICATION CO Ltd filed Critical SHANGHAI BAUD DATA COMMUNICATION CO Ltd
Priority to CN201410322775.0A priority Critical patent/CN105282002B/zh
Publication of CN105282002A publication Critical patent/CN105282002A/zh
Application granted granted Critical
Publication of CN105282002B publication Critical patent/CN105282002B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明公开了一种高可靠性无缝冗余环网中副本处理的FPGA实现方法,该实现方法中由FPGA在HSR源端节点根据源MAC地址来递增序号,同时由FPGA在HSR目的端节点维护滑动丢弃窗口和记录丢弃窗口,并同时利用这两个窗口对报文副本进行处理。通过本方案能够使得维护的序号数量和节点数成线性关系,减少了大规模网络的序号维护开销;同时能有效删除序号乱序范围在n以内的副本,从而使得冗余口实现千兆线速收发,线速丢弃副本。

Description

一种高可靠性无缝冗余环网中副本处理的FPGA实现方法
技术领域
本发明涉及工业通信网络技术,具体涉及高可靠性的自动化网络数据处理技术。
背景技术
国际标准IEC62439-3-2012以及其前一个版本的标准IEC62439-2-2008中介绍了HSR协议,该协议用一种环状网络为工业控制网络提供了高可靠性和实时性保障,即为网络故障提供0毫秒恢复时间。
参见图1,其所示为环状网络的示意图。由图可知,该环状网络由HSR节点和全双工链路相互连接组成。
每个HSR节点都有两个被称为冗余口的环网接口,每个接口通过链路与两个邻居HSR节点相联。当HSR节点有报文要发到环里面其他HSR节点时,会将该报文加上HSR标签,从两个冗余口分别发出。目的HSR节点则会收到两个报文,其中第二个报文将被当做副本丢弃。
IEC62439-2-2008中介绍了副本生成和丢弃算法,在HSR源端节点用基于源目的MAC地址递增的序号,在HSR目的端节点使用该序号维护一个滑动窗口协议用于丢弃副本。该算法存在两个缺点:
1.由于序号基于源目的MAC地址建立,维护的序号数量随着节点数的增长呈2次方级数增长。因此维护开销随网络节点规模大幅攀升。
2.在目的端HSR节点冗余口可能收到乱序报文,导致目的节点不能有效丢弃副本。
对此,虽然在IEC62439-3-2012中建议根据源MAC地址来递增序号,降低了维护开销,但删去了前一个版本中副本丢弃算法的描述。如果沿用以前的副本丢弃算法,增加乱序报文出现的频度将导致大量副本无法丢弃。
由此可见,现有技术中HSR节点冗余口工作在千兆线速的端口速率将对副本处理和收发吞吐能力提出巨大挑战。
发明内容
针对上述现有技术,本发明所要解决的技术问题是如何大幅降低使用序号的维护开销和解决乱序报文副本丢弃问题,以此来提高冗余口吞吐能力和副本处理能力。
为了解决上述技术问题,本发明提供一种高可靠性无缝冗余环网中副本处理的FPGA实现方法,该实现方法中由FPGA在HSR源端节点根据源MAC地址来递增序号,同时由FPGA在HSR目的端节点维护滑动丢弃窗口和记录丢弃窗口,并同时利用这两个窗口对报文副本进行处理。
在优选实例中,所述FPGA在维护序号时,HSR环网中的每个节点每向环中发送一个报文,都对序号进行递增。
进一步的,所述序号达到最大值时,从0开始重新递增。
进一步的,所述方法中在节点上两个环网冗余口分别为收到的报文基于源MAC地址维护一个滑动丢弃窗口的同时,在节点上两个环网冗余口分别为最近收到的报文维护n比特记录丢弃窗口,n指设定的窗口深度,即记录丢弃窗口内可记录的数量。
进一步的,所述接收记录窗口为每个报文对应的序号一个记录位,记载相应的报文的是否被接收过。
再进一步的,所述FPGA实现副本处理的具体过程如下:
在源端节点,FPGA基于HASH技术根据源MAC地址索引查到当前发送序号,并将序号填入HSR标签的相关字段;然后将打好HSR标签的报文从两个冗余口发送到环网;
在目的端一个个冗余口,FPGA基于接收到的报文的源MAC地址,索引到另一个冗余口中的滑动窗口信息和接收记录;根据索引到的滑动窗口信息和接收记录判断接收到的报文是否要丢弃;
副本丢弃处理完毕后,再调整滑动窗口信息和修改接收记录。
通过本发明提供的方案能够达到如下优点:
1.维护的序号数量和节点数成线性关系,减少了大规模网络的序号维护开销。
2.能有效删除序号乱序范围在n以内的副本。
3.冗余口实现千兆线速收发,线速丢弃副本
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为基于HSR协议形成的环状网络示意图;
图2为本发明中端口丢弃副本的示意图;
图3为本发明中记录窗口收到序号为LogSeq时的处理示意图;
图4为本发明中记录窗口收到序号大于记录窗口上限时的处理示意图;
图5为本发明中记录窗口收到序号位于记录窗口内时的处理示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
本发明利用FPGA实现序列号维护,副本丢弃,其中序列号的维护采用基于源MAC地址的序号递增方式,对于副本丢弃的方式通过在相应的节点沿用IEC62439-2-2008中介绍的滑动丢弃窗口,同时引入n比特记录丢弃窗口,形成双窗口丢弃副本,其中n指设定的窗口深度,即记录丢弃窗口内可记录的数量。
基于该原理,本发明提供一种基于FPGA实现高可靠性无缝冗余环网中副本处理的方法,该实现方法中由FPGA在HSR源端节点根据源MAC地址来递增序号,同时由FPGA在HSR目的端节点维护滑动丢弃窗口和记录丢弃窗口,并同时利用这两个窗口对报文副本进行处理。
具体的,FPGA在HSR源端节点维护序号时所采用的序号递增方式为在HSR环网中的每个节点每向环中发送一个报文,都对序号进行递增。若序号计数器有16位,因此序号的最大值为65535,当序号达到最大值65535后,则从0开始重新递增。
对于一个HSR远端节点,这种序号递增方式为每个源MAC地址维护一个序号,维护的序号数等于源MAC地址的个数。根据IEC62439-2-2008中介绍的方式,为每个源目MAC地址的组合维护一个序号,维护的序号数等于源MAC地址数乘以目的MAC地址数,该方式在网络规模较大时,源目的MAC地址数量同时增长,会导致维护的序号数急剧增长。故通过本方案提供的序号递增方式能减少大规模网络的序号维护开销。
FPGA在HSR目的端节点维护的两个窗口,一个是滑动丢弃窗口,一个是记录丢弃窗口。以下是对这两个窗口的定义:
对于滑动丢弃窗口,在节点的两个环网冗余口(A和B)分别为收到的报文基于源MAC地址维护一个滑动丢弃窗口,定义如下:
1.滑动丢弃窗口的下限为StartSeqA或StartSeqB;
2.滑动丢弃窗口的上限为CurrentSeqA或CurrentSeqB;
其中,StartSeqA或StartSeqB是其冗余口(A和B)维护的最小序号,CurrentSeqA和CurrentSeqB是其维护的最大序号。
对于记录丢弃窗口,在两个冗余口(A和B)分别为最近收到的报文维护n比特向量作为记录丢弃窗口,其中n指设定的窗口深度,即记录丢弃窗口内可记录的数量。以冗余口A为例定义如下:
设LogSeqA1、LogSeqA2到LogSeqAn是n个连续递增的序号,其中LogSeqn是已经收到的报文中最大的序号。其中LogSeqn就是CurrentSeqA。
每个序号存储了一个记录位,记载相应的报文是否被接收过,这些记录位记做Log1,Log2,...Logn。其中,记录位为“0”表示该序号报文未曾收到过,记录位为“1”表示该序号报文在之前收到了。这些记录位组成的向量即构成记录丢弃窗口。该记录丢弃窗口上限序号为LogSeqAn,窗口下限序号为LogSeqA1
以下结合图文具体介绍基于滑动丢弃窗口和日志丢弃窗口(即记录丢弃窗口)的副本丢弃方式。
参见图2,假定节点的端口A已经建立了一个非空的滑动丢弃窗口“DropWindow”,若来自冗余口B的序号位于A的滑动丢弃窗口中的报文就被丢弃(如图2中所示的向上箭头中的dropB);若来自冗余口B的序号不在A的滑动丢弃窗口中的报文不会被丢弃。
再假定端口A有了一个长度为n的报文接收记录窗口“LogWindow”,该窗口中所有记录中填“1”的表示该相应序号的报文曾经收到过,而填“0”的表示该报文未收到过。如图2所示,所有的向下箭头中的DropB都是相应记录填“1”的情况,其他的情况报文不会丢弃。
上述两套丢弃窗口同时使用,任何一套丢弃规则指示该报文需要丢弃,则丢弃该报文。按此规则图2中LANB接收到的报文中标号为2、4的将被丢弃。其中报文标号为2的报文是曾经收到过的(冗余包),在只使用滑动丢弃窗口的情况下,会被HSR节点收上去。
针对采用仅仅基于源MAC地址递增的序号,HSR节点很容易收到大量的错序包。以图2中的标号2的报文为例,可以得知:在单一使用滑动丢弃窗口的情形下,一个迟到的序号在另一端冗余口滑动窗口下限以下的报文,不管有没有在另一端冗余口收到过,都不会被当做副本丢弃;而采用日志丢弃窗口,则可以方便地查出这个报文的历史接收记录。由此通过两个窗口共同核准副本的方法,有效的避免了错序的副本上收。
在副本丢弃处理完毕后,将对滑动丢弃窗口和记录丢弃窗口进行调整。
滑动丢弃窗口调整方法参照IEC62439-2-2008的相关描述。
记录丢弃窗口的大小是固定的,窗口的上限序号等于CurrentSeq,因此窗口的调整应该紧跟CurrentSeq变动,记录位记录窗口内序号的报文的接收情况,其具体调整通过如下几种情形来描述:
参见图3,其所示为记录窗口在收到序号为LogSeqn+1的报文后,CurrentSeq增加1,记录窗口右移了一格,窗口内的序号全部递增1。此时,最左侧的记录Log1被移出记录窗口,右侧则增加新的记录,并填写“1”表示已收到。
参见图4,其所示为记录窗口收到序号为LogSeqn+m的报文,CurrentSeq序号增加m,同时记录窗口右移m格,窗口上限序号变为LogSeqn+m,窗口下限序号为LogSeq1+m。窗口上限的记录为标“1”,窗口调整后的上限与原上限之间的纪录位都填“0”,因为这些记录位对应的序号报文未曾收到过。
参见图5,其所示为收到报文序号位于记录窗口内,CurrentSeq不变,窗口上下限维持不变,该报文序号纪录位的值填“1”。
如果收到序号小于记录窗口下限,因为CurrentSeq不变,且窗口内记录情况没有变化,窗口不调整。
在上述方案的基础上,本发明通过FPGA实现副本处理的具体过程如下:
首先,在发送端,即HSR源端节点(将报文发送到环网),FPGA建立一个关键字为源MAC地址的序号表,序号表为每个源MAC地址存放当前的序号信息,基于HASH函数为源MAC地址索引查到序号表相应的表项入口并找到当前发送序号,并将序号填入HSR标签的相关字段;然后将打好HSR标签的报文从两个冗余口发送到环网。最后将当前序号递增1号写回序号表。
在接收端,即HSR目的端节点的某个冗余口,FPGA建立一个关键字为源MAC地址的冗余表,表项中存有两个冗余口滑动丢弃窗口和记录丢弃窗口的所有信息。每收到一个报文,FPGA基于接收到的报文的源MAC地址,通过同样的哈希函数,索引到冗余表相应的表项,查找该HSR节点的另一个冗余口中滑动窗口信息,即ExpectSeq,StartSeq,和n比特接收记录。根据前述的双窗口丢弃方式,来判断决定接收到的报文是否要丢弃。
最后,在副本丢弃处理完毕后,再调整滑动窗口信息和修改n比特接收记录并写回冗余表中(即根据冗余表中被读记录,对应写回)。
由上可知,本发明中采用两个窗口共同发挥作用时比单一滑动丢弃窗口更优越。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (6)

1.一种高可靠性无缝冗余环网中副本处理的FPGA实现方法,其特征在于,所述实现方法中由FPGA在HSR源端节点根据源MAC地址来递增序号,同时由FPGA在HSR目的端节点维护滑动丢弃窗口和记录丢弃窗口,并同时利用这两个窗口对报文副本进行处理。
2.根据权利要求1所述的一种高可靠性无缝冗余环网中副本处理的FPGA实现方法,其特征在于,所述FPGA在维护序号时,HSR环网中的每个节点每向环中发送一个报文,都对序号进行递增。
3.根据权利要求2所述的一种高可靠性无缝冗余环网中副本处理的FPGA实现方法,其特征在于,所述序号达到最大值时,从0开始重新递增。
4.根据权利要求1所述的一种高可靠性无缝冗余环网中副本处理的FPGA实现方法,其特征在于,所述方法中在节点上两个环网冗余口分别为收到的报文基于源MAC地址维护一个滑动丢弃窗口;同时,在节点上两个环网冗余口分别为最近收到的报文维护n比特记录丢弃窗口,n为记录丢弃窗口内记录的数量。
5.根据权利要求4所述的一种高可靠性无缝冗余环网中副本处理的FPGA实现方法,其特征在于,所述接收记录窗口为每个报文对应的序号一个记录位,记载相应的报文的是否被接收过。
6.根据权利要求1至5中任一项所述的一种高可靠性无缝冗余环网中副本处理的FPGA实现方法,其特征在于,所述FPGA实现副本处理的具体过程如下:
在源端节点,FPGA基于HASH技术根据源MAC地址索引查到当前发送序号,并将序号填入HSR标签的相关字段;然后将打好HSR标签的报文从两个冗余口发送到环网;
在目的端一个冗余口,FPGA基于接收到的报文的源MAC地址,索引到另一个冗余口中滑动窗口信息和接收记录;根据索引到的滑动窗口信息和接收记录判断接收到的报文是否要丢弃;
副本丢弃处理完毕后,再调整滑动窗口信息和修改接收记录。
CN201410322775.0A 2014-07-08 2014-07-08 一种高可靠性无缝冗余环网中副本处理的fpga实现方法 Active CN105282002B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410322775.0A CN105282002B (zh) 2014-07-08 2014-07-08 一种高可靠性无缝冗余环网中副本处理的fpga实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410322775.0A CN105282002B (zh) 2014-07-08 2014-07-08 一种高可靠性无缝冗余环网中副本处理的fpga实现方法

Publications (2)

Publication Number Publication Date
CN105282002A true CN105282002A (zh) 2016-01-27
CN105282002B CN105282002B (zh) 2018-11-06

Family

ID=55150371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410322775.0A Active CN105282002B (zh) 2014-07-08 2014-07-08 一种高可靠性无缝冗余环网中副本处理的fpga实现方法

Country Status (1)

Country Link
CN (1) CN105282002B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107508696A (zh) * 2017-07-11 2017-12-22 中国南方电网有限责任公司 一种提高hsr环网运维可靠性的装置及方法
CN109981479A (zh) * 2019-02-27 2019-07-05 西安微电子技术研究所 一种面向prp网络的单窗口动态滑动与冗余管理系统和方法
CN111277480A (zh) * 2020-01-19 2020-06-12 山东网聪信息科技有限公司 一种高可用性无缝冗余环网重复帧丢弃方法及系统
CN112751725A (zh) * 2020-12-17 2021-05-04 浙江中控技术股份有限公司 一种hsr环网通信装置及其通信方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110029687A1 (en) * 2009-07-31 2011-02-03 Abb Research Ltd Data transmission in a ring-type communication network
US7953094B1 (en) * 2002-02-06 2011-05-31 Juniper Networks, Inc. Systems and methods for order preserving data
CN103227697A (zh) * 2013-03-26 2013-07-31 北京创毅视讯科技有限公司 一种协议数据单元的检测方法和装置
CN103428060A (zh) * 2012-05-25 2013-12-04 北京东土科技股份有限公司 环形网络的无缝冗余实现方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953094B1 (en) * 2002-02-06 2011-05-31 Juniper Networks, Inc. Systems and methods for order preserving data
US20110029687A1 (en) * 2009-07-31 2011-02-03 Abb Research Ltd Data transmission in a ring-type communication network
CN101989943A (zh) * 2009-07-31 2011-03-23 Abb研究有限公司 在环形通信网络中的数据传输
CN103428060A (zh) * 2012-05-25 2013-12-04 北京东土科技股份有限公司 环形网络的无缝冗余实现方法
CN103227697A (zh) * 2013-03-26 2013-07-31 北京创毅视讯科技有限公司 一种协议数据单元的检测方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
J.A. ARAUJO: "Duplicate and Circulating Frames Discard Methods for PRP and HSR", 《INDUSTRIAL ELECTRONICS SOCIETY, IECON2013,IEEE》 *
李俊刚: "基于IEC62439_3的智能变电站通信网络冗余设计", 《电力系统自动化》 *
程子敬: "一种高可靠并行环网的研究与实现", 《电子设计工程》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107508696A (zh) * 2017-07-11 2017-12-22 中国南方电网有限责任公司 一种提高hsr环网运维可靠性的装置及方法
CN109981479A (zh) * 2019-02-27 2019-07-05 西安微电子技术研究所 一种面向prp网络的单窗口动态滑动与冗余管理系统和方法
CN109981479B (zh) * 2019-02-27 2022-06-28 西安微电子技术研究所 一种面向prp网络的单窗口动态滑动与冗余管理系统和方法
CN111277480A (zh) * 2020-01-19 2020-06-12 山东网聪信息科技有限公司 一种高可用性无缝冗余环网重复帧丢弃方法及系统
CN112751725A (zh) * 2020-12-17 2021-05-04 浙江中控技术股份有限公司 一种hsr环网通信装置及其通信方法
WO2022127226A1 (zh) * 2020-12-17 2022-06-23 浙江中控技术股份有限公司 一种工业环网通信装置及其通信方法

Also Published As

Publication number Publication date
CN105282002B (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
CN105282002A (zh) 一种高可靠性无缝冗余环网中副本处理的fpga实现方法
US20220086105A1 (en) Direct Packet Placement
CN101917316B (zh) 一种高速实时工业以太网的通信方法及装置
CN105959231B (zh) 一种代理端口通信流量控制方法和冗余设备
CN103490961B (zh) 一种网络设备
US11050675B2 (en) Scheduler for coordination and synchronization of data across low-bandwidth links and method thereof
CN105376173A (zh) 一种发送窗口流量控制方法和终端
US20140369249A1 (en) Multicast data transmission from a web server to client terminal devices using a wireless local area network
US10592452B1 (en) Low latency interconnect protocol for coherent multi-chip communication
CN105791145B (zh) 基于等价多路径ecmp的报文传输方法及装置
EP4333408A3 (en) Method and apparatus for managing routing disruptions in a computer network
CA2700402A1 (en) Maintaining a constant delay in point-to-point transmission
CN104184678A (zh) 一种用于实现高可靠性无缝冗余环网的帧副本丢弃的方法
CN107395479B (zh) 无损环网交换机、无损自愈环网及其数据通讯方法
CN101860520B (zh) 基于以太网的高速地震数据传输控制系统
CN101707623A (zh) 一种小内存系统中的文件发送方法及装置
CN103442091A (zh) 一种数据传输方法及装置
CN108449166A (zh) 一种FlexE中的数据转发方法及网络设备
CN106302006A (zh) 一种基于sdn的ip欺骗数据包的动态溯源方法
CN107210980A (zh) 快速自适应模式转换数字消除器
CN103746970B (zh) 一种自适应多协议eop实现方法和装置
CN102932263B (zh) 一种接入终端
CN107925557B (zh) 用于数据流的速率适配版本的识别码字
CN104079498B (zh) 基于分组大小的卫星网络主动队列管理方法
CN103532846A (zh) 路由链路选择方法及装置

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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20160127

Assignee: Shanghai Puchuang Longke Finance Leasing Co.,Ltd.

Assignor: SHANGHAI BAUD DATA COMMUNICATION Co.,Ltd.

Contract record no.: X2020980003092

Denomination of invention: FPGA realization method of duplication processing in high-reliability seamless redundancy ring network

Granted publication date: 20181106

License type: Exclusive License

Record date: 20200615

EE01 Entry into force of recordation of patent licensing contract
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: FPGA realization method of duplication processing in high-reliability seamless redundancy ring network

Effective date of registration: 20200615

Granted publication date: 20181106

Pledgee: Shanghai Puchuang Longke Finance Leasing Co.,Ltd.

Pledgor: SHANGHAI BAUD DATA COMMUNICATION Co.,Ltd.

Registration number: Y2020980003093

EC01 Cancellation of recordation of patent licensing contract

Assignee: Shanghai Puchuang Longke Finance Leasing Co.,Ltd.

Assignor: SHANGHAI BAUD DATA COMMUNICATION Co.,Ltd.

Contract record no.: X2020980003092

Date of cancellation: 20210809

EC01 Cancellation of recordation of patent licensing contract
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20210809

Granted publication date: 20181106

Pledgee: Shanghai Puchuang Longke Finance Leasing Co.,Ltd.

Pledgor: SHANGHAI BAUD DATA COMMUNICATION Co.,Ltd.

Registration number: Y2020980003093

PC01 Cancellation of the registration of the contract for pledge of patent right