Hi,

On Oct 4, 2007, at 2:50 PM, Adrian Farrel wrote:

Hi,

Did you see the question about padding and lengths on the CCAMP and OSPF lists?

It might be worth getting this explained in the PCEP I-D, as well. The questions are:

When an object contains a TLV with padding (so the TLV length field does not include the length of the padding) what is the value of the length field in the object?

When a TLV contains multiple TLVs with padding, what is the value of the length field in the object?

When a TLV contains sub-TLVs with padding, what is the value of the length field in the TLV?

These three questions seem to have well-known and "obvious" answers for other protocols, but are not written down. Let's write them down for PCEP.

This is planned for rev-09 for sure.

Thanks.

Cheers.

JP.


Cheers,
Adrian

----- Original Message ----- From: "LE ROUX Jean-Louis RD-CORE-LAN" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Thursday, October 04, 2007 10:25 AM
Subject: RE: [Pce] TLV Format


Hi Fabien

Sorry for the late reply

Please see inline,


________________________________

De : Fabien VERHAEGHE [mailto:[EMAIL PROTECTED]
Envoyé : jeudi 4 octobre 2007 10:06
À : [EMAIL PROTECTED]
Objet : TR: [Pce] TLV Format



Hello,



I did not see any reply for this comment.

I seize the opportunity to clarify my opinion:



I think TLV alignment statement must be a general rules for all TLVs of a given object.



Definitely right. We are going to add a section on generic TLV encoding. All TLVs specificed in PCEP objects will have to follow this encoding.



Here it is:





7.1.1. PCEP Object TLVs



A PCEP object may include a set of one or more optional TLV(s).
A PCEP object TLV is comprised of 2 octets for the type, 2 octets specifying the TLV length, and a value field. The Length field defines the length of the value portion in octets. The TLV is padded to four-octet alignment; padding is not included in the Length field (so a three octet value would have a length of three, but the total size of the TLV would
be eight octets).

PCEP Object TLV types MUST be managed by IANA.

Unrecognized TLVs MUST be ignored.





Note that this is the encoding already used in RFC 3630 & 4420.







The draft then needs also to specify that the alignment padding bytes must be included before

or after the value field.



The Length field would carry the actual length of the value without padding bytes due to alignment.



Those statements seem important to me for the processing of unknown TLVs.



Sure



With this general rules there is no need to specify that 2 unused bytes must be added for 4 bytes length

value TLV such as The REQ-MISSING.



Note that I'm not sure why the draft proposed a 8 bytes alignment (Why not 4 bytes since in section 7.1

it is said that object length must always be a multiple of 4?).



Yes this was a mistake. We are going to align TLV definitions to new section 7.1.1.



Thanks for your comment.



Regards,



JL



Does it make sense?



Best regards

Fabien






________________________________


De : Fabien VERHAEGHE [mailto:[EMAIL PROTECTED]
Envoyé : vendredi 14 septembre 2007 09:45
À : [EMAIL PROTECTED]
Objet : [Pce] TLV Format



Hi,



I think there is a little problem with PCEP object TLV format.



The main problem being that the general format of the TLVs is not described (Type, length value length, 4 bytes alignment...).



Besides for existing TLVs we have:





"The REQ-MISSING TLV is composed of 1 byte for the type,

1 byte specifying the number of bytes in the value field, 2 bytes

for an "Unused" field (the value of which MUST be set to 0), followed by

a fix length value field of 4 bytes specifying the request-id-number

that correspond to the missing request.

The REQ-MISSING TLV is padded to eight-byte alignment.



TYPE: To be assigned by IANA

LENGTH: 4

VALUE: request-id-number that corresponds to the missing request"



I think the LENGTH field should be set to 6, the unused field 2 bytes being part of the Value field. Otherwise

it means those 2 bytes are part of the TLV header and it should be said that all TLVs will be formatted with

this 4 bytes header i.e. Type (1byte) - Value field Length (1byte) - Unused field (2bytes) - Value field

Otherwise, there may be some problem when decoding a message with unknown TLV.



Besides I'm not sure about the "The REQ-MISSING TLV is padded to eight-byte alignment." statement.

Is it really needed?



For the NO-PATH-VECTOR TLV we have



"The NO-PATH-VECTOR TLV is composed of 1 byte for the type, 1 byte

  specifying the number of bytes in the value field, followed by a fix

  length value field of 32-bits flags field used to report the

  reason(s) that led to unsuccessful path computation.



  The NO-PATH-VECTOR TLV is padded to eight-byte alignment.



TYPE: To be assigned by IANA



  LENGTH: 4



  VALUE: 32-bits flags field"



In this case there is no Unused field 2 bytes.

I think it would be better to have the same format for all TLVs of all object.

And again I'm wondering if the LENGTH field should be set to 4 or 6?



Can you please clarify this to me? Am I missing something?



Thanks

Fabien






---------------------------------------------------------------------- ----------


_______________________________________________
Pce mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/pce




_______________________________________________
Pce mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/pce


_______________________________________________
Pce mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/pce

Reply via email to