Offload of data transfer statistics from a mobile access gateway
Summary by NHIP
Mobile Gateway Statistic Offload
The method offloads data transfer statistics from a packet forwarding engine to a forwarding unit memory. It generates synthetic packets on a basis of less than five seconds to trigger a callout operation when a synthetic packet is detected in the buffer.
Claim Score by NHIP
Abstract
In general, techniques are described for offloading data transfer statistics from a mobile access gateway. The mobile access gateway comprises a forwarding unit. The forwarding unit comprises a packet forwarding engine (PFE). When the PFE receives a packet, the PFE updates a data transfer statistic based on a quantity of data in the packet. The data transfer statistic is initially stored in a memory of the PFE. The PFE is configured to push the data transfer statistic from the memory of the PFE to a memory of the forwarding unit.

Term
7.8 yearsleft in the term
Expires 9 July 2034, including 916 days of term adjustment.
- Priority and filed
- Granted
- Today
- Expires
20 claims: 3 independent, 17 dependent
- 1A method for offloading a data transfer statistic from a packet forwarding engine (PFE) forming part of a forwarding unit in a mobile access gateway, the method comprising:receiving, at the forwarding unit of the mobile access gateway, packets associated with a subscriber session for a subscriber;storing the received packets in a packet buffer within the PFE;updating, by the PFE, the data transfer statistic based on quantities of data in the received packets, the data transfer statistic stored in a memory within the PFE;generating, by the mobile access gateway, synthetic packets on a recurring basis, the synthetic packets having a packet type different than packet types of any packets received by the forwarding unit from a content access network or a packet data network;storing, by the PFE, the synthetic packets in the packet buffer;and responsive to determining a packet that was stored in the packet buffer is a synthetic packet, performing, by the PFE, a callout operation to push the data transfer statistic from the memory of the PFE to a memory of the forwarding unit, the memory of the forwarding unit being separate from the memory within the PFE.
- 13A mobile access gateway comprising a forwarding unit that comprises:a forwarding unit memory comprising a memory;a synthetic packet unit configured to generate synthetic packets on a recurring basis, the synthetic packet having a packet type different than packet types of any packets received by the forwarding unit from a content access network or a packet data network;and a packet forwarding engine (PFE) that comprises: a PFE memory that stores a data transfer statistic, the PFE memory being separate from the memory of the forwarding unit, the PFE memory comprising a first FIFO;and a packet buffer, wherein the PFE is configured to: receive packets associated with a subscriber session;store the received packets in the packet buffer;update the data transfer statistic based on quantities of data in the received packets;store the synthetic packets in the packet buffer;and responsive to determining a packet that was stored in the packet buffer is a synthetic packet, perform a callout operation to push the data transfer statistic from the PFE memory to the forwarding unit memory.
- 20Broadest claimClaim Score 45, average(NHIP)A non-transitory computer-readable medium comprising instructions for configuring a packet forwarding engine (PFE) forming part of a forwarding unit in a mobile access gateway to:receive, at the forwarding unit of the mobile access gateway, packets associated with a subscriber session for a subscriber;store the received packets in a packet buffer within the PFE;update a data transfer statistic based on quantities of data in the received packets, the data transfer statistic stored in a memory within the PFE;generate synthetic packets on a recurring basis, the synthetic packet having a packet type different than packet types of any packets received by the forwarding unit from a content access network or a packet data network;store the synthetic packets in the packet buffer;and responsive to determining a packet that was stored in the packet buffer is a synthetic packet, perform a callout operation to push the data transfer statistic from the memory within the PFE to a memory of the forwarding unit, the memory of the forwarding unit being separate from the memory within the PFE.
Independent claims3
99 paragraphs in 5 sections, as filed
TECHNICAL FIELD
The invention relates to mobile networks and, more specifically, to handling subscriber traffic within mobile networks.
BACKGROUND
Many modern cellular devices can connect to packet-based networks over mobile access networks. For example, mobile telephones and other types of devices can connect to the Internet via a cellular radio access network. The service providers who operate such access networks may charge subscribers based on a variety of criteria, such as how much data the subscribers transfer over the access networks, the time of day the data is transferred, a service level for the subscriber and the like. For instance, a service provider may charge or bill a subscriber a given amount of money if the subscriber transfers more than a given amount of data over the access network in a billing period.
SUMMARY
In general, this disclosure describes techniques for collecting and outputting (“offloading”) data transfer statistics from a mobile access gateway within an access network. The data transfer statistics accurately indicate a quantity of data transferred for individual subscriber sessions communicating through the mobile access gateway. In one example, the mobile access gateway comprises a distributed control plane having a plurality of subscriber management service units for authenticating and managing subscriber sessions and a distributed forwarding plane having a plurality of forwarding units for processing subscriber data traffic. Each of the forwarding units includes at least one packet forwarding engine (PFE), which may take the form of a special-purpose network processor, such as an application-specific integrated circuit (ASIC). When a PFE receives a packet associated with a subscriber session, the PFE updates a corresponding data transfer statistic stored in a high-speed internal memory within the PFE. The PFE updates the data transfer statistic based on a quantity of data in the packet so as to maintain an accurate (e.g., byte accurate) count of the amount of data transferred by the subscriber session.
As described, the PFEs of the forwarding units within the mobile access gateway may support thousands or millions of concurrent subscribers and yet maintain accurate data transfer statistics. Techniques are described herein by which each PFE pushes the data transfer statistic from internal memory to general purpose memory of the forwarding unit that contains the PFE and ultimately to the particular subscriber management service unit that is anchoring the subscriber session in the control plane. In turn, the subscriber management service units within the control plane aggregate the traffic statistics for export from the mobile access gateway to a billing system of the service provider. As described, the techniques allow the mobile access gateway to maintain highly accurate traffic statistics for thousands or millions of subscribers within a mobile access network.
In one aspect, this disclosure describes a method for offloading a data transfer statistic from a PFE of a forwarding unit in a mobile access gateway. The method comprises receiving, at the forwarding unit of the mobile access gateway, a packet associated with a subscriber session. The method also comprises updating, by the PFE, the data transfer statistic based on a quantity of data in the packet, the data transfer statistic stored in a memory within the PFE. The method also comprises pushing, by the PFE, the data transfer statistic from the memory of the PFE to a memory of the forwarding unit.
In another aspect, this disclosure describes a mobile access gateway comprising a forwarding unit that comprises a forwarding unit memory and a PFE. The PFE comprises a PFE memory that stores a data transfer statistic. The PFE is configured to receive a packet associated with a subscriber session, update the data transfer statistic based on a quantity of data in the packet, and push the data transfer statistic from the PFE memory to the forwarding unit memory.
In another aspect, this disclosure describes a non-transitory computer-readable medium comprising instructions for causing one or more programmable processors to copy a data transfer statistic from a memory of a forwarding unit of a mobile access gateway to a FIFO associated with a service unit of the mobile access gateway, the data transfer statistic based on a quantity of data transferred in a subscriber session, the data transfer statistic being updated by a PFE of the forwarding unit and pushed by the forwarding unit into the memory of the forwarding unit.
The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the examples will be apparent from the description, drawings, and claims.
BRIEF DESCRIPTION OF DRAWINGS
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram that illustrates an example network system in which a mobile access gateway uses a push model to offload data transfer statistics.
<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram that illustrates an example configuration of a content access network.
<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram that illustrates an example configuration of the mobile access gateway.
<figref idref="DRAWINGS">FIG. 4</figref> is a block diagram that illustrates an example configuration of a forwarding unit.
<figref idref="DRAWINGS">FIG. 5</figref> is a flowchart that illustrates an example operation of a packet forwarding engine.
<figref idref="DRAWINGS">FIG. 6</figref> is a flowchart that illustrates an example operation of a traffic offload engine.
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart that illustrates an example operation of a user-level software program running on a processor of the forwarding unit.
DETAILED DESCRIPTION
The attached drawings illustrate examples. Elements indicated by reference numbers in the attached drawings correspond to elements indicated by like reference numbers in the following description. In the attached drawings, ellipses indicate the presence of one or more elements similar to those separated by the ellipses. Furthermore, stacked elements in the attached drawings indicate the presence of one or more similar elements. Alphabetical suffixes on reference numbers for similar elements are not intended to indicate the presence of particular numbers of the elements. In this disclosure, elements having names that start with ordinal words (e.g., “first,” “second,” “third,” and so on) do not necessarily imply that the elements have a particular order. Rather, such ordinal words are merely used to refer to different elements of a same or similar type.
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram that illustrates an example network system <b>2</b> in which a mobile access gateway <b>4</b> uses a push model to offload data transfer statistics. In the example of <figref idref="DRAWINGS">FIG. 1</figref>, network system <b>2</b> includes mobile access gateway <b>4</b>, one or more wireless devices <b>6</b>, a content access network <b>8</b>, a packet data network <b>10</b>, and a billing gateway <b>12</b>.
Packet data network <b>10</b> may provide one or more packet-based services for request and use by wireless devices <b>6</b>. Example types of packet-based services provided by packet data network <b>10</b> may include, but are not limited to, bulk data delivery, voice over Internet protocol (VoIP), Internet Protocol television (IPTV), Short Messaging Service (SMS), Wireless Application Protocol (WAP) service, or customer-specific application services. In various examples, packet data network <b>10</b> may comprise various types of networks. For instance, packet data network <b>10</b> may comprise a local area network (LAN), a wide area network (WAN), the Internet, a virtual LAN (VLAN), an enterprise LAN, a layer <b>3</b> virtual private network (VPN), an Internet Protocol (IP) intranet operated by a service provider that operates content access network <b>8</b>, an enterprise IP network, or some combination thereof. In various examples, packet data network <b>10</b> is connected to a public WAN, the Internet, or to other networks. One or more packet data protocols (PDPs) may operate over packet data network <b>10</b> to enable packet-based delivery of services. Example PDPs may include, but are not limited to, IP (IPv4 and/or IPv6), X.25, and Point-to-Point Protocol (PPP).
Although the example of <figref idref="DRAWINGS">FIG. 1</figref> shows wireless devices <b>6</b> as mobile telephones, wireless devices <b>6</b> may comprise various other types of wireless communication devices. For example, wireless devices <b>6</b> may comprise laptop or desktop computers, netbooks, video game devices, pagers, smart phones, personal data assistants (PDAs), utility meters, security devices such as a motion detectors or door locks, wireless sensors, tablet computers, appliances, in-car computers, or other types of wireless communication devices. In various instances, wireless devices <b>6</b> may also be referred to as User Equipment (UE) or Mobile Stations (MS). Wireless devices <b>6</b> may run one or more applications, such as VoIP clients, video games, videoconferencing applications, e-mail applications, web browser applications, and/or other types of applications. Certain applications running on wireless devices <b>6</b> may access services provided via packet data network <b>10</b>.
Each of wireless devices <b>6</b> is associated with a subscriber. In some instances, multiple wireless devices are associated with a single subscriber. A subscriber may be a person, a business organization, a governmental organization, a non-governmental organization, or another entity that subscribes to a service that enables wireless devices <b>6</b> to exchange data with one or more of the services provided via packet data network <b>10</b>. For example, a service provider may operate content access network <b>8</b> to provide network access, data transport, and other services to wireless devices <b>6</b>. In this example, the subscribers may subscribe to the services provided by the service provider.
Content access network <b>8</b> delivers user traffic from wireless devices <b>6</b> to mobile access gateway <b>4</b> and delivers user traffic from mobile access gateway <b>4</b> to wireless devices <b>6</b>. In various examples, content access network <b>8</b> is implemented in various ways. For example, content access network <b>8</b> may implement a cellular network architecture such as those defined by the Global System for Mobility (GSM) Association, the 3<sup>rd </sup>Generation Partnership Project (3GPP), the Internet Engineering Task Force (IETF), the Worldwide Interoperability for Microwave Access (WiMAX) Forum, and other standards bodies. Example network architectures defined by the 3GPP include the General Packet Radio Service (GPRS) architecture, the Universal Mobile Telecommunications System (UMTS) architecture, the Enhanced Data Rates for GSM Evolution (EDGE) architecture, the Long Term Evolution (LTE) architecture, and the LTE Advanced architecture. Alternatively or in conjunction with one of the above, content access network <b>8</b> may implement a Code Division Multiple Access-2000 (“CDMA2000”) architecture. The WiMAX architecture is a cellular network architecture defined by the WiMAX Forum. <figref idref="DRAWINGS">FIG. 2</figref>, described below, illustrates example details of content access network <b>8</b>.
Content access network <b>8</b> establishes and operates bearers to transport user traffic, in the form of PDP packet data units (PDUs), referred to hereinafter as “packets.” In general, a bearer is a set of network resources and data transport functions in content access network <b>8</b> that deliver user traffic between two network entities. A bearer may include a path, a logical connection, or a physical or wireless connection between two network devices. For example, a bearer may comprise an Evolved Packet System (EPS) bearer. Further details regarding bearer setup and management are found in “3GPP TS 23.401-General Packet Radio Service (GPRS) enhancements for Evolved Universal Terrestrial Radio Access Network,” version 10.0.0, 3rd Generation Partnership Project, Technical Specification Group Services and System Aspects, June 2010, and “3GPP TS 36.300-Evolved Universal Terrestrial Radio Access (E-UTRA) and Evolved Universal Terrestrial Radio Access Network Evolved Universal Terrestrial Radio Access Network (E-UTRAN) Overall Description,” Release 10, 3rd Generation Partnership Project. Technical Specification Group Radio Access Network, 2010, the entire contents of each being incorporated herein by reference.
In the example of <figref idref="DRAWINGS">FIG. 1</figref>, mobile access gateway <b>4</b> comprises a network device that operates as a gateway to packet data network <b>10</b>. For example, mobile access gateway <b>4</b> may comprise a Gateway GPRS Serving Node (GGSN), an Access Gateway (aGW), a packet data network (PDN) Gateway (PGW), or another type of network device that may operate as a gateway between content access network <b>8</b> and packet data network <b>10</b>. In some examples, mobile access gateway <b>4</b> is a router that executes routing protocols to identify routes through content access network <b>8</b> or packet data network <b>10</b> to various destinations.
In the example of <figref idref="DRAWINGS">FIG. 1</figref>, mobile access gateway <b>4</b> comprises a distributed control plane having a plurality of subscriber management service units (“service units”) <b>14</b> for authenticating and managing subscriber sessions and a distributed forwarding plane having a plurality of forwarding units <b>16</b> for processing subscriber data traffic. Each of forwarding units <b>16</b> may comprise one or more removable physical interface cards (PICs). Each of the PICs may connect mobile access gateway <b>4</b> to a different communication link in content access network <b>8</b> or packet data network <b>10</b>. In addition, each of forwarding units <b>16</b> comprises a general purpose microprocessor and supporting computing hardware including memory, and one or more packet forwarding engines (PFEs), which may take the form of a special-purpose network processor having customized internal logic for processing network packets. In one example, each of forwarding units <b>16</b> may comprise four PFEs. Each of the PFEs may be implemented as one or more application-specific integrated circuits (ASICs) having high-speed internal memory. In some examples, each of forwarding units <b>16</b> is insertable within a chassis of mobile access gateway <b>4</b>.
As mentioned above, mobile access gateway <b>4</b> functions as a gateway between content access network <b>8</b> and packet data network <b>10</b>. Thus, when wireless devices <b>6</b> send packets to the services available via packet data network <b>10</b>, content access network <b>8</b> delivers the packets to mobile access gateway <b>4</b> and mobile access gateway <b>4</b> may forward the packets on packet data network <b>10</b> for delivery to the services. Likewise, when the services available via packet data network <b>10</b> send packets to wireless devices <b>6</b>, packet data network <b>10</b> delivers the packets to mobile access gateway <b>4</b> and mobile access gateway <b>4</b> may forward the packets on content access network <b>8</b> for delivery to wireless devices <b>6</b>.
The packets received by mobile access gateway <b>4</b> are associated with subscriber sessions. Each subscriber session is a logical, authenticated connection for exchanging of data between an individual wireless device and a service provided via packet data network <b>10</b>. Because each of wireless devices <b>6</b> is associated with a subscriber, each of the subscriber sessions is associated with a subscriber.
To establish subscriber sessions, wireless devices <b>6</b> send session requests on content access network <b>8</b>. Forwarding units <b>16</b> of mobile access gateway <b>4</b> receive session requests and forward the session requests to service units <b>14</b> of mobile access gateway <b>4</b>. In some instances, service units <b>14</b> may be referred to herein as “service PICs” or “subscriber management service units.” When a service unit receives a session request to establish a subscriber session between a given wireless device and a given service, the service unit generates session context information for the subscriber session. The session context information for the subscriber session may indicate a PDP address of the given wireless device and an Access Point Name (APN) for the given service, forwarding information, charging information, and one or more quality of service (QoS) profiles for the subscriber associated with the subscriber session. After generating the session context information for a subscriber session, the service unit may configure forwarding units <b>16</b> to process and forward packets belonging to the subscriber session. Furthermore, the service unit may select one of forwarding units <b>16</b> to “anchor” the subscriber session.
After a wireless device establishes a subscriber session with a service, a forwarding unit of mobile access gateway <b>4</b> may receive a packet associated with the subscriber session. When a forwarding unit receives a packet that belongs to the subscriber session, a PFE of the forwarding unit performs a datapath operation on the packet. The PFE may perform various datapath operations on the packet depending on whether the forwarding unit anchors the subscriber session and depending on values in the session context information for the subscriber session. For example, if the forwarding unit does not anchor the subscriber session, the forwarding unit may perform a datapath operation that forwards the packet to the forwarding unit of mobile access gateway <b>4</b> that anchors the subscriber session. If the forwarding unit anchors the subscriber session, the PFE of the forwarding unit may perform a datapath operation that identifies and performs packet processing operations with regard to the packet. The PFE may identify the packet processing operations to perform with regard to the packet based on the session context information for the subscriber session.
The packet processing operations may include various operations. For example, one packet processing operation may involve identifying a next hop for the packet and forwarding the packet to the identified next hop. The next hop for the packet may be another one of forwarding units, one of service units <b>14</b>, or an output interface of the forwarding unit.
Furthermore, the packet processing operations performed by the PFE may include updating one or more data transfer statistics stored in a memory of the PFE based on a quantity of data stored in the packet. In some examples, the data transfer statistic may indicate a quantity of data exchanged by the subscriber during the subscriber session so as to maintain an accurate (e.g., byte accurate) count of the amount of data transferred by the subscriber session. In such examples, the PFE may update the data transfer statistic by adding the quantity of data in the packet to the data transfer statistic. In this way, the PFEs of forwarding units <b>16</b> within mobile access gateway <b>4</b> may support thousands or millions of concurrent subscribers and yet maintain accurate data transfer statistics on a per-subscriber basis.
In accordance with the techniques of this disclosure, a rate-controlled offload process is described in which the PFE pushes the data transfer statistic from the internal memory of the PFE to the general-purpose memory of the forwarding unit <b>16</b> in which the PFE is located. For instance, internal logic within the PFE may copy the data transfer statistic from the internal memory of the PFE to the external memory of the forwarding unit without first receiving a request from the general-purpose microprocessor of the forwarding unit. In other words, the PFE does not necessarily send a copy of the data transfer statistic to the memory of the forwarding unit in response to a request from the microprocessor of the forwarding unit. Moreover, the PFE may asynchronously push accurate statistics for the current subscriber sessions in a rate-controlled manner at appropriate times based on per-subscriber context information programmed within an internal packet-processing forwarding path of the PFE.
Software programs executing on the general-purpose microprocessor of the forwarding unit may operate to monitor the statistics pushed by the internal logic of the PFE to identify the service units <b>14</b> to which each individual subscriber session is anchored in the control plane. The software programs executing on the forwarding units <b>16</b> may then copy each data transfer statistic to a respective first-in-first-out data structure (FIFO) associated with the identified service units <b>14</b> for delivery to the service units. In response to receiving data transfer statistics, each of service units <b>14</b> updates session records for the individual subscribers for delivery to billing gateway <b>12</b>. The service units <b>14</b> may process the session records associated with the subscriber sessions in various ways. For example, the service units <b>14</b> may generate aggregate data for each subscriber based on the data transfer statistics received from forwarding units <b>16</b> and send the resulting aggregate data to billing gateway <b>12</b>. For instance, the service unit may aggregate the data transfer statistics for subscriber sessions associated with the same subscriber. In this example, the service unit may forward the aggregated data transfer statistics to billing gateway <b>12</b> via packet data network <b>10</b>.
Billing gateway <b>12</b> may use the data provided by mobile access gateway <b>4</b> to generate charges or bills to subscribers based on data transfer statistics. For example, if the data provided by mobile access gateway <b>4</b> indicates a quantity of data exchanged over content access network <b>8</b> by a subscriber, billing gateway <b>12</b> may generate charges or bills to the subscriber based on the quantity of data exchanged by the subscriber during a billing period.
Thus, mobile access gateway <b>4</b> may perform a method for offloading data transfer statistics from the distributed PFEs of forwarding units <b>16</b> in mobile access gateway <b>4</b> to distributed service units <b>14</b> that manage control plane functions for the individual subscribers. The method comprises receiving, at the forwarding unit of mobile access gateway <b>4</b>, a packet associated with a subscriber session. The method may also comprise updating, by the PFE, the data transfer statistic based on a quantity of data in the packet, the data transfer statistic stored in a memory of the PFE. In addition, the method may also comprise pushing the data transfer statistic from the memory of the PFE to a memory of the forwarding unit. Furthermore, mobile access gateway <b>4</b> may comprise a forwarding unit that comprises a forwarding unit memory and a PFE that comprises a PFE memory that stores a data transfer statistic. The PFE is configured to receive a packet associated with a subscriber session, update the data transfer statistic based on a quantity of data in the packet, and push the data transfer statistic from the PFE memory to the forwarding unit memory.
<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram that illustrates an example configuration of content access network <b>8</b>. In the example of <figref idref="DRAWINGS">FIG. 2</figref>, content access network <b>8</b> includes a core network <b>50</b> and a plurality of radio access networks <b>52</b>A through <b>52</b>N (collectively, “radio access networks <b>52</b>”). Core network <b>50</b> transmits packets from radio access networks <b>52</b> to mobile access gateway <b>4</b> and from mobile access gateway <b>4</b> to radio access networks <b>52</b>. Core network <b>50</b> may comprise various types of networks, such as a GPRS core packet-switched network, an IP-based mobile multimedia core network, an Evolved Packet Core (EPC), or an Evolved Packet System (EPS).
Core network <b>50</b> comprises intermediate devices that implement the protocols of content access network <b>8</b>. Example type of intermediate devices in the core network <b>50</b> may include, but are not limited to, Serving GPRS Support Nodes (SGSNs) and Mobility Management Entities (MMEs). In the example of <figref idref="DRAWINGS">FIG. 1</figref>, core network <b>50</b> includes mobile access gateway <b>4</b>, a plurality of Serving Gateways (SGWs) <b>54</b>A-<b>54</b>N (collectively, “Serving Gateways <b>54</b>” or “SGWs <b>54</b>”), and a MME <b>58</b>
MME <b>58</b> is logically connected to SGWs <b>54</b>. In some examples, MME <b>58</b> may, in addition to bearer management and establishment, host Non-Access Stratum (NAS) signaling, mobile access gateway <b>4</b> and SGW <b>54</b> selection, roaming, and authentication. In various examples, core network <b>50</b> includes different numbers of MMEs, SGWs, and/or PGWs. In different architectural examples of content access network <b>8</b>, such as a UTRAN network, SGSNs may perform the functionality of SGWs <b>54</b> and MME <b>58</b>, and a GGSN may perform functionality of mobile access gateway <b>4</b> consistent with the techniques of this disclosure. While described with respect to a particular type of LTE node, i.e., a PGW, the techniques may be applicable to other types of core network gateways, including GGSNs, SGSNs, aGWs, and SGWs.
Each of radio access networks <b>52</b> may be a radio access network, which in various instances may be a GSM Radio Access Network (GRAN), a WiMAX radio access network, a UTRAN, and/or an evolution of a UTRAN for LTE networks known as an E-UTRAN. Each of radio access networks <b>52</b> may include one or more radio towers, which in the case of E-UTRANs are eNode Bs and in the case of UMTS radio access networks are Node Bs. In some examples, wireless devices <b>6</b> communicatively couple to radio access networks <b>52</b> using Uu interfaces operating over radio links.
Content access network <b>8</b> may further include a backhaul or transport network (not shown) that includes land-based transmission lines, frequently leased by a service provider, to transport user and control traffic between wireless devices <b>6</b> and mobile access gateway <b>4</b>. The backhaul network may also include network devices such as aggregation devices and routers. Further details of an example content access network for a mobile network are described in U.S. patent application Ser. No. 12/905,771, entitled “COLLECTIVELY ADDRESSING WIRELESS DEVICES,” filed Oct. 15, 2010, the entire contents being incorporated herein by reference.
Mobile access gateway <b>4</b> may present a uniform interface to downstream nodes, such as SGSNs and MMEs, to allow the downstream nodes to send session requests to the uniform interface rather than distributing session requests among multiple devices or multiple control plane entities (e.g., service cards) within a single device. In some instances, the uniform interface is associated with an IP address or other network layer address of mobile access gateway <b>4</b> that is shared among control plane entities. In general, service units <b>14</b> of mobile access gateway <b>4</b> respond to session requests <b>51</b> from SGWs <b>54</b>. Each session request <b>51</b> may include a wireless device identifier (e.g., an IMSI) for the wireless device <b>6</b> that initiated the request. The session requests <b>51</b> may further include an APN that identifies a packet data network and may in some instances further identify a requested service (e.g., Internet, WAP, or multimedia messaging service (MMS)) provided by the packet data network. In other words, the APN is a logical name that determines the appropriate gateway (e.g., GGSN) for the wireless device and by a gateway to determine the services requested by the user or the address of an access point in an external packet network to which user packets from the wireless device should be forwarded. Service units <b>14</b> provide control plane functions such as an authentication, authorization, and accounting (AAA) protocol, a dynamic host configuration protocol (DHCP), and a charging protocol for communication, for example, with a policy charging rules function (PCRF) entity to obtain charging characteristics and requirements on a per-charging basis. For each subscriber sessions, PFEs within forwarding units <b>16</b> maintain and push data transfer statistic from internal memory to general purpose memory of the forwarding unit that contains the PFE and ultimately to the particular service unit <b>14</b> that is anchoring the subscriber session in the control plane. In turn, subscriber management service units <b>14</b> aggregate the traffic statistics for export from mobile access gateway <b>4</b> to a billing system (e.g., billing gateway <b>12</b>) of the service provider.
<figref idref="DRAWINGS">FIG. 3</figref> is a block diagram that illustrates an example configuration of mobile access gateway <b>4</b>. In the example of <figref idref="DRAWINGS">FIG. 3</figref>, mobile access gateway <b>4</b> comprises a control plane <b>100</b> and a forwarding plane <b>102</b> connected by internal, high-speed switch fabric (switch <b>104</b>). In some instances, this disclosure may refer to forwarding plane <b>102</b> as a “data plane.”
Control plane <b>100</b> provides routing/control functionalities. Forwarding plane <b>102</b> provides forwarding/data functionalities. In various examples, control plane <b>100</b> and forwarding plane <b>102</b> may be implemented in various ways. For example, control plane <b>100</b> and/or forwarding plane <b>102</b> may be implemented as separate physical dedicated hardware components that either statically implement the functionality in hardware or dynamically execute software to implement the functionality.
Control plane <b>100</b> comprises a routing unit <b>106</b> and service units <b>14</b>. Control plane <b>100</b> is a decentralized control plane in that the functionality of control plane <b>100</b> is distributed among routing unit <b>106</b> and service units <b>14</b>. Forwarding plane <b>102</b> comprises forwarding units <b>16</b>. Forwarding plane <b>102</b> is a distributed forwarding plane in that data plane functionality and packet forwarding functionality is distributed among forwarding units <b>16</b>. In some examples, packet forwarding functionality may be consolidated in a single forwarding unit.
In various examples, routing unit <b>106</b>, subscriber management service units <b>14</b>, and forwarding units <b>16</b> may be implemented in various ways. For example, routing unit <b>106</b>, service units <b>14</b>, and forwarding units <b>16</b> may each include one or more processors and one or more computer-readable storage media that store software instructions that define software programs. In this example, execution of the software instructions by the processors may cause routing unit <b>106</b>, service units <b>14</b>, and forwarding units <b>16</b> to provide some or all of the functionality ascribed in this disclosure to routing unit <b>106</b>, service units <b>14</b>, and forwarding units <b>16</b>. Example types of non-transitory computer-readable storage media include, but are not limited to, storage devices (e.g., disk drives or optical drives) or memory (such as Flash memory, random access memory or RAM) or other types of volatile or non-volatile memory that store data and instructions. Furthermore, in some examples, routing unit <b>106</b>, service units <b>14</b>, and forwarding units <b>16</b> may include dedicated hardware, such as one or more integrated circuits, one or more ASICs, one or more Application Specific Special Processors (ASSPs), one or more Field Programmable Gate Arrays (FPGAs), or any combination of one or more of the foregoing examples of dedicated hardware.
Switch <b>104</b> delivers data units and control messages among routing unit <b>106</b>, service units <b>14</b>, and forwarding units <b>16</b>. In various examples, switch <b>104</b> is implemented in various ways. For instance, switch <b>104</b> may comprise an internal switch fabric, an internal cross-bar, a bus, or a link. Examples of high-speed multi-stage switch fabrics used as a data plane to relay packets between units within a router are described in U.S. Patent Application 2008/0044181, entitled “MULTI-CHASSIS ROUTER WITH MULTIPLEXED OPTICAL INTERCONNECTS,” the entire contents of which are incorporated herein by reference.
As illustrated in the example of <figref idref="DRAWINGS">FIG. 3</figref>, each of forwarding units <b>16</b>A-<b>16</b>N comprises one or more interface cards (“IFCs”) <b>108</b>, one or more packet forwarding engines (“PFEs”) <b>110</b>, and one or more processors <b>112</b>. In some examples, each of forwarding units <b>16</b> connects to one or more instances of various LTE interfaces. Each of IFCs <b>108</b> includes one or more outbound interfaces that couple to physical communication links to external devices that are capable of carrying subscriber control and data traffic.
PFEs <b>110</b> may each represent a dense port concentrator (DPC), a modular port concentrator (MPC), a flexible PIC concentrator (FPC), or another line card that is insertable within a chassis of mobile access gateway <b>4</b>. For instance, IFCs <b>108</b> may include multiple PICs that each include one or more inbound/outbound interfaces. Each of forwarding units <b>16</b> may include substantially similar components to perform substantially similar functionality.
Each of forwarding units <b>16</b> may include a unique identifier that identifies the forwarding unit to other components of mobile access gateway <b>4</b>. For example, identifiers of forwarding units <b>16</b> may include an index, a slot, an identifying string, an internal IP address, an interface identifier such as an outbound interface identifier, or a link layer address. In some examples, inbound and outbound interfaces (e.g., ports) of IFCs <b>108</b> may be specified by identifying the port type, a slot in a chassis of mobile access gateway <b>4</b> for the corresponding one of forwarding units <b>16</b>, a PIC, and a port number. For example, GigE-3/1/2 identifies port 2 of PIC 1 on the one of forwarding units <b>16</b> that occupies slot 3 in the chassis of mobile access gateway <b>4</b>, and the port is a Gigabit Ethernet port.
Forwarding units <b>16</b> receive via IFCs <b>108</b> data session traffic associated with a subscriber session. If necessary, forwarding units <b>16</b> internally forward the data session traffic to one of forwarding units <b>16</b> that anchors the subscriber session. Forwarding units <b>16</b> may also receive via IFCs <b>108</b> control session traffic associated with a subscriber session. If necessary, forwarding units <b>16</b> internally forward the control session traffic to one of service units <b>14</b> that anchors the subscriber session. Further details regarding internal packet forwarding are found in U.S. patent application Ser. No. 13/248,834, filed Sep. 9, 2011 and entitled “MOBILE ACCESS GATEWAY HAVING REDUCED FORWARDING STATE FOR ANCHORING MOBILE SUBSCRIBERS,” the entire contents being incorporated by reference herein.
Routing unit <b>106</b> of control plane <b>100</b> executes the routing functionality of mobile access gateway <b>4</b>. As illustrated in the example of <figref idref="DRAWINGS">FIG. 3</figref>, routing unit <b>106</b> comprises a routing information base (“RIB”) <b>114</b>, a routing protocol daemon (“RPD”) <b>116</b>, and a resource manager <b>118</b>. RIB <b>114</b> stores routing information. For instance, RIB <b>114</b> may store information that defines a topology of a network, such as content access network <b>8</b> and/or packet data network <b>10</b> of <figref idref="DRAWINGS">FIG. 1</figref>. Routing protocol daemon <b>116</b> uses routing protocols by which mobile access gateway <b>4</b> exchanges the routing information stored in RIB <b>114</b> with other routers. Furthermore, routing protocol daemon <b>116</b> may resolve the topology defined by routing information in RIB <b>114</b> to select or determine one or more routes through content access network <b>8</b> and/or packet data network <b>10</b>. For each selected route, routing protocol daemon <b>116</b> adds an entry to a route table that specifies, for the selected route, one or more outbound interfaces of various IFCs <b>108</b>. In various examples, the route table is implemented in various ways. For example, the route table may be implemented as a radix tree having nodes that each key to a network address prefix and specify an outbound interface for the network address prefix. In this example, the network address prefixes may be IPv4/IPv6 network address prefixes.
Routing protocol daemon <b>116</b> may update forwarding plane <b>102</b> with forwarding information directly or via resource manager <b>118</b>. Further details of one example embodiment of a router can be found in U.S. patent application Ser. No. 12/182,619, filed Jul. 30, 2008 and entitled “STREAMLINED PACKET FORWARDING USING DYNAMIC FILTERS FOR ROUTING AND SECURITY IN A SHARED FORWARDING PLANE,” which is incorporated herein by reference. Resource manager <b>118</b> of routing unit <b>106</b> allocates and manages resources of mobile access gateway <b>4</b> among service units <b>14</b> and forwarding units <b>16</b>. In addition, resource manager <b>118</b> may mediate communication among service units <b>14</b> and other components of control plane <b>100</b>.
Each of service units <b>14</b> presents a uniform interface to downstream devices and provides decentralized subscriber session setup and management for mobile access gateway <b>4</b>. For example, service units <b>14</b> may be addressable by the same PDP address. In this example, control messages destined for the PDP address of service units <b>14</b> may therefore be handled by any of service units <b>14</b>. Each of service units <b>14</b> may be associated with a unique identifier that identifies the service unit to other components of mobile access gateway <b>4</b>. For example, the identifiers of service units <b>14</b> may include indexes, slots, identifying strings, internal IP addresses, link layer addresses or other unique identifiers that uniquely identify service units <b>14</b> to other components of mobile access gateway <b>4</b>.
In some examples, each of service units <b>14</b> comprises a packet forwarding engine (PFE) or other component of a physical interface card insertable within one or more chassis of mobile access gateway <b>4</b>. The physical interface card may be, for instance, a multi-services dense port concentrator (MS-DPC). One or more of service units <b>14</b> may also each comprise a co-processor executing on a routing node, such as routing unit <b>106</b>. Each of service units <b>14</b> may include substantially similar components to perform substantially similar functionality. Additional details regarding handling subscriber sessions with a decentralized control plane of multiple subscriber management service units may be found in U.S. patent application Ser. No. 13/172,556, entitled “MOBILE ACCESS GATEWAY HAVING DECENTRALIZED CONTROL PLANE FOR ANCHORING SUBSCRIBER SESSIONS,” filed Jun. 29, 2011, the entire contents being incorporated herein.
Service units <b>14</b> may independently use control plane protocols to establish and manage subscriber sessions requested by subscribers. In this sense, service units <b>14</b> provide a form of a decentralized control plane for managing subscriber sessions. As a result, mobile access gateway <b>4</b> may achieve scalability to handle thousands or millions of concurrent subscriber sessions.
When one of service units <b>14</b> establishes a new subscriber session, the service unit generates session context information for the subscriber session. The session context information indicates packet processing operations to be performed on subscriber traffic associated with the subscriber session. Example types of packet processing operations include, but are not limited to packet filtering, lawful interception. IP address allocation (performed during subscriber session establishment), accounting, rate enforcement and traffic shaping, bearer binding to identify bearers to route and forward service packets, packet encapsulation/decapsulation for GTP-U traffic exchanged within bearers, route lookup of packets' outer IP addresses, packet forwarding, and/or other packet gateway functionality with respect to the subscriber session.
Furthermore, the session context information may include the PDP address of a wireless device associated with the subscriber session, forwarding information, an APN, charging information, and one or more QoS profiles for the subscriber associated with the subscriber session. The forwarding information may include tunnel endpoint identifiers (TEIDs) and identifiers/addresses for downstream service nodes.
When one of service units <b>14</b> establishes a session, the service unit selects one of forwarding units <b>16</b> to anchor the subscriber session. The service unit may select the forwarding unit to anchor the subscriber session based on a number of factors. For example, the service unit may select the forwarding unit to anchor the subscriber session based on an existing subscriber session load on the forwarding unit. In another example, the service unit may interact with a routing process of routing unit <b>106</b> to select the forwarding unit to anchor the subscriber session. In another example, a first one of forwarding units <b>16</b> may have a downstream interface for the subscriber session and a second one of forwarding units <b>16</b> may have an upstream interface for the subscriber session. In this example, the service unit may select the first forwarding unit when the first forwarding unit has more upstream interfaces than downstream interfaces. In this example, the service unit may select the second forwarding unit when the second forwarding unit has more downstream interfaces than upstream interfaces. By considering the relative number of downstream interfaces versus upstream interfaces, the service unit may be able to balance subscriber session traffic processing among forwarding units <b>16</b>. In some examples, the service unit may select different ones of forwarding units <b>16</b> to anchor upstream and downstream traffic in the subscriber session.
When one of service units <b>14</b> selects a given forwarding unit to anchor a subscriber session, the service unit installs session context information on the given forwarding unit. Subsequently, the given forwarding unit may identify and process subscriber traffic for the subscriber session unit based on the session context information. As the service unit establishes the subscriber sessions, the service unit handles configuration of forwarding units <b>16</b> for constructing session-specific forwarding paths for processing and forwarding subscriber data traffic associated with the subscriber sessions. PFEs <b>110</b> of forwarding units <b>16</b> use session context information to perform datapath operations regarding packets that belong to subscriber sessions anchored by forwarding units <b>16</b>. The datapath operations performed by a PFE include one or more packet processing operations. Example details on internal forwarding paths of forwarding units <b>16</b> can be found in U.S. patent application Ser. No. 13/172,505, entitled “VARIABLE-BASED FORWARDING PATH CONSTRUCTION FOR PACKET PROCESSING WITHIN A NETWORK DEVICE,” filed Jun. 29, 2011, the entire contents being incorporated herein by reference.
<figref idref="DRAWINGS">FIG. 4</figref> is a block diagram that illustrates an example configuration of forwarding unit <b>16</b>A. Although <figref idref="DRAWINGS">FIG. 4</figref> illustrates an example configuration of forwarding unit <b>16</b>A, each of forwarding units <b>16</b> may have a similar configuration. As illustrated in the example of <figref idref="DRAWINGS">FIG. 4</figref>, forwarding unit <b>16</b>A comprises a plurality of PFEs <b>110</b>, a forwarding unit (FU) memory <b>202</b>, a processor <b>112</b>A, and a plurality of service unit FIFOs <b>230</b>. In various examples, forwarding unit <b>16</b>A may comprise various numbers of PFEs. For example, forwarding unit <b>16</b>A may comprise four PFEs <b>110</b>. In other examples, forwarding unit <b>16</b>A may comprise more or fewer than four PFEs. Although <figref idref="DRAWINGS">FIG. 4</figref> shows service unit FIFOs <b>230</b> as being outside of FU memory <b>202</b>, in some examples, FU memory <b>202</b> stores service unit FIFOs <b>230</b>.
Furthermore, as illustrated in the example of <figref idref="DRAWINGS">FIG. 4</figref>, PFE <b>110</b> OA may be a specialized packet processor having a multi-core architecture that includes an internal PFE memory <b>210</b> and hardware logic implementing a plurality of packet processing engines (PPEs) <b>207</b>, a traffic offload engine (TOE) <b>212</b>, a distribution unit <b>214</b>, a packet buffer <b>216</b>, and a synthetic packet unit <b>218</b>. Each of PPEs <b>207</b> may provide a plurality of threads <b>208</b>. Although not illustrated in the example of <figref idref="DRAWINGS">FIG. 4</figref> for the sake of clarity, each of PFEs <b>110</b> may include corresponding threads, memories, TOEs, packet buffers, and synthetic packet units. In some examples, PFEs <b>110</b> may comprise more, fewer, or different components than those shown in the example of <figref idref="DRAWINGS">FIG. 4</figref>. For instance, in some examples PFEs <b>110</b> do not include synthetic packet units. In such examples, a single synthetic packet unit in forwarding unit <b>16</b>A or elsewhere may provide the functionality of synthetic packet unit <b>218</b>.
In the example of <figref idref="DRAWINGS">FIG. 4</figref>, internal PFE memory <b>210</b> stores a PFE FIFO <b>220</b>, a forwarding information base (FIB) <b>222</b>, and session records <b>224</b>. In some examples, PFE memory <b>210</b> may store data in addition to PFE FIFO <b>220</b>, FIB <b>222</b>, and session records <b>224</b>. In various examples, PFE memory <b>210</b> is implemented in various ways. For example, PFE memory <b>210</b> may a plurality of different memory units. In this example, different memory units of PFE memory <b>210</b> may store PFE FIFO <b>220</b>, FIB <b>222</b>, and session records <b>224</b>. In other examples, a single memory unit of PFE memory <b>210</b> may store one or more of PFE FIFO <b>220</b>, FIB <b>222</b>, and session records <b>224</b>.
Session records <b>224</b> are programmed within PFE <b>110</b>A via processor <b>112</b>A and contain data regarding subscriber sessions. For example, each of session records <b>224</b> may store a PDP address of a wireless device, forwarding information, an APN for a service provided via packet data network <b>10</b>, and other data regarding subscriber sessions. In addition, each of session records <b>224</b> stores charging information regarding a subscriber session. The charging information contains data related to charging subscribers for exchanging data over content access network <b>8</b>. For instance, the charging information in records includes data transfer statistics regarding the data exchanged by the subscribers during subscriber sessions.
In some examples, each of session records <b>224</b> includes a plurality of variable pairs. Each of the variable pairs specifies an identifier of a variable and a value for the variable. Each of the variables specifies a different piece of data regarding a subscriber session. For example, each of session records <b>224</b> may include a variable pair that includes an identifier of a data transfer statistic and a value that indicates a quantity of subscriber traffic transferred during the subscriber session associated with the session record.
Each of PPEs <b>207</b> may comprise hardware configured to execute threads <b>208</b>. For instance, PPEs <b>207</b> may comprise specialized or general purpose integrated circuits for executing threads <b>208</b>. In various examples, PFE <b>110</b>A may comprise various numbers of PPEs <b>207</b>. For example, PFE <b>110</b>A may comprise sixteen PPEs. In various examples, PPEs <b>207</b> may comprise various numbers of threads <b>208</b>. For example, each of PPEs <b>207</b> may comprise twenty threads. Thus, in this example, if PFE <b>110</b>A comprises sixteen PPEs, forwarding unit <b>16</b>A comprises <b>320</b> threads. In other examples, each of PPEs <b>207</b> may comprise more or fewer than twenty threads. In various examples, threads <b>208</b> may be implemented in various ways. For example, threads <b>208</b> may be implemented in microcode. In other examples, threads <b>208</b> may be implemented in higher level code.
Processor <b>112</b>A comprises one or more integrated circuits to execute software instructions. In various examples, processor <b>112</b>A is implemented in various ways. For example, processor <b>112</b>A may be implemented as one or more general-purpose processors or special-purpose processors, such as DSPs, ASICs, FPGAs, etc.
Processor <b>112</b>A is coupled to FU memory <b>202</b> such that processor <b>112</b>A is able to read data from and write data to FU memory <b>202</b>. As illustrated in the example of <figref idref="DRAWINGS">FIG. 4</figref>, FU memory <b>202</b> stores a set of software instructions <b>226</b> and a forwarding unit (FU) FIFO <b>228</b>. In some examples, software instructions <b>226</b> include microkernel instructions and user-level software instructions. Execution of the microkernel instructions by processor <b>112</b>A causes processor <b>112</b>A to provide a microkernel. The microkernel may provide a basic set of operating system services. Processor <b>112</b>A may also execute the user-level software instructions to provide user-level software processes that utilize the operating system services of the microkernel. In various examples, the user-level software processes executing on processor <b>112</b>A may perform various tasks. For example, the user-level software processes executing on processor <b>112</b>A may configure PFEs <b>110</b>, offload data transfer statistics from FU memory <b>202</b> to service units <b>14</b>, and perform other tasks.
When IFC <b>108</b>A receives a packet from content access network <b>8</b> or packet data network <b>10</b>, IFC <b>108</b>A provides the packet to one of PFEs <b>110</b>. For ease of explanation, this disclosure assumes that IFC <b>108</b>A provides the packet to PFE <b>110</b>A. When PFE <b>110</b>A receives the packet, packet buffer <b>216</b> may temporarily store the packet. Subsequently, distribution unit <b>214</b> assigns the packet to one of threads <b>208</b>. For ease of explanation, this disclosure assumes that distribution unit <b>214</b> assigns the packet to thread <b>208</b>A.
When distribution unit <b>214</b> assigns the packet to thread <b>208</b>A, thread <b>208</b>A may perform a datapath operation on the packet. In various examples, thread <b>208</b>A may perform various datapath operations on the packet. <figref idref="DRAWINGS">FIG. 5</figref>, described below, is a flowchart that illustrates an example datapath. In other examples, thread <b>208</b>A may perform datapath operations that are different than the example datapath operation shown in <figref idref="DRAWINGS">FIG. 5</figref>.
When thread <b>208</b>A performs the datapath operation on the packet, thread <b>208</b>A may attempt to identify a subscriber session associated with the packet. In various examples, thread <b>208</b>A may attempt to identify a subscriber session associated with the packet in various ways. For example, each of session records <b>224</b> may be associated with a hash value. In this example, PFE <b>110</b>A may comprise a hash engine that generates a hash value for the packet at least in part by executing a hash function on one or more elements of the packet. For instance, the hash engine may execute a hash function such as SHA-1 or MD5 on elements of the packet such as the source and destination addresses of the packet, port numbers specified by the packet, and so on. Thread <b>208</b>A may then determine whether the hash value for the packet matches the hash value of a session record. If there is a match, the packet is associated with the subscriber session associated with the session record.
If thread <b>208</b>A successfully identifies the subscriber session associated with the packet, thread <b>208</b>A may perform one or more packet processing operations specified by the session record for the subscriber session. Different session records may specify different packet processing operations. For example, one or more of session records <b>224</b> may specify that a QoS operation is to be applied to the packet. In another example, one or more of session records <b>224</b> may specify that an operation to facilitate lawful intercept of the packet is to be performed on the packet.
Furthermore, the packet processing operations may include updating the identified session record such that the session record indicates an up-to-date data transfer statistic regarding the data exchanged by the subscriber. For example, the packet processing operations may include updating the data transfer statistic to indicate the current quantity of data exchanged by the subscriber over content access network <b>8</b> during the subscriber session. In this example, thread <b>208</b>A may update the data transfer statistic by adding the quantity of data in the packet to the quantity of data indicated by the data transfer statistic.
Synthetic packet unit <b>218</b> provides synthetic packets to PFE <b>110</b>A on a recurring basis. For example, the recurring basis may be a periodic basis with an interval of less than five seconds. For instance, synthetic packet unit <b>218</b> may provide a synthetic packet to PFE <b>110</b>A every one or two seconds. In some examples, the synthetic packets have a packet type that is different than the packet types of packets received from content access network <b>8</b> or packet data network <b>10</b>.
In response to receiving a synthetic packet, one of threads <b>208</b> at PFE <b>110</b>A may perform a callout operation. When the thread performs the callout operation, the thread may iterate through session records <b>224</b>. As the thread iterates through session records <b>224</b>, the thread identifies ones of session records <b>224</b> that specify data transfer statistics that exceed a threshold. The thread may add the identified session records to PFE FIFO <b>220</b>. Thus, the callout operation may add a session record to PFE FIFO <b>220</b> if the data transfer statistic exceeds a threshold, but does not add the session record to PFE FIFO <b>220</b> if the data transfer statistic does not exceed the threshold. Because the session records contain data transfer statistics, the thread effectively adds a data transfer statistic to PFE FIFO <b>220</b> if the data transfer statistic exceeds a threshold, and does not add the data transfer statistic to PFE FIFO <b>220</b> if the data transfer statistic does not exceed the threshold.
In various examples, the threshold may have a variety of values. For example, when one of service units <b>14</b> establishes a subscriber session, the service unit may configure the data transfer statistic to indicate a quantity of data that a subscriber has already transferred over content access network <b>8</b> during a billing period. In this example, PFE <b>110</b>A may increase the data transfer statistic based on the quantity of data in each packet in the subscriber session. Furthermore, in this example, the threshold may be a quantity of data, such as four gigabytes, allowed by the subscriber's service plan. In another example, subscribers may receive data transfer quotas. In this example, the data transfer statistic may indicate a quantity of data remaining in the data transfer quota. In this example, the callout operation may determine that the data transfer statistic exceeds the threshold when the data transfer statistic drops below zero. Thus, the data transfer statistic may “exceed” the threshold in the sense that the data transfer statistic has moved past the threshold. In some examples, different subscribers may have different thresholds.
When the callout operation adds the session record to PFE FIFO <b>220</b>, the callout operation may add all or parts of the session record to PFE FIFO <b>220</b>. For example, the callout operation may add sufficient data to identify the subscriber session associated with the session record and the data transfer statistic to PFE FIFO <b>220</b>. In this example, the callout operation may omit elements of the session record that indicate which packet processing operations to perform on packets in the session.
TOE <b>212</b> pushes session records from PFE FIFO <b>220</b> to FU FIFO <b>228</b>. Thus, TOE <b>212</b> is configured to move data transfer statistics from PFE FIFO <b>220</b> to FU FIFO <b>228</b> without first receiving a request to move session records from PFE FIFO <b>220</b> to FU FIFO <b>228</b>. <figref idref="DRAWINGS">FIG. 6</figref>, described below, is a flowchart that illustrates an example operation of TOE <b>212</b>. To push session records from PFE FIFO <b>220</b> to FU FIFO <b>228</b>, TOE <b>212</b> determines whether there are any session records in PFE FIFO <b>220</b>. If there is a record in PFE FIFO <b>220</b> and there is sufficient space in FU FIFO <b>228</b> for the session record, TOE <b>212</b> moves the session record from PFE FIFO <b>220</b> to FU FIFO <b>228</b>. In other words, TOE <b>212</b> may remove the session record from PFE FIFO <b>220</b> and write the session record to an end of FU FIFO <b>228</b>. In various examples, TOE <b>212</b> may write the session record to FU FIFO <b>228</b> in various ways. For instance, in some examples, TOE <b>212</b> may write the session record to FU FIFO <b>228</b> using direct memory access (DMA).
TOE <b>212</b> may determine whether there any records in PFE FIFO <b>220</b> in response to various events. For example, TOE <b>212</b> may poll PFE FIFO <b>220</b> on a periodic basis to determine whether there are any records in PFE FIFO <b>220</b>. In another example, the callout operation may send a signal to TOE <b>212</b> whenever the callout operation adds a session record to PFE FIFO <b>220</b>. Thus, TOE <b>212</b> does not necessarily determine whether there are records in PFE FIFO <b>220</b> in response to a request from processor <b>112</b>A or another component of forwarding unit <b>16</b>A outside PFE <b>110</b>A.
In various examples, TOE <b>212</b> is implemented in various ways. For example, one or more special-purpose integrated circuits within PFE <b>110</b>A may provide the functionality of TOE <b>212</b>. In this example, the special-purpose integrated circuits that provide the functionality of TOE <b>212</b> may or may not be separate from the integrated circuits that provide the functionality of threads <b>208</b>, distribution unit <b>214</b>, and/or other functional components of PFE <b>110</b>A.
As discussed above, one or more user-level software programs run on processor <b>112</b>A. One or more of the user-level software programs determine whether there are any session records in FU FIFO <b>228</b>. If there is a session record in FU FIFO <b>228</b>, a user-level software program identifies one of service units <b>14</b> as being associated with the session record. In some examples, the user-level software program identifies the service unit associated with the session record based on data in the session record, such as a PDP address of a wireless device, an APN of a service, or other information in the session record.
After identifying the service unit associated with the session record, the user-level software program determines whether there is sufficient space in the service unit FIFO <b>230</b> associated with the session record. For ease of explanation, this disclosure assumes that service unit FIFO <b>230</b>A is associated with the identified service unit. If there is sufficient space in service unit FIFO <b>230</b>A, the user-level software program moves the session record from FU FIFO <b>228</b> to service unit FIFO <b>230</b>A. In other words, the user-level software program removes the session record from FU FIFO <b>228</b> and writes the session record to service unit FIFO <b>230</b>A.
One or more user-level software programs running on processor <b>112</b>A may encapsulate session records in service unit FIFOs <b>230</b> into packets and send the packets over switch <b>104</b> to appropriate ones of service units <b>14</b>. For example, service unit FIFO <b>230</b>A may be associated with service unit <b>14</b>A. In this example, a user-level software program may encapsulate a session record in service unit FIFO <b>230</b>A within a TCP/IP packet for delivery to service unit <b>14</b>A. In some examples, the user-level software programs only remove session records from service unit FIFOs <b>230</b> after receiving acknowledgements from service units <b>14</b> of successful receipt of the packets containing the session records. Thus, session records may remain in a service unit FIFO until the service unit associated with the service unit FIFO receives the session record. In some examples there is redundancy among service units <b>14</b>. In such examples, a first service unit may be redundant with a second service unit. If a switchover occurs from the first service unit to the second service unit, the user-level software program may send one or more session records previously sent to the first service unit to the second service unit.
<figref idref="DRAWINGS">FIG. 5</figref> is a flowchart illustrating an example operation <b>250</b> of PFE <b>110</b>A. In some examples, other PFEs <b>110</b> in forwarding unit <b>16</b>A and other ones of forwarding units <b>16</b> may perform operation <b>250</b>. PFE <b>110</b>A may start operation <b>250</b> in response to receiving a packet from IFC <b>108</b>A (<b>252</b>). Upon receiving the packet, PFE <b>110</b>A may store the packet in packet buffer <b>216</b> (<b>254</b>). When one of threads <b>208</b> finishes performing packet processing operations on an earlier packet, distribution unit <b>214</b> may assign an earliest-received packet in packet buffer <b>216</b> to the thread (<b>256</b>). In other words, distribution unit <b>214</b> may be configured to assign a packet to a thread in response to receiving the packet. For ease of explanation, this disclosure assumes that distribution unit <b>214</b> assigns the packet to thread <b>208</b>A.
When distribution unit <b>214</b> assigns the packet to thread <b>208</b>A, thread <b>208</b>A determines whether the packet is a synthetic packet (<b>258</b>). In some examples, thread <b>208</b>A determines whether the packet is a synthetic packet based on a packet type of the packet. If the packet is not a synthetic packet (“NO” of <b>258</b>), thread <b>208</b>A performs a datapath operation on the packet. As part of performing the datapath operation on the packet, thread <b>208</b>A identifies one of session records <b>224</b> as being associated with the packet (<b>260</b>). Thus, thread <b>208</b> may identify a subscriber session associated with the packet in response to receiving the packet. Thread <b>208</b>A identifies, based on the session record associated with the packet, one or more packet processing operations to perform with regard to the packet (<b>262</b>). Thread <b>208</b>A may perform the identified packet processing operations with regard to the packet (<b>264</b>). In various instances, thread <b>208</b>A may perform various packet processing operations with regard to the packet. For example, the packet processing operations may include identifying a next hop for the packet. In this example, thread <b>208</b>A may use data from FIB <b>222</b> to identify the next hop for the packet.
For ease of explanation, the example of <figref idref="DRAWINGS">FIG. 5</figref> assumes that the identified packet processing operations include a packet processing operation to update a data transfer statistic in the session record. As part of performing the identified packet processing operations, thread <b>208</b>A updates the data transfer statistic based on a quantity of data in the packet (<b>266</b>). In the example of <figref idref="DRAWINGS">FIG. 5</figref>, thread <b>208</b>A determines whether the data transfer statistic exceeds a threshold (<b>268</b>). If the data transfer statistic exceeds the threshold (“YES” of <b>268</b>), thread <b>208</b>A tags the session record for export (<b>270</b>). After performing the packet processing operations with regard to the packet or after determining that the data transfer statistic does not exceed the threshold (“NO” of <b>268</b>), thread <b>208</b>A may send the packet to an output FIFO for delivery to the next hop for the packet (<b>272</b>).
If thread <b>208</b>A determines that the packet is a synthetic packet (“YES” of <b>258</b>), thread <b>208</b>A performs a callout operation. As part of performing the callout operation, thread <b>208</b>A iterates through session records <b>224</b> and adds the session records tagged for export to PFE FIFO <b>220</b> (<b>274</b>). In some examples, other ones of threads <b>208</b> may read from and/or write to shadow copies of session records <b>224</b> while thread <b>208</b> is iterating through session records <b>224</b> and adding tagged session records to PFE FIFO <b>220</b>.
In other examples, thread <b>208</b>A does not determine whether the data transfer statistic exceeds the threshold or tag session records for export when the packet is not a synthetic packet. Rather, in some such examples, thread <b>208</b>A determines whether the data transfer statistics of session records <b>224</b> exceed the thresholds after determining that the packet is a synthetic packet.
<figref idref="DRAWINGS">FIG. 6</figref> is a flowchart that illustrates an example operation <b>300</b> of TOE <b>212</b>. After TOE <b>212</b> starts operation <b>300</b>, TOE <b>212</b> determines whether PFE FIFO <b>220</b> contains a session record (<b>302</b>). If TOE <b>212</b> determines that PFE FIFO <b>220</b> contains a session record (“YES” of <b>302</b>), TOE <b>212</b> determines whether FU FIFO <b>228</b> has sufficient space to store the session record (<b>304</b>). If TOE <b>212</b> determines that FU FIFO <b>228</b> has sufficient space to store the session record (“YES” of <b>304</b>), TOE <b>212</b> remove the session record from PFE FIFO <b>220</b> (<b>306</b>). Furthermore, if TOE <b>212</b> determines that FU FIFO <b>228</b> has sufficient space to store the session record, TOE <b>212</b> adds the session record to FU FIFO <b>228</b> (<b>308</b>). After adding the session record to FU FIFO <b>228</b>, after determining that there is not sufficient space in FU FIFO <b>228</b> to store the session record (“NO” of <b>304</b>), or after determining that there are no session records in PFE FIFO <b>220</b> (“NO” of <b>302</b>), TOE <b>212</b> may perform operation <b>300</b> again. Thus, if there is not sufficient space in FU FIFO <b>228</b> to store the session record, TOE <b>212</b> may wait until there is sufficient space in FU FIFO <b>228</b> before copying the record from the PFE FIFO <b>220</b> to the FU FIFO <b>228</b>.
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart that illustrates an example operation <b>350</b> of a user-level software program running on processor <b>112</b>A of forwarding unit <b>16</b>A. Operations similar to operation <b>350</b> may be performed by user-level software programs running on processors of other ones of forwarding units <b>16</b>.
After the user-level software program starts operation <b>350</b>, the user-level software program determines whether there is a session record in FU FIFO <b>228</b> (<b>352</b>). If there is a session record in FU FIFO <b>228</b> (“YES” of <b>352</b>), the user-level software program identifies one of service units <b>14</b> as being associated with the session record (<b>354</b>). For instance, the user-level software program may identify a service unit that anchors the subscriber session associated with the session record. Next, the user-level software program determines whether there is sufficient space for the session record in the service unit FIFO <b>230</b> associated with the identified service unit (<b>356</b>). In other words, the user-level software program may determine whether there is sufficient space in the FIFO for a record that contains a data transfer statistic.
If there is sufficient space for the session record in the service unit FIFO <b>230</b> associated with the identified service unit (“YES” of <b>356</b>), the user-level software program removes the session record from FU FIFO <b>228</b> (<b>358</b>). In addition, the user-level software program adds the session record to the session unit FIFO associated with the identified service unit (<b>360</b>). In this way, the user-level software program may copy the session record from FU memory <b>202</b> to the service unit FIFO if there is sufficient space in the service unit FIFO for the session record.
After adding the session record to the session unit FIFO, after determining that there is not sufficient space for the session record in the session unit FIFO (“NO” of <b>356</b>), or after determining that there are no session records in the FU FIFO <b>228</b> (“NO” of <b>352</b>), the user-level software program may perform operation <b>350</b> again. Thus, if there is not sufficient space in the service unit FIFO, the user-level software program may wait until there is sufficient space in the service unit FIFO before copying the record from the FU FIFO <b>228</b> to the service unit FIFO. In this way, PFE FIFO <b>220</b>, FU FIFO <b>228</b>, and service unit FIFOs <b>230</b> may implement a system that applies back pressure to delay sending data transfer statistics to the service unit if the service unit is unable to accept the data transfer statistics.
In some examples, FU memory <b>202</b> stores FU FIFO <b>228</b> and service unit FIFOs <b>230</b>. FU memory <b>202</b> may be significantly larger than PFE memories <b>210</b> in PFEs <b>110</b>. Thus, FU FIFO <b>228</b> and service units FIFOs <b>230</b> may store significantly more session records than PFE FIFOs <b>220</b> in PFEs <b>110</b>. In the event of back pressure from one or more of service units <b>14</b> (i.e., when one or more of service units <b>14</b> are unable to accept data transfer statistics), processor <b>112</b>A may modify one or more session records stored in FU memory <b>202</b>. For example, thresholds can be crossed multiple times for a session. Consequently, FU memory <b>202</b> may store two or more session records related to the same session. In this example, processor <b>112</b>A may consolidate session records related to the same session into a single session record by adding the data transfer statistics of the session records. Processor <b>112</b>A may store the resulting record in FU FIFO <b>228</b> or service unit FIFOs <b>230</b> in FU memory <b>202</b>.
In this way, a non-transitory computer-readable medium, such as FU memory <b>202</b>, may comprise instructions for causing one or more programmable processors, such as processor <b>112</b>A, to copy a data transfer statistic from a memory of a forwarding unit of a mobile access gateway to a FIFO associated with a service unit of the mobile access gateway, the data transfer statistic based on a quantity of data transferred in a subscriber session, the data transfer statistic being updated by a PFE of the forwarding unit and pushed by the forwarding unit into the memory of the forwarding unit.
The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof. Various features described as modules, units or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices or other hardware devices. In some cases, various features of electronic circuitry may be implemented as one or more integrated circuit devices, such as an integrated circuit chip or chipset.
If implemented in hardware, this disclosure may be directed to an apparatus such a processor or an integrated circuit device, such as an integrated circuit chip or chipset. Alternatively or additionally, if implemented in software or firmware, the techniques may be realized at least in part by a computer-readable data storage medium comprising instructions that, when executed, cause a processor to perform one or more of the methods described above. For example, the computer-readable data storage medium may store such instructions for execution by a processor.
A computer-readable medium may form part of a computer program product, which may include packaging materials. A computer-readable medium may comprise a computer data storage medium such as random access memory (RAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), Flash memory, magnetic or optical data storage media, and the like. In some examples, an article of manufacture may comprise one or more computer-readable storage media.
In some examples, the computer-readable storage media may comprise non-transitory media. The term “non-transitory” may indicate that the storage medium is not embodied in a carrier wave or a propagated signal. In certain examples, a non-transitory storage medium may store data that can, over time, change (e.g., in RAM or cache).
The code or instructions may be software and/or firmware executed by processing circuitry including one or more processors, such as one or more digital signal processors (DSPs), general- or special-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, functionality described in this disclosure may be provided within software modules or hardware modules.
Various embodiments have been described. These and other embodiments are within the scope of the following examples.
Contents5
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both waysCites: the store holds 172 of 173
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2023013640A1 | Cited by | United States of America | Search report |
| US11588718B2 | Cited by | United States of America | Applicant |
| US11381491B2 | Cited by | United States of America | Search report |
| US9813345B1 | Cited by | United States of America | Search report |
| US11929904B2 | Cited by | United States of America | Applicant |
| US11483398B2 | Cited by | United States of America | Search report |
| US2020014763A1 | Cited by | United States of America | Search report |
| US11503471B2 | Cited by | United States of America | Search report |
| US11799972B2 | Cited by | United States of America | Search report |
| US10873636B2 | Cited by | United States of America | Search report |
| US2002095492A1 | Cites | United States of America | Applicant |
| US2002126621A1 | Cites | United States of America | Applicant |
| US2002141343A1 | Cites | United States of America | Applicant |
| US2003005145A1 | Cites | United States of America | Applicant |
| US2003014665A1 | Cites | United States of America | Applicant |
| US2003097557A1 | Cites | United States of America | Applicant |
| US2003110274A1 | Cites | United States of America | Applicant |
| US2003120769A1 | Cites | United States of America | Applicant |
| US2003145104A1 | Cites | United States of America | Applicant |
| US2003210652A1 | Cites | United States of America | Search report |
| US2003214913A1 | Cites | United States of America | Applicant |
| US2004001514A1 | Cites | United States of America | Applicant |
| US2004013119A1 | Cites | United States of America | Applicant |
| US2004015721A1 | Cites | United States of America | Applicant |
| US2004044912A1 | Cites | United States of America | Applicant |
| US2004078485A1 | Cites | United States of America | Applicant |
| US2004093513A1 | Cites | United States of America | Applicant |
| US2004196843A1 | Cites | United States of America | Applicant |
| US2004205360A1 | Cites | United States of America | Applicant |
| US2004255202A1 | Cites | United States of America | Applicant |
| US2005044406A1 | Cites | United States of America | Applicant |
| US2005066053A1 | Cites | United States of America | Applicant |
| US2005102414A1 | Cites | United States of America | Applicant |
| US2005108156A1 | Cites | United States of America | Search report |
| US2005111367A1 | Cites | United States of America | Applicant |
| US2005114536A1 | Cites | United States of America | Search report |
| US2005114700A1 | Cites | United States of America | Applicant |
| US2005160289A1 | Cites | United States of America | Applicant |
| US2005210533A1 | Cites | United States of America | Applicant |
| US2005226250A1 | Cites | United States of America | Search report |
| US2005283447A1 | Cites | United States of America | Search report |
| US2005289219A1 | Cites | United States of America | Applicant |
| US2006026669A1 | Cites | United States of America | Applicant |
| US2006089994A1 | Cites | United States of America | Applicant |
| US2006123481A1 | Cites | United States of America | Applicant |
| US2006146816A1 | Cites | United States of America | Applicant |
| US2006156403A1 | Cites | United States of America | Applicant |
| US2006185008A1 | Cites | United States of America | Applicant |
| US2006195896A1 | Cites | United States of America | Applicant |
| US2006259970A1 | Cites | United States of America | Applicant |
| US2007027992A1 | Cites | United States of America | Applicant |
| US2007067438A1 | Cites | United States of America | Applicant |
| US2007121596A1 | Cites | United States of America | Applicant |
| US2007180511A1 | Cites | United States of America | Applicant |
| US2007192863A1 | Cites | United States of America | Applicant |
| US2007239987A1 | Cites | United States of America | Applicant |
| US2007294369A1 | Cites | United States of America | Applicant |
| US2009180449A1 | Cites | United States of America | Search report |
| US2010070624A1 | Cites | United States of America | Search report |
| US3962681A | Cites | United States of America | Applicant |
| US4032899A | Cites | United States of America | Applicant |
| US4600319A | Cites | United States of America | Applicant |
| US5408539A | Cites | United States of America | Applicant |
| US5490252A | Cites | United States of America | Applicant |
| US5509123A | Cites | United States of America | Applicant |
| US5568471A | Cites | United States of America | Applicant |
| US6011795A | Cites | United States of America | Applicant |
| US6018765A | Cites | United States of America | Applicant |
| US6148335A | Cites | United States of America | Applicant |
| US6182146B1 | Cites | United States of America | Applicant |
| US6219706B1 | Cites | United States of America | Applicant |
| US6279035B1 | Cites | United States of America | Applicant |
| US6321338B1 | Cites | United States of America | Applicant |
| US6392996B1 | Cites | United States of America | Applicant |
| US6499088B1 | Cites | United States of America | Applicant |
| US6563796B1 | Cites | United States of America | Applicant |
| US6590898B1 | Cites | United States of America | Applicant |
| US6594268B1 | Cites | United States of America | Applicant |
| US6598034B1 | Cites | United States of America | Applicant |
| US6633563B1 | Cites | United States of America | Applicant |
| US6735201B1 | Cites | United States of America | Applicant |
| US6751663B1 | Cites | United States of America | Applicant |
| US6826713B1 | Cites | United States of America | Applicant |
| US6870817B2 | Cites | United States of America | Applicant |
| US6970943B1 | Cites | United States of America | Applicant |
| US6975628B2 | Cites | United States of America | Applicant |
| US6983294B2 | Cites | United States of America | Applicant |
| US6985956B2 | Cites | United States of America | Applicant |
| US7054930B1 | Cites | United States of America | Applicant |
| US7058974B1 | Cites | United States of America | Applicant |
| US7099320B1 | Cites | United States of America | Applicant |
| US7114008B2 | Cites | United States of America | Applicant |
| US7120931B1 | Cites | United States of America | Applicant |
| US7162740B2 | Cites | United States of America | Applicant |
| US7185368B2 | Cites | United States of America | Applicant |
| US7203740B1 | Cites | United States of America | Applicant |
| US7301899B2 | Cites | United States of America | Applicant |
| US7356585B1 | Cites | United States of America | Applicant |
| US7362763B2 | Cites | United States of America | Applicant |
| US7478155B2 | Cites | United States of America | Applicant |
2 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 201213344325 | United States of America | A | |
| US201213344325 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US9251535B1This record | United States of America | B1 | |
| US9813345B1 | United States of America | B1 |
63 transactions on the USPTO file
Allowed after 1 non-final rejection, 1 final rejection and 1 RCE.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Dispatch to FDCD1935 | D1935 | |
| Response to Amendment under Rule 312N271 | N271 | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Interview Summary- Applicant InitiatedEXIA | EXIA | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Response after Non-Final ActionA... | A... | |
| Interview Summary- Applicant InitiatedEXIA | EXIA | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Email NotificationEML_NTR | EML_NTR | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| Cleared by OIPE CSRL194 | L194 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| PGPubs nonPub RequestNPRQ | NPRQ | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
4 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication
- 09251535
- Publication, DOCDB
- 9251535
- Publication, EPODOC
- US9251535
- Application
- 13344325
- Application, DOCDB
- 201213344325
- Application, EPODOC
- US201213344325
Titles
- English
- Offload of data transfer statistics from a mobile access gateway
Patent term adjustment
- A delay
- +657 daysthe office missed an examination deadline
- B delay
- +282 dayspendency past three years
- Applicant delay
- −23 days
- Net adjustment
- 916 days
Classification
- CPC, 5
- G06Q30/06
- H04W8/04
- H04L47/24
- H04L47/30
- H04W88/16
- IPC, 3
- G06F17 00
- G06Q30 06
- H04L47 30
- USPC, 1
- 001001000