1460708021-fcafe1d0-b96d-4d97-8b0b-86c6857bf5c2

1. A method of allocating network bandwidth in a network comprising a plurality of tenant virtual machines (VMs), each VM hosted on a host machine comprising a virtualization software, the method comprising:
calculating a first bandwidth reservation for a flow between a source VM and a destination VM, the source and destination VMs hosted on two different host machines, the source VM sending packets to a first set of VMs comprising the destination VM, the first bandwidth reservation calculated by the virtualization software of the host machine of the source VM as a bandwidth reservation for the source VM multiplied by a ratio of a bandwidth reservation of the destination VM to a sum of bandwidth reservations of the VMs in the first set of VMs;
receiving a second bandwidth reservation for the flow calculated by the virtualization software of the host machine of the destination VM, the destination VM receiving packets from a second set of VMs comprising the source VM, the second bandwidth reservation calculated as the bandwidth reservation for the destination VM multiplied by a ratio of the bandwidth reservation of the source VM to a sum of bandwidth reservations of the VMs in the second set of VMs; and
setting the bandwidth reservation for the flow as a minimum of the first and second bandwidth reservations.
2. The method of claim 1, wherein the bandwidth reservation of a VM is a minimum bandwidth guaranteed for the VM.
3. The method of claim 1 further comprising:
prior to the calculation of said bandwidth reservations, receiving network bandwidth allocation policies for the source and destination VM from a controller storing network bandwidth policies of the plurality of VMs, the network allocation policy of each VM comprising the bandwidth reservation of the VM.
4. The method of claim 1, wherein receiving the second bandwidth reservation comprises receiving a packet at the virtualization software of the host of the source VM from the virtualization software of the host of the destination VM, the packet comprising the second bandwidth reservation.
5. A non-transitory computer readable medium storing a program for allocating network bandwidth in a network comprising a plurality of tenant virtual machines (VMs), each VM hosted on a host machine comprising a virtualization software, the program executable by a processing unit, the program comprising sets of instructions for:
calculating a first bandwidth reservation for a flow between a source VM and a destination VM, the source and destination VMs hosted on two different host machines, the source VM sending packets to a first set of VMs comprising the destination VM, the first bandwidth reservation calculated by the virtualization software of the host machine of the source VM as a bandwidth reservation for the source VM multiplied by a ratio of a bandwidth reservation of the destination VM to a sum of bandwidth reservations of the VMs in the first set of VMs;
receiving a second bandwidth reservation for the flow calculated by the virtualization software of the host machine of the destination VM, the destination VM receiving packets from a second set of VMs comprising the source VM, the second bandwidth reservation calculated as the bandwidth reservation for the destination VM multiplied by a ratio of the bandwidth reservation of the source VM to a sum of bandwidth reservations of the VMs in the second set of VMs; and
setting the bandwidth reservation for the flow as a minimum of the first and second bandwidth reservations.
6. The non-transitory computer readable medium of claim 5, wherein the bandwidth reservation of a VM is a minimum bandwidth guaranteed for the VM.
7. The non-transitory computer readable medium of claim 5, the program further comprising a set of instructions for:
receiving, prior to the calculation of said bandwidth reservations, network bandwidth allocation policies for the source and destination VM from a controller storing network bandwidth policies of the plurality of VMs, the network allocation policy of each VM comprising the bandwidth reservation of the VM.
8. The non-transitory computer readable medium of claim 5, wherein the set of instructions for receiving the second bandwidth reservation comprises a set of instructions for receiving a packet at the virtualization software of the host of the source VM from the virtualization software of the host of the destination VM, the packet comprising the second bandwidth reservation.
9. A method of allocating spare network bandwidth in a network comprising a plurality of tenant virtual machines (VMs), each VM hosted on a host machine comprising a virtualization software, the method comprising:
calculating a bandwidth share for a flow between a source VM and a destination VM, the source and destination VMs hosted on two different host machines, the source VM sending packets to a first set of VMs comprising the destination VM, the bandwidth share calculated by the virtualization software of the host machine of the source VM as a bandwidth share for the source VM multiplied by a ratio of a bandwidth share of the destination VM to a sum of bandwidth share of the VMs in the first set of VMs; and
allocating the spare network bandwidth to the flow between the source and destination based on the bandwidth share of the flow.
10. The method of claim 9, wherein the bandwidth share calculated by the virtualization software of the host of the source VM is a first bandwidth share, the method further comprising:
receiving a second bandwidth share for the flow calculated by the virtualization software of the host machine of the destination VM, the destination VM receiving packets from a second set of VMs comprising the source VM, the second bandwidth share calculated as the bandwidth share for the destination VM multiplied by a ratio of the bandwidth share of the source VM to a sum of bandwidth shares of the VMs in the second set of VMs; and
adjusting a congestion of the packet traffic between the source and destination network using the second bandwidth share.
11. The method of claim 9, wherein the bandwidth share of a VM is a weight used to determine a share of the VM for the spare bandwidth of the network.
12. The method of claim 9, wherein the flow between the source and destination VMs further comprises a minimum guaranteed bandwidth and a maximum allowed bandwidth, wherein a sum of the minimum guaranteed bandwidth and the spare bandwidth allocated to a flow does not exceed the maximum allowed bandwidth of the flow even when the network has additional unallocated spare bandwidth.
13. The method of claim 9 further comprising:
prior to the calculation of said bandwidth share, receiving network bandwidth allocation policies for the source and destination VMs from a controller storing network bandwidth policies of the plurality of VMs, the network allocation policy of each VM comprising the bandwidth share of the VM.
14. The method of claim 9, wherein receiving the second bandwidth share comprises receiving a packet at the virtualization software of the host of the source VM from the virtualization software of the host of the destination VM, the packet comprising the second bandwidth share.
15. A non-transitory computer readable medium storing a program for allocating spare network bandwidth in a network comprising a plurality of tenant virtual machines (VMs), each VM hosted on a host machine comprising a virtualization software, the program executable by a processing unit, the program comprising sets of instructions for:
calculating a bandwidth share for a flow between a source VM and a destination VM, the source and destination VMs hosted on two different host machines, the source VM sending packets to a first set of VMs comprising the destination VM, the bandwidth share calculated by the virtualization software of the host machine of the source VM as a bandwidth share for the source VM multiplied by a ratio of a bandwidth share of the destination VM to a sum of bandwidth share of the VMs in the first set of VMs; and
allocating the spare network bandwidth to the flow between the source and destination based on the bandwidth share of the flow.
16. The non-transitory computer readable medium of claim 15, wherein the bandwidth share calculated by the virtualization software of the host of the source VM is a first bandwidth share, the program further comprising sets of instructions for:
receiving a second bandwidth share for the flow calculated by the virtualization software of the host machine of the destination VM, the destination VM receiving packets from a second set of VMs comprising the source VM, the second bandwidth share calculated as the bandwidth share for the destination VM multiplied by a ratio of the bandwidth share of the source VM to a sum of bandwidth shares of the VMs in the second set of VMs; and
adjusting a congestion of the packet traffic between the source and destination network using the second bandwidth share.
17. The non-transitory computer readable medium of claim 15, wherein the bandwidth share of a VM is a weight used to determine a share of the VM for the spare bandwidth of the network.
18. The non-transitory computer readable medium of claim 15, wherein the flow between the source and destination VMs further comprises a minimum guaranteed bandwidth and a maximum allowed bandwidth, wherein a sum of the minimum guaranteed bandwidth and the spare bandwidth allocated to a flow does not exceed the maximum allowed bandwidth of the flow even when the network has additional unallocated spare bandwidth.
19. The non-transitory computer readable medium of claim 15, the program further comprising a set of instructions for:
receiving, prior to the calculation of said bandwidth share, network bandwidth allocation policies for the source and destination VMs from a controller storing network bandwidth policies of the plurality of VMs, the network allocation policy of each VM comprising the bandwidth share of the VM.
20. The non-transitory computer readable medium of claim 15, wherein the set of instructions for receiving the second bandwidth share comprises a set of instructions for receiving a packet at the virtualization software of the host of the source VM from the virtualization software of the host of the destination VM, the packet comprising the second bandwidth share.

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 suspension device comprising:
a first arm member and a second arm member having a pivot adapted to allow movement of the first member and the second member between a first position and a second position, one of the first member or the second member having a hook;
wherein the first member has a securing mechanism configured to selectively couple to the second member in the first position, and further configured to selectively release from the second member in the second position; and
wherein the securing mechanism comprises the first member having a protrusion extending from a first surface, and the second member having a receptacle in a second surface opposing the first surface and configured to selectively engage the protrusion in a friction fit arrangement wherein the receptacle overlaps the protrusion to secure the device in the first position.
2. The device of claim 1 further including a bias device coupled with and adapted for biasing said first member and said second member toward said first position.
3. The device of claim 2, wherein said first position is an extended position for hanging a garment and said second position is an un-extended position for enabling removal of said garment.
4. The device of claim 3, wherein the bias device comprises a tension mechanism coupled between the first member and the second member;
the tension mechanism being configured with a predetermined tension force operable to develop potential energy therein when the members are moved to the second, un-extended position, said potential energy operable to create an upwardly directed torque force; and
said upwardly directed torque force predisposing the members to revert to their first, extended position when the force holding the members in the second, un-extended position is less than the upwardly directed torque force.
5. The device of claim 4, wherein the tension mechanism comprises at least one resilient wire.
6. The device of claim 4, wherein the tension mechanism comprises at least one elastic band.
7. The device of claim 4, wherein the tension mechanism comprises at least one spring.
8. The device of claim 3, wherein the bias device comprises a tension mechanism with an adjustable tension force configured to develop a user-defined potential energy therein when the members are moved to the second, un-extended, position, said potential energy operable to create an upwardly directed torque force; and
said upwardly directed torque force predisposing the members to revert to their first, extended position when the force holding the members in the second, un-extended, position is less than the user-selected upwardly directed torque force.
9. The device of claim 1, further comprising a first magnet being embedded in an end of the first member proximal the pivot and having a north pole facing outward from the end of the first member;
a second magnet being embedded in an end of the second member proximal the pivot and having a south pole facing outward from the end of the second member; and
the opposing polarities of the magnets coming into proximal contact when the first member and second member are in the first position.
10. The device of claim 1, wherein the securing mechanism further comprises a disk;
the disk being disposed between the first surface of the first member and the second surface of the second member proximal to the pivot; and
the disk having a co-efficient of friction relative to the face of the first member and the face of the second member.
11. The device of claim 1, further comprising;
a gearing mechanism coupling the first member and the second member;
said gearing mechanism comprising a semi-circular set of gear teeth integral to the end of the first member proximal the pivot;
a semi-circular set of gear teeth integral to the end of the second member proximal the pivot;
the gear teeth integral to the first member being mated to the gear teeth of the second member;
the gearing mechanism operable to cause the second member to rotate toward the first member when a torque is applied to the first member; and
a tension mechanism operable to re-extend the first member and second member after being folded or collapsed.
12. The device of claim 1, wherein the securing mechanism is positioned proximate the pivot.
13. The device of claim 1, wherein the first member and the second member are fabricated from plastic.
14. The device of claim 13, further comprising a retaining clip being integrally molded into the first member proximal the pivot;
a hook having a hook neck and curved portion are molded integral to the second member proximal the pivot;
the retaining clip is dimensioned to accept and securely hold the hook neck; and
the hook neck is operable to snap into the retaining clip so as to hold the device in the extended position.