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

swss: Support for L2 table in ACL #2554

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

ArthiGovindaraj
Copy link
Contributor

Added new L2_TABLE_TYPE with needed qualifiers and actions Support for L2 match qualifiers like VLAN_ID, VLAN_PCP, VLAN_DEI SRC_MAC and DST_MAC

What I did
Added support for L2_TABLE_TYPE in orchagent.

Related pull requests
sonic-net/sonic-utilities#2516
sonic-net/sonic-mgmt-common#66

Why I did it
ACL supports only L3 and L3V6 table type. There is no support for matching L2 fields in orchagent.
When user wants to match fields like SRC_MAC, DST_MAC, VLAN_ID, VLAN_PCP, VLAN_DEI we do not have support for these fields in orchagent.
Even, if we use TABLE_TYPE still we need to define and support the L2 match qualifiers. So, instead I have provided the complete support from CLICK.

How I verified it

  1. Create L2 Table from CLICK
    "config acl add table -s ingress -p <table_name> L2"
  2. Add rules using CONFIG_DB format
    • add rules src mac, dst mac, ether type, pcp, dei & vlan id
      "L2_TABLE|RULE_2": {
      "SRC_MAC": "00:00:00:11:11:11/00:00:00:ff:ff:ff",
      "DST_MAC": "00:00:00:22:22:22/00:00:00:ff:ff:ff",
      "ETHER_TYPE": "0x0800",
      "VLAN_ID": "100",
      "VLAN_PCP": "5/7",
      "VLAN_DEI": "1",
      "PRIORITY": "5",
      "PACKET_ACTION": "DROP"
      }
  3. Validate commands "show acl table"
  4. Validate commands and fields in "show acl rule"
  5. Validate commands "aclshow -a" /* Ensured that the counters are hitting the relevant rule */
  6. Add rules using openconfig json format for supported fields "config acl update full/incremental <file.json>"
    "source-mac": "00:00:00:11:11:12",
    "source-mac-mask": "00:00:00:ff:ff:ff",
    "destination-mac": "00:00:00:11:11:13",
    "destination-mac-mask": "00:00:00:ff:ff:ff",
    "ethertype": "ETHERTYPE_ARP"

All the rules are added for each field and combinations as well. and each field tested with traffic in Broadcom based platform.

Details if related

  • 201811
  • 201911
  • 202006
  • 202012
  • 202106
  • 202111
  • 202205

Added new L2_TABLE_TYPE with needed qualifiers and actions
Support for L2 match qualifiers like VLAN_ID, VLAN_PCP, VLAN_DEI SRC_MAC and DST_MAC
Copy link
Collaborator

@prsunny prsunny left a comment

Choose a reason for hiding this comment

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

adding l2 fields looks ok to me but we would need test coverage. also do you have any hld to link for the use-case?

@prsunny prsunny requested a review from bingwang-ms December 5, 2022 20:13
@ArthiGovindaraj
Copy link
Contributor Author

Thanks for the feedback. I will update the test coverage and the HLD for the L2 ACL table requirement.

@ArthiGovindaraj
Copy link
Contributor Author

@prsunny @bingwang-ms

VS test cases are updated and coverage passed.

Please provide your feedback for the design document update : sonic-net/SONiC#1165
and associated pull requests
acl-loader : sonic-net/sonic-utilities#2516 and
schema update only for reference: sonic-net/sonic-mgmt-common#66

@ArthiGovindaraj ArthiGovindaraj requested review from prsunny and removed request for bingwang-ms December 15, 2022 09:01
@prsunny prsunny requested a review from bingwang-ms December 16, 2022 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants