This disclosure relates in general to the field of network communications, and more particularly, to providing a fate sharing identifier in a network environment.
The Resource Reservation Protocol (RSVP) is a network control framework that enables source and destination endpoints to “reserve” the resources to establish a data flow between endpoints. The flow can have a certain quality of service, class, priority, etc. and involve any type of data (audio, video, media, etc.). RSVP can operate in conjunction with routing protocols to reserve resources along a data path between the source and destination endpoints. In certain cases, inconsistencies in the network can cause packets and flows to be disturbed or otherwise disrupted. Further, these inconsistencies are more prominent in times of congestion, where packets may be haphazardly dropped. Accordingly, the ability to properly manage data sessions in a network environment presents a significant challenge to equipment vendors, service providers, and network operators alike.
To provide a more complete understanding of the present disclosure and features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying figures, wherein like reference numerals represent like parts, in which:
A method is provided in one example embodiment and includes, at a first call agent, receiving from a first endpoint, a first identifier associated with communication sessions involving the first endpoint. The method also includes receiving from a second call agent associated with a second endpoint, a second identifier associated with communication sessions involving the second endpoint. The method may also include generating a combined identifier associated with communication sessions involving both the first endpoint and the second endpoint. The combined identifier is generated from a combination of the first identifier and the second identifier. The method further includes reserving network resources associated with the communication sessions involving both the first endpoint and the second endpoint.
Turning to
Note that a series of dashed lines being depicted in
Communication system 10 may include a configuration capable of transmission control protocol/internet protocol (TCP/IP) communications for the transmission and/or reception of packets in a network. Communication system 10 may also operate in conjunction with a user datagram protocol/IP (UDP/IP) or any other suitable protocol, where appropriate and based on particular needs. Unless otherwise indicated in discussions below, network elements can use publicly available protocols or messaging services to communicate with each other through network 30.
In accordance with certain teachings of the present disclosure, communication system 10 is configured to generate fate sharing IDs that are broken into two parts: half being provided by each respective endpoint in a point-to-point flow. The endpoints can combine their respective key halves in a consistent fashion to achieve consistent point-to-point communications. In a specific implementation, the architecture of
Note that the fate sharing ID within the RSVP protocol has been defined; however, that definition has not been developed enough to ensure the fate sharing ID would be consistent in the context of simultaneous features being invoked. Certain operational capabilities of communication system 10 can allow the fate sharing key to be built out of two key halves, one half owned by one conversing endpoint and one half owned by the other conversing endpoint. This allows communication system 10 to maintain fate sharing for any given two-party connection and, further, to offer a reliable construct across any set of mid-call features.
In an example configuration, each endpoint includes an agent function (e.g., provided within RSVP proxies 22a-d) that is capable of setting up appropriate call reservations. In one particular instance, RSVP proxies 22a-d can offer an application program interface (API) to be used by a given call agent to set up the appropriate reservation. In general terms, RSVP proxies 22a-d are configured for setting up reservations on behalf of calls. In a reciprocal fashion, each respective call agent can be provisioned with the server-side instance of the API for providing the fate-sharing feature. Note that the term “reservations” in this instance means preserving any type of call resources (e.g., allocations for bandwidth, memory, buffer, processing, etc.) for the communication session. For example, audio requires a certain bandwidth, video requires a certain bandwidth, etc., and without the reservation, the communication session can deteriorate, or otherwise be inoperable.
Semantically, the fate sharing ID discussed herein can be sent within the reservation request. The call agents would monitor the reservations that propagate to them, and make policy changes in the network (i.e., in the routers). In one generic sense, this fate sharing information can empower the network to intelligently purge flows (e.g., in cases of network congestion). Before proceeding further in detailing these purging activities, it is important to understand the network issues applicable in many fate-sharing scenarios. The following foundational information may be viewed as a basis from which the present disclosure may be properly explained.
Many media architectures offer mechanisms to manage network congestion in a structured fashion. The mechanisms can be based on enhancements to RSVP, which allows endpoints to request the network infrastructure to set aside scheduler call resources on behalf of specific end-to-end flows (i.e., at the expense of other flows). Hence, RSVP is a network protocol that enables source and destination endpoints to reserve resources to establish a data flow in accordance with the flow's properties (e.g., necessary bandwidth, required quality of service (QoS), established priority, latency characteristics, etc.). If a router encounters congestion, packets related to flows with reservations are delivered instead of packets related to flows without reservations.
In a typical arrangement, the source endpoint can send an RSVP Path message identifying itself, and indicating the minimum bandwidth needed to receive the data flow. The Path message can proceed hop-by-hop through the data path: making each intermediate network node aware that a reservation of resources may be requested. The destination node can receive the RSVP Path message and respond with a “request for resources” in the form of a RSVP reservation request (Resv message), which can travel hop-by-hop back to the source endpoint. At each hop, the corresponding intermediate network node can set aside sufficient resources to provide the requested bandwidth for the desired data flow. These resources are made available to the data flow such that the data packets of the flow get appropriate treatment.
Note that if sufficient resources are not available, an intermediate network node may “reject” the Resv message (i.e., does not continue forwarding it), generate a reserve error (ResvErr) message, and forward the ResvErr message downstream over the path to the destination endpoint. The destination endpoint eventually receives the ResvErr message and concludes that the reservation has failed. A destination endpoint whose Resv message has been rejected may later re-attempt to acquire the resources by re-transmitting another Resv message. Source endpoints are generally unaffected by this process, and they continue to send Path messages to refresh their state.
Admission control involves reserving resources on a policy basis, in conjunction with using capacity as a basis for accommodating the reservation request. A simple example of such a policy is an authentication/authorization policy. If an endpoint attempts to reserve bandwidth, but it is unknown to the administrator, or if the endpoint makes an unauthorized request, the request will be denied based on the authentication/authorization policy: even if bandwidth is available. Among authorized (i.e., equal) requesters, bandwidth is granted on a first-come-first-admitted basis.
Each fate shared data flow is associated with a unique identifier, such as a universal unique identifier (UUID). The UUID is preferably unique in both space and time. For instance, the UUID may be derived from a combination of a media access control (MAC) address and a timestamp associated with at least one of the data flows in the fate-sharing group. The UUID may be stored in a “fate sharing object” (FSO) that can be distributed to each of the network nodes that transmit and/or receive data flows in the group of fate sharing flows. The FSO may be disseminated among the client endpoints using an end-to-end signaling protocol such as SIP, H.323, etc., or by other appropriate mechanisms (e.g., from a central server). The FSO can be included in resource reservation messages that are sent from the client nodes into the network.
In more practical terms, many end-to-end sessions consists of multiple flows. For example, a scheduled conference may have an audio flow, a video flow, a presentation flow, a floor-control channel, a video control channel, etc. Furthermore, in most networking scenarios, the flows are commonly two-way. If, from a router's perspective, significant congestion is encountered, and if there are 100 flows propagating in one direction and 100 propagating in another direction, it may be appropriate to purge half the flows. If it chooses those flows at random, the impact of its preemption decision may impact more than half of the end-to-end sessions. For example, if a purged conversation is occurring between Peter and Steve, and a second conversation is occurring between John and Jim, when the system purges have of the audio (e.g., purges Peter's audio and John's audio), all of the aforementioned sessions have been disrupted even though only half of the flows have been purged.
Hence, there is an inherent problem in these blunt purging activities. Additionally, for a network of call agents based on a back-to-back user agent (B2BUA) model, generating a fate sharing identifier that can remain consistent across possible feature operations is difficult. In a default model for RSVP, the endpoints themselves issue reservation requests to each other. Call signaling can be used to coordinate the sending of these reservations with the call offering, but from a basic standpoint, it is important that the endpoints exchange the following reservation messages:
- - - PATH - - - >
< - - - RESV - - -
- - - RESVCONF - - - >
< - - - PATH - - -
- - - RESV - - - >
< - - - RESVCONF - - -
The reservations can have a limited lifetime and, further, the endpoints can keep the reservations current by periodically exchanging another sequence of messages. This also relates to partial network outages.
In the context of fate sharing, the endpoint A-to-endpoint B reservation should have a key ‘x’ that is also used in the independent endpoint B-to-endpoint A reservation. The validity of this key should be maintained and updated as mid-call features are invoked. For instance, if endpoint A (e.g., associated with an end user Alice) calls endpoint B (e.g., associated with an end user Bob), and then a subsequent feature is triggered and redirects Alice's call leg to endpoint C (e.g., associated with an end user Carol) and Bob's call leg to endpoint D (e.g., associated with an end user Donald), the fate sharing ID needs to be changed on at least one of the calls. In this instance, Alice is no longer talking to Bob. If the network decides to purge Alice's outbound flow with the fate sharing ID x, it should purge Carol's inbound flow, and not purge Bob's flow. Hence, there should be mid-call remarking, which is propagated down the reservation at the next refresh. This can happen as a result of a call agent feature (e.g., in a back-to-back user agent (B2BUA)), which may be associated with a type of SIP application. Hence, it is the call agent that has to broker the changing fate sharing ID, which means that the call agent should be configured to remember the ID and to implement a method for updating the endpoints.
Finally, due to the way that many B2BUAs operate, the call agent should also be responsible for generating new fate sharing IDs. This happens because B2BUAs often handle features through mid-call “split/join” operations in which the endpoints are simply informed of a new media endpoint along with a connected party display name change. In the example above, when Alice is joined to Carol, Alice's call leg remains intact, but the remote media peer information changes to indicate Carol's media information. In this instance, Alice's endpoint cannot pick the fate sharing ID because the action originates from the B2BUA.
In regards to the B2BUA internals, for a B2BUA Alice/Bob call, there is typically an object that represents Alice's device and an object that represents Bob's device (i.e., there is data associated with the Alice-Bob communication session). One theory in solving certain inconsistencies may involve putting the fate sharing ID in the call object, and when a feature is invoked, a new fate sharing ID is selected, where the new value is sent as a message to the endpoints that require an update. However, such a solution is inoperable because endpoint calls often traverse a chain of call agents.
As signals propagate through the network, and because the calls “x” are trying to cache and to recall the updated fate sharing ID, these devices stamp the updated fate sharing ID into memory. This results in Carol and her corresponding call agent getting a stamped value of “x” and Donald and his call agent getting a stamped value of “y”, with the center call agent being in a non-deterministic state. The fate sharing has effectively been lost.
One strategy to solve this issue may involve a type of end-to-end locking protocol. For example, before changing the end-to-end ID, Alice's call agent would lock down everything in the Bob direction and, when confirmed, send the change through the network. However, this presents a logistical dilemma because the end-to-end lock takes time to acquire and, further, the events along the locked arc are being queued. Such a strategy would also encounter other difficulties with simultaneous features: making such provisioning unworkable.
To address the aforementioned issues (and others), communication system 10 can use fate sharing IDs that are broken into two parts being provided by respective endpoints. Thus, instead of relying on a single key, which should be stamped into every call object “X” along the end-to-end path, communication system 10 can rely on the fate sharing ID's being composed of two half-keys: each of which is associated with the corresponding endpoint's stable device state. An intelligent two-part fate sharing identifier permits the infrastructure to bundle flows to make an informed preemption decision. This is in contrast to terminating random flows in each direction, where instead of these activities, communication system 10 can remove flows related to a given session, and leave other flows undisturbed. Revisiting the example above, and in the context of B2BUA, Alice's call leg would not go away until she hung-up the call and, if features were invoked, a half-key hung on Alice's device is still valid. Before detailing additional fate-sharing operations below, a brief overview is provided about the infrastructure of
Endpoints 12, 14, 16, and 18 are user devices capable of engaging in a collaborative communication session in accordance with one example implementation of communication system 10. Endpoints 12, 14, 16, and 18 can readily accommodate video, audio, multimedia, etc. and exchange any type of information in a network environment. The term “endpoint” is simply representative of any suitable device that seeks to send and/or receive network data. The endpoint can be associated with various types of protocols, or potential applications to achieve their intended functionality (e.g., SIP, H.323, MGCP, Megaco, Skinny Call Control Protocol (SCCP), real-time streaming protocol (RTSP), H.225, H.245, etc.). For certain SIP applications, the key half can be provisioned as a header or a URI parameter on the SIP Contact: (e.g., Contact: alice@cisco.com <Alice>;fate-share=AliceX). It should also be noted that there are certainly other mechanisms, provisioning, and locations for which the key half could be allocated.
The broad term ‘endpoint’ is inclusive of devices used to initiate a communication, such as any type of computer , a personal digital assistant (PDA), a laptop or electronic notebook, a wireless access point, web browser, a residential gateway, a modem, a cellular telephone, an iPhone, an IP phone, iPad, or any other device, component, element, or object capable of initiating or facilitating voice, audio, video, media, or data exchanges within a network environment. Moreover, endpoints may be inclusive of a suitable interface to the human user, such as a microphone, a display, or a keyboard or other terminal equipment. The endpoints may also be any device that seeks to initiate a communication on behalf of another entity or element, such as a program, a database, or any other component, device, element, or object capable of initiating an exchange within a network environment. Data, as used herein in this document, refers to any type of numeric, voice, video, media, or script data, or any type of source or object code, or any other suitable information in any appropriate format that may be communicated from one point to another.
Endpoints 12, 14, 16, and 18 can be managed by a network of call agents 36, 38, and 40 that can be configured to coordinate control signaling and media for those endpoints. More specifically, each call agent may be provisioned with appropriate software that manages features on behalf of its associated endpoint. Each call agent 36, 38, and 40 may also help in brokering network reservations. In one particular example, call agents 36, 38, and 40 are servers that can interact with each other and with corresponding endpoints. Network elements 32 and 34 can be viewed as carriage mechanisms for packet signaling, data and packet media, and/or any other type of informational exchange involving endpoints 12, 14, 16, and 18. In one particular instance, network elements 32 and 34 are routers, gateways, or switches configured to interface with endpoints 12, 14, 16, and 18. Note that call agents 36, 38, and 40 are also potentially representative of ‘network elements.’
As used herein in this Specification, the term ‘network element’ is meant to encompass routers, gateways, switches, firewalls, in-line service nodes, servers, application program interfaces (APIs), proxies, processors, modules, or any other suitable device, component, element, or object operable to exchange information in a network environment. These network elements may include any suitable hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof. This may be inclusive of appropriate algorithms and communication protocols that allow for the effective exchange (reception and/or transmission) of data or information.
In one example implementation, call agents 36, 38, 40, and endpoints 12, 14, 16, and 18 include software (e.g., as part of RSVPs servers 46a-c and/or RSVP proxies 22a-d, etc.) to achieve the intelligent fate sharing ID operations, as outlined herein in this document. In other embodiments, this feature may be provided externally to any of the aforementioned elements, or included in some other network element (which may be proprietary) to achieve this intended functionality. Alternatively, several elements may include software (or reciprocating software) that can coordinate in order to achieve the operations, as outlined herein. In still other embodiments, any of the devices of the illustrated FIGURES may include any suitable algorithms, hardware, software, components, modules, interfaces, or objects that facilitate these endpoint management operations.
Call agents 36, 38, 40, and endpoints 12, 14, 16, and 18 may share (or coordinate) certain processing operations. Using a similar rationale, their respective memory elements may store, maintain, and/or update data in any number of possible manners. Additionally, because some of these network elements can be readily combined into a single unit, device, or server (or certain aspects of these elements can be provided within each other), some of the illustrated processors may be removed, or otherwise consolidated such that a single processor and/or a single memory location could be responsible for certain activities associated with endpoint management controls. In a general sense, the arrangement depicted in
Turning to the subsequent FIGURES,
Note that call agents commonly send connected party information when features are invoked. In the case of feature invocation (e.g., a double-transfer example), such activities can create two new device state objects that can assign their own fate sharing ID. The feature operation results in connected party updates for both ends of the call. Again, this can occur naturally as part of connected party updates and, at the next reservation refresh, the network would be updated with the new combined key. The information propagating in the network is direction-based such that no data corruption would exist. Semantically, only a half key is being overwritten, not a single full key. Additionally, it should be noted that the identifier key is endpoint leg-based such that as features are invoked, at least a portion of the key can change. Note that some of the key state can also be held by any of the intervening call agents.
Note that steps 312-316 can be performed in a parallel fashion with respect to steps 306-310. Beginning with step 306, the appropriate agent (which may be managing the reconnection) can communicate endpoint C's key half via intervening call agents to endpoint A. At step 308, endpoint A can combined its key half with endpoint C's key half. At step 310, endpoint A can request the network to make an endpoint A-to-endpoint C reservation using the combined key. At step 312, the appropriate agent (handling the reconnection) can communicate endpoint A's key half via intervening call agents to endpoint C. At step 314, endpoint C can combine its key half with endpoint A's key half. At step 316, endpoint C can request the network to make an endpoint C-to-endpoint A reservation using the combined key.
Turning to
At step three, there is a reservation relinquish message for the key associated with endpoints A and B. Subsequently, feature invocation attempts to turn the call (involving endpoints A and B) into a call involving endpoints C and B. At step four, a key update is sent to call agent B. At step five, there is a call leg termination message sent to endpoint A. The reservation is relinquished for the key associated with endpoints A and B, and this activity is shown as step six. At step seven, there is a key update sent by call agent B to call agent A. At step eight, the key update for endpoint D is sent to endpoint C. At step nine, a reservation refresh message is sent from endpoint C, where this message involves the key associated with endpoints C and D. A key update is then sent from call agent B to call agent C, as is being shown in step ten. At step eleven, the key update for endpoint C is sent to endpoint D. A key combine operation is subsequently executed for endpoints C and D. At step twelve, endpoint D can send a reservation refresh (with the k value) to any suitable next destination. The final result is an active call involving endpoint C and endpoint D, where the call has a secured reservation and an effective fate sharing key associated with endpoints C and D.
Note that in certain example embodiments, the fate sharing ID functions described above may be implemented by logic encoded in one or more tangible media (e.g., embedded logic provided in an application specific integrated circuit [ASIC], digital signal processor [DSP] instructions, software [potentially inclusive of object code and source code] to be executed by a processor, or other similar machine, etc.). In some of these instances, a memory element [as shown in
Note that with the examples provided above, as well as numerous other examples provided herein, interaction may be described in terms of two, three, or four network elements. However, this has been done for purposes of clarity and example only. In certain cases, it may be easier to describe one or more of the functionalities of a given set of flows by only referencing a limited number of network elements. It should be appreciated that communication system 10 (and its teachings) are readily scalable and can accommodate a large number of components, as well as more complicated/sophisticated arrangements and configurations. Accordingly, the examples provided should not limit the scope or inhibit the broad teachings of communication system 10 as potentially applied to a myriad of other architectures.
It is also important to note that the steps in the FIGURES illustrate only some of the possible signaling scenarios and patterns that may be executed by, or within, communication system 10. Some of these steps may be deleted or removed where appropriate, or these steps may be modified or changed considerably without departing from the scope of teachings provided herein. In addition, a number of these operations have been described as being executed concurrently with, or in parallel to, one or more additional operations. However, the timing of these operations may be altered considerably. The preceding operational flows have been offered for purposes of example and discussion. Substantial flexibility is provided by communication system 10 in that any suitable arrangements, chronologies, configurations, and timing mechanisms may be provided without departing from the teachings provided herein.
Although the present disclosure has been described in detail with reference to particular embodiments, it should be understood that various other changes, substitutions, and alterations may be made hereto without departing from the spirit and scope of the present disclosure. For example, although the previous discussions have detailed VoIP communications or certain SIP applications, other applications and protocols could readily adopt the teachings of the present disclosure. The present disclosure can be used in a host of applications and, further, be equally applicable to other communication scenarios in which endpoint fate sharing IDs have a propensity to become inconsistent. Additionally, it should be noted that the fate sharing ID activities discussed herein are not restricted to scenarios associated with feature invocation. For example, the fate sharing ID coordination (involving two key halves) discussed herein could be used as a default in certain network provisioning.
Moreover, although previous examples have focused on RSVP being used in certain embodiments, it is worth specifically mentioning off-path mechanisms, which currently predominate certain industries and which could readily adopt the teachings of the present disclosure. A fate-sharing ID is readily applicable, and useful in those scenarios. For example, assume that when Alice and Bob call each other, they each have a local CAC store that is tracking bandwidth in and out of their respective locations. A network event may cause the available bandwidth at, for example, Bob's location to drop precipitously. If the CAC store has methods for preempting calls, or for down-speeding them, a fate sharing ID in that local store can allow the CAC store to pre-empt full sessions instead of individual flows. With such a local CAC store, there is no end-to-end PATH/RESV/RESV-CONF flow for any flow, but just local communication and tracking.
In a general sense, the fundamental network elements for the fate sharing mechanism to be useful and operational would include an end-to-end or local CAC mechanism capable of terminating or modifying sessions in response to network events and capable of associating a fate sharing ID with flows; 2) multi-flow sessions; 3) key halves and key-half composition logic; and 4) a network of call agents that maintains leg-specific, static identifiers and that issues end-to-end signaling refreshes when session events cause two new parties to be connected.
Numerous other changes, substitutions, variations, alterations, and modifications may be ascertained to one skilled in the art and it is intended that the present disclosure encompass all such changes, substitutions, variations, alterations, and modifications as falling within the scope of the appended claims. In order to assist the United States Patent and Trademark Office (USPTO) and, additionally, any readers of any patent issued on this application in interpreting the claims appended hereto, Applicant wishes to note that the Applicant: (a) does not intend any of the appended claims to invoke paragraph six (6) of 35 U.S.C. section 112 as it exists on the date of the filing hereof unless the words “means for” or “step for” are specifically used in the particular claims; and (b) does not intend, by any statement in the specification, to limit this disclosure in any way that is not otherwise reflected in the appended claims.
This application is a continuation of U.S. patent application Ser. No. 12/886,388, filed Sep. 20, 2010, and entitled “System and Method for Providing a Fate Sharing Identifier in a Network Environment,” the entirety of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 12886388 | Sep 2010 | US |
Child | 14445400 | US |