The present invention relates generally to the field of communications. More particularly, this invention relates to a network element having a redirect server.
In the field of communications, the need for high-speed transmission of data, including video and audio, has continued to increase. Moreover, there has been an increase in the selection of services by which users can connect to a network, such as the Internet. Specifically, Internet Service Providers (ISPs) may allow for connectivity to the Internet through lower-speed connections at different rates, such as 56 kilobits/second, by employing a Plain Old Telephone Service (POTS) line. Other choices for connection, which are at higher speeds, into a network can include Integrated Services Digital Network (ISDN), Digital Subscriber Line (DSL) service, and cable modem service over a Radio Frequency (RF) cable line. Further, other types of content providers may enable a subscriber to receive different types of media, such as a video stream, audio stream, etc.
An Internet services wholesaler typically resells Internet accesses to other ISPs, thus freeing those ISPs from the necessity of creating and maintaining their own network infrastructure. There has been an increase in demand by the ISPs to allow a redirection of an HTTP (hyper text transport protocol) request, via a redirect server, to another site, such as a Web portal, for some other purposes, such as billing purposes. Currently, a redirect server is typically implemented as a dedicated redirect server separated from a service selection network element (e.g., operated by a wholesaler) or maintained by an ISP or a content provider.
Typically, redirect server 103 is external to service selection network element 102 and they are required to be on the same physical subnet. Otherwise, when the packet is forwarded by service selection network element 102 to redirect server 103, the header of the packet (e.g., IP header) has to be rewritten to match the IP address (e.g., destination IP address) of redirect server 103. In addition, since redirect server 103 and service selection network element 102 are typically separate physical entities, there must be a physical interface, such as port 107, involved. Furthermore, the redirection policies have to be on a per subscriber basis.
A method and apparatus for providing redirect services are described herein. According to one embodiment, there is a service selection network element used to provide access of computing devices to a set of one or more services provided by one or more providers. In addition, the service selection network element includes a redirect facility and a set of routing policies stored in a machine readable medium within the service selection network element to handle redirect services within the service selection network element. Furthermore, the routing policies optionally include one or more replacement routing policies for each of the routing policy corresponding to the respective context. Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
Methods and apparatuses for processing redirection of packets within a single network element are described. In one embodiment of the invention, a service selection network element includes a built-in redirect server that allows the HTTP traffic to be redirected to the network element itself. The redirect server allows for the redirection of selected subscriber's HTTP requests to a specific, not necessarily related, URL (uniform resource locator). Further configuration information, such as routing or redirect policies, allows the built-in redirect server to redirect the HTTP request to an external HTTP server via one or more internal redirect routing policies, which may be configured on a per context basis (e.g., per virtual router basis) or on a per subscriber basis. Using a built-in HTTP server to perform the redirection greatly reduces the need for the ISP to maintain its own HTTP server to perform the redirection.
According to one embodiment, the redirection may be implemented permanently. Alternatively, the redirection may be implemented temporarily for a period of time, which may be configured on a per context basis or on a per subscriber basis. If the redirection is set up for a fixed time period, according to one embodiment, the time period may start with the reception of the first customer packet which is actually redirected, instead of the start of the subscriber session. The redirection may be enabled on a per subscriber basis (e.g., as a result of the authentication information obtained at the session establishment).
According to one embodiment, an Internet access wholesaler operating a service selection network element with a built-in redirect server may have one or more providers, such as service providers (e.g., ISPs) and information providers (e.g., content providers), who wish to redirect their HTTP customers in a manner that one provider's redirection does not interfere with another provider's redirection, nor with any non-redirect traffic. The information providers may be the content providers that sit on the Internet that are separate from the ISPs and/or are value added services of the ISPs. A provider who is providing subscribers Internet accesses directly (e.g., without purchasing accesses from a wholesaler) may use or lease a redirect server from the wholesaler. In this case, according to one embodiment, the provider may use multiple contexts in order to provide different services to a variety of classes of subscribers. Alternatively, the provider may elect to use a single context for all of its subscribers as needed. The redirect server may also be used in a private network as well as in networks that provide Internet accesses. According to one embodiment, a provider may use the redirect server to redirect customer traffic to a captive portal, or to communicate important news to one or more subscribers. Alternatively, the provider may notify the subscribers regarding changes in the services the ISP is providing, etc. Other configurations may exist.
Subscriber sessions may be PPPoX (point-to-point protocol over X) sessions (where X represent a protocol such as Ethernet or ATM), Dynamic Host Configuration Protocol (DHCP), IEEE 1483 bridged, etc. Other protocols may be utilized. Subscribers' source addresses can be any addresses. Alternatively, subscribers' source addresses may be restricted as desired. Similarly, the original destination addresses can be any addresses, or they can be restricted as desired. Furthermore, the redirect destination addresses may be unrelated to the undirected destination address (e.g., on different physical subnet).
In the following description, numerous details are set forth to provide a more thorough explanation of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent finite sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes (e.g., software, hardware, and/or firmware, etc.), or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. The instructions of such software, firmware, and computer programs may be stored in a machine readable medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), erasable programmable ROMs (EPROMs), electrically erasable programmable ROMs (EEPROMs), magnetic or optical cards, electrical optical, acoustical or other forms of prorogated signals (e.g., carrier waves, infrared signals, etc.) or any type of media suitable for storing electronic instructions.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
According to one embodiment, a context represents module/units that each provides the functionality of a router, and thus operates as virtual routers in the service selection network element 201. Depending upon the configuration of the service selection network element 201, a context can be associated with a different provider or service (e.g., an Internet service provider, a content provider, etc.) to allow for separation of traffic of different providers (e.g., for accounting and other purposes). Where a given context is associated with a given provider, that context may include a number of subnets that comprise a number of addresses (e.g., Internet Protocol (IP) addresses) that are to be dynamically assigned to subscriber/clients. However, a different or additional allocation of contexts is within the scope of the invention (e.g., different services of a given provider may be allocated different contexts, certain providers may share a single context, etc.).
Referring back to
In one embodiment, network element 201 may include one or more control cards and a number of line card communicatively coupled to the control card via communication medium. Each of the line cards may be coupled to a physical interface, such as ports 212 and 213, respectively. The control cards and the line cards may each include a machine readable medium, such as random access memory (RAM), to store the routing policies including redirect policies, such as context-based routing policies 203. Alternatively, routing policies 203 may be stored in a machine readable medium shared between the control card and the line cards.
According to one embodiment, when network element 201 receives a request from one of the computing devices 204 and 205 to access one of the services 207, such as services 209 provided by ISPs 208 or services 211 provided by content providers 210, network element 201 accesses one or more routing policies 203, such as access control lists (ACLs), which may be stored in a machine readable medium (e.g., memory, such as RAM) within the respective line card or a machine readable medium shared between the control card and the line cards to determine whether the request should be redirected to another destination. In one embodiment, the determination is performed based on the context information associated with the subscriber, or the connection session, etc. Alternatively, the routing policies 203 are designed to redirect all of the HTTP requests. That is, when network element 201 receives a packet from one of the computing devices 204 and 205, network element 201 examines the header of the packet, such as TCP/IP header of the packet, to determine whether the packet is an HTTP packet. Whether the packet is an HTTP packet may be determined based on conventional use of ports for the HTTP packets. In one embodiment, a packet is an HTTP packet when its destination port of the TCP header is directed to port 80. Alternatively, a packet is a secure HTTP (HTTPS) packet when its destination port is port 443. It will be appreciated that the routing policies may be configured (e.g., via an API, CLI (command line interface), a remote database server during authentication and/or authorization, etc.), to redirect traffic, based on a number of parameters, such as, for example, the source and destination IP addresses, the subscriber's MAC address, the source and/or destination ports, etc. Other context information may be used to specify redirect policies.
If it is determined that the packet should be redirected, based on the routing policies 203, the packet may be forwarded, via an internal logical interface, to redirect server 202 without invoking an external dedicated redirect server, contrary to a conventional approach. Once the redirect server 202 receives the redirected packet, redirect server 202 may also: examine the packet and based on a redirect policy corresponding to the context associated with the packet; determine the redirect address, such as redirect URL; and return the redirect address for incorporation into a reply packet(s) to cause the redirection. Redirect server 202 may also perform other operations similar to those performed by a regular redirect server. The redirect URL is forwarded back to the browser of the computing device. The browser of the computing device then may access the redirect destination, via network element 201 again, based on the redirect URL. Note that all of the redirect processes are performed within the network element 201 without invoking an external redirect server via a physical interface of the network element 201, which may require costly processes, such as, for example, rewriting the TCP/IP headers.
According to one embodiment, the routing or redirect policies may further include a timeout value, similar to routing policies 501 shown in
According to another embodiment, the routing policies may also be transitory (e.g., through amendment or replacement) without performing authentication, authorization, and accounting (AAA) again. For instance, the routing policies may include one or more replacement routing policies (e.g., a replacement ACL). The replacement policy may be used for the subsequent accesses after the initial redirect services. For example, initially, a client of computing device 204 tries to access services 207, such as services 211 (e.g., downloading music or video on demand) provided by one of content provider(s) 210. When the request is received at service selection network element 201 (e.g., a wholesaler), based on routing policies 203, such as an ACL (e.g., a first ACL), corresponding to the context associated with the respective connection, it is determined that the request should be redirect to another page because of one or more of a variety of reasons. One of the reasons could be that the client has not established his or her account and has not paid for the membership, etc. As a result, the request is redirected, via an internal logical interface to the redirect server 202. Redirect sever 202 retrieves a replacement URL, which has been set up via the respective routing policies or ACLs associated with the context of the connection, and causes the return of the replacement URL to the client.
The return packet returned to the client may include a timeout value. The timeout value may be used by the client's browser to display a redirect message, similar to user interface 600 of
It will be appreciated that the redirect services are not limited to those as discussed above. According to one embodiment, the redirect services may also be used for advertisement practice. For example, a user may initially launches a browser to access a Web page. The routing policies maintained by the network element 201 may redirect the user, at the first time, to another Web page which may display an advertisement image for a period of time. After the time period expires, which may be configured via the routing policies, the user may be allowed to continue to access other Web pages. Subsequent accesses by the user may directly access the intended Web pages without redirections. The redirection may be activated every time the browser is launched. Alternatively, the redirection may be activated once a day, preferably the first time in the day, or other schedules which may be configured within the one or more routing policies, such as routing policies 203.
According to one embodiment, the one or more routing policies may include a timeout value which used by the timer 253 to control a period of time that a redirect message will be displayed at a browser of the corresponding computing device before redirecting to an alternative destination (e.g., a redirect destination).
Forwarding engine 252 may also include one or more forwarding policies 259 to control how a packet is being forwarded. The forwarding policies 259 may be the same or a subset of the control policies 257. Policies 257 and 259 may be stored in a machine readable medium within the respective control engine 251 and forwarding engine 252. Alternatively, policies 257 and 259 may be stored in a machine readable medium shared by the control engine 251 and forwarding engine 252.
According to one embodiment, when forwarding engine 252 receives a packet destined to a destination, such as providers 208 and 210, the forwarding engine 252 determines whether the packet needs to be redirected to an alternative destination. The determination may be performed based on the information stored in the one or more policies 259. The policies 259 may include IP ACLs, a FIB (forwarding information base), etc. The forwarding policies associated with the packet (e.g., based on the context or subscriber associated with the packet) may indicate that the packet needs to be redirected. Alternatively, the policies 259 may not include forwarding information regarding the packet, in this case, the forwarding engine 252 could not determine how to forward this packet. As a result, the forwarding engine 252 just forwards the packet to the control engine 251 to let the control engine 251 to decide how to handle this packet.
When the control engine 251 receives the packet forwarded from the forwarding engine 252, the TCP layer module 254 may examine the packet, particularly, the TCP header of the packet, to determine whether the packet needs to be redirected based on the one or more policies 257 associated with the subscriber. In one embodiment, the TCP module 254 examines whether the destination port of the TCP header is destined to port 80, which indicates whether the packet is a HTTP packet. Alternatively, TCP module 254 examines whether the destination port of the TCP header is destined to port 443, which indicates whether the packet is a secure HTTP packet. Other ports that may be used by HTTP packets may be utilized to determine whether a specific packet is an HTTP packet. If the TCP module 254 determines that the packet needs to be redirected, the TCP module 254 forwards the packet to redirect processing module 255. The redirect processing module 255 may look up the routing policies corresponding to the packet, for example, based on the context or subscriber of the packet, to determine a redirect destination (e.g., a replacement URL). The redirect processes module 255 imbeds the replacement URL in a return packet. Thereafter, the control engine 251 returns the return packet having the redirect URL back to the forwarding engine 252. In addition, according to one embodiment, control engine 251 may swap the source and destination IP addresses in the return packet to impersonate the intended recipient of the original packet. As a result, when the forwarding engine 252 receives the returned packet, the forwarding engine 252 can forward the return packet back to the originator of the packet. The return packet may further include a timeout value specified by the associated redirect policies to allow the browser of the respective computing device to display a redirect message for a specified period of time. Therefore, the browser of the corresponding computing device may access the alternative destination based on the redirect policies (e.g., the replacement URL). The redirect services may be on a permanent basis or a temporary basis, which is controlled by the timer 253.
By way of example, the computing devices 305A-I are coupled to the port 350A by an access network 310. In contrast, the ports 350C-D are used for communicating with the services 325 and the optional web portal 370. It should be understood that the orientation and representation of ports of the service selection network element 315 are simply for illustration purposes, and thus they are not restrictive upon the scope of the invention. In addition, it should be understood that any number of ways can be used for providing communication between the ports 350C and 350D of the service selection network element 315 and the web portal 370 and the services 325 according to well known techniques (e.g., a connection over the Internet, such as a virtual private network (VPN) using, for example, GRE tunneling, L2TP tunneling, ATM/FR logical channels, 802, 1Q VLANS, direct IP connectivity, MPLS L2/L3 VPNS etc). Furthermore, it should be understood that the optional Web portal 370 and remote database server 320 are optional components and they are not required in order to operate certain embodiments of the invention.
Different communication sessions between the computing devices 305 and the web portal 370/services 325 travel through one of the contexts 355A-I. Thus, each of the contexts 355A-I have interfaces to provide communication to the appropriate ones of the services 325, and also have interfaces to which the computing devices may be bound depending upon the service that has been selected by a subscriber. Thus, although
Web portal 370 allows subscribers to log in and/or select/switch between the services and providers. Responsive to such action by a given subscriber, web portal 370 causes a record (e.g., subscriber records 360 and subscriber accounting records 365) of that subscriber to be altered to reflect the action and causes the service selection network element to attempt to connect the subscriber accordingly.
According to one embodiment, web portal 370 may include a web page, similar to page 700 of
According to another embodiment, web portal 370 may also provide a web page, similar to page 800 of
Thus, web portal 370 provides a service selection gateway. While one embodiment of the invention is described in which the login and package select/change pop-up windows are implemented as two separate windows, alternative embodiments of the invention may use the same, more or different pop-up windows. In addition, while embodiments of the invention are described in which the providers and services of those providers are selected from using a drop-down menu, alternative embodiments of the invention may use any type of selection mechanism. While in one embodiment of the invention the service portal pop-up windows resemble dial-up windows, alternative embodiments of the invention use a different type of window. In addition, while in certain embodiments of the invention these windows pop away upon successful entry of information and/or canceling, alternative embodiments require the subscriber to close the window. In addition, according to one embodiment, Web portal 370 may be maintained within the service selection network element 315. Alternatively, Web portal 370 may be maintained by a service provider, such as ISPs 330 or content providers 340. Furthermore, Web portal 370 may be maintained by a third party. Other configurations may exist.
The control modules 358 handle various communications, protocols, network connections, bindings, etc. Additional details regarding various architectures for the service selection network element 315 are described later herein. While one embodiment is illustrated in which contexts are used inside the service selection network element 315, alternative embodiments of the invention do not use contexts.
While in one embodiment of the invention the remote database server 320 is a Remote Access Dial In User Server (RADIUS) server (e.g., with a sequel (SQL) database, such as MySQL), alternative embodiments of the invention may use additional RADIUS servers and/or instead or additionally use other types of servers. It should be understood that any number of ways can be used for providing communication between the remote database server 320 and the service selection network element 315 according to well known techniques (e.g., a connection over the Internet, such as a VPN carrying a software program/script (e.g., perl based scripting, for RADIUS attribute/element modification and Pre-emptive Hypertext Processor (PHP) based web interfacing to link the necessary databases of both). In addition, while
The access network 310 may be one or more local area network (LAN), wide area network (WAN), or a combination thereof. The access network 310 represents any number of different access networks using any number of different types of encapsulations, including PPPoX, 1483 bridged, and DHCP etc.
In addition, according to one embodiment, control module 358 includes a redirect server 375 for handling redirect services received from contexts 355A-I, via internal logical interfaces. Control module 358 further includes a set of routing policies 380 and a configuration module 390 which may be used to configure the routing policies 380 and other settings of the network element 315. Each of contexts 355A-I may also include a set of routing policies, such as ACLs, which may or may not be the same routing policies 380 of control module 358. Routing policies 380 and 380A-I may be stored in a machine readable medium, such as the RAM.
In certain embodiments of the invention, the routing policies 380 and 380A-I may include an internal redirect policy. A redirect policy indicates that the subscriber should be redirected to an alternative destination, such as web portal 370. Different embodiments of the invention may allow for the configuration of the redirect policy for different situations. For example, a redirection policy may be included for at least certain known subscribers to require them to login. Such a forced redirection to the web portal 370 ensures that such subscribers will receive a home page (e.g., of the web portal 370), such as, for example, page 800 of
Referring to
If it is determined that the packet should be internally redirected, based on the routing policies, the packet may be forwarded, via an internal logical interface, to redirect server 375. Once the redirect server 375 receives the redirected packet, redirect server 375 may also: examine the packet and based on a redirect policy corresponding to the context associated with the packet; determine the redirect address, such as redirect URL 505 of policies 501 shown in
According to one embodiment, the routing or redirect policies may further include a timeout value, such as timeout 406 of routing policies 501 shown in
According to another embodiment, the routing policies may also include a transitory routing policies, such as replacement ACLs 508, which are linked with the replacement ACL ID 507 of the initial policies. The replacement policy may be used for the subsequent accesses after the initial redirect services.
The service selection network element 315 can be implemented a variety of ways. In a particular embodiment, the service selection network element includes, but not limited to, one or more control cards providing a control engine (e.g., hosting control module 358 and optionally certain aspects of the different contexts) and a set of one or more forwarding cards providing, a forwarding engine (e.g., hosting the rest of the aspects of the contexts). Each of the forwarding cards may include a processor and memory. The control card(s) and the forwarding cards may be coupled to system bus(es). The control card performs control, system configuration and management tasks for the network element. For example, if the forwarding card needs to be updated with a new Internet Protocol (IP) address table, such data is received by the control card and transmitted to the forwarding card, wherein such data is updated therein.
This implementation of the service selection network element is an example, and not by way of limitation. Thus, network elements having other architectural configurations can incorporate embodiments of the invention. Examples of other network elements that could incorporate embodiments of the invention could have multiple forwarding cards or have a single line card incorporating the functionality of both the forwarding and the controlling. Moreover, a network element having the forwarding functionality distributed across the traffic cards could incorporate embodiments of the invention.
Referring to
At block 406, the respective process associated with the context determines, based on the routing policies similar to policies 501 of
In addition, exemplary redirect policies 501 may be configured, via configuration module, by a user or an administrator through a user interface, such as a command line interface (CLI) 503. According to one embodiment, HTTP redirection may be configured using the following exemplary command via the CLI 503:
According to one embodiment, redirection of HTTP traffic also requires that an HTTP redirect policies or ACLs be configured prior to the redirect services activated. According to one embodiment, a redirect ACL may be configured using the following exemplary instruction:
Thus, methods and apparatuses for redirect messages have been described. In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of the invention as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.