public class NoPath extends PCEPObject
Represents a PCEP NO-PATH object as defined in RFC 5440
From RFC 5440 Section 7.5. NO-PATH Object
The NO-PATH object is used in PCRep messages in response to an
unsuccessful path computation request (the PCE could not find a path
satisfying the set of constraints). When a PCE cannot find a path
satisfying a set of constraints, it MUST include a NO-PATH object in
the PCRep message.
There are several categories of issue that can lead to a negative
reply. For example, the PCE chain might be broken (should there be
more than one PCE involved in the path computation) or no path
obeying the set constraints could be found. The "NI (Nature of
Issue)" field in the NO-PATH object is used to report the error
category.
Optionally, if the PCE supports such capability, the NO-PATH object
MAY contain an optional NO-PATH-VECTOR TLV defined below and used to
provide more information on the reasons that led to a negative reply.
The PCRep message MAY also contain a list of objects that specify the
set of constraints that could not be satisfied. The PCE MAY just
replicate the set of objects that was received that was the cause of
the unsuccessful computation or MAY optionally report a suggested
value for which a path could have been found (in which case, the
value differs from the value in the original request).
NO-PATH Object-Class is 3.
NO-PATH Object-Type is 1.
The format of the NO-PATH object body is as follows:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Nature of Issue|C| Flags | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// Optional TLVs //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 11: NO-PATH Object Format
NI - Nature of Issue (8 bits): The NI field is used to report the
nature of the issue that led to a negative reply. Two values are
currently defined:
0: No path satisfying the set of constraints could be found
1: PCE chain broken
The Nature of Issue field value can be used by the PCC for various
purposes:
Constraint adjustment before reissuing a new path computation
request,
Explicit selection of a new PCE chain,
Logging of the error type for further action by the network
administrator.
IANA management of the NI field codespace is described in
Section 9.
Flags (16 bits).
The following flag is currently defined:
o C flag (1 bit): when set, the PCE indicates the set of unsatisfied
constraints (reasons why a path could not be found) in the PCRep
message by including the relevant PCEP objects. When cleared, no
failing constraints are specified. The C flag has no meaning and
is ignored unless the NI field is set to 0x00.
Unassigned bits are considered as reserved. They MUST be set to zero
on transmission and MUST be ignored on receipt.
Reserved (8 bits): This field MUST be set to zero on transmission
and MUST be ignored on receipt.
The NO-PATH object body has a variable length and may contain
additional TLVs. The only TLV currently defined is the NO-PATH-
VECTOR TLV defined below.
Example: consider the case of a PCC that sends a path computation
request to a PCE for a TE LSP of X Mbit/s. Suppose that PCE cannot
find a path for X Mbit/s. In this case, the PCE must include in the
PCRep message a NO-PATH object. Optionally, the PCE may also include
the original BANDWIDTH object so as to indicate that the reason for
the unsuccessful computation is the bandwidth constraint (in this
case, the NI field value is 0x00 and C flag is set). If the PCE
supports such capability, it may alternatively include the BANDWIDTH
object and report a value of Y in the bandwidth field of the
BANDWIDTH object (in this case, the C flag is set) where Y refers to
the bandwidth for which a TE LSP with the same other characteristics
(such as Setup/Holding priorities, TE LSP attribute, local
protection, etc.) could have been computed.
When the NO-PATH object is absent from a PCRep message, the path
computation request has been fully satisfied and the corresponding
paths are provided in the PCRep message.
An optional TLV named NO-PATH-VECTOR MAY be included in the NO-PATH
object in order to provide more information on the reasons that led
to a negative reply.
The NO-PATH-VECTOR TLV is compliant with the PCEP TLV format defined
in Section 7.1 and is comprised of 2 bytes for the type, 2 bytes
specifying the TLV length (length of the value portion in bytes)
followed by a fixed-length 32-bit flags field.
Type: 1
Length: 4 bytes
Value: 32-bit flags field
IANA manages the space of flags carried in the NO-PATH-VECTOR TLV
(see Section 9).
The following flags are currently defined:
o Bit number: 31 - PCE currently unavailable
o Bit number: 30 - Unknown destination
o Bit number: 29 - Unknown source
Ibit, log, object_bytes, ObjectClass, ObjectLength, OT, Pbit, Res| Constructor and Description |
|---|
NoPath() |
NoPath(byte[] bytes,
int offset)
Constructs a new NO-PATH Object from a sequence of bytes
|
| Modifier and Type | Method and Description |
|---|---|
void |
decode()
Decode NoPath Object
|
void |
encode()
Encode NoPath Object
|
boolean |
equals(Object obj) |
int |
getNatureOfIssue() |
NoPathTLV |
getNoPathTLV() |
int |
hashCode() |
boolean |
iscFlag() |
void |
setcFlag(boolean cFlag) |
void |
setCFlag(boolean cFlag) |
void |
setNatureOfIssue(int natureOfIssue) |
void |
setNoPathTLV(NoPathTLV noPathTLV) |
String |
toString()
returns a String with the main contents
FIXME: No cFlag and no NoPathTLV in response!!!!
|
decode, decodeHeader, encode_header, getBytes, getLength, getObject_bytes, getObjectClass, getObjectClass, getObjectLength, getObjectType, getOT, getRes, isIbit, isPbit, setIbit, setObject_bytes, setObjectClass, setObjectLength, setOT, setPbit, setRes, supportedObjectpublic NoPath()
public NoPath(byte[] bytes,
int offset)
throws MalformedPCEPObjectException
bytes - Sequence of bytes where the object is presentoffset - Position at which the object startsMalformedPCEPObjectException - Thrown if the decoded object is not well formedpublic void encode()
encode in interface PCEPElementencode in class PCEPObjectpublic void decode()
throws MalformedPCEPObjectException
decode in class PCEPObjectMalformedPCEPObjectExceptionpublic int getNatureOfIssue()
public void setNatureOfIssue(int natureOfIssue)
public boolean iscFlag()
public void setcFlag(boolean cFlag)
public void setCFlag(boolean cFlag)
public NoPathTLV getNoPathTLV()
public void setNoPathTLV(NoPathTLV noPathTLV)
public String toString()
public int hashCode()
hashCode in class PCEPObjectpublic boolean equals(Object obj)
equals in class PCEPObjectCopyright © 2016. All rights reserved.