netobserv-ebpf-agent icon indicating copy to clipboard operation
netobserv-ebpf-agent copied to clipboard

WIP: NETOBSERV-1637: OVS monitoring ebpf hook

Open msherif1234 opened this issue 11 months ago • 107 comments

Description

OVS monitoring eBPF hook feature

ebpf configs to enable ovs tracking from operator

      advanced:
        env:
          ENABLE_OVS_MONITORING: "true"
- bpftool perf show -p
[{
        "pid": 2854,
        "fd": 8,
        "prog_id": 143,
        "fd_type": "kprobe",
        "func": "psample_sample_packet",
        "offset": 0
    }
]
- bpftool map dump id 258
"key": {
            "eth_protocol": 2048,
            "direction": 0,
            "src_mac": [2,220,231,139,148,213
            ],
            "dst_mac": [10,88,10,128,2,12
            ],
            "src_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,2
            ],
            "dst_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,12
            ],
            "src_port": 56546,
            "dst_port": 8080,
            "transport_protocol": 6,
            "icmp_type": 0,
            "icmp_code": 0,
            "if_index": 2
        },
        "values": [{
                "cpu": 0,
                "value": {
                    "packets": 1,
                    "bytes": 74,
                    "start_mono_time_ts": 6218828496667,
                    "end_mono_time_ts": 6218828496667,
                    "flags": 2,
                    "errno": 0,
                    "dscp": 0,
                    "pkt_drops": {
                        "packets": 0,
                        "bytes": 0,
                        "latest_flags": 0,
                        "latest_state": 0,
                        "latest_drop_cause": 0
                    },
                    "dns_record": {
                        "id": 0,
                        "flags": 0,
                        "latency": 0,
                        "errno": 0
                    },
                    "flow_rtt": 0,
                     ovs_dp_keys": [[0,0,0,0,12,0,255,238
                        ],[0,0,0,0,0,0,0,0
                        ],[0,0,0,0,0,0,0,0
                        ],[0,0,0,0,0,0,0,0
                        ]

Dependencies

  • new kernel update with OVS hook
  • new version of OVS
  • new version of OVN
  • https://github.com/ovn-org/ovn-kubernetes/pull/4596
  • https://github.com/netobserv/network-observability-operator/pull/664
  • https://github.com/netobserv/flowlogs-pipeline/pull/669
  • https://github.com/netobserv/network-observability-console-plugin/pull/535

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • [ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • [ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • [ ] Does this PR require product documentation?
    • [ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • [ ] Does this PR require a product release notes entry?
    • [ ] If so, fill in "Release Note Text" in the JIRA.
  • [ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
    • [ ] If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
    • [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
    • [ ] Regression tests only (e.g. refactoring with no user-facing change).
    • [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

msherif1234 avatar Mar 04 '24 15:03 msherif1234

Codecov Report

Attention: Patch coverage is 0% with 21 lines in your changes are missing coverage. Please review.

Project coverage is 36.14%. Comparing base (1d85464) to head (02419f3). Report is 11 commits behind head on main.

Files Patch % Lines
pkg/ebpf/tracer.go 0.00% 11 Missing :warning:
pkg/agent/agent.go 0.00% 9 Missing :warning:
pkg/ebpf/bpf_x86_bpfel.go 0.00% 1 Missing :warning:
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #286      +/-   ##
==========================================
- Coverage   36.26%   36.14%   -0.13%     
==========================================
  Files          42       42              
  Lines        3794     3807      +13     
==========================================
  Hits         1376     1376              
- Misses       2340     2353      +13     
  Partials       78       78              
Flag Coverage Δ
unittests 36.14% <0.00%> (-0.13%) :arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar Mar 04 '24 15:03 codecov[bot]

Codecov Report

Attention: Patch coverage is 10.95406% with 252 lines in your changes missing coverage. Please review.

Please upload report for BASE (main@a3be5cc). Learn more about missing BASE report. Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
pkg/ebpf/tracer.go 0.00% 210 Missing :warning:
pkg/agent/agent.go 3.03% 32 Missing :warning:
pkg/decode/decode_protobuf.go 0.00% 5 Missing and 1 partial :warning:
pkg/flow/deduper.go 77.77% 1 Missing and 1 partial :warning:
pkg/ebpf/bpf_x86_bpfel.go 0.00% 1 Missing :warning:
pkg/ifaces/informer.go 0.00% 1 Missing :warning:
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #286   +/-   ##
=======================================
  Coverage        ?   30.39%           
=======================================
  Files           ?       49           
  Lines           ?     4043           
  Branches        ?        0           
=======================================
  Hits            ?     1229           
  Misses          ?     2709           
  Partials        ?      105           
Flag Coverage Δ
unittests 30.39% <10.95%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
pkg/agent/config.go 10.00% <ø> (ø)
pkg/exporter/grpc_proto.go 82.14% <100.00%> (ø)
pkg/exporter/kafka_proto.go 69.23% <100.00%> (ø)
pkg/flow/record.go 72.60% <100.00%> (ø)
pkg/flow/tracer_map.go 79.48% <100.00%> (ø)
pkg/metrics/metrics.go 96.00% <100.00%> (ø)
pkg/ebpf/bpf_x86_bpfel.go 0.00% <0.00%> (ø)
pkg/ifaces/informer.go 0.00% <0.00%> (ø)
pkg/flow/deduper.go 95.55% <77.77%> (ø)
pkg/decode/decode_protobuf.go 23.54% <0.00%> (ø)
... and 2 more

codecov-commenter avatar May 07 '24 17:05 codecov-commenter

@msherif1234: This pull request references NETOBSERV-1634 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set.

In response to this:

Description

OVS monitoring eBPF hook feature

Dependencies

n/a

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • [ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • [ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • [ ] Does this PR require product documentation?
  • [ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • [ ] Does this PR require a product release notes entry?
  • [ ] If so, fill in "Release Note Text" in the JIRA.
  • [ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
  • [ ] If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
  • [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
  • [ ] Regression tests only (e.g. refactoring with no user-facing change).
  • [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

openshift-ci-robot avatar May 08 '24 19:05 openshift-ci-robot

@msherif1234: This pull request references NETOBSERV-1634 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set.

In response to this:

Description

OVS monitoring eBPF hook feature

ebpf configs to enable ovs tracking from operator

     advanced:
       env:
         ENABLE_OVS_MONITORING: "true"

Dependencies

n/a

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • [ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • [ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • [ ] Does this PR require product documentation?
  • [ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • [ ] Does this PR require a product release notes entry?
  • [ ] If so, fill in "Release Note Text" in the JIRA.
  • [ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
  • [ ] If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
  • [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
  • [ ] Regression tests only (e.g. refactoring with no user-facing change).
  • [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

openshift-ci-robot avatar May 08 '24 20:05 openshift-ci-robot

/ok-to-test

msherif1234 avatar May 08 '24 20:05 msherif1234

New image: quay.io/netobserv/netobserv-ebpf-agent:bf271d2

It will expire after two weeks.

To deploy this build, run from the operator repo, assuming the operator is running:

USER=netobserv VERSION=bf271d2 make set-agent-image

github-actions[bot] avatar May 08 '24 20:05 github-actions[bot]

@msherif1234: This pull request references NETOBSERV-1634 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set.

In response to this:

Description

OVS monitoring eBPF hook feature

ebpf configs to enable ovs tracking from operator

     advanced:
       env:
         ENABLE_OVS_MONITORING: "true"
pftool perf show -p
[{
       "pid": 2854,
       "fd": 8,
       "prog_id": 143,
       "fd_type": "kprobe",
       "func": "psample_sample_packet",
       "offset": 0
   }
]

Dependencies

n/a

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • [ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • [ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • [ ] Does this PR require product documentation?
  • [ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • [ ] Does this PR require a product release notes entry?
  • [ ] If so, fill in "Release Note Text" in the JIRA.
  • [ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
  • [ ] If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
  • [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
  • [ ] Regression tests only (e.g. refactoring with no user-facing change).
  • [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

openshift-ci-robot avatar May 09 '24 11:05 openshift-ci-robot

/ok-to-test

msherif1234 avatar May 09 '24 12:05 msherif1234

New image: quay.io/netobserv/netobserv-ebpf-agent:ccad91e

It will expire after two weeks.

To deploy this build, run from the operator repo, assuming the operator is running:

USER=netobserv VERSION=ccad91e make set-agent-image

github-actions[bot] avatar May 09 '24 12:05 github-actions[bot]

/retest

msherif1234 avatar May 09 '24 13:05 msherif1234

/ok-to-test

msherif1234 avatar May 09 '24 16:05 msherif1234

New image: quay.io/netobserv/netobserv-ebpf-agent:102c729

It will expire after two weeks.

To deploy this build, run from the operator repo, assuming the operator is running:

USER=netobserv VERSION=102c729 make set-agent-image

github-actions[bot] avatar May 09 '24 16:05 github-actions[bot]

/ok-to-test

msherif1234 avatar May 09 '24 16:05 msherif1234

New image: quay.io/netobserv/netobserv-ebpf-agent:8688cf8

It will expire after two weeks.

To deploy this build, run from the operator repo, assuming the operator is running:

USER=netobserv VERSION=8688cf8 make set-agent-image

github-actions[bot] avatar May 09 '24 16:05 github-actions[bot]

/ok-to-test

msherif1234 avatar May 09 '24 16:05 msherif1234

/ok-to-test

msherif1234 avatar May 09 '24 16:05 msherif1234

New image: quay.io/netobserv/netobserv-ebpf-agent:caa3db4

It will expire after two weeks.

To deploy this build, run from the operator repo, assuming the operator is running:

USER=netobserv VERSION=caa3db4 make set-agent-image

github-actions[bot] avatar May 09 '24 16:05 github-actions[bot]

@msherif1234: This pull request references NETOBSERV-1634 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set.

In response to this:

Description

OVS monitoring eBPF hook feature

ebpf configs to enable ovs tracking from operator

     advanced:
       env:
         ENABLE_OVS_MONITORING: "true"
- bpftool perf show -p
[{
       "pid": 2854,
       "fd": 8,
       "prog_id": 143,
       "fd_type": "kprobe",
       "func": "psample_sample_packet",
       "offset": 0
   }
]
- bpftool map dump id 258
"key": {
           "eth_protocol": 2048,
           "direction": 0,
           "src_mac": [2,220,231,139,148,213
           ],
           "dst_mac": [10,88,10,128,2,12
           ],
           "src_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,2
           ],
           "dst_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,12
           ],
           "src_port": 56546,
           "dst_port": 8080,
           "transport_protocol": 6,
           "icmp_type": 0,
           "icmp_code": 0,
           "if_index": 2
       },
       "values": [{
               "cpu": 0,
               "value": {
                   "packets": 1,
                   "bytes": 74,
                   "start_mono_time_ts": 6218828496667,
                   "end_mono_time_ts": 6218828496667,
                   "flags": 2,
                   "errno": 0,
                   "dscp": 0,
                   "pkt_drops": {
                       "packets": 0,
                       "bytes": 0,
                       "latest_flags": 0,
                       "latest_state": 0,
                       "latest_drop_cause": 0
                   },
                   "dns_record": {
                       "id": 0,
                       "flags": 0,
                       "latency": 0,
                       "errno": 0
                   },
                   "flow_rtt": 0,
                   "ovs_dp_keys": [0,0,0,0,12,0,255,238 <<<<

Dependencies

n/a

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • [ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • [ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • [ ] Does this PR require product documentation?
  • [ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • [ ] Does this PR require a product release notes entry?
  • [ ] If so, fill in "Release Note Text" in the JIRA.
  • [ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
  • [ ] If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
  • [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
  • [ ] Regression tests only (e.g. refactoring with no user-facing change).
  • [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

openshift-ci-robot avatar May 09 '24 17:05 openshift-ci-robot

/test unit

msherif1234 avatar May 09 '24 19:05 msherif1234

/ok-to-test

msherif1234 avatar May 10 '24 15:05 msherif1234

New image: quay.io/netobserv/netobserv-ebpf-agent:7f1620c

It will expire after two weeks.

To deploy this build, run from the operator repo, assuming the operator is running:

USER=netobserv VERSION=7f1620c make set-agent-image

github-actions[bot] avatar May 10 '24 15:05 github-actions[bot]

@msherif1234: This pull request references NETOBSERV-1634 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set.

In response to this:

Description

OVS monitoring eBPF hook feature

ebpf configs to enable ovs tracking from operator

     advanced:
       env:
         ENABLE_OVS_MONITORING: "true"
- bpftool perf show -p
[{
       "pid": 2854,
       "fd": 8,
       "prog_id": 143,
       "fd_type": "kprobe",
       "func": "psample_sample_packet",
       "offset": 0
   }
]
- bpftool map dump id 258
"key": {
           "eth_protocol": 2048,
           "direction": 0,
           "src_mac": [2,220,231,139,148,213
           ],
           "dst_mac": [10,88,10,128,2,12
           ],
           "src_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,2
           ],
           "dst_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,12
           ],
           "src_port": 56546,
           "dst_port": 8080,
           "transport_protocol": 6,
           "icmp_type": 0,
           "icmp_code": 0,
           "if_index": 2
       },
       "values": [{
               "cpu": 0,
               "value": {
                   "packets": 1,
                   "bytes": 74,
                   "start_mono_time_ts": 6218828496667,
                   "end_mono_time_ts": 6218828496667,
                   "flags": 2,
                   "errno": 0,
                   "dscp": 0,
                   "pkt_drops": {
                       "packets": 0,
                       "bytes": 0,
                       "latest_flags": 0,
                       "latest_state": 0,
                       "latest_drop_cause": 0
                   },
                   "dns_record": {
                       "id": 0,
                       "flags": 0,
                       "latency": 0,
                       "errno": 0
                   },
                   "flow_rtt": 0,
                    ovs_dp_keys": [[0,0,0,0,12,0,255,238
                       ],[0,0,0,0,0,0,0,0
                       ],[0,0,0,0,0,0,0,0
                       ],[0,0,0,0,0,0,0,0
                       ]

Dependencies

n/a

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • [ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • [ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • [ ] Does this PR require product documentation?
  • [ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • [ ] Does this PR require a product release notes entry?
  • [ ] If so, fill in "Release Note Text" in the JIRA.
  • [ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
  • [ ] If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
  • [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
  • [ ] Regression tests only (e.g. refactoring with no user-facing change).
  • [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

openshift-ci-robot avatar May 10 '24 15:05 openshift-ci-robot

@msherif1234: This pull request references NETOBSERV-1637 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set.

In response to this:

Description

OVS monitoring eBPF hook feature

ebpf configs to enable ovs tracking from operator

     advanced:
       env:
         ENABLE_OVS_MONITORING: "true"
- bpftool perf show -p
[{
       "pid": 2854,
       "fd": 8,
       "prog_id": 143,
       "fd_type": "kprobe",
       "func": "psample_sample_packet",
       "offset": 0
   }
]
- bpftool map dump id 258
"key": {
           "eth_protocol": 2048,
           "direction": 0,
           "src_mac": [2,220,231,139,148,213
           ],
           "dst_mac": [10,88,10,128,2,12
           ],
           "src_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,2
           ],
           "dst_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,12
           ],
           "src_port": 56546,
           "dst_port": 8080,
           "transport_protocol": 6,
           "icmp_type": 0,
           "icmp_code": 0,
           "if_index": 2
       },
       "values": [{
               "cpu": 0,
               "value": {
                   "packets": 1,
                   "bytes": 74,
                   "start_mono_time_ts": 6218828496667,
                   "end_mono_time_ts": 6218828496667,
                   "flags": 2,
                   "errno": 0,
                   "dscp": 0,
                   "pkt_drops": {
                       "packets": 0,
                       "bytes": 0,
                       "latest_flags": 0,
                       "latest_state": 0,
                       "latest_drop_cause": 0
                   },
                   "dns_record": {
                       "id": 0,
                       "flags": 0,
                       "latency": 0,
                       "errno": 0
                   },
                   "flow_rtt": 0,
                    ovs_dp_keys": [[0,0,0,0,12,0,255,238
                       ],[0,0,0,0,0,0,0,0
                       ],[0,0,0,0,0,0,0,0
                       ],[0,0,0,0,0,0,0,0
                       ]

Dependencies

n/a

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • [ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • [ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • [ ] Does this PR require product documentation?
  • [ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • [ ] Does this PR require a product release notes entry?
  • [ ] If so, fill in "Release Note Text" in the JIRA.
  • [ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
  • [ ] If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
  • [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
  • [ ] Regression tests only (e.g. refactoring with no user-facing change).
  • [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

openshift-ci-robot avatar May 10 '24 16:05 openshift-ci-robot

/test unit

msherif1234 avatar May 14 '24 19:05 msherif1234

/ok-to-test

msherif1234 avatar May 14 '24 21:05 msherif1234

New image: quay.io/netobserv/netobserv-ebpf-agent:5dc2a55

It will expire after two weeks.

To deploy this build, run from the operator repo, assuming the operator is running:

USER=netobserv VERSION=5dc2a55 make set-agent-image

github-actions[bot] avatar May 14 '24 21:05 github-actions[bot]

@msherif1234: This pull request references NETOBSERV-1637 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set.

In response to this:

Description

OVS monitoring eBPF hook feature

ebpf configs to enable ovs tracking from operator

     advanced:
       env:
         ENABLE_OVS_MONITORING: "true"
- bpftool perf show -p
[{
       "pid": 2854,
       "fd": 8,
       "prog_id": 143,
       "fd_type": "kprobe",
       "func": "psample_sample_packet",
       "offset": 0
   }
]
- bpftool map dump id 258
"key": {
           "eth_protocol": 2048,
           "direction": 0,
           "src_mac": [2,220,231,139,148,213
           ],
           "dst_mac": [10,88,10,128,2,12
           ],
           "src_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,2
           ],
           "dst_ip": [0,0,0,0,0,0,0,0,0,0,255,255,10,128,2,12
           ],
           "src_port": 56546,
           "dst_port": 8080,
           "transport_protocol": 6,
           "icmp_type": 0,
           "icmp_code": 0,
           "if_index": 2
       },
       "values": [{
               "cpu": 0,
               "value": {
                   "packets": 1,
                   "bytes": 74,
                   "start_mono_time_ts": 6218828496667,
                   "end_mono_time_ts": 6218828496667,
                   "flags": 2,
                   "errno": 0,
                   "dscp": 0,
                   "pkt_drops": {
                       "packets": 0,
                       "bytes": 0,
                       "latest_flags": 0,
                       "latest_state": 0,
                       "latest_drop_cause": 0
                   },
                   "dns_record": {
                       "id": 0,
                       "flags": 0,
                       "latency": 0,
                       "errno": 0
                   },
                   "flow_rtt": 0,
                    ovs_dp_keys": [[0,0,0,0,12,0,255,238
                       ],[0,0,0,0,0,0,0,0
                       ],[0,0,0,0,0,0,0,0
                       ],[0,0,0,0,0,0,0,0
                       ]

Dependencies

  • new kernel update with OVS hook
  • new version of OVS
  • new version of OVN
  • OVNK libovn-observ

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • [ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • [ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • [ ] Does this PR require product documentation?
  • [ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • [ ] Does this PR require a product release notes entry?
  • [ ] If so, fill in "Release Note Text" in the JIRA.
  • [ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
  • [ ] If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
  • [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
  • [ ] Regression tests only (e.g. refactoring with no user-facing change).
  • [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

openshift-ci-robot avatar May 15 '24 11:05 openshift-ci-robot

/ok-to-test

msherif1234 avatar May 30 '24 12:05 msherif1234

New image: quay.io/netobserv/netobserv-ebpf-agent:8df8936

It will expire after two weeks.

To deploy this build, run from the operator repo, assuming the operator is running:

USER=netobserv VERSION=8df8936 make set-agent-image

github-actions[bot] avatar May 30 '24 12:05 github-actions[bot]

/ok-to-test

msherif1234 avatar May 31 '24 13:05 msherif1234