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

BPF Dump policies without assembly replaced with more condensed rule counters output #7954

Merged
1 commit merged into from Aug 29, 2023
Merged

Conversation

ghost
Copy link

@ghost ghost commented Aug 23, 2023

Currently the Calico BPF utility policy dump is very verbose and includes assembly which is not relevant to most users i.e. output from the command:
kubectl exec calico-node-xyz -n calico-system -- calico-node -bpf policy dump cali2c5f0ef34cf ingress

Therefore, this simple requirement is to omit the irrelevant assembly and instead present more condense output including the rule counters only e.g.

IfaceName: cali2c5f0ef34cf
Hook: tc egress
Error: 
Policy Info:
// Start of policy default.policy-tcp
// Start of rule action:"allow" protocol:<name:"tcp" > src_net:"11.0.0.8/32" src_net:"10.0.0.8/32" src_ports:<first:8055 last:8055 > src_ports:<first:100 last:105 > dst_net:"12.0.0.8/32" dst_net:"13.0.0.8/32" dst_ports:<first:9055 last:9055 > dst_ports:<first:200 last:205 > rule_id:"STaSnQYmIymqngjx" 
// count = 0

However, there is an option to append either -a or --asm to the command above to include the original verbose output as before i.e.
kubectl exec calico-node-xyz -n calico-system -- calico-node -bpf policy dump cali2c5f0ef34cf ingress -a
OR
kubectl exec calico-node-xyz -n calico-system -- calico-node -bpf policy dump cali2c5f0ef34cf ingress --asm

Description

Related issues/PRs

Todos

  • Tests
  • Documentation
  • Release note

Release Note

calico-node -bpf dump policy now suppresses printing assembly by default. You need to use --asm flag [or -a] to see the assembly as well.

Reminder for the reviewer

Make sure that this PR has the correct labels and milestone set.

Every PR needs one docs-* label.

  • docs-pr-required: This change requires a change to the documentation that has not been completed yet.
  • docs-completed: This change has all necessary documentation completed.
  • docs-not-required: This change has no user-facing impact and requires no docs.

Every PR needs one release-note-* label.

  • release-note-required: This PR has user-facing changes. Most PRs should have this label.
  • release-note-not-required: This PR has no user-facing changes.

Other optional labels:

  • cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.
  • needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.

@ghost ghost self-requested a review as a code owner August 23, 2023 19:00
@marvin-tigera marvin-tigera added this to the Calico v3.27.0 milestone Aug 23, 2023
@marvin-tigera marvin-tigera added release-note-required Change has user-facing impact (no matter how small) docs-pr-required Change is not yet documented labels Aug 23, 2023
Copy link
Contributor

@tomastigera tomastigera left a comment

Choose a reason for hiding this comment

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

I like the --verbose flag! 👍 see my comment on the output.

felix/cmd/calico-bpf/commands/policy_debug.go Outdated Show resolved Hide resolved
@ghost ghost added docs-not-required Docs not required for this change area/bpf eBPF Dataplane issues labels Aug 24, 2023
@marvin-tigera marvin-tigera removed the docs-pr-required Change is not yet documented label Aug 24, 2023
@ghost ghost requested a review from tomastigera August 25, 2023 10:13
Copy link
Contributor

@tomastigera tomastigera left a comment

Choose a reason for hiding this comment

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

LGTM, just a second thought nit ... i wonder whether --verbose would not collide with a possible global --verbose flag and whether something like --asm | Includes eBPF assembler code of the policy program would be better. Or perhaps --code 🤔

@ghost
Copy link
Author

ghost commented Aug 28, 2023

LGTM, just a second thought nit ... i wonder whether --verbose would not collide with a possible global --verbose flag and whether something like --asm | Includes eBPF assembler code of the policy program would be better. Or perhaps --code 🤔

Thanks @tomastigera - actually I did think about -v shorthand flag for verbose here may collide with global -v for version but I see that this was OK because for verbose as one would add the -v flag after the policy dump command i.e. like this
policy dump cali2c5f0ef34cf ingress -v so all seemed fine - I wasn't aware of the --verbose global flag though

However, I like this suggestion to use something else - I think --asm is the best option because it is the most specific option for this particular command policy dump so I would like to change to --asm accordingly - thanks for the suggestion / recommendation!

@ghost ghost closed this Aug 28, 2023
@ghost ghost reopened this Aug 28, 2023
@marvin-tigera marvin-tigera added release-note-required Change has user-facing impact (no matter how small) docs-pr-required Change is not yet documented and removed release-note-required Change has user-facing impact (no matter how small) docs-not-required Docs not required for this change labels Aug 28, 2023
@ghost
Copy link
Author

ghost commented Aug 28, 2023

Update --verbose flag to --asm flag as discussed above

@ghost ghost requested a review from tomastigera August 28, 2023 15:45
Copy link
Contributor

@tomastigera tomastigera left a comment

Choose a reason for hiding this comment

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

Thanks!

@ghost ghost merged commit dbf696c into projectcalico:master Aug 29, 2023
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/bpf eBPF Dataplane issues docs-pr-required Change is not yet documented release-note-required Change has user-facing impact (no matter how small)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants