Subject: [sfc] questions on draft-quinn-sfc-nsh-03

From: Dave Dolson <[email-masked]>
Date: Fri, 31 Oct 2014 17:54:08 +0000

After reading draft-quinn-sfc-nsh-03, I have some questions and comments:

The optional TLV format:
- the TLV length should by in bytes (vs. words), allowing strings that aren't a multiple of 4 bytes, with padding to 4-byte alignment. This is the Diameter approach, for example. (RFC6733)
- Encoding "critical" in upper bit of Type is confusing. Why not use one of the reserved flags in the header? Or make type 7 bit field?
- the wording about critical should be clarified. "Receiver" devices MUST drop and "transit" devices MUST NOT drop; neither "receiver" nor "transit" is clearly defined. I think you intend that the critical types must be understood by the end-point (e.g., the protocol end-point addressed by the GRE packet).

The definition of service index action is not precise. It says that if it is zero, the packet is to be dropped,  but I could not understand if that means if received with a zero or if received with "1" and decremented to zero?
Instead, I claim that a packet received with a service index of zero is actually a valid packet if this is the end of the chain and the packet is de-encapsulated.
It would be a configuration error for there to be a forwarding entry that has another hop in the chain for service index zero.
(My understanding is that an NSH forwarding table is indexed by at least {path_id, service_index}, pointing to a record that indicates either next hop in the chain or end of chain.)
Of course, lack of an entry in NSH forwarding table would also cause the packet to be dropped.

I feel that it is not necessary to fix the number of mandatory headers at 4. The number of headers could be subject to the scheme of the MD type, allowing optimization to different use cases. Maybe 2 or 5 are useful in different cases.

There is no discussion of fragmentation or prohibition thereof.

Thanks,
David Dolson
Senior Software Architect
Sandvine