# US 2013/0156041 A1 · Apparatus and methods for efficient network address translation and application level gateway processing

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2013/0156041 A1
- Document ID: US20130156041A1
- Status: Published application
- Kind: A1
- Application number: 13/330,529
- Filed: 2011-12-19
- Published: 2013-06-20
- Earliest claimed: 2011-12-19
- Assignees: QUALCOMM Incorporated
- Inventors: Venkata Satish Kumar Vangala; Alok Mitra; Rohit Tripathi
- Web page: https://patentgrep.com/patent/US20130156041A1

## CPC

- H04L 61/2585: through application level gateway [ALG]
- H04L 61/2557: Translation policies or rules
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Apparatus and methods for efficient NAT and ALG processing is disclosed. An exemplary method includes the operations of deep scanning a packet received over a connection to determine an application level gateway (ALG) process to be performed on the packet, associating the connection with the ALG process, and forwarding additional packets received over the connection to receive the ALG process based on said associating so that deep scanning of the additional packets is bypassed. An exemplary apparatus includes a processor to deep scan a packet received over a connection to determine an ALG process to be performed on the packet, a database to associate the connection with the ALG process, and a packet transmitter to forward additional packets received over the connection to receive the ALG process based on said associating so that deep scanning of the additional packets is bypassed.

## Claims

### Claim 1

A method for packet routing comprising:
deep scanning a packet received over a selected connection to determine a selected application level gateway (ALG) process to be performed on the packet;
associating the selected connection with the selected ALG process; and
forwarding additional packets received over the selected connection to receive the selected ALG process based on said associating, and wherein deep scanning of the additional packets is bypassed.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
maintaining a rule database that identifies one or more rules associated with one or more ALG processes, respectively; and
determining which of the one or more rules are satisfied by the packet to determine the selected ALG process.

### Claim 3 (depends on 1)

The method of claim 1, said associating comprising maintaining a connection database that associates the selected connection with the selected ALG process.

### Claim 4 (depends on 1)

The method of claim 1, said deep scanning comprises scanning at least one of a packet header and a packet payload to determine the selected application level gateway (ALG) process to be performed on the packet.

### Claim 5 (depends on 1)

The method of claim 1, said forwarding comprising tagging the packet and the additional packets with ALG processing information to form tagged packets, and wherein the ALG processing information comprises information identifying the selected ALG process to be performed.

### Claim 6 (depends on 5)

The method of claim 5, further comprising:
receiving the tagged packets;
determining if any ALG processing is required for each tagged packet based on the ALG processing information associated with each tagged packet.
passing selected tagged packets to selected ALG engines, respectively, to receive ALG processing if it is determined that ALG processing is required for the selected tagged packets; and
sending other tagged packets to a network address translation (NAT) processing module if it is determined that ALG processing is not required for the other tagged packets.

### Claim 7 (depends on 6)

The method of claim 6, said passing comprising inputting the selected tagged packets to selected input queues associated with the selected ALG engines, respectively.

### Claim 8 (depends on 6)

The method of claim 6, further comprising:
receiving processed packets from the selected ALG engines; and
forwarding the processed packets to the NAT processing module.

### Claim 9 (depends on 8)

The method of claim 8, said receiving comprises receiving the processed packets from selected output queues associated with the selected ALG engines, respectively.

### Claim 10

An apparatus for packet routing comprising:
a processor configured to deep scan a packet received over a selected connection to determine a selected application level gateway (ALG) process to be performed on the packet;
a database configured to associate the selected connection with the selected ALG process; and
a packet transmitter configured to forward additional packets received over the selected connection to receive the selected ALG process based on said associating, and wherein deep scanning of the additional packets is bypassed.

### Claim 11 (depends on 10)

The apparatus of claim 10, said processor configured to:
maintain a rule database that identifies one or more rules associated with one or more ALG processes, respectively; and
determine which of the one or more rules are satisfied by the packet to determine the selected ALG process.

### Claim 12 (depends on 10)

The apparatus of claim 10, said database configured to maintain associations between connections and ALG processes.

### Claim 13 (depends on 10)

The apparatus of claim 10, said processor configured to deep scan at least one of a packet header and a packet payload to determine the selected application level gateway (ALG) process to be performed on the packet.

### Claim 14 (depends on 10)

The apparatus of claim 10, said processor configured to tag the packet and the additional packets with ALG processing information to form tagged packets, and wherein the ALG processing information comprises information identifying the selected ALG process to be performed.

### Claim 15 (depends on 10)

The apparatus of claim 10, further comprising:
an first interface configured to receive the tagged packets;
a second processor configured to determine if ALG processing is required for each tagged packet based on the ALG processing information associated with each tagged packet.
a second packet transmitter configured to pass selected tagged packets to selected ALG engines, respectively, to receive ALG processing if it is determined that ALG processing is required for the selected tagged packets; and
a second interface configured to send other tagged packets to a network address translation (NAT) processing module if it is determined that ALG processing is not required for the other tagged packets.

### Claim 16 (depends on 15)

The apparatus of claim 15, said second packet transmitter configured to pass the selected tagged packets to selected input queues associated with the selected ALG engines, respectively.

### Claim 17 (depends on 15)

The apparatus of claim 15, further comprising:
a packet receiver configured to receive processed packets from the selected ALG engines; and
said second interface configured to send the processed packets to the NAT processing module.

### Claim 18 (depends on 17)

The apparatus of claim 17, said packet receiver configured to receive the processed packets from selected output queues associated with the selected ALG engines, respectively.

### Claim 19

An apparatus for packet routing comprising:
means for deep scanning a packet received over a selected connection to determine a selected application level gateway (ALG) process to be performed on the packet;
means for associating the selected connection with the selected ALG process; and
means for forwarding additional packets received over the selected connection to receive the selected ALG process based on said associating, and wherein deep scanning of the additional packets is bypassed.

### Claim 20 (depends on 19)

The apparatus of claim 19, further comprising:
means for maintaining a rule database that identifies one or more rules associated with one or more ALG processes, respectively; and
means for determining which of the one or more rules are satisfied by the packet to determine the selected ALG process.

### Claim 21 (depends on 19)

The apparatus of claim 19, said means for associating comprising means for maintaining a connection database that associates the selected connection with the selected ALG process.

### Claim 22 (depends on 19)

The apparatus of claim 19, said means for deep scanning comprises means for deep scanning at least one of a packet header and a packet payload to determine the selected application level gateway (ALG) process to be performed on the packet.

### Claim 23 (depends on 19)

The apparatus of claim 19, said means for forwarding comprising means for tagging the packet and the additional packets with ALG processing information to form tagged packets, and wherein the ALG processing information comprises information identifying the selected ALG process to be performed.

### Claim 24 (depends on 19)

The apparatus of claim 19, further comprising:
means for receiving the tagged packets;
means for determining if any ALG processing is required for each tagged packet based on the ALG processing information associated with each tagged packet.
means for passing selected tagged packets to selected ALG engines, respectively, to receive ALG processing if it is determined that ALG processing is required for the selected tagged packets; and
means for sending other tagged packets to a network address translation (NAT) processing module if it is determined that ALG processing is not required for the other tagged packets.

### Claim 25 (depends on 24)

The apparatus of claim 24, said means for passing comprising inputting the selected tagged packets to selected input queues associated with the selected ALG engines, respectively.

### Claim 26 (depends on 24)

The apparatus of claim 24, further comprising:
means for receiving processed packets from the selected ALG engines; and
means for forwarding the processed packets to the NAT processing module.

### Claim 27 (depends on 26)

The apparatus of claim 26, said means for receiving comprises means for receiving the processed packets from selected output queues associated with the selected ALG engines, respectively.

### Claim 28

A computer program product for packet routing comprising:
a non-transitory computer-readable medium embodying instructions executable by a processor to:
deep scan a packet received over a selected connection to determine a selected application level gateway (ALG) process to be performed on the packet;
associate the selected connection with the selected ALG process; and
forward additional packets received over the selected connection to receive the selected ALG process based on said associating, and wherein deep scanning of the additional packets is bypassed.

### Claim 29 (depends on 28)

The computer-readable medium of claim 28, said instructions configured to cause the processor to:
maintain a rule database that identifies one or more rules associated with one or more ALG processes, respectively; and
determine which of the one or more rules are satisfied by the packet to determine the selected ALG process.

### Claim 30 (depends on 28)

The computer-readable medium of claim 28, said instructions configured to cause the processor to maintain associations between connections and ALG processes in a database.

### Claim 31 (depends on 28)

The computer-readable medium of claim 28, said instructions configured to cause the processor to deep scan at least one of a packet header and a packet payload to determine the selected application level gateway (ALG) process to be performed on the packet.

### Claim 32 (depends on 28)

The computer-readable medium of claim 28, said instructions configured to cause the processor to tag the packet and the additional packets with ALG processing information to form tagged packets, and wherein the ALG processing information comprises information identifying the selected ALG process to be performed.

### Claim 33 (depends on 28)

The computer-readable medium of claim 28, said instructions configured to cause the processor to:
receive the tagged packets;
determine if ALG processing is required for each tagged packet based on the ALG processing information associated with each tagged packet.
pass selected tagged packets to selected ALG engines, respectively, to receive ALG processing if it is determined that ALG processing is required for the selected tagged packets; and
send other tagged packets to a network address translation (NAT) processing module if it is determined that ALG processing is not required for the other tagged packets.

### Claim 34 (depends on 33)

The computer-readable medium of claim 33, said instructions configured to cause the processor to pass the selected tagged packets to selected input queues associated with the selected ALG engines, respectively.

### Claim 35 (depends on 33)

The computer-readable medium of claim 33, said instructions configured to cause the processor to:
receive processed packets from the selected ALG engines; and
send the processed packets to the NAT processing module.

### Claim 36 (depends on 35)

The computer-readable medium of claim 35, said instructions configured to cause the processor to receive the processed packets from selected output queues associated with the selected ALG engines, respectively.

### Claim 37

An apparatus for packet routing, comprising:
a first interface configured to receive tagged packets;
a processor configured to determine if ALG processing is required for each tagged packet based on the ALG processing information associated with each tagged packet.
a packet transmitter configured to pass selected tagged packets to selected ALG engines, respectively, to receive ALG processing if it is determined that ALG processing is required for the selected tagged packets; and
a second interface configured to send other tagged packets to a network address translation (NAT) processing module if it is determined that ALG processing is not required for the other tagged packets.

### Claim 38 (depends on 37)

The apparatus of claim 37, said packet transmitter configured to pass the selected tagged packets to selected input queues associated with the selected ALG engines, respectively.

### Claim 39 (depends on 37)

The apparatus of claim 37, further comprising:
a packet receiver configured to receive processed packets from the selected ALG engines; and
said second interface configured to send the processed packets to the NAT processing module.

### Claim 40 (depends on 39)

The apparatus of claim 39, said packet receiver configured to receive the processed packets from selected output queues associated with the selected ALG engines, respectively.

### Claim 41

A method for packet routing, comprising:
receiving tagged packets;
determining if any ALG processing is required for each tagged packet based on the ALG processing information associated with each tagged packet.
passing selected tagged packets to selected ALG engines, respectively, to receive ALG processing if it is determined that ALG processing is required for the selected tagged packets; and
sending other tagged packets to a network address translation (NAT) processing module if it is determined that ALG processing is not required for the other tagged packets.

### Claim 42 (depends on 41)

The method of claim 41, said passing comprising inputting the selected tagged packets to selected input queues associated with the selected ALG engines, respectively.

### Claim 43 (depends on 41)

The method of claim 41, further comprising:
receiving processed packets from the selected ALG engines; and
forwarding the processed packets to the NAT processing module.

### Claim 44 (depends on 43)

The method of claim 43, said receiving comprises receiving the processed packets from selected output queues associated with the selected ALG engines, respectively.
