1. A method for generating an identifier having a specified format and uniquely associated with a storage device, the method comprising:
receiving, from the storage device, an identifier associated with the storage device and having a first format which differs from the specified format;
generating a data string having a predefined length from the identifier associated with the storage device and having the first format, the predefined length of the string determined from the specified format;
combining additional identification data with the data string having the predefined length;
generating the identifier having the specified format by reformatting the additional identification data and the data string having the predefined length according to one or more formatting parameters associated with the specified format; and
storing the identifier having the specified format in a computer-readable storage medium.
2. The method of claim 1 wherein the identifier associated with the storage device and having the first format which differs from the specified format comprises an AT Attachment (\u201cATA\u201d) serial number.
3. The method of claim 1 wherein the identifier having the specified format comprises a Network Address Authority (\u201cNAA\u201d) identifier.
4. The method of claim 1, wherein generating the data string having the predefined length from the identifier associated with the storage device and having the first format comprises:
applying a hash function to the identifier associated with the storage device and having the first format.
5. The method of claim 4, wherein applying the hash function to the identifier associated with the storage device and having the first format comprises:
identifying a first byte of the identifier associated with the storage device and having the first format;
logically shifting the first byte by a shift amount to produce a shifted first byte;
adding the shifted first byte to an accumulator value;
incrementing the shift amount by a specified value to generate an incremented shift amount;
identifying a second byte of the identifier;
logically shifting the second byte by the incremented shift amount to produce a shifted second byte; and
adding the shifted second byte to the accumulator value.
6. The method of claim 5, wherein incrementing the shift amount by the specified value to generate the incremented shift amount comprises:
responsive to the incremented shift amount exceeding a threshold value, initializing the incremented shift amount to an initial value.
7. The method of claim 5, further comprising:
generating the data string having the predefined length from a subset of the accumulator.
8. The method of claim 7, wherein the subset of the accumulator comprises a least-significant three bytes of the accumulator.
9. The method of claim 8, wherein the subset of the accumulator comprises a least-significant three bytes of the accumulator.
10. The method of claim 5, further comprising:
identifying an upper byte of the accumulator;
identifying a lower byte of the accumulator;
generating a modified lower byte by performing an exclusive-OR of the upper byte and the lower byte; and
generating the data string having the predefined length from a subset of the accumulator and the modified lower byte.
11. The method of claim 1, wherein the additional identification data comprises an Organizationally Unique Identifier (\u201cOUI\u201d) associated with an entity.
12. The method of claim 1, wherein the additional identification data comprises a type identifier associated with the specified format.
13. The method of claim 1, wherein reformatting the additional identification data and the data string having the predefined length according to one or more formatting parameters associated with the specified format comprises:
generating a data packet having a specified packet size and including specified data types.
14. The method of claim 13, wherein the specified packet size comprises eight bytes, and the specified data types comprise an Organizationally Unique Identifier, a type identifier associated with the specified format and the data string having the predefined length.
15. A computer readable storage medium storing a computer program product including instructions executable by a processor of a computing device to perform a computer-implemented method for generating an identifier having a specified format and uniquely associated with a storage device, the method comprising:
receiving, from the storage device, an identifier associated with the storage device and having a first format which differs from the specified format;
generating a data string having a predefined length from the identifier associated with the storage device and having the first format, the predefined length of the string determined from the specified format;
combining additional identification data with the data string having the predefined length;
generating the identifier having the specified format by reformatting the additional identification data and the data string having the predefined length according to one or more formatting parameters associated with the specified format; and
storing the identifier having the specified format in a computer-readable storage medium.
16. The computer readable storage medium of claim 15, wherein the identifier associated with the storage device and having the first format which differs from the specified format comprises an AT Attachment (\u201cATA\u201d) serial number.
17. The computer readable storage medium of claim 15, wherein the identifier having the specified format comprises a Network Address Authority (\u201cNAA\u201d) identifier.
18. The computer readable storage medium of claim 15, wherein generating the data string having the predefined length from the identifier associated with the storage device and having the first format comprises:
applying a hash function to the identifier associated with the storage device and having the first format.
19. The computer readable storage medium of claim 18, wherein applying the hash function to the identifier associated with the storage device and having the first format comprises:
identifying a first byte of the identifier associated with the storage device and having the first format;
logically shifting the first byte by a shift amount to produce a shifted first byte;
adding the shifted first byte to an accumulator value;
incrementing the shift amount by a specified value to generate an incremented shift amount;
identifying a second byte of the identifier;
logically shifting the second byte by the incremented shift amount to produce a shifted second byte; and
adding the shifted second byte to the accumulator value.
20. The computer readable storage medium of claim 19, wherein incrementing the shift amount by the specified value to generate the incremented shift amount comprises:
responsive to the incremented shift amount exceeding a threshold value, initializing the incremented shift amount to an initial value.
21. The computer readable storage medium of claim 20, further comprising:
generating the data string having the predefined length from a subset of the accumulator.
22. The computer readable storage medium of claim 15, wherein the additional identification data comprises an Organizationally Unique Identifier (\u201cOUI\u201d) associated with an entity.
23. The computer readable storage medium of claim 15, wherein the additional identification data comprises a type identifier associated with the specified format.
24. The computer readable storage medium of claim 15, wherein reformatting the additional identification data and the data string having the predefined length according to one or more formatting parameters associated with the specified format comprises:
generating a data packet having a specified packet size and including specified data types.
25. The computer readable storage medium of claim 24, wherein the specified packet size comprises eight bytes, and the specified data types comprise an Organizationally Unique Identifier, a type identifier associated with the specified format and the data string having the predefined length.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A non-transitory machine readable medium of a controller of a network control system for configuring a plurality of middlebox instances to implement a middlebox in a distributed manner in a plurality of hosts, the non-transitory machine readable medium storing sets of instructions for:
assigning a first set of identifiers to a first middlebox instance that associates an identifier in the first set with a first packet; and
assigning a second set of identifiers to a second middlebox instance that associates an identifier in the second set with a second packet.
2. The non-transitory machine readable medium of claim 1, wherein none of the identifiers in the first set is identical with any identifier in the second set.
3. The non-transitory machine readable medium of claim 1, wherein the first packet and the second packet have identical source network address and identical destination network address.
4. The non-transitory machine readable medium of claim 1, wherein a number of identifiers in the first set is different than a number of identifiers in the second set.
5. The non-transitory machine readable medium of claim 1, wherein the first middlebox instance associates the identifier in the first set with the first packet by replacing a source port number of the first packet with the identifier in the first set.
6. The non-transitory machine readable medium of claim 1, wherein at least one of the identifiers in the first set is identical with one of the identifiers in the second set.
7. The non-transitory machine readable medium of claim 1, wherein the first set of identifiers and the second set of identifiers are identical sets.
8. The non-transitory machine readable medium of claim 1, wherein the identifier in the first set and the identifier in the second set are identical.
9. The non-transitory machine readable medium of claim 1, wherein the first packet and the second packet have different destination addresses.
10. A non-transitory machine readable medium of a controller of a network control system for configuring a plurality of middlebox instances to implement a middlebox in a distributed manner in a plurality of hosts, the non-transitory machine readable medium storing sets of instructions for:
receiving a request for a first set of identifiers from a first middlebox instance;
determining whether the first set of identifiers are available; and
when the first set of identifiers are available, assigning the first set of identifiers to the first middlebox instance.
11. The non-transitory machine readable medium of claim 10, wherein the sets of instructions further comprise a set of instructions for:
after assigning the first set of identifiers to the first middlebox instance, recording that the first set of identifiers are not available.
12. The non-transitory machine readable medium of claim 10, wherein the sets of instructions further comprise a set of instructions for:
when the first set of identifiers are not available, sending a message indicating the first set of identifiers are not available to the first middlebox instance.
13. The non-transitory machine readable medium of claim 10, wherein the sets of instructions further comprise sets of instructions for:
receiving a request to release a second set of identifiers from a second middlebox instance; and
recording that the second set of identifiers are available.
14. The non-transitory machine readable medium of claim 10, wherein the sets of instructions further comprise sets of instructions for:
after assigning the first set of identifiers to the first middlebox instance, determining whether the first middlebox instance is alive; and
when the first middle instance is not alive, recording that the first set of identifiers are available.
15. A non-transitory machine readable medium of a first controller of a network control system for configuring a plurality of middlebox instances to implement a middlebox in a distributed manner in a plurality of hosts, the network control system comprising a plurality of controllers, the non-transitory machine readable medium storing sets of instructions for:
receiving configuration data for configuring the middlebox instances to provide source network address translation (SNAT) service to packets coming to the middlebox instances;
identifying a set of other controllers in the network control system that manage the middlebox instances; and
directing the identified set of other controllers to send the configuration data to the middlebox instances.
16. The non-transitory machine readable medium of claim 15, wherein the configuration data include a set of addresses to which the middlebox instances translate source network address of the packets.
17. The non-transitory machine readable medium of claim 15, wherein the first controller is a logical controller and the identified set of other controllers are physical controllers.
18. The non-transitory machine readable medium of claim 15, wherein the network control system is for generating physical control plane data for managing first and second managed forwarding elements that implement forwarding operations associated with a first logical datapath set, wherein the sets of instructions further comprise a set of instructions for converting logical control plane data for the first logical datapath set to universal physical control plane data.
19. The non-transitory machine readable medium of claim 18, wherein the first controller is a master controller for the first logical datapath set, wherein each of the identified set of other controllers is a master controller for a set of managed forwarding elements that are hosted in the same middlebox instances in which the middlebox instances are hosted.
20. The non-transitory machine readable medium of claim 15, wherein the configuration data include at least one mapping of a pair of addresses.