CN101938399B - Routing method and device - Google Patents
Routing method and device Download PDFInfo
- Publication number
- CN101938399B CN101938399B CN200910108541A CN200910108541A CN101938399B CN 101938399 B CN101938399 B CN 101938399B CN 200910108541 A CN200910108541 A CN 200910108541A CN 200910108541 A CN200910108541 A CN 200910108541A CN 101938399 B CN101938399 B CN 101938399B
- Authority
- CN
- China
- Prior art keywords
- message
- counter
- next hop
- hop address
- routing
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
The invention discloses routing method and device, belonging to communication field. The method comprises the following steps of: judging whether routing update is performed or not according to a routing update symbol through configuring the next hop address of a received message and the routing update symbol; carrying out routing lookup when the routing update is determined; reconfiguring the next hop address for the message; updating and storing the routing update symbol of the message and a stream type mapping relation of the reconfigured next hop address and the message; and sending the message according to the reconfigured next hop address of the message. According to the invention, loss of the routing lookup can be reduced and less hardware resources are occupied.
Description
Technical field
The present invention relates to the communication technology, be specifically related to the method and apparatus of route.
Background technology
Traffic classification is a kind of technology that in network forwarding equipments such as router, is widely used.Its basic process is: according to pre-configured certain rule, classify to receiving message, be divided into not homogeneous turbulence, carry out preassigned processing to every kind of stream thereafter, can promote the performance of data forwarding, and increase flexibility.Route querying is meant according to destination address, transmits through searching, and finds the process of next hop address, and is general huger owing to transmitting in IP world, even use the algorithm of optimizing, also need carry out repeatedly the I/O operation, bigger to performance impact.
In the prior art; The method of the message that receives being carried out route is: at first through the traffic classification module the said message that receives is carried out traffic classification; Said traffic classification module is carried out the traffic classification configuration by the traffic classification configuration module in advance; Again said message is transmitted through the next hop address that route querying obtains said message according to the classified information in the said message, in routing message searching module, can be set up certain buffer memory simultaneously, perhaps use special-purpose cam hardware; The destination address that buffer memory often uses and the mapping of said destination address and next hop address can directly obtain next hop address through the destination address of obtaining the message that receives.Described traffic classification layoutprocedure and routing configuration module are upgraded by general processor route and are finished dealing with, and the route querying process is accomplished by the data surface processor processes.
In the prior art can also be when traffic classification disposes in advance message be specified next hop address, when the traffic classification module receives message and said message carried out traffic classification, directly specify next hop address according to said traffic classification configuration.When route change, in general processor, search all traffic classification that relates to configurations, and recomputate next hop address, and the next hop address after will recomputating writes back in the traffic classification configuration.
In sum, the inventor finds: the performance of the routing plan of application cache of the prior art depends on the size of buffer memory, speed, the quantity of object flow commonly used etc.If buffer memory is too little, speed is not enough, and object flow quantity commonly used more for a long time, and then this scheme will not possess practicality.In general processor, carry out route and calculate, when the traffic classification number of configured is too many, because the performance limitations of general processor may take excess resource, even exceed the processor ability.
Summary of the invention
The embodiment of the invention provides a kind of method for routing and device, and it is not enough and use general processor to carry out the problem of the performance limitations that route calculates effectively to solve practicality in the prior art.
A kind of method for routing; The next hop address and the routing update sign of the message that configuration receives; Judging whether to carry out route according to said routing update sign upgrades: when confirming that carrying out route upgrades, and then carries out route querying, for said message reconfigures next hop address; Upgrade and preserve the routing update sign of said message; And the stream type mapping relations of said next hop address that reconfigures and said message, send said message according to the next hop address that reconfigures of said message, or send said message according to the next hop address that reconfigures of said message; Upgrade and preserve the routing update sign of said message, and the stream type mapping relations of said next hop address that reconfigures and said message; Or
When confirming that not carrying out route upgrades, and sends said message according to the next hop address of said message configuration.
A kind of route device, said device comprises the traffic classification module, routing module and scheduling sending module,
Said traffic classification module; Be used to dispose the message that receives next hop address and with corresponding first counter of the stream type of said message; With said first counter and value thereof, and the next hop address of the said message of configuration sends to said routing module.Said routing module; Be used to receive said first counter and the value thereof that said traffic classification module is sent; And the next hop address of the said message of configuration; And dispose second counter, and the value of the value of more said second counter and said first counter confirms to carry out the route renewal, and said routing module carries out route querying; For said message reconfigures next hop address; Give said first counter with the value assignment of said second counter, the stream type mapping relations of first counter after the said renewal and value and said next hop address that reconfigures and said message are sent to said traffic classification module, the said message that reconfigures next hop address is sent to said scheduling sending module.Said traffic classification module also is used to receive and preserve the value of said first counter after the renewal that said routing module sends, and the mapping relations of the stream type of said message and the next hop address that reconfigures.Said scheduling sending module is used for the next hop address that reconfigures according to said routing module, sends said message.
A kind of route device, said device comprises configuration module, routing message searching module and sending module, said configuration module is used to dispose the next hop address of the message that receives, and said message is sent to routing message searching module.Routing message searching module; Be used for upgrading when confirming to carry out route; Then carry out route querying; For said message reconfigures next hop address, upgrade and preserve the stream type mapping relations of routing update sign and the said next hop address that reconfigures and the said message of said message, the said message that reconfigures next hop address is sent to sending module.Said sending module is used for the next hop address that reconfigures according to said routing message searching module, sends said message.
Ample resources when the present invention has avoided the general processor of low performance to search and change the traffic classification configuration takies, and has reduced the loss of route querying; Do not need a large amount of buffer memorys, directly utilized existing traffic classification resource allocation, it is less to take hardware resource.
Description of drawings
The method for routing realization flow figure that Fig. 1 provides for the embodiment of the invention;
A kind of method for routing realization flow figure that Fig. 2 provides for the embodiment of the invention;
A kind of route device structure chart that Fig. 3 provides for the embodiment of the invention;
The another kind of route device structure chart that Fig. 4 provides for the embodiment of the invention.
Embodiment
The embodiment of the invention provides a kind of method for routing and device, and it is not enough and use general processor to carry out the problem of the performance limitations that route calculates effectively to solve practicality in the prior art.
As shown in Figure 1, the embodiment of the invention provides a kind of method for routing,
The not free order of the carrying out of step 103 and step 104 can be carried out step 103 earlier and also can carry out step 104 earlier;
In embodiments of the present invention; Saidly carry out the route querying process, reconfigure the next hop address process and upgrade and preserve the routing update sign of said message for said message through application data face processor processes; And the process of the stream type mapping relations of said next hop address and said message; Ample resources in the time of can realizing avoiding the general processor of low performance to search and change the traffic classification configuration takies, and has reduced the loss of route querying; Do not need a large amount of buffer memorys, directly utilized existing traffic classification resource allocation, it is less to take hardware resource.
Set forth the realization flow of the method for routing that the embodiment of the invention provides below in conjunction with Fig. 2.The embodiment of the invention is deployed in traffic classification configuration module and routing configuration module in the general processor of network processing unit; Traffic classification module and routing module are deployed in the data surface processor; Wherein, In the routing module of data surface processor, increase counter CounterA, handle the routing module of notifying said data surface processor after the routing update of said routing configuration module when said general processor, said routing module increases progressively the value of said counter CounterA.Preferably; After said routing configuration module is carried out said routing update; Said routing configuration module can be sent the routing update notification message to said routing module; The value that said routing module receives behind the said routing update notification message the counter CounterA in the said routing module adds one, it will be understood by those skilled in the art that in other embodiment, to add two or carry out other and increase progressively all and be fine.In the traffic classification module of general processor, increase counter CounterB (n); N among the said counter CounterB (n) representes the classification logotype that said traffic classification module is classified to message; N can be natural number; The stream of the corresponding respective type of then corresponding natural number, and corresponding corresponding counter.As shown in Figure 2, the value of the said counter CounterA of initial configuration sum counter CounterB (n) is equal,
It will be understood by those skilled in the art that step 206 and step 207 do not have the restriction of order, can first execution in step 207 and then execution in step 206.
In another embodiment; Also can be through the routing update sign being set in advance to replace the setting of said counting device, optional, this routing update sign can be a register; When the route of the stream of certain type is upgraded; Said routing update then is set is masked as, optional, can be set to 1.When the message of follow-up pre-configured next jumping that corresponding stream type arranged arrives,, then carry out route querying if said routing update is masked as 1; Be the new next hop address of said message configuration; According to new next hop address said message is sent, and remove said routing update sign, optional; Said routing update sign is set to 0, upgrades and preserve the mapping relations of next hop address of stream type and the said renewal of said message.If when the follow-up message that corresponding stream type arranged arrives, be the next hop address of said message config update,, then directly said message sent according to said next hop address if said routing update is masked as 0.
Ample resources when the embodiment of the invention has avoided the general processor of low performance to search and change the traffic classification configuration takies; Simultaneously again can be after routing update; Only need first message of the stream after the route renewal is carried out a route querying, reduced the loss of route querying, and do not needed high-speed cache; Directly utilize existing traffic classification resource allocation, saved resource and cost.
Specifically set forth structure and each functions of modules thereof of the route device that the embodiment of the invention provides below in conjunction with Fig. 3.
Said route device comprises the traffic classification configuration module 301 and routing configuration module 302 that is deployed in general processor, also comprises the traffic classification module 303 that is deployed in the data surface processor, routing module 304 and scheduling sending module 305,
Said traffic classification configuration module 301 is used for said traffic classification module 303 is carried out the traffic classification configuration; So that the content in the message that said traffic classification module 303 disposes and receives according to said traffic classification is carried out traffic classification; Said traffic classification configuration comprises the mapping of setting up the content in stream type and the said message; Said content of message can comprise five-tuple; Being source network address, source port, host-host protocol, the purpose network address and destination interface, can also be the particular content of the payload of said message.Said traffic classification module 303 is used for according to the stream type of said traffic classification configuration module 301 and the mapping of the content in the said message; After receiving message, confirm the stream type of said message, and confirm the next hop address of said message according to the mapping of message flow type of preserving and next hop address.Said traffic classification module 303 also comprises first counter; Said first counter is corresponding with the stream type of message, and said traffic classification module 303 disposes the message of next hop address and sends to routing module 304 with corresponding first counter of the stream type of this message and value thereof said.
Said routing configuration module 302 is used to upgrade routing table; After said routing configuration module 302 is upgraded routing table, send a notification message to routing module 304, said routing module 304 comprises second counter, and said second counter is used for after upgrading routing table in said routing configuration module 302; Receive the notification message that said routing configuration module 302 is sent; The value of said second counter increases progressively, and is optional, and the value of this second counter can increase by 1.The value of said first counter of initial configuration and second counter equates.Said routing module 304 receive said traffic classification module 303 to the message that disposes next hop address of its transmission and with corresponding first counter of the stream type of this message and value thereof; The value of more said first counter and second counter: if the value of said second counter is less than or equal to the value of said first counter; The message that then will dispose next hop address sends to said scheduling sending module 305, and said scheduling sending module 305 sends said message according to said next hop address; If the value of said second counter is greater than the value of said first counter; Then said routing module 304 carries out route querying; For said message reconfigures next hop address; Give said first counter with the value assignment of said second counter, with the value of first counter after the said renewal, and the mapping relations of the stream type of said message and the said next hop address that reconfigures send to said traffic classification module 303; Said traffic classification module 303 is preserved the value of first counter after the said renewal; And the mapping relations of the stream type of said message and the said next hop address that reconfigures, said routing module 304 sends to said scheduling sending module 305 with the said message that has reconfigured next hop address, and said scheduling sending module 305 sends said message according to the said next hop address that reconfigures.
The route device that provides through the embodiment of the invention; Traffic classification module, routing module and scheduling sending module are deployed in the data surface processor; And carry out the relevant work process optimization; Ample resources in the time of can avoiding the general processor of low performance to search and change the traffic classification configuration takies, and has reduced the loss of route querying; Do not need a large amount of buffer memorys, directly utilized existing traffic classification resource allocation, it is less to take hardware resource.
The embodiment of the invention also provides another kind of route device; As shown in Figure 4; Said device comprises configuration module 401, routing message searching module 402 and sending module 403; The next hop address of the message that said configuration module 401 configurations receive sends to said routing message searching module 402 with the said message that disposes next hop address; Routing message searching module 402 configuration routing update signs receive said message, judge according to said routing update sign whether the route of the message that receives is upgraded; Said routing update sign can be a register; Upgrade when the route of the stream of certain type, said routing update then is set is masked as, optional; Can be set to 1; Upgrade when the route of confirming said message, then carry out route querying, for said message reconfigures next hop address; Upgrade and preserve the routing update sign of said message; The stream type mapping relations of said next hop address that reconfigures and said message are sent to configuration module 401, the next hop address that said configuration module 401 upgrades and preservation reconfigures and the stream type mapping relations of said message, said routing message searching module 402 sends to sending module 403 with the said message that reconfigures next hop address; Said sending module 403 sends said message according to the next hop address that said routing message searching module reconfigures.
Said routing message searching module 402; Also be used for not upgrading when the route of confirming said message; The said message that comprises next hop address that disposes is sent to said sending module 403; Said sending module 403 receives and disposes the message that comprises next hop address, sends said message according to said next hop address.
The route device that provides through the embodiment of the invention; Configuration module, routing message searching module and sending module are deployed in the data surface processor; Ample resources in the time of can avoiding the general processor of low performance to search and change the traffic classification configuration takies, and has reduced the loss of route querying; Do not need a large amount of buffer memorys, directly utilized existing traffic classification resource allocation, it is less to take hardware resource.
Those skilled in the art should understand that; Realize being deployed in described in the embodiment of the invention both can be illustrated in said processor in general processor or the data surface processor inside, can represent that again said processor is used for each module of control and treatment and realizes each functions of modules.
It should be appreciated by those skilled in the art that the function that is divided into of apparatus module is divided in the embodiment of the invention, actual concrete structure can be the fractionation or the merging of above-mentioned functions module.
" reception " speech among the foregoing invention embodiment is appreciated that for initiatively obtaining from other unit also can be to receive the information that other unit send.
The invention described above embodiment sequence number is not represented the quality of embodiment just to description.
The scheme of the content record of claim also is the protection range of the embodiment of the invention.
One of ordinary skill in the art will appreciate that all or part of processing in the foregoing description method is to instruct relevant hardware to accomplish through program, described program can be stored in a kind of computer-readable recording medium.
The above is merely preferred embodiment of the present invention, is not to be used to limit protection scope of the present invention.All within spirit of the present invention and principle, any modification of being done, be equal to replacement, improvement etc., all should be included within protection scope of the present invention.
Claims (10)
1. a method for routing is characterized in that,
The next hop address and the routing update sign of the message that the configuration of data surface processor receives judge whether to carry out route according to said routing update sign and upgrade:
Confirm to carry out route when said data surface processor and upgrade, then carry out route querying, for said message reconfigures next hop address,
Upgrade and preserve the routing update sign of said message; And the stream type mapping relations of said next hop address that reconfigures and said message; The next hop address that reconfigures according to said message is sent said message; Or send said message according to the next hop address that reconfigures of said message, upgrade and preserve the routing update sign of said message, and the stream type mapping relations of said next hop address that reconfigures and said message; Or
Confirm not carry out route when said data surface processor and upgrade, send said message according to the next hop address of said message configuration.
2. the method for claim 1 is characterized in that, the next hop address of the message that said configuration receives specifically comprises,
The stream type corresponding according to said message, and the mapping relations of the stream type of the said message of preserving and next hop address dispose the next hop address of said message.
3. the method for claim 1 is characterized in that, the routing update sign of said configuration message and judge according to said routing update sign whether the route of the message that receives has carried out upgrading and specifically comprise,
Dispose first counter and second counter; The value of said first counter of initial configuration and second counter equates; Said second counter is corresponding with the stream type of said message; The value of said first counter increases progressively after the generation routing update, whether is carried out the route renewal through more said first counter with the value of corresponding second counter of said message flow type; Or
Configuration routing update sign after routing update takes place, is provided with said routing update sign, after carrying out route querying, removes said routing update sign.
4. method as claimed in claim 3 is characterized in that, and is said through more said first counter with whether carried out route with the value of corresponding second counter of said message flow type and upgrade and specifically to comprise:
When the value of said first counter value, then obtain carrying out route and upgrade greater than said second counter; Or
Said through more said first counter with whether carried out route with the value of corresponding second counter of said message flow type and upgrade and specifically to comprise:
When the value of said first counter is less than or equal to the value of said second counter, then do not carried out route and upgraded.
5. method as claimed in claim 3 is characterized in that, said renewal and the routing update sign of preserving said message specifically comprise,
The value assignment of first counter after the said generation routing update is given and corresponding said second counter of the stream type of said message; Said second counter is preserved said value so that when receiving the message of said same stream type once more, preserves said value with said second counter and compares with the value of first counter; Or
After carrying out route querying, remove said routing update sign.
6. like arbitrary described method among the claim 1-5, it is characterized in that,
Application data face processor processes is said carries out the route querying process, for said message reconfigures the next hop address process and upgrades and preserve the routing update sign of said message, and the process of the stream type mapping relations of said next hop address and said message.
7. a route device is characterized in that, said device comprises the traffic classification module that is deployed in the data surface processor, routing module and scheduling sending module,
Said traffic classification module; Be used to dispose the message that receives next hop address and with corresponding first counter of the stream type of said message; With said first counter and value thereof, and the next hop address of the said message of configuration sends to said routing module;
Said routing module; Be used to receive said first counter and the value thereof that said traffic classification module is sent; And the next hop address of the said message of configuration; And dispose second counter, and the value of the value of more said second counter and said first counter confirms to carry out the route renewal, and said routing module carries out route querying; For said message reconfigures next hop address; Give said first counter with the value assignment of said second counter, the stream type mapping relations of first counter after the said renewal and value and said next hop address that reconfigures and said message are sent to said traffic classification module, the said message that reconfigures next hop address is sent to said scheduling sending module;
Said traffic classification module also is used to receive and preserve the value of said first counter after the renewal that said routing module sends, and the mapping relations of the stream type of said message and the next hop address that reconfigures;
Said scheduling sending module is used for the next hop address that reconfigures according to said routing module, sends said message.
8. route device as claimed in claim 7 is characterized in that,
Said routing module also is used for working as the value of more said second counter and the value of said first counter confirms not carry out the route renewal, and said routing module has the message of next hop address to send to said scheduling sending module the traffic classification block configuration;
Said scheduling sending module also is used to receive the said message that disposes next hop address, sends said message according to said next hop address.
9. a route device is characterized in that, said device comprises configuration module, routing message searching module and the sending module that is deployed in the data surface processor,
Said configuration module is used to dispose the next hop address of the message that receives, and said message is sent to routing message searching module;
Routing message searching module; Be used for upgrading when confirming to carry out route; Then carry out route querying; For said message reconfigures next hop address, upgrade and preserve the stream type mapping relations of routing update sign and the said next hop address that reconfigures and the said message of said message, the said message that reconfigures next hop address is sent to sending module;
Said sending module is used for the next hop address that reconfigures according to said routing message searching module, sends said message.
10. route device as claimed in claim 9 is characterized in that,
Said routing message searching module also is used for when confirming that not carrying out route upgrades, and sends to said sending module with the said message that comprises next hop address that disposes;
Said sending module also is used to receive the said message that disposes next hop address, sends said message according to said next hop address.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910108541A CN101938399B (en) | 2009-06-30 | 2009-06-30 | Routing method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910108541A CN101938399B (en) | 2009-06-30 | 2009-06-30 | Routing method and device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101938399A CN101938399A (en) | 2011-01-05 |
CN101938399B true CN101938399B (en) | 2012-10-17 |
Family
ID=43391542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910108541A Active CN101938399B (en) | 2009-06-30 | 2009-06-30 | Routing method and device |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101938399B (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067294B (en) * | 2012-12-30 | 2015-12-23 | 大连环宇移动科技有限公司 | Based on the method for the data flow equilibrium treatment of stream order-preserving in multi-next-hop forwarding router |
WO2015161451A1 (en) * | 2014-04-22 | 2015-10-29 | 华为技术有限公司 | Internet protocol packet forwarding method, mobile gateway and radio network controller |
CN105207904B (en) * | 2014-06-25 | 2018-07-17 | 广州市动景计算机科技有限公司 | Processing method, device and the router of message |
CN105939263B (en) * | 2015-08-12 | 2019-07-09 | 杭州迪普科技股份有限公司 | A kind of file transmitting method and device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1976313A (en) * | 2006-09-19 | 2007-06-06 | 中国人民解放军国防科学技术大学 | High performance router routing protocol distribution parallel realizing method |
CN101119393A (en) * | 2006-08-02 | 2008-02-06 | 华为技术有限公司 | Method, system and mobile node for updating categorizer |
CN101127691A (en) * | 2006-08-17 | 2008-02-20 | 王玉鹏 | A method for implementing stream-based policy routing on network processor |
-
2009
- 2009-06-30 CN CN200910108541A patent/CN101938399B/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119393A (en) * | 2006-08-02 | 2008-02-06 | 华为技术有限公司 | Method, system and mobile node for updating categorizer |
CN101127691A (en) * | 2006-08-17 | 2008-02-20 | 王玉鹏 | A method for implementing stream-based policy routing on network processor |
CN1976313A (en) * | 2006-09-19 | 2007-06-06 | 中国人民解放军国防科学技术大学 | High performance router routing protocol distribution parallel realizing method |
Also Published As
Publication number | Publication date |
---|---|
CN101938399A (en) | 2011-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7423988B2 (en) | Dynamic reconfiguration of resources through page headers | |
CN102035719B (en) | Method and device for processing message | |
US20060223515A1 (en) | SNMP management in a software defined radio | |
CN112753204A (en) | Method, apparatus, and computer-readable medium for delivering data plane packets using a separate transport service VNFC | |
CN103812930A (en) | Method and device for resource scheduling | |
US11444840B2 (en) | Virtualized networking application and infrastructure | |
KR101460048B1 (en) | Method and apparatus for control of dynamic service chaining by using tagging | |
EP2557740B1 (en) | Self-configuring router and method therefor | |
EP3253091B1 (en) | Data processing method and equipment | |
US20090274131A1 (en) | Method and system for dynamic distribution of traffic in channel bonding wireless local area network(lan) systems | |
CN101938399B (en) | Routing method and device | |
CN103067295A (en) | Method and device and system for service transmission | |
CN104092612A (en) | Method and device for updating matching order of fast forwarding table | |
CN102792651A (en) | Packet node for applying service path routing at the MAC layer | |
CN102315970B (en) | Data center bridging parameter configuration method, system and network equipment | |
CN105075191A (en) | Wireless network data processing device and wireless network system | |
CN108574635B (en) | Routing priority configuration method, device and controller | |
CN102104997A (en) | Method for realizing northbound interface, northbound interface device and network element management system | |
CN103647855A (en) | IP (Internet Protocol) address distribution method, device and system in cross-network communication | |
CN104754521A (en) | Message transmitting method, wireless access point, wireless controller and system | |
US20240022501A1 (en) | Data Packet Sending Method and Device | |
CN107005464A (en) | A kind of processing method and processing device of traffic data bag | |
US10122386B2 (en) | System and method for on-the-fly modification of the properties on an active antenna carrier in radio base station communication operation | |
CN107070797A (en) | A kind of method and system of message forwarding | |
US20200169463A1 (en) | Software-defined networking device based on service profile learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |