Processing notifications relating to telecommunication sessions
10785823 ยท 2020-09-22
Assignee
Inventors
Cpc classification
H04L67/142
ELECTRICITY
H04W68/005
ELECTRICITY
International classification
H04W4/00
ELECTRICITY
H04W68/00
ELECTRICITY
H04M15/00
ELECTRICITY
Abstract
Measures, including methods, systems and computer-readable storage mediums, for use in processing notifications relating to telecommunication sessions. A cluster of servers is operable to receive incoming notifications where each server can process any given notification and update a store holding records based on previous notifications. The cluster may include a timer function to allow records to be closed when no relevant notifications are received after a timeout interval.
Claims
1. A cluster of servers configured to handle incoming notifications relating to a telecommunication session, wherein a server in the cluster of servers comprises: a Diameter handler configured to receive the incoming notifications; a controller configured to compile the incoming notifications received by the Diameter handler to form session information records relating to the telecommunications session, wherein the Diameter handler and the controller are separate components of the server, and wherein the controller has access to: first clustered storage configured to store partial session information records relating to ongoing telecommunication sessions, wherein the first clustered storage is configured to provide access to partial session information records stored by any of the servers in the cluster of servers and to distribute the partial session information records to provide redundancy; and second clustered storage configured to store completed session information records relating to completed telecommunication sessions, wherein the second clustered storage is configured to provide access to completed session information records stored by any of the servers in the cluster of servers and to distribute the completed session information records to provide redundancy; and an FTP interface to enable completed session information records stored in the second clustered storage to be accessed, wherein the cluster of servers is a stateless cluster of servers, whereby any server in the cluster of servers can process any incoming notification relating to the telecommunication session regardless of whether that server has received a previous incoming notification relating to the telecommunication session.
2. The cluster of claim 1, wherein the FTP interface provides: flat-file access to the completed records stored in the second clustered storage; and/or time-period-grouped access to the completed records in the second clustered storage.
3. The cluster of claim 1, wherein the Diameter handler is configured to acknowledge an incoming notification relating to an ongoing telecommunications session only when: a partial session information record relating to the incoming notification has been stored in the first clustered storage; and/or a completed session information record relating to the incoming notification has been stored in the second clustered storage.
4. The cluster of claim 1, wherein the servers in the cluster of servers are in the form of: discrete physical machines; virtual machines operating on one or more hosts; or Linux Containers.
5. The cluster of claim 1, wherein the first and second clustered storage provide the controller with access to all of the session information records stored by any of the servers in the cluster.
6. The cluster of claim 1, wherein the first and second clustered storage distribute the session information records across the cluster of servers to provide geo-redundancy.
7. The cluster of claim 1, wherein the first clustered storage comprises disk-based storage.
8. The cluster of claim 1, wherein the servers in the cluster of servers act together to carry out at least a portion of an IMS billing arrangement.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
DETAILED DESCRIPTION OF CERTAIN INVENTIVE EMBODIMENTS
(6) The present disclosure describes a network, collection or cluster of servers which act together to carry out at least portions of the IMS billing arrangement as shown in
(7) In order to operate in a manner particularly suitable for implementing in a cloud-based network, each server in the cluster should be able to serve any incoming request i.e. whilst the cluster as a whole serves the overall desired function; any particular server is capable of acting on behalf of the cluster. Requests can therefore be routed to the various servers in any convenient manner, such as IP multicast if they share IP addresses, or providing a load balancer distributing requests amongst them (for example). One particularly suitable method for routing requests to the servers is for the originators of the requests to simply distribute their requests amongst all available servers using round-robin load balancing.
(8) Referring now to
(9) Controller 28 is capable of handling incoming ACRs received by Diameter handler 26 and compiling them to form a CDR in the standard way according to 3GPP TS.32.298. Controller 28 has access to two forms of storage: A Persistent Store 30 which is used for storage of completed CDRs, and a Partial Record Store 32 which is used for storage of partial CDRs for ongoing sessions. Both forms of storage are clustered storage, that is to say that they provide access to all of the records stored by any of the servers and distribute those records across the cluster to provide redundancy (and potentially distributed across sites to provide geo-redundancy). For example, Cassandra or other disk-based storage solutions such as Riak or MySQL are suitable for implementing Persistent Store 30, where it is important that the storage of the records is reliable. In some embodiments, such independent distributed stores are employed since they have already well solved the resiliency problems and so that aspect can be effectively offloaded. Alternatively, a suitably reliable non-clustered storage solution such as NAS may be suitable in some embodiments. For Partial Record Store 32, in one embodiment, a faster storage solution such as Memcached, Infinispan, Couchbase or Redis can be employed.
(10) The skilled man will realize that in some embodiments, it may be possible to use the same clustered storage solution for both the Persistent Store 30 and Partial Record Store 32, for example using a high-performance clustered storage solution for both. This would be particularly appropriate when using Server 24 to perform only the functions of a CDF, and an interface to a CGF could be used to ensure persistent storage of the CDRs. It is appropriate, however, to use a disk-based storage solution for Persistent Store 30 as that allows server 24 to carry out functions of both a CDF and a CGF. For example, an FTP interface can be provided for access to Persistent Store 30 which would allow server 24 to provide an interface like the Bx interface as shown in
(11) With reference to
(12) Whilst event based ACRs are straightforward to process, even in a distributed cluster, this is not the case for ongoing sessions. In particular, as each ACR relating to an ongoing session is not guaranteed to be sent to the same server, each server in the cluster needs to be able to handle any incoming ACR to add to the partial CDR relating to the session so far. This is further complicated by the necessity of providing premature closure of a CDR relating to an ongoing session, since a server that had received an INTERIM ACR cannot be sure that a failure to receive a further ACR for that session indicates the CDR should be prematurely closed (instead, the ACR may have been directed to a different server). There is the added problem that it is still appropriate to provide for some manner of premature closure for the CDR so that when a CTF fails to send the STOP ACR the session is still terminated and billing does not continue indefinitely.
(13) We address these issues by using a distributed timer service such as described in U.S. patent application Ser. No. 14/604,473. With reference again to
(14) Referring now to
(15) At 4c, this partial CDR is stored in Partial Record Store 32. At more or less the same time as this, at 4d the Controller contacts timer service 36 to start a timeout timer for this session. Whilst some implementations of timer service 36 may require only a single message to be sent from Controller 28 to timer service 36, in other embodiments there may be a brief exchange of messages. In particular, this may involve Timer Service 36 indicating to Controller 28 a unique identifier for the generated timer to allow that timer to be updated or deleted. At 4e, an acknowledgement or START ACA is returned to the CTF. As previously described in relation to event based billing, whilst this message could be returned earlier in the process, in some embodiments it is done only once the message has been fully handled.
(16) In the usual way as directed by the Rf Specification, the START ACA indicates to the CTF the session interval, which tells the CTF how frequently to send heartbeat INTERIM ACRs in order to keep the billing for that session open. This is configurable by the operator of the server, and may be based on a suggested session interval provided by the CTF on the ACR. In some embodiments, the timer created at step 4d is slightly longer than the session interval, so that the session is not kept open for substantially longer than the session interval after the last ACR for that session, but we do not prematurely close sessions very often due to the timer pop outracing an INTERIM ACR.
(17) At some point later, but before the timeout interval indicated when creating the timer for this session, the CTF generates an INTERIM ACR to indicate the session is ongoing or to mark some type of change. This message is received by Controller 28 at 4f, which may be on the same server as received the START ACR at 4a or may be at a different server. In any case, the controller retrieves the partial CDR created thus far from Partial Record Store 32 at 4g (although in some embodiments it may have cached the partial CDR reducing the need for retrieval from the store in the case that the same server handles both the START and INTERIM ACR). The partial CDR is updated based on the received INTERIM ACR at 4h, and then the updated partial CDR is re-committed to the store at 4i.
(18) As part of handling the incoming INTERIM ACR, the timer service 36 is updated as a heartbeat has been received and the session billing should be kept open again for the timeout period. This is depicted at 4j although the timer may instead be updated at any point during the handling of the incoming ACR. Restarting the timer may take the form of updating the existing timer by using the unique identifier generated by timer service 36 (which can be stored with or alongside the partial CDR in the store, and in some embodiments would be the diameter session ID which can be used as the key for the partial record store). Again, the final step of handling the INTERIM ACR is to reply with an acknowledgement at 4k (which again could be done at any point but in some embodiments is done once the message has been completely handled).
(19) Finally, the session is terminated and the CTF sends a STOP ACR to the cluster at 4l. As described above, this is received by controller 28 on any of the servers in the cluster. At 4m, the partial CDR is retrieved from store 32 and finalized based on the incoming ACR at 4n. This may involve more or less processing depending on the manner in which the ACR has been compiled up to this point. Once the CDR is finished, it is sent to the Persistent Store 30 at 4o for later retrieval. Again, at some point in handling the ACR, the timer should be dealt with and in this case, since the CDR is finalized, the timer should be cancelled at 4p although again this may be achieved by marking the timer as to be ignored or some other appropriate technique. Finally, the STOP ACR is acknowledged at 4q which as before can be done at the end of the processing associated with the ACR.
(20) With reference to
(21) The user of the system can configure the default timer as preferred, or may cause Controller 28 to dynamically generate it based on the parameters of the START ACR such as requested session interval. The session interval and timer can potentially be updated based on the parameters or source of the INTERIM ACRs. For example, if the CTF generating the ACRs is logically close in the network, a shorter timer may be used compared to a CTF housed in a different part of the network or geographically distant location. Changing the Session Interval and timer may be particularly desirable when the billing characteristics of a call change. For example, if the call is uplifted to include video media at a higher price, the session interval and timer may be reduced to minimize the potential overcharging caused by a system failure.
(22) In any case, at 5m the Timer Service 26 indicates to Controller 28 that the timer for that session has popped or expired. This indication provides the controller with information to identify the relevant partial CDR for that session. This information may be by way of indirect lookup, but may be in the form of the diameter Session ID which is an appropriate index for storing the partial CDRs. At 5n, the controller retrieves the partial CDR from the Partial Record store, and then prematurely closes the session at 5o, terminating the CDR and finalizing it for storage with an indication that the session was prematurely closed. The terminated CDR is then stored in Persistent Store 30 at 5p.
(23) Accordingly, the embodiments described above provide a cloud-appropriate, horizontally scalable way to implement a CDF (and, in some cases CGF) for handling incoming ACRs and producing (and storing) CDRs for billing purposes.
(24) In some embodiments, each server 24 has its own IP address. Requests are distributed between the servers by the CTF component of each Service Element according a variant of weighted DNS load balancing. In particular, each server is assigned an arbitrary DNS weight and each CTF carries out an ordering operation (which may be simple numeric or involve hashing) on the weights returned by DNS query for the CDF hostname. Each CTF then iterates along the ordered list of IPs, sending each ACR message to the next CTF in the list. This does violate the standards for the Rf interface slightly, but it is an effective way of distributing the CDF. An alternative solution would be to have each server acting as its own load balancer. Each CTF could send ACRs to whichever IP address it had configured, and if the server found itself overloading it could simply forward the messages on within the cluster to another server.
(25) We have considered a variety of modifications that can be made to the embodiments above and may be appropriate in alternative implementations. For example, updating the timer may be replaced by deleting and re-creating the timer. Alternatively, a new timer can be created and the original timer marked as to be ignored (either by actively adding it to a list of such timers and distributing or storing the list in a distributed store, or passively noting on receipt of a timer pop that the partial CDR for that timer has recently been updated or is finished).
(26) The skilled man will realize that there is a potential window condition between receiving an ACR and updating the timer for the relevant session, during which one server in the cluster may be trying to update the partial CDR based on a received ACR and another may be trying to prematurely close the partial CDR based on a timer pop. Whilst in practice we expect appropriate selection of timer duration in relation to the Session Interval will render this window small enough to be acceptable, this situation can be handled by for example marking the partial CDR as it is retrieved to indicate the action being taken (update based on ACR vs. prematurely close). In this case, when a controller finds that an action is already taking place for a partial CDR, it may allow that action to complete.
(27) However on receipt of a timer pop and in the case that the already taking place action is an update, or that on inspection of the partial CDR it finds that the record was recently updated, the existing timer will have expired and therefore should be updated or re-created as the session is ongoing.
(28) A further modification can be made to the system as follows. Rather than removing the entry for the partial CDR from the partial record store once it seems to be finished, it can be left in but marked as finished (tombstoned). If a further ACR (or timer pop) for that session arrives, it can be compared to the tombstoned CDR. If the CDR has been prematurely closed due to failure to receive an ACR and the new message is an ACR, the partial CDR can be re-opened if appropriate, or at least updated to reflect the further message and the record of that CDR in the persistent record store removed or overwritten.
(29) In some embodiments, each host on which a server resides also features a node of the Persistent Store 30, Clustered Store 32 and Timer 36. In such an embodiment, each controller 28 in the cluster is able to consult the co-located instance of these in order to reduce latency. However, the skilled man will realize that the nodes hosting these could easily be located on different hosts; in a different network; or in some cases replaced by non-clustered solutions such as a NAS for the store and a highly available timer in the case of the Timer service.
(30) The skilled man will also realize that some implementations of a CDF may distribute responsibility differently between the nodes. For example, whilst controller 28 is depicted as both handling retrieval of partial CDRs and creating/updating timers, in different implementations the partial record store could create a timer itself based on receiving the partial CDRand on the timer popping can push the partial CDR to the controller by way of notification. Such a timer might be implemented (for example) by comparing the current time to the last updated times of each record in the store, and detecting when the difference between the two reaches a threshold.
(31) Whilst present embodiments have been described as implementing a CDF and CGF function for the purposes of billing, the skilled man will realize that the techniques described in this disclosure have broader applications in the field of telecommunications. The embodiments described above could easily be adapted to track generic notifications of events and sessions, tracking the state of some of these in a temporary store before writing them to a persistent store on completion of the event or session.
(32) The above embodiments are to be understood as illustrative examples of the present disclosure. Further embodiments are envisaged. It is to be understood that any feature described in relation to any one embodiment may be used alone, or in combination with other features described, and may also be used in combination with one or more features of any other of the embodiments, or any combination of any other of the embodiments. Furthermore, equivalents and modifications not described above may also be employed without departing from the scope of embodiments, which is defined in the accompanying claims.