Subject: [forces] comments #14

From: Jamal Hadi Salim <[email-masked]>
Date: Wed, 17 Aug 2011 05:11:53 -0400

Hello,

I am going to throttle a little bit until we reach conclusion on the outstanding
issues with Chuanhuang.
Here is my last comment on section 5.

----
46)5.5.1.1.

What is the index used to do the table lookup?
What happens on failure?
I am begining to wonder whether we should have sections describing
what metadata each LFB expects, what it consumes and what it creates
for consumption further downstream.

"...along with a metadata that will be used by
the LFB to do the dispatch. If a packet is not associated with such
a metadata, the packet will be dropped inside the LFB."

What is the name of this metadata?

change to:
"...along with metadata metadataname that will be used by
the LFB to do the dispatch. If an arriving packet has no metadataname
associated with it, the packet is dropped by the LFB"

47) 5.5.1.1.
"A packet, if it is associated with a
metadata with the metadata ID, will be output to the group port
instance with the index corresponding to the metadata value in the
Metadata Dispatch table."

to:
" The associated metadataname is used as an index to look up the
Metadata Dispatch table. On a successful match, the lookup
result defines an LFB port to a downstream LFB. On a failure
to look up the Metadata Dispatch table, the packet is dropped."
48) 5.5.1.1.
I did not understand this:
"Currently the BasicMetadataDispatch only
allows an interger value for the metadata to be used for dispatch."
Also did not understand:
"The BasicMetadataDispatch LFB is currently defined with only one
metadata adopted for dispatch, i.e., the metadata ID in the dispatch
table is always the same for all table rows."

Is there only one entry in this table?

49) 5.5.1.2.
typo "selectt"

50) 5.5.2.1.
".. with every input port instance connected to one queue"
to:
".. with every input LFB port instance connected to one queue"

51) 5.5.2.1.
I understand that each input LFB port instance is connected to one queue
but there are no examples of what the upstream LFB could be anywhere
in the document. Or downstream for that matter. Figure1 doesnt
show schedulers - could we have 2-3 sentences describing examples?

51) 5.5.2.1.
Dont wanna spend too much time on this, RR is fine - but isnt
priority based queueing the scheme defined as a basic scheduler?
In the case of IPV4 Tos/DSCP etc (RFC 1812?) is used to select the queue.

52) 5.5.2.3.
"The supported scheduling disciplines types by the FE, currently
maximum 6."

Where did the magic number 6 come from?
----

cheers,
jamal

---

From: "Wang,Weiming" <[email-masked]>
Date: Thu, 1 Sep 2011 12:22:23 +0800

Jamal and Chuanhuang, pls see inline.

thanks,
Weiming

----- Original Message ----- 
From: "Jamal Hadi Salim" <[email-masked]>
Re: The content keys for lookup are a metadata with the metadata ID and the metadata value. For instance, if we use a PHYPortID metadata to dispatch packets, the metadata ID of PHYPortID and the PHYPortID actual value will at the same time be used to match the table.

> What happens on failure?
Currently, we only define to drop it.

> for consumption further downstream.
Re:  I'm afraid if we now change to that, we may have to change much.
> What is the name of this metadata?
Re: the metadata is not static, rather it can be set by CE by setting the dispatch table.

> associated with it, the packet is dropped by the LFB"
Re: three entries: metadata ID, metadata value, and outputindex.

I'v incorparated all above comment and rewritten the whole section as below, pls just comment more: 

----------
5,5.1. BasicMetadataDispatch

A basic medatata dispatch LFB is defined to abstract the process in which a packet is dispatched to some path based on its associated  metadata value.

5.5.1.1. Data Handling

The BasicMetadataDispatch LFB provides the function to dispatch input packets to a group output according to a metadatum and a dispatch table. 

The BasicMetadataDispatch has only one singleton input known as "PktsIn". Every input packet should be associated with a metadatum that will be used by the LFB to do the dispatch. If a packet is not associated with such a metadatum, the packet will be dropped inside the LFB.

This LFB contains a dispatch table named MetadataDispatchTable that can be set by CE so as to decide which metadatum is used for dispatch. The table contains entires of a Metadata ID, a Metadata value and an OutputIndex. The LFB uses all existing metadata associated with every input packet with their metadata IDs and metadata values as the content keys to look up the table to find out the relevant OutputIndex. If a packet failed lookup of the table, the packet will just be dropped inside the LFB. 

The BasicMetadataDispatch LFB has one output defined as a group output known as "PktsOut". A packet having found an OutputIndex will be output to the group port instance with the corresponding index. 

As an example, if the CE decides to dispatch packets according to physical port ID (PHYPortID), the CE may set the metadata ID of PHYPortID and the PHYPortID actual value (the metadata value), and assigned OutputIndex to the  dispatch table. When a packet arrives, metadata associated with the packet are used to look up the dispatch table to find out an output port instance for the packet. 

Currently the BasicMetadataDispatch LFB only allows the metadata value of the dispatch table entry be integer. A metadatum with other types of value is not supported in this version. A more complex metadata dispatch LFB may be defined in future version of the library. In that LFB, multiple tuples of metadata with more value types supported may be used to dispatch packets.

5.5.1.2. Components

This LFB has only one component named MetadataDispatchTable which is defined as an array. Each row of the array is a struct containing a   Metadata ID, a Metadata value and the OutputIndex to select the output port from the group.

5.5.1.3. Capabilities

This LFB does not have a list of capabilities. 

5.5.1.4. Events

This LFB does not have any events specified.

-----------

I have not thought of an example case yet. Not sure if anyone can provide some?

Change the 5.5.2.2 paragraph from 
The SchedulingDiscipline component is for the CE to specify a scheduling discipline to the LFB. Currently defined scheduling disciplines only include FIFO and Round Robin (RR). When a FIFO discipline is applied, it is requires that there is only one input  port instance for the group input. If the user accidentally defines multiple input port instances for FIFO scheduling, only packets in the input port with lowest port index will be scheduled to output port, and all packets in other input port instances will just ignored. Note that if the generic scheduler LFB is defined only one input port instance, the default scheduling discipline is FIFO. If the LFB is defined with more than one input port instances, the default scheduling discipline is round robin (RR).

to:

The SchedulingDiscipline component is for the CE to specify a scheduling discipline to the LFB. Currently defined scheduling disciplines only include Round Robin (RR) strategy. The default scheduling discipline is RR then.

Chuanhuang, pls doble check it.

I have deleted the item. Chuanhuang, pls make sure. Also, pls double check if the following capabilites are still effect? I know queue number limit for group is decided by the port properties? 

   o A queue number limit, which specify the limit of the maximum supported number of queues, which is also the maximum number of input port instances.

   o The queue length limit providing the storage ability for every queue.

---

From: "Chuanhuang Li" <[email-masked]>
Date: Thu, 1 Sep 2011 14:44:12 +0800

>I have deleted the item. Chuanhuang, pls make sure. Also, pls double check if the following capabilites are still effect? I know queue number limit >for group is decided by the port properties? 
>
Yes, we need delete QueueScheduledLimit. We only define two capability components:

name: QueueLenLimit  /*Maximum length of each queue,the unit is byte.*/
name: DisciplinesSupported /*the scheduling disciplines supported*/

I'll modify the XML file.

Yours,
Chuanhuang