blob: 6b0a7e69840256f9699e79f526c72d2378a491a1 [file] [log] [blame]
/*
* Copyright 2015 Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.pcep.api;
import java.util.List;
/**
* Abstraction of a generalized PCEP Tunnel entity (bandwidth pipe) for L2
* networks or L1/L0 networks, representation of e.g., VLAN, L1 ODUk connection,
* WDM OCH, etc..
*/
public interface PcepTunnel extends PcepOperator {
/**
* Describe the type of a tunnel.
*/
enum Type {
/**
* Signifies that this is a L0 OCH tunnel.
*/
OCH,
/**
* Signifies that this is a L1 OTN tunnel.
*/
OTN,
/**
* Signifies that this is a L2 tunnel.
*/
UNI,
}
/**
* The ability of a tunnel.
*/
enum Ability {
/**
* no protected tunnel,if the tunnel is broken ,then the user is out of
* service.
*/
NOPROTECTED,
/**
* tunnel with rerouter ability.if a tunnel is broken, the tunnel will
* try to find another path to provider service.
*/
SILVER,
/**
* tunnel with 1 + 1 rerouter ability.if a tunnel is broken, there'll be
* another tunnel providing service at once.
*/
DIAMOND
}
enum PATHTYPE {
/**
* Indicates path is the preferred path.
*/
FIRST,
/**
* Indicates path is the alternate path.
*/
SECOND
}
/**
* Represents state of the path, work normally or broken down.
*/
enum PathState {
NORMAL, BROKEN
}
/**
* Returns the type of a tunnel.
*
* @return tunnel type
*/
Type type();
/**
* Returns the name of a tunnel.
*
* @return tunnel name
*/
String name();
/**
* Returns the device id of destination endpoint of a tunnel.
*
* @return device id
*/
PcepDpid srcDeviceID();
/**
* Returns the device id of source endpoint of a tunnel.
*
* @return device id
*/
PcepDpid dstDeviceId();
/**
* Returns source port of a tunnel.
*
* @return port number
*/
long srcPort();
/**
* Returns destination port of a tunnel.
*
* @return port number
*/
long dstPort();
/**
* Returns the bandwidth of a tunnel.
*
* @return bandwidth
*/
long bandWidth();
/**
* Returns the tunnel id.
*
* @return id of the PCEP tunnel
*/
long id();
/**
* Returns the detail hop list of a tunnel.
*
* @return hop list
*/
List<PcepHopNodeDescription> getHopList();
/**
* Returns the instance of a pcep tunnel,a instance is used to mark the times of
* a tunnel created. instance and id identify a tunnel together.
*
* @return the instance of a tunnel.
*/
int getInstance();
/**
* Returns the state of a path.
*
* @return normal or broken
*/
PathState getPathState();
/**
* Returns the ability of a tunnel.
*
* @return ability of the tunenl
*/
Ability getSla();
/**
* Returns the path type of a path if the tunnel's ability is diamond .
*
* @return the type of a path, the preferred or alternate.
*/
PATHTYPE getPathType();
/**
* Get the under lay tunnel id of VLAN tunnel.
*
* @return the tunnel id of a OCH tunnel under lay of a VLAN tunnel.
*/
long underlayTunnelId();
}