A datagram with a destination network address is received at a router. The router identifies a next hop router en route to or associated with the destination network address. The router determines whether or not transmission of the datagram on a link to the next hop router would result in a bandwidth usage exceeding a bandwidth threshold associated with the next hop router. If not, the router updates the bandwidth usage associated with the next hop router to account for the datagram, and transmits the datagram to the next hop router. If so, the router selects among other possible next hop routers en route to or associated with the destination address, another next hop router for which transmission of the datagram on a link to the other next hop router would not result in a bandwidth usage exceeding a bandwidth threshold associated with the other next hop router. Then, the router updates the bandwidth usage associated with the other next hop router to account for the datagram, and transmits the datagram to the other next hop router. If, among the other possible next hop routers, there is no other next hop router for which the transmission of the datagram on the respective link would result in the bandwidth usage being less than the respective bandwidth threshold, then the router chooses among the other possible next hop routers, another next hop router. Then, the router updates the bandwidth threshold associated with the other, chosen next hop router with a larger, predefined bandwidth threshold.

Patent
   7660255
Priority
Nov 13 2002
Filed
Oct 21 2003
Issued
Feb 09 2010
Expiry
Apr 24 2026
Extension
916 days
Assg.orig
Entity
Large
5
6
all paid
1. A method for routing a datagram in an ip network, said method comprising the steps of:
a computer receiving a datagram with a destination network address;
a computer identifying a next hop router en route to or associated with said destination network address; and
a computer determining whether or not transmission of said datagram on a link to said next hop router would result in a bandwidth usage exceeding a bandwidth threshold associated with said next hop router, and
if not, updating the bandwidth usage associated with said next hop router, and transmitting said datagram to said next hop router,
if so, selecting among other possible next hop routers en route to or associated with said destination address, another next hop router for which transmission of said datagram on a link to said other next hop router would not result in a bandwidth usage exceeding a bandwidth threshold associated with said other next hop router, updating the bandwidth usage associated with said other next hop router, and transmitting said datagram to said other next hop router; and
a computer basing a routing decision on the bandwidth usage of the link to said next hop router,
wherein the bandwidth usage is a dynamic parameter which is updated in a forwarding information database (FIB) in real-time, and
wherein the step of determining, comprises the step of adding a bandwidth usage associated with said next hop router immediately before transmission of said datagram on said link to said next hop router to a bandwidth usage required for transmission of said datagram on said link to said next hop router, and comparing a result of said adding step to the bandwidth threshold associated with said next hop router.
10. A router for routing a datagram in an ip network, said router comprising:
a system receiving a datagram with a destination network address;
a system identifying a next hop router en route to or associated with said destination network address; and
a system determining whether or not transmission of said datagram on a link to said next hop router would result in a bandwidth usage exceeding a bandwidth threshold associated with said next hop router, and
if not, updating the bandwidth usage associated with said next hop router, and transmitting said datagram to said next hop router,
if so, selecting among other possible next hop routers en route to or associated with said destination address, another next hop router for which transmission of said datagram on a link to said other next hop router would not result in a bandwidth usage exceeding a bandwidth threshold associated with said other next hop router, updating the bandwidth usage associated with said other next hop router, and transmitting said datagram to said other next hop router,
wherein the router bases a routing decision on the bandwidth usage of the link to said next hop router and on a bandwidth usage as billed by an isp on the links to the next hop routers,
wherein the bandwidth usage is a dynamic parameter which is updated in a forwarding information database (FIB) in real-time, and
wherein the step of determining, comprises the step of adding a bandwidth usage associated with said next hop router immediately before transmission of said datagram on said link to said next hop router to a bandwidth usage required for transmission of said datagram on said link to said next hop router, and comparing a result of said adding step to the bandwidth threshold associated with said next hop router.
2. The method as set forth in claim 1, wherein the step of selecting comprises the steps of:
if, among said other possible next hop routers, there is no other next hop router for which the transmission of the datagram on the respective link would result in the bandwidth usage being less than the respective bandwidth threshold, choosing among said other possible next hop routers, another next hop router, updating the bandwidth threshold associated with said other, chosen next hop router with a larger, predefined bandwidth threshold; and
transmitting the datagram to said other, chosen next hop router.
3. The method as set forth in claim 2, wherein the step of choosing among said other possible next hop routers, comprises the step of choosing among said other possible next hop routers, a next hop router according to a shortest path algorithm.
4. The method as set forth in claim 1, wherein the step of updating the bandwidth usage associated with the first said next hop router, comprises the step of updating in a table, the current bandwidth usage with the estimated bandwidth usage.
5. The method as set forth in claim 1, wherein a bandwidth usage of a link to said next hop router is based on other datagrams that have been transmitted on said link within a time period prior to a current time.
6. The method as set forth in claim 1, further comprising sending an ip datagram with an updated header to a selected next hop router and defining a current bandwidth for billing as an increasing function.
7. The method as set forth in claim 1, further comprising, at a beginning of a billing period, defining a current bandwidth threshold equal to a lowest value in a list of bandwidth thresholds.
8. The method as set forth in claim 1, further comprising, for each link to a next hop router, adding a minimum time to emit a next datagram, a list of bandwidth thresholds, a current bandwidth threshold, and a billing period in the FIB.
9. The method as set forth in claim 1, further comprising, for each link to a next hop router, utilizing a current bandwidth for billing, a list of bandwidth thresholds, a current bandwidth threshold, and a billing period to route traffic.
11. A router as set forth in claim 10, wherein the determining system determines that transmission of said datagram on a link to said next hop router would result in a bandwidth usage exceeding a bandwidth threshold associated with said next hop router, and among said other possible next hop routers, there is no other next hop router for which the transmission of the datagram on the respective link would result in the bandwidth usage being less than the respective bandwidth threshold, and in response,
chooses among said other possible next hop routers, another next hop router,
updates the bandwidth threshold associated with said other, chosen next hop router with a larger, predefined bandwidth threshold; and
transmits the datagram to said other, chosen next hop router.
12. The router as set forth in claim 10, further comprising a system sending an ip datagram with an updated header to a selected next hop router and a system defining a current bandwidth for billing as an increasing function.
13. The router as set forth in claim 10, wherein, for each link to a next hop router, a minimum time to emit a next datagram, a list of bandwidth thresholds, a current bandwidth threshold, and a billing period is added in the FIB.
14. The router as set forth in claim 10, wherein, for each link to a next hop router, a current bandwidth for billing, a list of bandwidth thresholds, a current bandwidth threshold, and a billing period are utilized to route traffic.

The present invention relates generally to computer networks, and more particularly to a method and system, in an Internet Protocol (IP) network, for routing IP datagrams.

The Internet is a global network of computers and computers networks. The Internet connects computers that use a variety of different operating systems or languages, including UNIX, DOS, Windows, Macintosh, and others. To facilitate and allow the communication among these various systems and languages, the Internet uses a language referred to as TCP/IP (“Transmission Control Protocol/Internet Protocol”). TCP/IP protocol supports three basic applications on the Internet:

The TCP/IP protocol suite is named for two of the most important protocols:

With the increasing size and complexity of the Internet, tools have been developed to help find information on the network, often called navigators or navigation systems. Navigation systems that have been developed include standards such as Archie, Gopher and WAIS. The World Wide Web (“WWW” or “the Web”) is a recent superior navigation system. The Web is:

One of the basic functions of IP is its ability to form connections between different physical networks. This is due to the flexibility of IP to use almost any physical network below it, and to the IP routing algorithm. A system that does this is termed a “router”. A “Router” is a computer or other device that interconnects two networks and forwards messages from one network to the other. The Router thus includes a CPU and a computer readable storage device storing program instructions to be executed by the CPU (see FIG. 1A). Routers are able to select the best transmission path between networks. The basic routing function is implemented in the IP layer of the TCP/IP protocol stack, so any host (or computer) or workstation running TCP/IP over more than one interface could, in theory, forward messages between networks. Because IP implements the basic routing functions, the term “IP Router” is often used. However, dedicated network hardware devices called “Routers” can provide more sophisticated routing functions than the minimum functions implemented in IP.

When data is sent to a remote destination, each IP datagram is first sent to a local router. An incoming datagram that specifies a destination IP address other than one of the local router IP addresses is treated as a normal outgoing datagram. This outgoing datagram is subject to the IP routing algorithm of the router, which selects the next hop for the datagram. The router forwards each datagram towards its final destination. A datagram travels from one router to another until it reaches a router connected to the destination. Each intermediate router along the end-to-end path selects the next hop used to reach the destination. The next hop represents the next router along the path to reach the destination. This next router can be located on any of the physical networks to which the intermediate router is attached. If it is a physical network other than the one on which the host originally received the datagram, then the result is that the intermediate router has forwarded the IP datagram from one physical network to another. An “IP routing table” in each router is used to forward datagrams between networks. A basic IP routing table comprises information about the locally attached networks and the IP addresses of other routers located on these networks, plus the networks to which they attach. A routing table can be extended with information on IP networks that are farther away, and can also comprise a default route, but it still remains a table with limited information. A routing table represents only a part of the whole IP network. A router having such a routing table is called “a router with partial routing information”. A robust routing protocol must provide the ability to dynamically build and manage information in the IP routing table. As the changes in the network topology may occur, the routing tables must be updated with minimal or without manual intervention.

IP addresses are used by the IP protocol to uniquely identify a host on the Internet. Strictly speaking, an IP address identifies an interface that is capable of sending and receiving IP datagrams. Each IP datagram (the basic data packets that are exchanged between hosts) comprises a source IP address and a destination IP address. IP addresses are represented by a thirty two bit unsigned binary value which is usually expressed in a dotted decimal format. For example, 9.167.5.8 is a valid Internet address. An IP address is divided between a network and a host part, the first bits of the IP address specify how the rest of the address is divided. The mapping between the IP address and an easier-to-read symbolic name, for example myhost.ibm.com, is done by the “Domain Name System” (DNS).

In the IP networking, one of the major issue to solve is to route the IP datagrams. For this reason, a routing table is built in each routing device. Routing tables are either statically configured by a network administrator or dynamically configured based on information exchanged between routers using routing protocols such as Routing Information Protocol -RIP-, Open Shortest Path First -OSPF-, Border Gateway Protocol -BGP-, . . . ). Dynamic routing algorithms allow routers to exchange route or link information, from which the best paths to reach destinations in an Inter network are calculated. Static routing is generally used to supplement dynamic routing. The goal of the routing function is to determine for each IP datagram, the next hop device in order to reach the final destination. The search for the next hop device is commonly based on the shortest path or shortest distance in order to minimize the transmission delay and resource consumption in the network.

The principle of Distance Vector Routing is very simple. Each router in an inter network maintains the distance from itself to every known destination in a Distance Vector Table. The Distance Vector Table comprises a plurality of destinations (vectors) associated with costs (distances) to reach them and defines the lowest distances to these destinations at the time of the transmission. The distances in the tables are computed from information provided by neighbour routers. Each router transmits its own Distance Vector Table across the shared network. The sequence of operations for doing this is as follows:

One of the characteristic of the distance vector routing is that the distance is a static value pre-configured on each router interface. The distance is mostly chosen per default as being the number of hops (which equals the number of intermediate routers). This means that if, for instance, three intermediate routers are in the path between a source network and a destination network, the distance from this source network to the destination network seen by the router attached to the source network, is three. Once a router has found out the shortest distance to a destination network, the router will always use this route to reach the destination network.

More explanations about the technical field presented in the above sections can be found in the following publications incorporated herewith by reference: “TCP/IP Tutorial and Technical Overview” by Martin W. Murhammer, Orcun Atakan, Stefan Bretz, Larry R. Pugh, Kazunari Suzuki, David H. Wood, International Technical Support Organization, October 1998, GG24-3376-05.

Most server hosting centers have multiple Internet connections (at least two for redundancy reasons) provided by different Internet Service Providers (ISPs). The Border Gateway Protocol (BGP) is widely used to route the IP traffic between the different Internet service providers (ISPs) and the server hosting center. BGP is also used to advertise all the Internet routes to the different server hosting centers. For instance, the IP datagrams can be routed toward their final destination by the routing device, at the front end of the server hosting center, according to the shortest path. However, the shortest path is not always the most appropriate criterion in term of business needs. A very important parameter to take into consideration in the Internet world is the financial cost of the bandwidth based on the bandwidth usage. The standard way for an Internet Service Provider (ISP) to charge its customers (the server hosting centers) is the so called 95%-tile method. At regular intervals (for instance every five minutes), the bandwidth currently used (both inbound and outbound traffic) by the customer (the server hosting center) is measured and the result is saved by the Internet Service Provider (ISP). At the end of a billing period (this period is generally equal to one month), the Internet Service Provider (ISP) sorts out all the measurements, removes five percent of the measurements, the measurements with the highest values, and takes the next measurement as the value of the bandwidth used through his network. This value will be the base for billing the server hosting center. This bandwidth value has an associated cost depending on the range of bandwidth used. For example, a usage between zero and ten Mbps is charged “X” while a usage between ten and twenty Mbps is charged “Y” (with X<Y) and so on.

FIG. 1 is a general view of a network according to the prior art. The network comprises a source network 100 connected to three destinations networks 105 through a locally attached router 101 and a plurality of remote routers 102, 103 and 104. The routers exchange routing information related to the different destination networks using a variety of known routing protocols. The destination network may be either directly attached to the remote routers 102, 103 or 104, or attached to different layers of routers which are in turn connected to the remote routers 102, 103 or 104. A cost value is associated with each link between the routers. In the present example, it is supposed that the link between router 101 and router 102 has a cost of “one”, the link between router 101 and router 103 has a cost of “two”, and the link between router 101 and router 104 has a cost of “three”. The links between the routers 102, 103, 104 and the destination networks have all a cost of “one”.

FIG. 2 shows a typical configuration where a Server Hosting Center 200 is connected to two different Internet Service Providers: ISP-1 201 and ISP-2 202. In the server hosting center 200, for redundancy reasons, two front end routers 203 and 204 are used to connect the routers 205 and 206 of the Internet Service Providers 201 and 202. In the present configuration, the Border Gateway Protocol (BGP) 207 is used by the different routers 203, 204, 205 and 206 to advertise all the Internet routes and networks. The routes and networks advertisements are dynamically stored in the routing table of each router. The IP datagrams are routed towards their final destination network by the routing devices, at the front end of the server hosting center. The routing is mostly executed according to the criterion of the shortest path.

According to prior art, the process for routing IP datagrams is based on the routing table or on a subset of the routing table commonly called Forwarding Information Base (FIB). While the routing table contains routing information that may never be used, the Forwarding Information Table (FIB) contains routing information for a destination network to which an IP datagram has already been routed. When an IP datagram is received, the router creates an entry in the Forwarding Information Base (FIB) including the following information:

As shown in FIG. 3, the method for routing an IP datagram according to the prior art comprises the steps of:

The pricing model exercised by the Internet Service Providers (ISPs) can consist of a fixed price corresponding to a committed rate, paid whether or not it is used. It can also be based on a bandwidth usage calculated from periodical sampling the traffic during the billing period. Or it can be a mix of the two, with a guaranteed part that is always paid and a variable part that is charged depending on the bandwidth usage.

From a mathematical point of view, a packet based traffic like IP is a succession of data bursts emitted at line speed. The traffic is mainly characterised by:

Routers and other network data devices do not provide n(t). It would be too costly in terms of memory and processing time. Instead, they provide sets of counters, for instance for counting the number of transmitted bits (or received bits). Consequently, traffic is observed by regularly sampling the values of these counters. As shown in FIG. 5b, this is represented by a series V of K+1 terms v0, v1, . . . , vK, where:

The next logical step after gathering bandwidth usage data is to compute a bandwidth value Bb for billing. The algorithm to compute the value Bb is generally chosen as:

B b = w i , u i w i

B b = u i 2 u i

In order to optimize the connection costs, the bandwidth usage should represent a very important aspect of the routing in a server hosting center and should be a key decision factor on top of the traditional routing algorithms based on the shortest path.

An object of the present invention is to optimize connection costs in an IP network.

The invention resides in a system, method and computer program product for routing a datagram in an IP network. A datagram with a destination network address is received at a router. The router identifies a next hop router en route to or associated with the destination network address. The router determines whether or not transmission of the datagram on a link to the next hop router would result in a bandwidth usage exceeding a bandwidth threshold associated with the next hop router. If not, the router updates the bandwidth usage associated with the next hop router to account for the datagram, and transmits the datagram to the next hop router. If so, the router selects among other possible next hop routers en route to or associated with the destination address, another next hop router for which transmission of the datagram on a link to the other next hop router would not result in a bandwidth usage exceeding a bandwidth threshold associated with the other next hop router. Then, the router updates the bandwidth usage associated with the other next hop router to account for the datagram, and transmits the datagram to the other next hop router.

According to one feature of the present invention, if, among the other possible next hop routers, there is no other next hop router for which the transmission of the datagram on the respective link would result in the bandwidth usage being less than the respective bandwidth threshold, then the router chooses among the other possible next hop routers, another next hop router. Then, the router updates the bandwidth threshold associated with the other, chosen next hop router with a larger, predefined bandwidth threshold.

FIG. 1 is a block diagram of a computer system comprising a source network and a plurality of destinations networks interconnected by means of routers, according to the Prior Art.

FIG. 1A shows that each Router can include a CPU and a computer readable storage device storing program instructions to be executed by the CPU.

FIG. 2 is a block diagram of a server hosting center connected to two different Internet Service Providers (ISPs), according to the Prior Art.

FIG. 3 is a flow chart illustrating routing an IP datagram in a router according to the Prior Art.

FIG. 4 shows a Forwarding Information Base (FIB) and an associated Layer two Table used for routing IP datagrams according to the Prior Art.

FIG. 5a is a graph illustrating packet based traffic on a link.

FIG. 5b is a graph illustrating sampling of the packet based traffic on the link.

FIG. 5c is a microscopic view of bandwidth usage on the link.

FIG. 5d is a macroscopic view of bandwidth usage on the link.

FIG. 6 shows an algorithm used by Internet Service Providers for billing for bandwidth usage.

FIG. 7 shows a Forwarding Information Base (FIB) and an associated Layer two Table used for routing IP datagrams according to the present invention.

FIG. 8 shows current bandwidth for billing as a function of time on two different links according to the bandwidth thresholds defined for each link.

FIG. 9 is a flow chart illustrating a method for selecting a link to route a datagram to a next hop router according to the present invention.

FIG. 10 shows a Forwarding Information Base (FIB) and an associated Layer two Table used for routing IP datagrams according to one embodiment of the present invention.

FIG. 11 is a flow chart illustrating different steps of the method for selecting a link to route a datagram to a next hop router according to one embodiment of the present invention.

The present invention routes IP traffic to several next hop routers according to current bandwidth usage on links connecting these next hop routers. The object of the present invention is to change the routing decision process executed in the routers so that the decision does not only depend on a distance or cost to a destination network but also depends on a bandwidth usage as billed by Internet Services Provides (ISPs) on the links to next hop routers.

As in the prior art, the Forwarding Information Base (FIB) comprises for each destination network:

The current bandwidth for billing 701 on the link li connecting the next hop router (NHi) is computed each time a new datagram must be transmitted. The current bandwidth for billing Bbc can be defined as:

The list of bandwidth thresholds 702 on the link li connecting the next hop router (NHi) is a configured set of values based on the pricing model of the Internet Service Provider. At the end of the billing period, once the bandwidth for billing Bib (which is an indication of the bandwidth usage) is calculated, a contractual price (or cost) is applied. A contractual price for a predefined bandwidth interval is a fixed price applied by the Internet Service Provider whatever the value of the bandwidth for billing is within this predefined bandwidth interval. As the pricing model of most Internet Service Providers is based on a plurality of contractual prices Cthj depending on the bandwidth usage, several different bandwidth thresholds are defined. For instance, for link li, a first contractual price “Cith1” can be applied for values of Bib between 0-10 Mbps, a second contractual price “Cith2” can be applied for a value of Bib between 10-20 Mbps, and a third contractual price “Cith3” can be applied for a value of Bib between 20-30 Mbps, etc . . . In this example, the following bandwidth threshold are defined : Bith1=10 Mbps, Bith2=20 Mbps, Bith3=30 Mbps, etc . . . Each time the bandwidth value for billing Bib will exceed a given bandwidth threshold, a different contractual price will be applied by the Internet Service Providers. For instance, if at the end of the billing period, Bithj−1<Bib≦Bithj, then the total price to pay will be equal to Cithj.

The current bandwidth threshold 703 on the link li connecting the next hop router is a variable which can only take discrete values comprised in the list of bandwidth thresholds. If the list of bandwidth thresholds comprises the values: {Bith1=10, Bith2=20, Bith3=30}, the current bandwidth threshold can only take the values 10, 20 and 30 Mbps.

The billing period 704 is a configured value (for example one month) based on the pricing model of the Internet Service Provider on the link to the next hop router.

The pricing model of most Internet Service Providers divides the bandwidth in several contiguous intervals and associates a contractual price with each of these bandwidth intervals. For instance, on link li, a cost Cith1 is associated with bandwidth interval 0-10 Mbps, a cost Cith2 with interval 10-20 Mbps, a cost Cith3 with interval 20-30 Mbps, etc . . . . In the present example, the list bandwidth thresholds values for link li to next hop router NHi, comprises the following values: Bith1=10 Mbps, Bith2=20 Mbps, Bith3=30 Mbps, etc . . .

According to the present invention, at the beginning of the billing period, the current bandwidth thresholds of the links connecting the various next hop routers are initialized with the first value Bith1 (10 Mbps) in the lists bandwidth thresholds. Up to the current bandwidth threshold B1th1 (from 0 to 10 Mbps), a first next hop router (NH1) is used to route the datagrams. Once the current bandwidth for billing B1bc has reached this current bandwidth threshold B1th1 (10 Mbps) with this first next hop router (NH1), a second next hop router (NH2) is used. However, the current bandwidth for billing B2bc of the link l2 connecting this second next hop router NH2 must also be taken into account. If the current bandwidth threshold B2th1 for this second next hop router NH2 is reached, the next hop router NH1 can be selected again until the second bandwidth threshold B1th2 of NH1 (20 Mbps in the example) is reached and so on.
The mechanism previously described is illustrated in FIG. 8. The graphic shows the current bandwidth for billing (B1bc & B2bc) 800 on each link as a function of the time t (805). In the present example, the current bandwidth for billing is defined as an increasing function. On the Bandwidth line (y-axis), the first two bandwidth thresholds (B1th1 & B1th2) for link l1 801 and 804 and the first two bandwidth thresholds (B2th1 & B2th2) for link l2 802 and 803 are shown.

As described in FIG. 9, according to the present invention, steps 900 to 913 are added after the next hop router has been found in the Forwarding Information Base (FIB):

As shown in FIG. 10, according to a specific embodiment of the present invention, the following new information 1000 is added in the Forwarding Information Base (FIB) for each link to next hop router (NH):

This value is dynamically computed by the router each time a new datagram must be sent. The Minimum Time to Emit Next Datagram MTENDnew is defined as being equal to the previous Minimum Time to Emit Next Datagram MTENDprev (in seconds) plus the size of the datagram dn (in bits) to emit divided by the current bandwidth threshold Bthc of the link l to the next hop router (NH):
new Minimum Time to Emit Next Datagram=previous Minimum Time to Emit Next Datagram+Datagram-Size/Current Bandwidth Threshold.
MTENDn+1=MTENDn+dnn+1/Bthc(n+1);
MTENDn+1=MTEND0+dn1/Bthc1+ . . . +dnk/Bthck+ . . . dnn/Bthcn+dnn+1/Bthc(n+1);
with:

The link selection algorithm as described in FIG. 11, comprises the steps of:

While the present invention has been particularly shown and described with reference to a preferred embodiment, it will be understood that various changes in form and detail may be made therein without departing from the spirit, and scope of the invention.

Lund, Arnaud, Dispensa, Jean Claude, Berthaud, Jean Marc

Patent Priority Assignee Title
10079722, May 09 2014 Lattice Semiconductor Corporation Stream creation with limited topology information
10338694, Jan 22 2007 Sony Corporation Multiple focus control
9590825, May 09 2014 Lattice Semiconductor Corporation Stream creation with limited topology information
9660836, May 06 2014 Lattice Semiconductor Corporation Network topology discovery
9686101, May 09 2014 Lattice Semiconductor Corporation Stream creation with limited topology information
Patent Priority Assignee Title
3783258,
6084864, Feb 18 1987 Wengen Wireless LLC Traffic routing for satellite communication system
7027449, Oct 10 2000 Regents of the University of California, The Method for maintaining reservation state in a network router and resulting scalable integrated architectures for computer networks
7133365, Nov 02 2001 INTERNAP HOLDING LLC System and method to provide routing control of information over networks
20020095474,
20030026268,
//////
Executed onAssignorAssigneeConveyanceFrameReelDoc
Oct 15 2003BERTHAUD, JEAN MARCInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0146320421 pdf
Oct 15 2003DISPENSA, JEAN CLAUDEInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0146320421 pdf
Oct 20 2003LUND, ARNAUDInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0146320421 pdf
Oct 21 2003International Business Machines Corporation(assignment on the face of the patent)
Dec 30 2013International Business Machines CorporationTWITTER, INC ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0320750404 pdf
Oct 27 2022TWITTER, INC MORGAN STANLEY SENIOR FUNDING, INC SECURITY INTEREST SEE DOCUMENT FOR DETAILS 0618040001 pdf
Date Maintenance Fee Events
Mar 23 2010ASPN: Payor Number Assigned.
Sep 20 2013REM: Maintenance Fee Reminder Mailed.
Jan 31 2014M1551: Payment of Maintenance Fee, 4th Year, Large Entity.
Jan 31 2014M1554: Surcharge for Late Payment, Large Entity.
Aug 09 2017M1552: Payment of Maintenance Fee, 8th Year, Large Entity.
Aug 09 2021M1553: Payment of Maintenance Fee, 12th Year, Large Entity.


Date Maintenance Schedule
Feb 09 20134 years fee payment window open
Aug 09 20136 months grace period start (w surcharge)
Feb 09 2014patent expiry (for year 4)
Feb 09 20162 years to revive unintentionally abandoned end. (for year 4)
Feb 09 20178 years fee payment window open
Aug 09 20176 months grace period start (w surcharge)
Feb 09 2018patent expiry (for year 8)
Feb 09 20202 years to revive unintentionally abandoned end. (for year 8)
Feb 09 202112 years fee payment window open
Aug 09 20216 months grace period start (w surcharge)
Feb 09 2022patent expiry (for year 12)
Feb 09 20242 years to revive unintentionally abandoned end. (for year 12)