2 * Copyright (c) 2014, 2015 Cable Television Laboratories, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
11 import org.pcmm.concurrent.IWorker;
12 import org.pcmm.state.IStateful;
14 import java.io.IOException;
18 * As discussed in RFC 2753 [11], the policy management framework underlying
19 * PacketCable Multimedia is based on the work of the IETF's Resource Allocation
20 * Protocol (RAP) working group. Since the Policy Server is situated between the
21 * Application Manager and the CMTS, it simultaneously plays a dual role as a
22 * "proxy" for AM-initiated session requests and as a "sentry" for defining and
23 * enforcing Resource Control Domain policy.
26 * As described in [11] and in keeping with the PacketCable 1.x DQoS model, the
27 * Policy Server serves as Policy Decision Point (PDP) in relation to the CMTS
28 * resource-management procedures. Conversely, the Policy Server assumes the
29 * role of Policy Enforcement Point (PEP) in relation to the Application Manager
30 * as it proxies Gate Control messages to and from the CMTS element.
33 * To revisit the interaction scenario, the Application Manager issues policy
34 * requests to the Policy Server. The Policy Server acting as a "sentry" for
35 * these requests, and applies a set of policy rules that have been
36 * pre-provisioned by the MSO. Upon passing the checks, the Policy Server then
37 * acts as a "proxy" with respect to the Application Manager and the CMTS,
38 * forwarding the policy request and returning any associated response. Each
39 * policy request transaction must be processed individually.
42 * Policy decisions may be based on a number of factors, such as:
44 * <li>Parameters associated with the request and the status of available
46 * <li>Identity of the particular client and associated profile information</li>
47 * <li>Application parameters</li>
48 * <li>Security considerations</li>
49 * <li>Time-of-day</li>
51 * The primary functions of the Policy Server include:
53 * <li>A policy decision request mechanism, invoked by Application Managers</li>
54 * <li>A policy decision request 'policing' mechanism, enforcing installed
56 * <li>A policy decision delivery mechanism, used to install policy decisions on
58 * <li>A mechanism to allow for the proxying of QoS management messages to the
59 * CMTS on behalf of the Application Manager</li>
60 * <li>An event recording interface to a Record Keeping Server that is used to
61 * log policy requests, which may in turn be correlated with network resource
65 * Since the Policy Server functions as a proxy between the AM and CMTS elements
66 * (with complementary client and server interfaces) some MSOs may elect to
67 * deploy multiple layers of Policy Servers and to delegate certain policy
68 * decisions among these servers in order to satisfy requirements associated
69 * with scalability and fault-tolerance.
73 public interface IPCMMServer extends IStateful {
76 * Starts all connections and threads
78 void startServer() throws IOException;
81 * Stops all connections and threads
86 * When a client connects to the server, a handler is needed to manage the
87 * exchange of the messages between this client and the server.
89 interface IPCMMClientHandler extends IWorker, IPCMMClient {
91 * Responsible for closing resources such as server connections or threads