Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc-json-config-example #93

Closed
wants to merge 8 commits into from
Closed

doc-json-config-example #93

wants to merge 8 commits into from

Conversation

mmiele
Copy link
Collaborator

@mmiele mmiele commented Apr 13, 2022

This is WIP to start a discussion on this topic and gather relevant information and feedback.

This is WIP to gather info and feedback.
Copy link
Collaborator

@chrispsommers chrispsommers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not clear to me where this schema fits in. I get that it represents a bunch of DASH service configs, but...

Does it relate to the gNMI northbound API schema? In other words, is it a faithful representation of the expected gNMI config objects?

Is it merely an informal conceptual sketch of eventual config objects seen on the gNMI northbound?

Or does it relate to some other domain, e.g. inside an SDN controller's DB?

Alternatively, is it a JSON representation of DASH_APP_DB objects? In this case, shouldn't the JSON schema be derived from sonic-cfggen?

IMO there should be a definitive (JSON and/or YAML) schema which is 1:1 tied to an existing schema, e.g. gNMI YANG <-> JSON or CONFIG/APP_DB <-> JSON. We should avoid yet another schema which is unrelated to anything else.

I've created #94 with a figure to more clearly show what I mean.

@mmiele
Copy link
Collaborator Author

mmiele commented Apr 15, 2022

@chrispsommers I think @KrisNey-MSFT, @prsunny and @mzms could address some of your questions. Obviously, any suggestions from the community are welcome. Really, to the best of my knowledge, one of the intents of this PR (document) is to have a discussion on this important matter and come to an agreement. Obviously, you are already doing it, and thank you for that.
To everyone, please look at the related PR #94 created by @chrispsommers.
Thank you

@mmiele mmiele requested a review from prsunny April 20, 2022 21:06
@prsunny
Copy link
Collaborator

prsunny commented Apr 20, 2022

It's not clear to me where this schema fits in. I get that it represents a bunch of DASH service configs, but...

Does it relate to the gNMI northbound API schema? In other words, is it a faithful representation of the expected gNMI config objects?

Is it merely an informal conceptual sketch of eventual config objects seen on the gNMI northbound?

Or does it relate to some other domain, e.g. inside an SDN controller's DB?

Alternatively, is it a JSON representation of DASH_APP_DB objects? In this case, shouldn't the JSON schema be derived from sonic-cfggen?

IMO there should be a definitive (JSON and/or YAML) schema which is 1:1 tied to an existing schema, e.g. gNMI YANG <-> JSON or CONFIG/APP_DB <-> JSON. We should avoid yet another schema which is unrelated to anything else.

I've created #94 with a figure to more clearly show what I mean.

@chrispsommers , this is a reference model and forms the basis for generating the DASH APP_DB schema. However this is not a complete one-one representation and we have made many modifications to be aligned with Sonic model for the schema.

@chrispsommers
Copy link
Collaborator

@prsunny Thanks for responding. If I understand you, it will eventually correspond exactly to the schema as sonic-cfggen would use for import-export? Was the diagram in #94 useful? Thanks.

@lisahnguyen
Copy link

I have a few questions for the examples. I am not able to add them to the corresponding of the document. Hence, I will list them all here

  1. For the per-ENI’s “qos_settings”, what is the expected behavior when the limit is reached? For example,
  • When CPS rate is reached, is it expected that new connections won’t be learned even though the overall CPS per DPU has not maxed out?
  • When CPS or max flows are reached, should a per ENI counter be incremented to track the number of dropped flows due to max limit? Should all or a subset of the dropped flows be sent to the Control Plane/Controller?
  1. There is a reference to per DPU initial configuration in the routing action comment “list of active modules impacts memory and needs to be configured as part of initial card config”. What other per DPU initial configurations should be expected (e.g. global connection aging time, etc.)?

  2. For each routing type, please help list a set of valid actions associated with it and any expected action orders in addition to the max number of actions. This info is helpful in writing test cases to validate expected behavior not explicitly listed in the sample json file.

  3. In term of routing action combinations, Is “maprouting” action the only exception or it is just one example and there are more exception?

  4. For the “drop” routing-type, what are the other two action types that can be associated with “drop” action-type?

  5. Please help add more info on what objects can be modified and the expected behaviors. For example, what is the expected behavior for existing connections when ACL rules change from “allow” to “deny” that impacts those connections?

@sonic-net sonic-net deleted a comment from lisa Apr 21, 2022
@mmiele mmiele changed the title doc-ref-config-example doc-json-config-example Apr 21, 2022
@mmiele
Copy link
Collaborator Author

mmiele commented Apr 21, 2022

@lisahnguyen I fixed some issues related to the JSON example. I added the actual file DASH.json into the PR. Now you can review it directly. Would you mind to add your comments into the file itself under the appropriate lines. I appreciate your help. Thanks

@@ -0,0 +1,724 @@
{
"qos-settings": [

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the expected behavior when the CPS or max flow limit is reached? For example,

  • When CPS rate is reached, is it expected that new connections won’t be learned even though the overall CPS per DPU has not maxed out?
  • When CPS or max flows are reached, should a per ENI counter be incremented to track the number of dropped flows due to max limit? Should all or a subset of the dropped flows be sent to the Control Plane/Controller?


//
// active routing types for mappings (active routing types modules)
// list of active modules impacts memory area reserved for mappings and needs to be configured as part of initial card config

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What other per DPU initial configurations should be expected (e.g. global connection aging time, etc.)?

// This action first does lookup to find the routing-type again based on prefix, and then performs the routing stages.
//

"routing-types-config": [

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For each routing type, please help list a set of valid actions associated with it and any expected action orders in addition to the max number of actions. This info is helpful in writing test cases to validate expected behavior not explicitly listed in the sample json file.

"routing-type": "vpc",
"actions": [ // ONLY 1 action here! More then 1 action is not allowed if action-type used is "maprouting"
{
"action-type": "maprouting" // NOTE: "maprouting" will be the ONLY action. It cannot be used with other actions

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In term of routing action combinations, Is “maprouting” action the only exception or it is just one example and there are more exception? Please help elaborate if there are more exceptions

{
"drop": {
"routing-type": "drop",
"actions": [ // up to 3 actions

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For routing-type "drop", what are the other two action types that can be associated with “drop” action-type?

@@ -0,0 +1,724 @@
{

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please help add more info on what objects can be modified and the expected behaviors. For ACL specifically, what is the expected behavior for existing connections when ACL rules change from “allow” to “deny” that impacts those connections?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lisahnguyen - I've spoken with Engineering regarding your questions...right now the resourcing focus in on delivering our Private and Public preview - I'll get with them next week to obtain answers, or have SDN Eng attend the Wednesday meeting.

@lisahnguyen
Copy link

@mmiele Thanks for providing the DASH.json file. I have moved my comment to the appropriate section as you suggested

@mmiele
Copy link
Collaborator Author

mmiele commented Apr 25, 2022

@lisahnguyen Great feedback by distributing your comments in the JSON file.

@mmiele
Copy link
Collaborator Author

mmiele commented Jun 9, 2022

2. n

I have a few questions for the examples. I am not able to add them to the corresponding of the document. Hence, I will list them all here

  1. For the per-ENI’s “qos_settings”, what is the expected behavior when the limit is reached? For example,
  • When CPS rate is reached, is it expected that new connections won’t be learned even though the overall CPS per DPU has not maxed out?
  • When CPS or max flows are reached, should a per ENI counter be incremented to track the number of dropped flows due to max limit? Should all or a subset of the dropped flows be sent to the Control Plane/Controller?
  1. There is a reference to per DPU initial configuration in the routing action comment “list of active modules impacts memory and needs to be configured as part of initial card config”. What other per DPU initial configurations should be expected (e.g. global connection aging time, etc.)?
  2. For each routing type, please help list a set of valid actions associated with it and any expected action orders in addition to the max number of actions. This info is helpful in writing test cases to validate expected behavior not explicitly listed in the sample json file.
  3. In term of routing action combinations, Is “maprouting” action the only exception or it is just one example and there are more exception?
  4. For the “drop” routing-type, what are the other two action types that can be associated with “drop” action-type?
  5. Please help add more info on what objects can be modified and the expected behaviors. For example, what is the expected behavior for existing connections when ACL rules change from “allow” to “deny” that impacts those connections?

@lisahnguyen Moved comments to the correct places in the JSON file.

1 similar comment
@mmiele
Copy link
Collaborator Author

mmiele commented Jun 9, 2022

2. n

I have a few questions for the examples. I am not able to add them to the corresponding of the document. Hence, I will list them all here

  1. For the per-ENI’s “qos_settings”, what is the expected behavior when the limit is reached? For example,
  • When CPS rate is reached, is it expected that new connections won’t be learned even though the overall CPS per DPU has not maxed out?
  • When CPS or max flows are reached, should a per ENI counter be incremented to track the number of dropped flows due to max limit? Should all or a subset of the dropped flows be sent to the Control Plane/Controller?
  1. There is a reference to per DPU initial configuration in the routing action comment “list of active modules impacts memory and needs to be configured as part of initial card config”. What other per DPU initial configurations should be expected (e.g. global connection aging time, etc.)?
  2. For each routing type, please help list a set of valid actions associated with it and any expected action orders in addition to the max number of actions. This info is helpful in writing test cases to validate expected behavior not explicitly listed in the sample json file.
  3. In term of routing action combinations, Is “maprouting” action the only exception or it is just one example and there are more exception?
  4. For the “drop” routing-type, what are the other two action types that can be associated with “drop” action-type?
  5. Please help add more info on what objects can be modified and the expected behaviors. For example, what is the expected behavior for existing connections when ACL rules change from “allow” to “deny” that impacts those connections?

@lisahnguyen Moved comments to the correct places in the JSON file.

@mmiele
Copy link
Collaborator Author

mmiele commented Jun 22, 2022

@lisahnguyen Doing some housekeeping and my apologies for the delay. Did the related and merged PR: #94 answer your questions? If that doesn't, please let me know.
Thanks

@mgheorghe
Copy link
Collaborator

can we add all elements needed to have the config working please:

  • i see interfaces portion missing, where we configure the ip on each interface of the dpu
  • Layer 1 settings are missing also
  • loopback interface for vtep is missing also

@mmiele
Copy link
Collaborator Author

mmiele commented Jun 28, 2022

@mgheorghe This PR used a JSON file as an example. You may want to refer to the current document SONiC-DASH HLD. Thank you

@mmiele mmiele closed this Jun 28, 2022
@mmiele mmiele deleted the doc-ref-config-example branch June 28, 2022 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants