| /* |
| * 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.net.tunnel; |
| |
| import org.onosproject.net.Annotated; |
| import org.onosproject.net.NetworkResource; |
| import org.onosproject.net.Provided; |
| import org.onosproject.net.resource.Bandwidth; |
| |
| |
| /** |
| * Abstraction of a generalized Tunnel entity (bandwidth pipe) for either L3/L2 networks or L1/L0 networks, |
| * representation of e.g., VLAN, GRE tunnel, MPLS LSP, L1 ODUk connection, WDM OCH, etc.. Each Tunnel is |
| * associated with at least two Label objects that model the logical ports essentially. |
| * Note that it supports nested case. |
| */ |
| |
| public interface Tunnel extends Annotated, Provided, NetworkResource { |
| |
| /** |
| * Coarse representation of the Tunnel types. |
| */ |
| public enum Type { |
| /** |
| * Signifies that this is a L2 tunnel. |
| */ |
| VLAN, |
| |
| /** |
| * Signifies that this is a DC L2 extension tunnel. |
| */ |
| VXLAN, |
| |
| /** |
| * Signifies that this is a L3 tunnel. |
| */ |
| GRE, |
| |
| /** |
| * Signifies that this is a MPLS tunnel. |
| */ |
| LSP, |
| |
| /** |
| * Signifies that this is a L1 OTN tunnel. |
| */ |
| ODUk, |
| |
| /** |
| * Signifies that this is a L0 OCH tunnel. |
| */ |
| OCH |
| } |
| |
| /** |
| * Representation of the tunnel state. |
| * |
| */ |
| public enum State { |
| |
| /** |
| * Signifies that a tunnel is currently in a initialized state. |
| */ |
| INIT, |
| |
| /** |
| * Signifies that a tunnel is currently established but no traffic. |
| */ |
| ESTABLISHED, |
| |
| /** |
| * Signifies that a tunnel is currently serving the traffic. |
| */ |
| ACTIVE, |
| |
| /** |
| * Signifies that a tunnel is currently out of service. |
| */ |
| FAILED, |
| |
| /** |
| * Signifies that a tunnel is currently in maintenance state. |
| */ |
| INACTIVE |
| |
| } |
| |
| TunnelId id(); |
| |
| |
| /** |
| * Returns the tunnel source point (source Label object). |
| * |
| * @return source Label object |
| */ |
| Label src(); |
| |
| /** |
| * Returns the tunnel destination point (destination Label object). |
| * |
| * @return destination Label object |
| */ |
| Label dst(); |
| |
| /** |
| * Returns the tunnel type. |
| * |
| * @return tunnel type |
| */ |
| Type type(); |
| |
| /** |
| * Returns the tunnel state. |
| * |
| * @return tunnel state |
| */ |
| State state(); |
| |
| /** |
| * Indicates if the tunnel is to be considered durable. |
| * |
| * @return true if the tunnel is durable |
| */ |
| boolean isDurable(); |
| |
| |
| /** |
| * Indicates if the tunnel is to be considered Bidirectional. |
| * |
| * @return true if the tunnel is Bidirectional |
| */ |
| boolean isBidirectional(); |
| |
| /** |
| * Return the tunnel bandwidth. |
| * |
| * @return tunnel bandwidth |
| */ |
| Bandwidth bandwidth(); |
| } |
| |
| |
| |
| |
| |