Patent Publication Number: US-8112519-B1

Title: Systems and methods for updating defined band ranges while maintaining backward compatibility

Description:
BACKGROUND 
     The use of computer systems and computer-related technologies continues to increase at a rapid pace. This increased use of computer systems has influenced the advances made to computer-related technologies. Indeed, computer systems have increasingly become an integral part of the business world and the activities of individual consumers. Computer systems may be used to carry out several business, industry, and academic endeavors. 
     Some computer systems may be data providers and other computer systems may be data requesters. The data providers may maintain information about data and provide this information to the data requesters. For example, a computer system may request information about a particular data file. A data provider may receive this request and supply the requested information. Bands of values may be used to provide the information to the data requester. 
     Information received from a data provider may be used to carry out malicious activities that may be harmful to the data provider or other computer systems. For this reason, a form of data hiding may be implemented when information is sent from a data provider to a data requester. Implementing data hiding prevents the data provider from revealing more data than needed to eavesdropping parties. Bands (i.e., segments of a range) have been used to hide data. Current methods of using bands to hide data, however, lack backward compatibility as additional data requesters begin to request data. In addition, current data providers do not update current data hiding information as these additional data requesters begin to request data. As such, benefits may be realized by providing improved systems and methods for updating defined band ranges while maintaining backward compatibility. 
     SUMMARY 
     A computer-implemented method for updating defined band ranges and maintaining backward compatibility of previously defined band ranges is described. A first band set that includes a first set of defined band ranges is received. A first map that includes the first set of defined band ranges is created. An intermediate integer is assigned to each defined band range in the first set. A second band set that includes a second set of defined band ranges is received. A second map that includes the second set of defined band ranges is created. The assignment of ranges to an intermediate integer is updated so as to support both the first set and the second set of defined band ranges. 
     In one embodiment, a first intermediate integer map may be created that includes the first set of defined band ranges. A range of intermediate integers may be assigned to each of the first set of defined band ranges. The first intermediate integer map may be transmitted to the first client. 
     In one example, a second intermediate integer map may be created that includes the second set of defined band ranges. A range of intermediate integers may be assigned to each of the second set of defined band ranges. The second intermediate integer map may be transmitted to the second client. 
     In one embodiment, assigning an intermediate integer to the second set of defined band ranges comprises maintaining backward compatibility with the intermediate integers assigned to the first set of defined band ranges. An intermediate integer may be transmitted to the first client and the second client. The first client may interpret the intermediate integer according to the first intermediate integer map, and the second client may interpret the intermediate integer according to the second intermediate integer map. 
     A computer system configured to update defined band ranges and maintain backward compatibility of previously defined band ranges is also described. The system may include a processor and memory in electronic communication with the processor. The processor may be configured to receive a first band set that includes a first set of defined band ranges, and create a first map that includes the first set of defined band ranges. The processor may also be configured to assign an intermediate integer to each of the defined band ranges in the first set, and receive a second band set that includes a second set of defined band ranges. The processor may be further configured to create a second map that includes the second set of defined band ranges, and update the assignment of ranges to an intermediate integer so as to support both the first set and the second set of defined band ranges. 
     A computer-program product for updating defined band ranges and maintaining backward compatibility of previously defined band ranges is also described. The computer-program product may include a computer-readable medium having instructions thereon. The instructions may include code programmed to receive a first band set that includes a first set of defined band ranges, and create a first map that includes the first set of defined band ranges. The instructions may include code programmed to assign an intermediate integer to each of the defined band ranges in the first set, and receive a second band set that includes a second set of defined band ranges. The instructions may include code programmed to create a second map that includes the second set of defined band ranges, and update the assignment of ranges to an intermediate integer so as to support both the first set and the second set of defined band ranges. 
     Features from any of the above-mentioned embodiments may be used in combination with one another in accordance with the general principles described herein. These and other embodiments, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings illustrate a number of exemplary embodiments and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the instant disclosure. 
         FIG. 1  is a block diagram illustrating one embodiment of a client-server environment in accordance with the present systems and methods; 
         FIG. 2  is a block diagram illustrating one embodiment of a band set, a intermediate integer-to-band map, and an original value-to-intermediate integer map; 
         FIG. 3  is a block diagram illustrating another embodiment of a band set; 
         FIG. 4  is a block diagram illustrating another embodiment of an intermediate integer-to-band map; 
         FIG. 5  is a block diagram illustrating another embodiment of an original value-to-intermediate integer map; 
         FIG. 6  illustrates one example of a first band set; 
         FIG. 7  illustrates one example of a second band set; 
         FIG. 8  illustrates one example of a third band set; 
         FIG. 9  illustrates one example of a first intermediate integer-to-band map; 
         FIG. 10  illustrates one example of a second intermediate integer-to-band map; 
         FIG. 11  illustrates one example of a third intermediate integer-to-band map; 
         FIG. 12  is a block diagram illustrating one example of an original value-to-intermediate integer map; 
         FIG. 13  is a flow diagram illustrating one embodiment of a method for updated defined band ranges while maintaining backward compatibility of previously defined band ranges; 
         FIG. 13A  is a flow diagram illustrating another embodiment of a method for updating defined band ranges while maintaining backward compatibility; 
         FIG. 14  is a block diagram of an exemplary computing system capable of implementing one or more of the embodiments described and/or illustrated herein; and 
         FIG. 15  is a block diagram of an exemplary network architecture in which client systems and servers may be coupled to a network. 
     
    
    
     While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the particular forms disclosed. Rather, the instant disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims. 
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
     In one embodiment, data providers may provide information to a client. In one example, a data provider may communicate data to the client about a data file. Certain reputation-related data fields may be used to transmit this information from the data provider. The client may use this information in the reputation-related data fields to determine the characteristics of the file. For example, the information may indicate whether the file is malware. In one configuration, the reputation-related data field may be a band (i.e., range of values). 
     In some embodiments, the data provider may desire to communicate reputation-related data to a client without revealing the exact value of the data (i.e., data hiding). A form of data hiding may be implemented so as to not reveal too much information to competitors or to those wishing to game the system about the data maintained by the data provider. Data hiding might also prevent revealing how certain algorithms of the data provider are implemented. In order to avoid revealing the exact value of the data, defined bands (i.e., ranges of values) may be provided. These bands may represent a continuous range of the original value of the data field. 
     Currently, data hiding schemes that use bands cannot guarantee that the set of defined bands will meet the needs of various clients. For example, future clients may desire different information that is not represented by the current set of defined band sets. As such, the present systems and methods allow the data provider the ability to update or segment band sets at a later date while maintaining backward compatibility for existing consumers. 
       FIG. 1  is a block diagram illustrating one embodiment of a client-server environment  100  in accordance with the present systems and methods. In one example, server  110  may communicate with one or more clients  102 A,  102 B,  102 C over a network connection  120 . The server  110  may be a back-end data provider. The clients  102 A,  102 B,  102 C may be a personal computer, laptop, personal digital assistant (PDA), mobile computing device, mobile communications device, or any other sort of computing device. While only three clients  102 A,  102 B,  102 C are illustrated, more or less than three clients may communicate with the server  110 . 
     In one configuration, the server  110  may include a first band set  114 , a second band set  116 , and a third band set  118 . Each of the band sets  114 ,  116 ,  118  may be associated with a particular client  102 A,  102 B,  102 C, respectively. In another embodiment, multiple clients  102 A,  102 B,  102 C may use any given band set  114 ,  116 ,  118 . The band sets  114 ,  116 ,  118  may include different sets of defined bands. The definitions may be provided by the clients  102 A,  102 B,  102 C. In one embodiment, the server  110  may provide information to the clients  102 A,  102 B,  102 C in accordance with the definitions set forth in the band sets  114 ,  116 ,  118 . Details regarding the band sets will be further described below. 
     The server  110  may also include an original value-to-intermediate integer map  112 . In one example, an original value may represent the actual value associated with a particular piece of data. The original value may be mapped to an intermediate integer in order to implement a form of data hiding. The original value-to-intermediate integer map  112  may provide the correlation between the original value and an intermediate integer. 
     In one example, the server  110  may provide information about a certain piece of data to a client through the use of an intermediate integer. In other words, the intermediate integer may be transmitted to the client instead of the original value. Each client  102 A,  102 B,  102 C may include an intermediate integer-to-band map  104 ,  106 ,  108 , respectively. The intermediate integer-to-band maps  104 ,  106 ,  108  may indicate which definition included in a band set is represented by the received intermediate integer. Details regarding the intermediate integer-to-band maps  104 ,  106 ,  108  will also be described in more detail below. 
       FIG. 2  is a block diagram illustrating one embodiment of a band set  230 , a intermediate integer-to-band map  240 , and an original value-to-intermediate integer map  250 . In one configuration, the band set  230  may include a band label  232  and a band range  234 . The range  234  may define a range of possible characteristics associated with a piece of data. The band label  232  may be a label (or name) assigned to each band range  234 . The band set  230  may include one or more occurrences of a band label  232  and a band range  234 . The server  110  may store a band set  230  for each client  102 A,  102 B,  102 C. 
     In one embodiment, the intermediate integer-to-band map  240  may include the band label  232  and an intermediate integer range  242 . The band label  232  may be similar to the band labels  232  included in the band set  230 . In one configuration, the intermediate integer range  242  may be a predetermined range of numbers, letters, etc. In one example, each intermediate integer range  242  may be assigned a band label  232 . The integer-to-band map  240  may include one or more occurrences of a band label  232  and an intermediate integer range  242 . Each client  102 A,  102 B,  102 C may include an intermediate integer-to-band map  240 . 
     The original value-to-intermediate integer map  250  may include an original value (OV) range  252  and an intermediate integer  254 . In one embodiment, a single OV range  252  may include the definition of a single band range  234 . The original value-to-intermediate integer map  250  may include more than one occurrence of an OV range  252  and an intermediate integer  254 . 
     The intermediate integer  254  may be a particular value associated with the OV range  252 . The intermediate integer  254  may fall within the intermediate integer range  242 . In one example, the original value-to-intermediate integer map  250  may be updated when a client provides a new band set  230 . For example, a new client may provide a new band set  230  that includes band ranges  234  and band labels  232  that are different from previously received band sets  230 . The original value range  252  may be updated to include these new band ranges  234 . In addition, an intermediate integer  254  may be assigned to these new original value ranges  252 . 
       FIG. 3  is a block diagram illustrating one embodiment of a band set  330 . As shown, the band set  330  may include a plurality of band labels  332  and a plurality of band ranges  334 . Each client  102  may be associated with a particular band set  330 . For example, a first client  102 A may define five different band ranges in the band set  330 , such as band range A  334 A, band range B  334 B, band range C  334 C, band range D  334 D, and band range E  334 E. A band label  332  may be associated with each band range  334 . Additional clients (such as clients  102 B,  102 C) may define more (or less) than the band ranges defined by the first client  102 A. 
       FIG. 4  is a block diagram illustrating one embodiment of an intermediate integer-to-band map  440 . The map  440  may be associated with a particular band set, such as the band set  330  described in  FIG. 3 . For example, the map  440  may include a plurality of intermediate integer ranges  442 . Each of the ranges  442 A,  442 B,  442 C,  442 C,  442 D,  442 E may be associated with a corresponding band label  432 A,  432 B,  432 C,  432 D,  432 E. The band labels  432  may correspond to the band labels  332  of the band set  330 . In one embodiment, each client  102 A,  102 B,  102 C may store a unique intermediate integer-to-band map  440 . 
       FIG. 5  is a block diagram illustrating one embodiment of an original value-to-intermediate integer map  550 . The map  550  may include a plurality of original value ranges  552 . Each range  552  may be assigned an intermediate integer  554 . In one embodiment, each range  552  may include the definition of each band range  334  of a band set  330 . Each intermediate integer  554  may be a particular value associated with each original value range  552 . In one embodiment, each intermediate integer  554  may fall within one of the intermediate integer ranges  442  of the intermediate integer-to-band map  440 . In one example, the original value-to-intermediate integer map  550  may be updated when a client provides a new band set. For example, a new client may provide a new band set that includes band ranges that are different from previously received band sets. The original value ranges  552  may be updated to include these new band ranges. In addition, new intermediate integers  554  may be assigned to these new original value ranges  552 . 
       FIGS. 6-8  are block diagrams illustrating one possible embodiment of the first band set  114 , the second band set  116 , and the third band set  118 , respectively.  FIG. 6  illustrates one example of the first band set  114  illustrated in  FIG. 1 . The first band set  114  may be associated with a first client  102 A. In one embodiment, the band set  114  may include a plurality of band labels  632  and a plurality of band ranges  634 . In this particular example, the band set  114  may indicate how the first client  102 A desires to define the age of a particular data file. For example, a file that satisfies the band range  634  “less than one day old” may be assigned the band label  632  “BrandNew.” A data file that satisfies the band range  634  “at least one day old and less than 7 days old” may be assigned the band label  632  “DaysAgo.” The first client  102 A may provide the first band set  114  to the server  110 , and the server  110  may store such band set  114 . 
       FIG. 7  illustrates one example of the second band set  116  illustrated in  FIG. 1 . The second band set  116  may be associated with a second client  102 B. In one embodiment, the band set  116  may include a plurality of band labels  732  and a plurality of band ranges  734 . In this example, the second band set  116  may indicate how the second client  102 B desires to define the age of a particular data file. For example, a file that satisfies the band range  734  “less than one day old” may be assigned the band label  732  “BrandNew.” A data file that satisfies the band range  734  “at least one day old and less than 7 days old” may be assigned the band label  732  “DaysAgo.” The second band set  116 , however, differs from the first band set  114  described in  FIG. 6 . For example, the second band set  116  includes the band label  732  “QuartersAgo” which is defined by the band range  734  “at least 90 days old and less than 540 days old.” In the example second band set  116 , the band ranges  734  that define “MonthsAgo” and “YearsAgo” are also different from the band ranges  634  in the first band set  114 . 
       FIG. 8  illustrates one example of the third band set  118  illustrated in  FIG. 1 . The third band set  118  may be associated with a third client  102 C. In one embodiment, the band set  118  may include a plurality of band labels  832  and a plurality of band ranges  834 . In this example, the third band set  118  may indicate how the third client  102 C desires to define the age of a particular data file. For example, a file that satisfies the band range  834  “less than 180 days old” may be assigned the band label  832  “New.” A data file that satisfies the band range  834  “at least 180 days old” may be assigned the band label  832  “Old.” As illustrated, the third band set  118  differs from the first band set  114  and the second band set  116 . 
       FIGS. 9-11  are block diagrams illustrating possible examples of an intermediate integer-to-band map. For example,  FIG. 9  illustrates one embodiment of a first map  104  that may be stored on the first client  102 A. The first map  104  may include a plurality of intermediate integer ranges  942  and associated band labels  932 . The band labels  932  of the map  104  may be similar to the band labels  632  provided in the first band set  114 . In one example, the first client  102 A may use the map  104  to determine the appropriate label to assign a data file based on the intermediate integer received from the server  110 . For example, the first client  102 A may query the server  110  about the age of a data file. The server  110  may return an intermediate integer with the value “80.” The first client  102 A may use the map  104  and determine that “80” falls with the range  942  corresponding to the band label  932  “DaysAgo.” In one embodiment, the server  110  maintains data hiding by not revealing to the first client  102 A the actual value associated with the age of the data file. Instead, the server  110  uses the first band set  114  to provide intermediate integer that is within a range  942  corresponding to the correct band label  932 . 
       FIG. 10  illustrates one embodiment of a second intermediate integer-to-band map  106  that may be stored on the second client  102 B. The second map  106  may include a plurality of intermediate integer ranges  1042  and associated band labels  1032 . The band labels  1032  of the map  106  may be similar to the band labels  732  provided in the second band set  116 . In one example, the second client  102 B may use the map  106  to determine the appropriate label to assign a data file based on the intermediate integer received from the server  110 . For example, the second client  102 B may query the server  110  about the age of a data file. The server  110  may return an intermediate integer with the value “190.” The second client  102 B may use the map  106  and determine that “190” falls with the range  1042  corresponding to the band label  1032  “QuartersAgo.” In one embodiment, the server  110  maintains a form of data hiding by not revealing to the second client  102 B the actual value associated with the age of the data file. Instead, the server  110  uses the second band set  116  to provide an intermediate integer that is within a range  1042  corresponding to the correct band label  1032 . 
       FIG. 11  illustrates one embodiment of a third intermediate integer-to-band map  108  that may be stored on the third client  102 C. The third map  108  may include a plurality of intermediate integer ranges  1142  and associated band labels  1132 . The band labels  1132  of the map  108  may be similar to the band labels  832  provided in the third band set  118 . In one example, the third client  102 C may use the map  108  to determine the appropriate label to assign a data file based on the intermediate integer received from the server  110 . For example, the third client  102 C may query the server  110  about the age of a data file. The server  110  may return an intermediate integer with the value “200.” The third client  102 C may use the map  108  to determine that “200” falls with the range  1142  corresponding to the band label  1132  “Old.” In one embodiment, the server  110  maintains a form of data hiding by not revealing to the third client  102 C the actual value associated with the age of the data file. Instead, the server  110  uses the third band set  118  to provide an intermediate integer that is within a range  1142  corresponding to the correct band label  1132 . 
       FIG. 12  is a block diagram illustrating one embodiment of an original value-to-intermediate integer map  1250  in accordance with the examples provided in  FIGS. 6-11 . The map  1250  may include a plurality of original value ranges  1252 . These ranges  1252  may include each band range  234  of the different band sets (for example the first band set  114 , the second band set  116 , and the third band set  118 ). The map  1250  may also include a plurality of intermediate integers  1254 . In one embodiment, each range  1252  may be assigned one of the plurality  1254  of intermediate integer values. Also shown in  FIG. 12  are the band labels  942 ,  1042 ,  1142  corresponding to each intermediate integer-to-band map  940 ,  1040 ,  1140 . In other words, the band labels  942 ,  1042 ,  1142  indicate how each client  102 A,  102 B,  102 C, respectively, may interpret a specific intermediate integer  1254 . 
     In one example, the band range  1252  with the definition “less than one day old” may be assigned the intermediate integer “25.” The first client  102 A may use the first intermediate integer-to-band map  104  to assign the band label  942  “BrandNew.” The second client  102 B may use the second intermediate integer-to-band map  106  to assign the band label  1042  “BrandNew” if an intermediate integer of “25” is received. Similarly, the third client  102 C may use the third intermediate integer-to-band map  108  to assign the band label  1142  “New” if an intermediate integer of “25” is received. 
     In another example, the band range  1252  with the definition “At least 365 days old and less than 540 days old” may be assigned the intermediate integer “205.” The first client  102 A may use the first intermediate integer-to-band map  104  to assign the band label  942  “YearsAgo.” The second client  102 B may use the second intermediate integer-to-band map  106  to assign the band label  1042  “QuartersAgo.” Similarly, the third client  102 C may use the third intermediate integer-to-band map  108  to assign the band label  1142  “Old” if an intermediate integer of “205” is received. 
     In one embodiment, the original value-to-intermediate integer map  1250  may be modified if a new band range is received. For example, a fourth client may provide a fourth band set to the server  110  that includes new band ranges that are not currently included on the original value-to-intermediate integer map  1250 . The map  1250  may be modified to include these new ranges. In addition, the modifications to the map  1250  may be such that the intermediate integer-to-band maps  104 ,  106 ,  108  currently stored on the first, second, and third clients  102 A,  102 B,  102 C are still true. In other words, the map  1250  may be modified such that the new band ranges do not prevent backward compatibility with already existing intermediate integer-to-band maps. 
       FIG. 13  is a flow diagram illustrating one embodiment of a method  1300  for updating defined band ranges while maintaining backward compatibility of previously defined band ranges. The method  1300  may be implemented by the server  110 . In one embodiment, a first band set that includes a first set of defined band ranges may be received  1302 . A first map may be created  1304  that includes the first set of defined band ranges. In one configuration, an intermediate integer may be assigned  1306  to each defined band range included in the first set. 
     In one example, a second band set may be received  1308  that includes a second set of defined band ranges. A second map may be created  1310 . In one embodiment, the second map updates the second set of defined band ranges. In addition, the assignment of an intermediate integer may be updated  1312 . The assignment of the intermediate integer may be updated  1312  so that the first set and the second set of defined band ranges are both supported. 
       FIG. 13A  is a flow diagram illustrating another embodiment of a method  1301  for updating defined band ranges while maintaining backward compatibility. In one configuration, the method  1301  may be implemented by the server  110 . In one example, a band set that includes a definition of band ranges may be received and analyzed  1303 . An intermediate integer-to-band set map may be created  1305  based on the analysis. In one example, the map may be transmitted  1307  to a client. 
     In one configuration, an original value-to-intermediate integer map may be created  1309 . The map may include each definition of band ranges included in the band set. In addition, the map may include an intermediate integer assigned to each definition of band ranges. In one example, the intermediate integer may be transmitted  1311  to the client. A determination  1313  may be made as to whether an additional band set is received. If an additional band set is received, the original value-to-intermediate integer map may be updated  1315 . For example, the map may be updated  1315  to include the defined band ranges that may be included in the additional band set. In addition, an additional intermediate integer-to-band set map may be created  1317 . This additional map may be transmitted  1319  to a client that sent the additional band set. If it is determined  1313  that an additional band set is not received, the method  1301  may continue to transmit  1311  an intermediate integer to the client based on queries received from the client. 
       FIG. 14  is a block diagram of an exemplary computing system  1410  capable of implementing one or more of the embodiments described and/or illustrated herein. Computing system  1410  broadly represents any single or multi-processor computing device or system capable of executing computer-readable instructions. Examples of computing system  1410  include, without limitation, workstations, laptops, client-side terminals, servers, distributed computing systems, handheld devices, or any other computing system or device. In its most basic configuration, computing system  710  may comprise at least one processor  1414  and system memory  1416 . 
     Processor  1414  generally represents any type or form of processing unit capable of processing data or interpreting and executing instructions. In certain embodiments, processor  1414  may receive instructions from a software application or module. These instructions may cause processor  1414  to perform the functions of one or more of the exemplary embodiments described and/or illustrated herein. For example, processor  1414  may perform and/or be a means for performing, either alone or in combination with other elements, one or more of the receiving, creating, assigning, and updating steps described herein. Processor  1414  may also perform and/or be a means for performing any other steps, methods, or processes described and/or illustrated herein. 
     System memory  1416  generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and/or other computer-readable instructions. Examples of system memory  1416  include, without limitation, random access memory (RAM), read only memory (ROM), flash memory, or any other suitable memory device. Although not required, in certain embodiments computing system  1410  may comprise both a volatile memory unit (such as, for example, system memory  1416 ) and a non-volatile storage device (such as, for example, primary storage device  1432 , as described in detail below). 
     In certain embodiments, exemplary computing system  1410  may also comprise one or more components or elements in addition to processor  1414  and system memory  1416 . For example, as illustrated in  FIG. 14 , computing system  1410  may comprise a memory controller  1418 , an Input/Output (I/O) controller  1420 , and a communication interface  1422 , each of which may be interconnected via a communication infrastructure  1412 . Communication infrastructure  1412  generally represents any type or form of infrastructure capable of facilitating communication between one or more components of a computing device. Examples of communication infrastructure  1412  include, without limitation, a communication bus (such as an ISA, PCI, PCIe, or similar bus) and a network. 
     Memory controller  1418  generally represents any type or form of device capable of handling memory or data or controlling communication between one or more components of computing system  1410 . For example, in certain embodiments memory controller  1418  may control communication between processor  1414 , system memory  1416 , and I/O controller  1420  via communication infrastructure  1412 . In certain embodiments, memory controller  1418  may perform and/or be a means for performing, either alone or in combination with other elements, one or more of the steps or features described and/or illustrated herein, such as receiving, creating, assigning, and updating. 
     I/O controller  1420  generally represents any type or form of module capable of coordinating and/or controlling the input and output functions of a computing device. For example, in certain embodiments I/O controller  1420  may control or facilitate transfer of data between one or more elements of computing system  1410 , such as processor  1414 , system memory  1416 , communication interface  1422 , display adapter  1426 , input interface  1430 , and storage interface  1434 . I/O controller  1420  may be used, for example, to perform and/or be a means for receiving, creating, assigning, and updating steps described herein. I/O controller  1420  may also be used to perform and/or be a means for performing other steps and features set forth in the instant disclosure. 
     Communication interface  1422  broadly represents any type or form of communication device or adapter capable of facilitating communication between exemplary computing system  1410  and one or more additional devices. For example, in certain embodiments communication interface  1422  may facilitate communication between computing system  1410  and a private or public network comprising additional computing systems. Examples of communication interface  1422  include, without limitation, a wired network interface (such as a network interface card), a wireless network interface (such as a wireless network interface card), a modem, and any other suitable interface. In at least one embodiment, communication interface  1422  may provide a direct connection to a remote server via a direct link to a network, such as the Internet. Communication interface  1422  may also indirectly provide such a connection through, for example, a local area network (such as an Ethernet network or a wireless IEEE 802.11 network), a personal area network (such as a BLUETOOTH or IEEE Standard 802.15.1-2002 network), a telephone or cable network, a cellular telephone connection, a satellite data connection, or any other suitable connection. 
     In certain embodiments, communication interface  1422  may also represent a host adapter configured to facilitate communication between computing system  1410  and one or more additional network or storage devices via an external bus or communications channel. Examples of host adapters include, without limitation, SCSI host adapters, USB host adapters, IEEE 1394 host adapters, SATA and eSATA host adapters, ATA and PATA host adapters, Fibre Channel interface adapters, Ethernet adapters, or the like. Communication interface  1422  may also allow computing system  1410  to engage in distributed or remote computing. For example, communication interface  1422  may receive instructions from a remote device or send instructions to a remote device for execution. In certain embodiments, communication interface  1422  may perform and/or be a means for performing, either alone or in combination with other elements, one or more of the receiving, creating, assigning, and updating steps disclosed herein. Communication interface  1422  may also be used to perform and/or be a means for performing other steps and features set forth in the instant disclosure. 
     As illustrated in  FIG. 14 , computing system  1410  may also comprise at least one display device  1424  coupled to communication infrastructure  1412  via a display adapter  1426 . Display device  1424  generally represents any type or form of device capable of visually displaying information forwarded by display adapter  1426 . Similarly, display adapter  1426  generally represents any type or form of device configured to forward graphics, text, and other data from communication infrastructure  1412  (or from a frame buffer, as known in the art) for display on display device  1424 . 
     As illustrated in  FIG. 14 , exemplary computing system  1410  may also comprise at least one input device  1428  coupled to communication infrastructure  1412  via an input interface  1430 . Input device  1428  generally represents any type or form of input device capable of providing input, either computer or human generated, to exemplary computing system  1410 . Examples of input device  1428  include, without limitation, a keyboard, a pointing device, a speech recognition device, or any other input device. In at least one embodiment, input device  1428  may perform and/or be a means for performing, either alone or in combination with other elements, one or more of the receiving, creating, assigning, and updating steps disclosed herein. Input device  1428  may also be used to perform and/or be a means for performing other steps and features set forth in the instant disclosure. 
     As illustrated in  FIG. 14 , exemplary computing system  1410  may also comprise a primary storage device  1432  and a backup storage device  1433  coupled to communication infrastructure  1412  via a storage interface  1434 . Storage devices  1432  and  1433  generally represent any type or form of storage device or medium capable of storing data and/or other computer-readable instructions. For example, storage devices  1432  and  1433  may be a magnetic disk drive (e.g., a so-called hard drive), a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash drive, or the like. Storage interface  1434  generally represents any type or form of interface or device for transferring data between storage devices  1432  and  1433  and other components of computing system  1410 . 
     In certain embodiments, storage devices  1432  and  1433  may be configured to read from and/or write to a removable storage unit configured to store computer software, data, or other computer-readable information. Examples of suitable removable storage units include, without limitation, a floppy disk, a magnetic tape, an optical disk, a flash memory device, or the like. Storage devices  1432  and  1433  may also comprise other similar structures or devices for allowing computer software, data, or other computer-readable instructions to be loaded into computing system  1410 . For example, storage devices  1432  and  1433  may be configured to read and write software, data, or other computer-readable information. Storage devices  1432  and  1433  may also be a part of computing system  1410  or may be a separate device accessed through other interface systems. 
     Storage devices  1432  and  1433  may also be used, for example, to perform and/or be a means for performing, either alone or in combination with other elements, one or more of the receiving, creating, assigning, and updating steps disclosed herein. Storage devices  1432  and  1433  may also be used to perform and/or be a means for performing other steps and features set forth in the instant disclosure. 
     Many other devices or subsystems may be connected to computing system  1410 . Conversely, all of the components and devices illustrated in  FIG. 14  need not be present to practice the embodiments described and/or illustrated herein. The devices and subsystems referenced above may also be interconnected in different ways from that shown in  FIG. 14 . Computing system  1410  may also employ any number of software, firmware, and/or hardware configurations. For example, one or more of the exemplary embodiments disclosed herein may be encoded as a computer program (also referred to as computer software, software applications, computer-readable instructions, or computer control logic) on a computer-readable medium. The phrase “computer-readable medium” generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and physical media, such as magnetic-storage media (e.g., hard disk drives and floppy disks), optical-storage media (e.g., CD- or DVD-ROMs), electronic-storage media (e.g., solid-state drives and flash media), and other distribution systems. 
     The computer-readable medium containing the computer program may be loaded into computing system  1410 . All or a portion of the computer program stored on the computer-readable medium may then be stored in system memory  1416  and/or various portions of storage devices  1432  and  1433 . When executed by processor  1414 , a computer program loaded into computing system  1410  may cause processor  1414  to perform and/or be a means for performing the functions of one or more of the exemplary embodiments described and/or illustrated herein. Additionally or alternatively, one or more of the exemplary embodiments described and/or illustrated herein may be implemented in firmware and/or hardware. For example, computing system  1410  may be configured as an application specific integrated circuit (ASIC) adapted to implement one or more of the exemplary embodiments disclosed herein. 
       FIG. 15  is a block diagram of an exemplary network architecture  1500  in which client systems  1510 ,  1520 , and  1530  and servers  1540  and  1545  may be coupled to a network  1550 . Client systems  1510 ,  1520 , and  1530  generally represent any type or form of computing device or system, such as exemplary computing system  1410  in  FIG. 14 . Similarly, servers  1540  and  1545  generally represent computing devices or systems, such as application servers or database servers, configured to provide various database services and/or to run certain software applications. Network  1550  generally represents any telecommunication or computer network; including, for example, an intranet, a wide area network (WAN), a local area network (LAN), a personal area network (PAN), or the Internet. 
     As illustrated in  FIG. 15 , one or more storage devices  1560 ( 1 )-(N) may be directly attached to server  1540 . Similarly, one or more storage devices  1570 ( 1 )-(N) may be directly attached to server  1545 . Storage devices  1560 ( 1 )-(N) and storage devices  1570 ( 1 )-(N) generally represent any type or form of storage device or medium capable of storing data and/or other computer-readable instructions. In certain embodiments, storage devices  1560 ( 1 )-(N) and storage devices  1570 ( 1 )-(N) may represent network-attached storage (NAS) devices configured to communicate with servers  1540  and  1545  using various protocols, such as NFS, SMB, or CIFS. 
     Servers  1540  and  1545  may also be connected to a storage area network (SAN) fabric  1580 . SAN fabric  1580  generally represents any type or form of computer network or architecture capable of facilitating communication between a plurality of storage devices. SAN fabric  1580  may facilitate communication between servers  1540  and  1545  and a plurality of storage devices  1590 ( 1 )-(N) and/or an intelligent storage array  1595 . SAN fabric  1580  may also facilitate, via network  1550  and servers  1540  and  1545 , communication between client systems  1510 ,  1520 , and  1530  and storage devices  1590 ( 1 )-(N) and/or intelligent storage array  1595  in such a manner that devices  1590 ( 1 )-(N) and array  1595  appear as locally attached devices to client systems  1510 ,  1520 , and  1530 . As with storage devices  1560 ( 1 )-(N) and storage devices  1570 ( 1 )-(N), storage devices  1590 ( 1 )-(N) and intelligent storage array  1595  generally represent any type or form of storage device or medium capable of storing data and/or other computer-readable instructions. 
     In certain embodiments, and with reference to exemplary computing system  1410  of  FIG. 14 , a communication interface, such as communication interface  1422  in  FIG. 14 , may be used to provide connectivity between each client system  1510 ,  1520 , and  1530  and network  1550 . Client systems  1510 ,  1520 , and  1530  may be able to access information on server  1540  or  1545  using, for example, a web browser or other client software. Such software may allow client systems  1510 ,  1520 , and  1530  to access data hosted by server  1540 , server  1545 , storage devices  1560 ( 1 )-(N), storage devices  1570 ( 1 )-(N), storage devices  1590 ( 1 )-(N), or intelligent storage array  1595 . Although  FIG. 15  depicts the use of a network (such as the Internet) for exchanging data, the embodiments described and/or illustrated herein are not limited to the Internet or any particular network-based environment. 
     In at least one embodiment, all or a portion of one or more of the exemplary embodiments disclosed herein may be encoded as a computer program and loaded onto and executed by server  1540 , server  1545 , storage devices  1560 ( 1 )-(N), storage devices  1570 ( 1 )-(N), storage devices  1590 ( 1 )-(N), intelligent storage array  1595 , or any combination thereof. All or a portion of one or more of the exemplary embodiments disclosed herein may also be encoded as a computer program, stored in server  1540 , run by server  1545 , and distributed to client systems  1510 ,  1520 , and  1530  over network  1550 . Accordingly, network architecture  1500  may perform and/or be a means for performing, either alone or in combination with other elements, one or more of the receiving, creating, assigning, and updating steps disclosed herein. Network architecture  1500  may also be used to perform and/or be a means for performing other steps and features set forth in the instant disclosure. 
     As detailed above, computing system  1410  and/or one or more of the components of network architecture  1500  may perform and/or be a means for performing, either alone or in combination with other elements, one or more steps of the exemplary methods described and/or illustrated herein. For example, computing system  1410  and/or one or more of the components of network architecture  1500  may perform and/or be a means for performing a computer-implemented method for updating defined band ranges and maintaining backward compatibility of previously defined band ranges that may comprise: 1) receiving a first band set that includes a first set of defined band ranges, 2) creating a first map that includes the first set of defined band ranges, 3) assigning an intermediate integer to each defined band range in the first set, 4) receiving a second band set that includes a second set of defined band ranges, 5) creating a second map that includes the second set of defined band ranges, and then 6) updating the assignment of an intermediate integer to support both the first set and the second set of defined band ranges. 
     While the foregoing disclosure sets forth various embodiments using specific block diagrams, flowcharts, and examples, each block diagram component, flowchart step, operation, and/or component described and/or illustrated herein may be implemented, individually and/or collectively, using a wide range of hardware, software, or firmware (or any combination thereof) configurations. In addition, any disclosure of components contained within other components should be considered exemplary in nature since many other architectures can be implemented to achieve the same functionality. 
     The process parameters and sequence of steps described and/or illustrated herein are given by way of example only and can be varied as desired. For example, while the steps illustrated and/or described herein may be shown or discussed in a particular order, these steps do not necessarily need to be performed in the order illustrated or discussed. The various exemplary methods described and/or illustrated herein may also omit one or more of the steps described or illustrated herein or include additional steps in addition to those disclosed. 
     Furthermore, while various embodiments have been described and/or illustrated herein in the context of fully functional computing systems, one or more of these exemplary embodiments may be distributed as a program product in a variety of forms, regardless of the particular type of computer-readable media used to actually carry out the distribution. The embodiments disclosed herein may also be implemented using software modules that perform certain tasks. These software modules may include script, batch, or other executable files that may be stored on a computer-readable storage medium or in a computing system. In some embodiments, these software modules may configure a computing system to perform one or more of the exemplary embodiments disclosed herein. 
     The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the spirit and scope of the instant disclosure. The embodiments disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the instant disclosure. 
     Unless otherwise noted, the terms “a” or “an,” as used in the specification and claims, are to be construed as meaning “at least one of” In addition, for ease of use, the words “including” and “having,” as used in the specification and claims, are interchangeable with and have the same meaning as the word “comprising.”