CA2759005C

Methods of structuring data, pre-compiled exception list engines, and network appliances

Abstract

A computer executed method is disclosed for sorting a plurality of internet protocol (IP) addresses. The method includes dividing the range of IP addresses into a plurality of clusters representing a plurality of contiguous sub-ranges, assigning each IP address to the cluster associated with the sub-range that includes that IP address, and assigning the IP addresses in each cluster to one of a plurality of pages. If one of the pages has a size less than a page size limit, the method includes duplicating on that page at least one of the IP addresses assigned to that page. For each page, the IP addresses assigned to that page are ordered by numeric value. A network appliance incorporating aspects of the method is also disclosed.

CA2759005C, drawing sheet 1
Sheet 1 of 13

Term

Projected expiry 19 April 2030.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Projected expiry

15 claims: 2 independent, 13 dependent

  1. 1
    CA 02759005 2014-04-14 64725-1191 CLAIMS:1. A network appliance for connection between a first network and a second network, the appliance comprising: at least one input coupled to the first network for receiving a data packet 5 from the first network, the data packet including an internet protocol (IP) address;at least one processor for determining whether to allow the packet from the first network to enter the second network;at least one memory device storing instructions and data, the data including: 10 a plurality of pages storing a plurality of excepted IP addresses, the excepted IP addresses each having a numeric value within a range of numeric values, the range divided into a plurality of clusters representing a plurality of contiguous sub-ranges, each page including one or more of the excepted IP addresses assigned to at least one of the clusters associated with the sub-range that 15 includes the numeric value of said IP address within one or more of the sub-ranges associated with that page, each page having a page size defined by a maximum number of IP addresses that can be assigned to that page, the IP addresses in each cluster assigned to each page are ordered by numeric value;the at least one processor executing computer-executable instructions, 20 said instructions comprising instructions to: identify the IP address of the packet from the first network;identify a target page that will include the IP address if the IP address is one of the plurality of excepted IP addresses, wherein the excepted IP addresses include a plurality of allowable IP addresses and a plurality of blocked IP addresses;CA 02759005 2014-04-14 64725-1191 search the target page to determine if the IP address is one ofthe excepted IP addresses in the target page;process the packet from the first network according to whether the IP address is an excepted IP address in the target page;and 5 determine whether to allow the packet from the first network to proceed based on if the IP address is an allowable IP address in the target page and to deny the packet from the first network from proceeding if the IP address is a blocked IP address in the target page;and at least one output coupled to the second network for transmitting the 10 packet from the first network to the second network if the processor determines to allow the packet from the first network to enter the second network.
  2. 11
    A network appliance for connection between a first network and a second network, the appliance comprising:at least one input coupled to the first network for receiving a packet from the first network, the packet including an internet protocol (IP) address;at least one memory device;CA 02759005 2014-04-14 64725-1191 a first engine stored in the memory device, the first engine including a plurality of pages storing a plurality of excepted IP addresses, the excepted IP addresses each having a numeric value within a range of numeric values, the range divided into a plurality of clusters representing a plurality of contiguous sub-ranges, each page including one or more of the excepted IP addresses assigned to at least one of the clusters associated with the sub-range that includes the numeric value of the IP address within one or more of the sub-ranges associated with that page;and at least one processor executing a first finite state machine (FSM), the first FSM including instructions executable by the processor to: determine the page associated with the sub-range encompassing the IP address;search the page associated with the sub-range encompassing the IP address to determine if the IP address is an excepted IP address;and process the packet from the first network according to the IP address being an excepted IP address, wherein the packet from the first network is allowed to proceed based on the IP address being an excepted IP address;and at least one output coupled to the second network for transmitting the packet from the first network to the second network if the processor determines to allow the packet from the first network to enter the second network via processing the packet according to the indication from the first FSM.