Patent ID: 6396838
Filing Date: 2002-05-28
Classification: H04L

Abstract:
A method of managing the utilization of a virtual connection parameter table (VCPT) used to hold parameters for virtual path connections (VPCs) and sets of virtual channel connections (VCCs) in an Asynchronous Transfer Mode (ATM) network switch, wherein each set of VCCs is identified by a corresponding unique virtual path identifier (VPI) and each VCC within a set is identified by a corresponding unique virtual channel identifier (VCI), the method comprising the steps of:(i) maintaining a VCC pointer and a VPC pointer, the VCC pointer defining the extent of a VCC area at one end of the VCPT, and the VPC pointer defining the extent of a VPC area at the other end of the VCPT, the set of contiguous locations between the VCC and VPC areas being referred to as a central area of the VCPT; (ii) as part of the establishment of a new VPC, performing the steps of: (1) determining whether a VPC free list contains an entry, the entry identifying a location in the VCPT that can be allocated to hold parameters for the new VPC; (2) if the VPC free list contains an entry, then allocating the VCPT location identified by the VFC free list entry as a VPC entry to hold parameters for the new VPC; (3) if the VPC free list does not contain an entry, then determining whether the VPC pointer can be advanced to expand the VPC area of the VCPT into the central area of the VCPT, and if so then performing the steps of: (a) advancing the VPC pointer into the central area to claim one or more additional VCPT locations for use as VPC entries; and (b) allocating one of the claimed locations as a VPC entry to hold parameters for the new VPC; (iii) as part of the deletion of a previously-established VPC, performing the steps of: (1) determining whether the VPC entry for the deleted VPC is at a marginal location in the VPC area such that the VPC entry can be de-allocated by backing up the VPC pointer to diminish the VPC area of the VCPT; (2) if the VPC entry is in such a marginal location, then backing up the VPC pointer to diminish the VPC area of the VCPT such that the marginal location is no longer included therein; and (3) if the VPC entry is not in such a marginal location, then adding an entry to the VPC free list identifying the location in the VCPT of the VPC entry for the deleted VPC; (iv) as part of the establishment of a new VCC, determining whether a chunk of locations in the VCPT was previously allocated to hold parameters for the set of VCCs of which the new VCC is a member, and if such a chunk of VCPT locations was not previously allocated then performing the steps of: (1) determining whether a selected one of a plurality of VCC free lists contains an entry, the VCC free lists dedicated respectively to holding entries for different-size chunks of contiguous locations in the VCC area of the VCPT, a chunk of a given size being sufficient to store a correspondingly-sized set of VCCs, the selected VCC free list being the VCC free list for the chunk size of the set of VCCs of which the new VCC is a member; (2) if the selected VCC free list contains an entry, then allocating the corresponding chunk of VCPT locations to hold parameters for the set of VCCs of which the new VCC is a member; (3) if the selected VCC free list does not contain an entry, then determining whether the VCC pointer can be advanced to expand the VCC area of the VCPT into the central area of the VCPT, and if so then advancing the VCC pointer into the central area to allocate a chunk of VCPT locations for use as VCC entries to hold parameters for the set of VCCs of which the new VCC is a member; and (v) as part of the deletion of a previously-established VCC, determining whether the chunk of VCPT locations containing the VCC entry for the deleted VCC can be de-allocated, and if so performing the steps of: (1) determining whether the chunk is at a marginal location in the VCC area such that the VCC entry can be de-allocated by backing up the VCC pointer to diminish the VCC area of the VCPT; (2) if the VCC entry is at such a marginal location, then backing up the VCC pointer to diminish the VCC area of the VCPT such that the marginal location is no longer included therein; and (3) if the VCC entry is not in such a marginal location, then adding an entry to the appropriate VCC free list identifying the location of the chunk within the VCC area containing the VCC entry.