Method and apparatus for programmable filtration and generation of information in packetized communication systems

A method and associated apparatus for automating the filtration and generation of information in a packetized communication system. A filtration table includes entries used in recognizing a valid packet received at a node in a communication system. A mask field in each entry is applied to appropriate fields in the packet (e.g. the ordered set as applied to Fibre Channel communication systems) to determine the validity of the packet with regard to the receiving node. Rules in a field of each entry further qualify the recognition of a received packet (e.g. ordered set) by testing the reception of the packet against other logical rules. Action fields in each record permit definition of actions to be invoked automatically (e.g. automatic adjustment of fill transmissions in Fibre Channel applications) in response to receipt and recognition of a particular packet. The set of packets recognized by the receiving node may be modified by adding, deleting, or modifying the entries in the filtration table. The programmable filtration thereby permits simple modifications to the protocol supported by the receiving node. Programmable generation capabilities of the present invention permit rapid integration of additional packets (e.g. ordered sets) transmitted in response to perceived packets in the receiving node. Programmable parameters in the receiving node permit automatic generation and transmission of packets in accordance with the parameter settings at the time of packet transmission.

BACKGROUND OF THE INVENTION 
1. Field of the Invention 
The present invention relates to processing of information in a packetized 
communication system. In particular, the present invention relates to 
methods and apparatus for filtering and generating packets in a flexible, 
programmable manner. 
2. Background of the Invention 
In packetized communication systems, information is exchanged between nodes 
in units referred to as packets. It is common in such communication 
systems that a beginning portion of the packet (also referred to as a 
header) identifies attributes of the packet. Such attributes may include, 
for example, addressing information that identifies the destination of the 
packet in multi-point or loop topology communication systems, or type 
information identifying the type of packet being transmitted. 
A receiving node typically parses information in the packet (from the 
header for example) to determine if the packet is relevant to the 
particular receiving node. A packet may be ignored by a receiving node if, 
for example, it is not addressed to the particular receiver parsing the 
packet or if, for example, the packet is of a type not processed by the 
particular receiving node. If the packet is of an appropriate type and/or 
has an appropriate address for the receiving node to process, then the 
parsing elements of the receiving node permit the packet to be forwarded 
on to processing elements within the receiving node. 
Similarly, transmission elements within the receiving node responsible for 
generation and transmission of packets to other nodes (for example in 
response to a received packet) need to determine parameters of transmitted 
packets required for a particular packet transmission. The transmission 
parameters may vary in accordance with the type of packet being 
transmitted and/or may vary in accordance with the type of received packet 
to which the transmission is responsive. 
As communication protocol standards evolve, the parsing elements of the 
receiving node require updating to correctly recognize newly standardized 
packet types. Similarly, the transmission elements may need to generate 
different packets or may need to apply different sets of parameters to the 
transmission of packets. In current designs, such an update could require 
significant design changes in the parsing or transmission elements of the 
receiving node. These changes could involve significant electronic or 
software redesigns at significant cost and complexity to a manufacturer or 
user of such a communication system. 
It is evident from the above discussion that a need exists for an improved 
method and apparatus for recognizing and generating packets in a 
packetized communication subsystem. In particular, a need exists for an 
improved method and apparatus which minimizes any redesigns required of a 
receiving node in response to changes in the implemented protocols of the 
communications system. 
SUMMARY OF THE INVENTION 
The present invention solves the above and other problems, thereby 
advancing the state of the useful arts, by providing a method and 
associated apparatus for programmable filtration and generation of 
information in a communication system. In particular, the present 
invention provides for a programmable recognition filter to determine 
which received packets are appropriately to be processed by the receiving 
node. The programmable filtration element comprises a table of entries and 
an associated table lookup element. Each entry in the table includes mask 
information and rules which, when applied to a received packet, determine 
whether the packet is recognized by the receiving node for further 
processing. In addition, each table entry may define actions to be taken 
in response to the recognition of a received packet. These actions, if 
provided, define for example automated response packets to be generated 
and transmitted in response to recognition of a received packet. A 
programmable packet generator comprises a register bank which defines the 
packet transmission parameters to be used for transmission of a packet. 
The parameters provide, for example, for automated repetitive transmission 
or transmission until a desired response is recognized, etc. 
The present invention may be advantageously applied to a receiving node in 
a Fibre Channel communication system. Recognition of packets in a Fibre 
Channel communication system involves detecting the ordered set values 
accepted by the receiving node. The ordered set values are defined by the 
Fibre Channel protocol standards to be 32 bit values encoded into 40 bit 
values in accordance with methods commonly known as the 8b/10b encoding. 
Table entries used by the programmable filtration methods of the present 
invention as applied to the Fibre Channel communication standards include 
a mask field which may be applied to a received ordered set to determine 
if the ordered set is of interest to the receiving node. If the 
application of the mask determines that the ordered set is potentially of 
interest, then a sequence rule field is next applied to the received 
ordered set. The sequence rule field in each entry indicates, if set, that 
the corresponding ordered set must be received three times in sequence to 
be properly recognized and passed on for further processing in the 
receiving node. A fill action field in each entry, if set, indicates that 
upon proper recognition of the corresponding ordered set, a new pad/fill 
ordered set should be applied to the transmission portion of the receiving 
node. 
As applied to a Fibre Channel communication system, a packet transmission 
parameter register file provided by the present invention defines 
parameters associated with the transmission of a packet. Such parameters 
include: 1) transmit packet once, 2) transmit packet three times, 3) 
transmit packet framed by other packets in accordance with rules of the 
Fibre Channel protocol, 4) transmit packet for a specified multiple of 
delay periods in a arbitrated loop topology, 5) transmit packet until a 
selected packet is received, and 6) transmit packet continuously (until 
stopped by reprogramming of the parameter register). 
These methods and apparatus of the present invention permit rapid 
integration of changes in the underlying protocol of the receiving node by 
simply adding, deleting, or modifying entries in the programmable 
filtration table. New packet types or addresses required to be recognized 
by the receiving node due to enhancements or changes in the underlying 
protocol standards are simply added as entries in the programmable 
filtration table thereby obviating complex and costly design changes 
required by prior approaches. Similarly, fundamental parameters associated 
with the generation and transmission of packets may be altered by 
modifying appropriate fields in entries of the filtration table. 
It is therefore an object of the present invention to provide methods and 
associated apparatus for programmably filtering packets received in a 
communication system. 
It is a further object of the present invention to provide methods and 
associated apparatus for programmability in the generation of packets for 
transmission by a node in a communication system. 
It is still a further object of the present invention to provide methods 
and associated apparatus for using a filtration table to recognize the 
valid reception of a packet in a node of a communication system. 
It is yet another object of the present invention to provide methods and 
apparatus for using a filtration table having a mask field and rules to be 
applied to a received packet to recognize valid reception of a packet in a 
node of a communication system. 
The above and other objects, aspects, features, and advantages of the 
present invention will become apparent from the following description and 
the attached drawing.

DETAILED DESCRIPTION OF THE INVENTION 
While the invention is susceptible to various modifications and alternative 
forms, a specific embodiment thereof has been shown by way of example in 
the drawings and will herein be described in detail. It should be 
understood, however, that it is not intended to limit the invention to the 
particular form disclosed, but on the contrary, the invention is to cover 
all modifications, equivalents, and alternatives falling within the spirit 
and scope of the invention as defined by the appended claims. 
It is known in the art to receive information in units called packets in a 
packetized communication system and to recognize valid information by 
analysis of a header portion of a received packet. Valid information so 
recognized is then passed to other elements in a receiving node for 
processing of the information content of the received packet. Invalid 
packets not recognized are ignored by the receiving node. Recognition of 
valid and invalid packets may include recognition of an address field 
indicative that the particular receiving node is to process the packet as 
well as recognition of particular types of packets which are to be 
processed by the receiving node. Both such recognition approaches involve 
analysis of the header portion of a received packet. 
In particular, a Fibre Channel packetized communication system may 
recognize received transmissions by analysis of the received ordered 
set--a 32 bit word which defines the type of information transmitted. 
Ordered sets may indicate the start of further data transmissions, or may 
constitute a completed transmission in and of themselves. 
Recognition of valid packets has been performed in the past by "hard-wired" 
logic (e.g. electronic circuits which are designed to recognize certain 
valid packets or by fixed parser programmed instructions in a data 
processing element). Such hard-wired logic is complex and costly to change 
as new packet types (ordered sets) are added to the protocol implemented 
by the receiving node. For example, if the underlying communication 
protocol implemented by the receiving node is changed the hard-wired logic 
must be redesigned at potentially significant cost to support the new 
features. 
The present invention provides for flexibility in the update of the 
receiving node to recognize new types of packets (ordered sets). In 
particular, a filtration table structure of the present invention has one 
or more entries each of which define a type of packet and associated rules 
to be applied to recognize a packet type. A recognition filter element 
processes the filtration table entries responsive to receipt of a packet 
to determine if the received packet is recognized by the receiving node. 
In addition, each entry of the filtration table defines actions to be 
initiated automatically in response to receipt of a particular recognized 
packet. Actions to be automatically initiated may include generation and 
transmission of a response packet, or starting or stopping of processing 
of particular packet types by modification of the filtration table 
entries. A programmable register file associated with the communication 
system receiving node allows for programming of parameters in the 
transmission of packets from the receiving node. Such transmission 
parameters may include, for example, controls related to the number of 
times a packet is transmitted. 
FIG. 1 is a block diagram of a receiving node 100 operable in accordance 
with the present invention. Transmission source 140 sends packets to 
receiving node 100 over link 150 and receives replies (and other 
transmissions) from receiving node 100 over link 152. One of ordinary 
skill in the art will readily recognize that links 150 and 152 may be any 
physical link medium appropriate to the communication application. In 
Fibre Channel applications of the present invention, links 150 and 152 
provide a connection between a device and the corresponding network 
topology (e.g. the fabric or an arbitrated loop). A packet received in 
receiving node 100 over link 150 is first applied to, and processed by, 
packet recognition filter 106 to determine if the packet is recognized by 
the receiving node 100 for further processing. Packets which are 
recognized by packet recognition filter 106 are applied over bus 154 to 
recognized packet processing element 108. Packets not wholly processed 
within receiving node 100 may then be applied over bus 158 to a host 
computer system 120 to complete further processing. Replies generated by 
processing of a received and recognized packet within recognized packet 
processor element 108 or host computer system 120 are applied via bus 156 
to packet generator parameters 110. Packet generator parameters 110 then 
controls automated transmission aspects of applying the generated packet 
to link 152. For example, depending upon the parameters defined in the 
packet generator parameters 110, the packet may be applied once to link 
152 or may be applied multiple times to link 152 with the termination 
conditions for such repetitive transmission being defined by the packet 
generator parameters 110. 
Packet recognition filter 106 determines the validity of the received 
packets by applying various rules and masks defined by each entry 104 in a 
filtration table 102 stored in a memory (not shown) associated with the 
receiving node 100. The filtration table 102 may be easily altered to add, 
delete, or modify entries therein. Such simple alteration of the 
filtration table 102 enables extension or modification of the underlying 
communication protocol implemented by the receiving node 100. New packet 
types to be recognized by the receiving node require the simple addition 
of new entries 104 to the filtration table 102. Changes in underlying 
communication protocol require simple deletion or modification of entries 
to the entries 104 of the filtration table 102. 
Control bus 160 permits recognized packet processor element 108 or host 
computer system 120 to manipulate entries in either filtration table 102 
or packet generator parameters element 110. This control enables the 
recognition of valid packets to be modified by alteration of the contents 
of filtration table 102. In addition, parameters of packet generation and 
transmission may be modified as packets are generated in response to 
received packets. 
FIG. 2 depicts an exemplary entry 200 of the filtration table 102 of FIG. 
1. Filtration table entry 200 is comprised of a number of fields defining 
the conditions required for recognizing a received packet and actions to 
be initiated automatically in response to recognition of a received 
packet. Packet mask 202 is a mask field which is applied to a portion of a 
received packet to determine if the packet is of interest to the receiving 
node. Packet mask 202 may include, for example, a bit field relevance mask 
which defines the relevant bits to be tested by the application of the 
mask and an expected value compared with the masked relevant bits. The 
packet header is bitwise AND'd with the relevance mask and that result is 
compared with the expected value. Depending upon the result of the 
comparison, the packet may not be of interest to the receiving node in 
accordance with the corresponding filtration table entry (other entries 
may then be similarly applied to recognize a received packet). 
Field 204 represents a variable number of rules (denoted RULE1 . . . RULEN 
in FIG. 2) which serve to further qualify recognition of a received 
packet. A packet which qualifies for recognition by application of the 
packet mask field 202 described above must also qualify for recognition by 
the further application of the rules field 204. The rules defined by rules 
field 204 are specific to the particular protocol implemented within 
receiving node 100 of FIG. 1. Actions field 206 represents a variable 
number of actions to be initiated automatically in response to recognition 
of a valid received packet by application of packet mask 202 and rules 
field 204 as described above. Exemplary of such automatic actions is the 
automatic generation and transmission of a reply packet responsive to 
receipt of a recognized packet. 
FIG. 3 is a flowchart describing the methods of the present invention 
operable within packet recognition filter 106 of FIG. 1 to recognize valid 
received packets by use of the entries 200 of filtration table 102. 
Responsive to receipt of a packet (or a header portion of a packet), 
element 300 is first operable to initialize a local flag variable, 
RECOGNIZED, to indicate that the packet is not yet recognized by operation 
of the method. Elements 302-320 are then operable iteratively until each 
entry 200 in the filtration table 102 has been processed. Element 302 is 
operable to determine whether all entries 200 in the filtration table 102 
have been processed by the remaining elements 304-320. If all entries 200 
in filtration table 102 have been processed by elements 302-320, then 
processing of the packet by the packet recognition filter 106 is 
completed. Otherwise processing continues with element 304 to attempt 
recognition of the received packet. 
Element 304 is operable to retrieve the next entry 200 from the filtration 
table 106. Element 306 is then operable to apply the packet mask field 202 
of the next entry 200 to the received packet. Application of the packet 
mask field 202, as discussed above, may involve isolating the relevant 
bits from the header portion of the packet and then comparing the 
isolated, relevant bits to an expected value corresponding to the 
particular entry 200 being processed. Element 308 then determines whether 
the application of the packet mask field 202 results in a potentially 
recognized packet (i.e. the result of the comparison operations discussed 
above). If element 308 determines that the application of the packet mask 
202 field of the current entry 200 being processed does not identify a 
potentially recognized packet, then processing continues by looping back 
to element 302 to process other entries 200 in the filtration table 102. 
If the application of the packet mask field 202 of the current entry 200 
identifies a potentially recognized packet, then element 310 and 312 are 
next operable to determine if the packet is in fact recognized according 
to the rules field 204 of the current entry 200. The rules field 204 
defines a number of rules specific to the particular protocol implemented 
within receiving node 100 to further qualify a potentially recognized 
packet in the context of the protocol state. In effect, the rules in the 
rules field 204 define a state machine for determining the specific 
context in which a received packet may be recognized. As noted above, the 
filtration table 102 of the present invention may be easily modified to 
alter the protocol implemented by the receiving node 100 of FIG. 1. Such 
alterations may include dynamic redefinition of the mask and rules for 
recognition of packets based upon the reception of other earlier packets. 
In this manner, the entries of the filtration table 102 may implement a 
state machine for the dynamic recognition of packets based upon state 
information and context of the receiving node in the form of the present 
entries in the filtration table 102. In particular, element 310 applies 
the rules field 204 of the current entry 200 being processed. Element 312 
is then operable to determine whether the application of the rules in the 
rules field 204 resulted in recognition of the received packet. If the 
application of the rules field 204 by operation of element 310 resulted in 
recognition of a valid packet, then processing continues with element 314 
discussed below, otherwise processing continues by looping back to element 
302 to evaluate other entries 200 in the filtration table 102. 
If the packet mask 202 and rules field 204 of the current entry 200 being 
processed recognize the received packet, then element 314 is next operable 
to determine whether the packet was already recognized by application of 
the mask and rules of another entry 200 in the filtration table 102. 
Specifically, element 314 tests the local flag variable, RECOGNIZED to 
determine whether an earlier entry processed by elements 302-320 already 
recognized the packet as valid. If the packet was already recognized by 
processing of an earlier entry 200 in filtration table 102, then 
processing continues with element 320 discussed below. Otherwise, element 
316 is operable to set the local flag variable RECOGNIZED to boolean TRUE 
to indicate that the received packet has now been recognized. Element 318 
is then operable to pass the received packet on to the recognized packet 
processor element 108 of FIG. 1 to further process the received packet. 
Element 320 is next operable to perform all actions defined by the actions 
field 206 of the current entry 200 of the filtration table 102. As noted 
above, the actions field 206 of the entry 200 defines actions to performed 
automatically in response to the recognition of a valid received packet. 
Exemplary of such actions may be the automatic generation and transmission 
of a reply packet in response to the recognition of a valid received 
packet. Processing of the method of the present invention then continues 
by looping back to element 302 to process other entries in the filtration 
which may recognize the received packet. Although only one entry 200 in 
the filtration table 102 need recognize the received packet to permit the 
packet to be passed on to the recognized packet processor element 108 for 
further processing, each entry 200 in the filtration table is processed to 
assure performance of all automatic actions defined by the actions field 
of each entry which recognizes the received packet. 
One of ordinary skill in the art will recognize many variations of the 
methods described above with respect to FIGS. 2 and 3. For example, the 
specific data structure used to represent fields in the various entries 
200 as well as the data structures used to store entries 200 in filtration 
table 102 may be varied widely within the intended scope of protection of 
the present invention. One of ordinary skill will readily recognize many 
equivalent data structures and variations in the method to provide the 
same function and result, namely recognizing received packets while 
providing flexibility through the use of a modifiable filtration table 
structure. 
FIGS. 4 and 5 depict a variation of the structures and methods depicted and 
described by FIGS. 2 and 3 as applied to Fibre Channel communications. In 
standard Fibre Channel communication, information exchange is framed by 32 
bit words called "ordered sets." Ordered sets provide control information 
pertaining to the Fibre Channel protocols operable over the link medium. 
Ordered sets are 32 bit values encoded into 40 bit values using the well 
known 8b/10b encoding methods. Valid values for Fibre Channel ordered sets 
are sparsely distributed through the range of possible values of the 32 
bit word. 
FIG. 4 depicts an exemplary structure of an entry 400 in a filtration table 
102 of FIG. 1 adapted to represent information required to recognize valid 
ordered sets received from a Fibre Channel transmission node. Entry 400 is 
similar in overall structure to the more general structure depicted in 
FIG. 2. Ordered set mask field 402, like packet mask field 202, is used to 
determined that a received ordered set is potentially recognized depending 
upon the application of the protocol specific rules. As above, the ordered 
set mask field 402 may be implemented by a relevance bit mask to isolate 
relevant bits from the received ordered set. Also as above, an expected 
value is compared against the isolated relevant bits to recognize the 
received ordered set. The sequence field 404, similar to the rules field 
204 described above, defines a Fibre Channel protocol specific rule for 
further qualifying the recognition of a received ordered set. Some ordered 
sets, as defined by the Fibre Channel specification, require that a 
particular ordered set be received three times in sequence to be properly 
recognized by the receiving node. If set, the sequence field 404 indicates 
that the ordered set potentially recognized by application of the ordered 
set mask field 402 must be received three times in sequence to be properly 
recognized by the Fibre Channel receiving node. The fill field 406, if 
set, indicates to the transmission portion a new ordered set value is to 
be used as the current fill word. Like actions field 206 of FIG. 2, the 
fill field 406 defines an action applicable to Fibre Channel applications 
to be automatically initiated in response to the recognition of the 
corresponding ordered set. Count field 408 is used as discussed below in 
conjunction with the sequence field 404 to count the number of sequential 
receptions of a potentially recognized ordered set. The count field is 
incremented responsive to each reception of a particular ordered set if 
the sequence field 404 flag is set. When the count field 408 reaches a 
value of three (for example), the ordered set is recognized as valid for 
further processing. 
FIG. 5 is a flowchart describing the method of the present invention 
operable within packet recognition filter 106 of FIG. 1 to recognize valid 
ordered sets received from a Fibre Channel transmission source. The 
flowchart of FIG. 5 is similar to that of FIG. 3 but is adapted to process 
filtration table entries 400 as defined above to recognize valid ordered 
sets in a Fibre Channel receiving node. Element 500 is first operable in 
response to receipt of an ordered set to determine whether further entries 
400 remain to be processed in the filtration table 102. If all entries 400 
in the filtration table 102 have been evaluated and the received ordered 
set is not recognized, then the method of FIG. 5 is completed and the 
ordered set is not recognized as valid for further processing by the 
receiving node. If further entries 400 remain to be processed in the 
filtration table 102, then elements 500-512 are operable iteratively until 
all entries are processed or until an entry is encountered which 
recognizes the received ordered set as valid. 
Element 502 is next operable to retrieve the next entry 400 in the 
filtration table 102. Element 504 is then operable to apply the ordered 
set mask field 402 to the received ordered set to determine whether the 
received ordered set is potentially recognizable by the receiving node as 
valid for further processing. As above, the application of the ordered set 
mask 402 may include the bitwise AND'ing and comparison of the ordered set 
to determine if relevant bits in the ordered set are set to expected 
values. Element 506 is then operable to determine if the application of 
the ordered set mask by operation of element 504 results in potential 
recognition of a valid ordered set. If the received ordered set is not 
recognized by application of the ordered set mask field 402, then 
processing continues by looping back to element 500 to process other 
entries 400 in the filtration table 102. 
If elements 504 and 506 potentially recognize the received ordered set by 
application of the ordered set mask field 402, element 508 is then 
operable to determine if the sequence flag field 404 is set for the 
corresponding entry 400 in the filtration table 102. If the sequence flag 
field 404 is not set, processing continues with element 516, discussed 
below, to process the valid recognized ordered set. If the sequence flag 
field 404 is set, the element 510 is next operable to increment the count 
field 408 of the entry 400 being processed. If element 512 next determines 
that the received ordered set has not yet been received three times in 
sequence, then processing continues by looping back to element 500 to 
process other entries 400 in the filtration table 102. If the received 
ordered set has now been received three time as determine by element 512, 
then processing continues with element 514 operable to reset the count 
field 408 to zero in preparation for recognition of another ordered set. 
Elements 516-520 are next operable in response to recognition of a valid 
received ordered set. In particular, element 516 is operable to determine 
whether the fill action flag field 406 is set in the entry 404 currently 
being processed. If the fill flag field 406 is set, then processing 
continues with element 518 to alter the fill ordered set value for the 
transmission portion. Processing then continues with element 520 to pass 
the valid, recognized ordered set on to the recognized packet processor 
element 108 of FIG. 1 for further processing of the recognized ordered 
set. 
One of ordinary skill in the art will recognize many variations of the 
methods described above with respect to FIGS. 4 and 5. For example, the 
specific data structure used to represent fields in the various entries 
400 as well as the data structures used to store entries 400 in filtration 
table 102 may be varied widely within the intended scope of protection of 
the present invention. One of ordinary skill will readily recognize many 
equivalent data structures and variations in the method to provide the 
same function and result, namely recognizing ordered sets received from a 
Fibre Channel transmission source while providing flexibility through the 
use of a modifiable filtration table structure. 
FIG. 6 depicts an exemplary register file shown as packet generator 
parameters 110 of FIG. 1. Ordered set word register 612 is programmed to 
the desired 32 bit ordered set data word by the generator of the ordered 
set (for example a host computer system 120 of FIG. 1 or the packet 
processor element 108 of FIG. 1). Parameter register 600 of FIG. 6 
provides a plurality of programmable bits useful in a Fibre Channel 
communication node for automated control of the generation of ordered sets 
(or generation of other packets in other packetized communication 
systems). The SC bit field 602 of parameter register 600 indicates that 
the transmitter is to transmit the provided ordered set word (in register 
612) continuously. The SF bit field 604 indicates that the provided 
ordered set word is to be transmitted continuously until the same ordered 
set word is received at the receiving node (unaltered) in a loop topology. 
The SA bit field 606 indicates that the provided ordered set word is to be 
transmitted once, and the operation completed when the transmitted word is 
received (unaltered) by the receiving node in a loop topology. The S3 bit 
field 608 and the S1 bit field 610 indicate, respectively, that the 
provided ordered set word be transmitted three times and one time. These 
parameter register 600 control bits are programmed by the generator of the 
ordered set word along with the ordered set word 612 register to control 
automated transmission of the desired ordered set word according to rules 
of the Fibre Channel protocol. One of ordinary skill in the art will 
readily recognize that the particular control bit fields are peculiar to 
the particular communication protocol implemented within the receiving 
node. 
While the invention has been illustrated and described in detail in the 
drawings and foregoing description, such illustration and description is 
to be considered as exemplary and not restrictive in character, it being 
understood that only the preferred embodiment and minor variants thereof 
have been shown and described and that all changes and modifications that 
come within the spirit of the invention are desired to be protected.