Skip to content
This repository has been archived by the owner on Sep 7, 2020. It is now read-only.

[TASK] Link metric collection for WiFi links #792

Closed
mariomaz opened this issue Feb 6, 2020 · 0 comments · Fixed by #1178
Closed

[TASK] Link metric collection for WiFi links #792

mariomaz opened this issue Feb 6, 2020 · 0 comments · Fixed by #1178
Assignees
Labels
enhancement New feature or request

Comments

@mariomaz
Copy link
Collaborator

mariomaz commented Feb 6, 2020

Description

The agent should collect link metrics for WiFi links.

Exit criteria

  • A mechanism exists to collect link metrics from the WiFi interfaces registered in the agent.
  • LinkMetricsResponse TLVs are filled in with the correct data.
  • Test flow with dummy link metrics.
  • Manually tested on Turris Omnia.

Detailed description

See [TASK] Link metric collection for Ethernet links #390

To obtain link metrics programmatically for wireless interfaces, NL80211_CMD_GET_STATION netlink command should be issued. This was initially planned to be done through DWPAL but issuing commands other than NL80211_CMD_VENDOR is not currently supported in DWPAL (Send standard NL80211 commands using DWPAL #782). Thus this feature has finally been implemented in all BWL flavors through NL80211 (Feature/add support for nl80211 standard commands to BWL #900)

@mariomaz mariomaz added the enhancement New feature or request label Feb 6, 2020
mariomaz added a commit that referenced this issue Mar 6, 2020
Define a structure to hold collected link metrics. This structure will
later be used to fill the TLVs of the Link Metric response message.

Use uint32_t instead of uint16_t for max throughput capacity and bit
rate fields to allow for bigger values.
Spec document uses uint16_t so a saturation to the maximum value is
required when copying values to the TLV.

Link metrics have to be collected differently for wired and wireless
links. Define an interface class for a link metrics collector. Derived
implementation classes will override pure virtual methods.

Create an implementation class for Ethernet links. This implementation
reads network interface stats using a Netlink socket and the
NETLINK_ROUTE protocol.

TODO in future tasks:
- Implement link metrics collector for WiFi links in ([TASK] Link
metric collection for WiFi links #792)
- Move all link metrics related classes to BPL ([TASK] Move link
metric related classes to BPL #910)
- Implement Ethernet link metrics collector using and extending Netlink
classes defined in "Feature/add support for nl80211 standard commands
to BWL #900"

Signed-off-by: Mario Maz <[email protected]>
mariomaz added a commit that referenced this issue Mar 16, 2020
Define a structure to hold collected link metrics. This structure will
later be used to fill the TLVs of the Link Metric response message.

Use uint32_t instead of uint16_t for max throughput capacity and bit
rate fields to allow for bigger values.
Spec document uses uint16_t so a saturation to the maximum value is
required when copying values to the TLV.

Link metrics have to be collected differently for wired and wireless
links. Define an interface class for a link metrics collector. Derived
implementation classes will override pure virtual methods.

Create an implementation class for Ethernet links. This implementation
reads network interface stats using a Netlink socket and the
NETLINK_ROUTE protocol.

TODO in future tasks:
- Implement link metrics collector for WiFi links in ([TASK] Link
metric collection for WiFi links #792)
- Move all link metrics related classes to BPL ([TASK] Move link
metric related classes to BPL #910)
- Implement Ethernet link metrics collector using and extending Netlink
classes defined in "Feature/add support for nl80211 standard commands
to BWL #900"

Signed-off-by: Mario Maz <[email protected]>
arnout pushed a commit that referenced this issue Mar 18, 2020
Define a structure to hold collected link metrics. This structure will
later be used to fill the TLVs of the Link Metric response message.

Use uint32_t instead of uint16_t for max throughput capacity and bit
rate fields to allow for bigger values.
Spec document uses uint16_t so a saturation to the maximum value is
required when copying values to the TLV.

Link metrics have to be collected differently for wired and wireless
links. Define an interface class for a link metrics collector. Derived
implementation classes will override pure virtual methods.

Create an implementation class for Ethernet links. This implementation
reads network interface stats using a Netlink socket and the
NETLINK_ROUTE protocol.

TODO in future tasks:
- Implement link metrics collector for WiFi links in ([TASK] Link
metric collection for WiFi links #792)
- Move all link metrics related classes to BPL ([TASK] Move link
metric related classes to BPL #910)
- Implement Ethernet link metrics collector using and extending Netlink
classes defined in "Feature/add support for nl80211 standard commands
to BWL #900"

Signed-off-by: Mario Maz <[email protected]>
mariomaz added a commit that referenced this issue Mar 19, 2020
Define a structure to hold collected link metrics. This structure will
later be used to fill the TLVs of the Link Metric response message.

Use uint32_t instead of uint16_t for max throughput capacity and bit
rate fields to allow for bigger values.
Spec document uses uint16_t so a saturation to the maximum value is
required when copying values to the TLV.

Link metrics have to be collected differently for wired and wireless
links. Define an interface class for a link metrics collector. Derived
implementation classes will override pure virtual methods.

Create an implementation class for Ethernet links. This implementation
reads network interface stats using a Netlink socket and the
NETLINK_ROUTE protocol.

TODO in future tasks:
- Implement link metrics collector for WiFi links in ([TASK] Link
metric collection for WiFi links #792)
- Move all link metrics related classes to BPL ([TASK] Move link
metric related classes to BPL #910)
- Implement Ethernet link metrics collector using and extending Netlink
classes defined in "Feature/add support for nl80211 standard commands
to BWL #900"

Signed-off-by: Mario Maz <[email protected]>
mariomaz added a commit that referenced this issue Mar 19, 2020
Define a structure to hold collected link metrics. This structure will
later be used to fill the TLVs of the Link Metric response message.

Use uint32_t instead of uint16_t for max throughput capacity and bit
rate fields to allow for bigger values.
Spec document uses uint16_t so a saturation to the maximum value is
required when copying values to the TLV.

Link metrics have to be collected differently for wired and wireless
links. Define an interface class for a link metrics collector. Derived
implementation classes will override pure virtual methods.

Create an implementation class for Ethernet links. This implementation
reads network interface stats using a Netlink socket and the
NETLINK_ROUTE protocol.

TODO in future tasks:
- Implement link metrics collector for WiFi links in ([TASK] Link
metric collection for WiFi links #792)
- Move all link metrics related classes to BPL ([TASK] Move link
metric related classes to BPL #910)
- Implement Ethernet link metrics collector using and extending Netlink
classes defined in "Feature/add support for nl80211 standard commands
to BWL #900"

Signed-off-by: Mario Maz <[email protected]>
mergify bot pushed a commit that referenced this issue Mar 19, 2020
Define a structure to hold collected link metrics. This structure will
later be used to fill the TLVs of the Link Metric response message.

Use uint32_t instead of uint16_t for max throughput capacity and bit
rate fields to allow for bigger values.
Spec document uses uint16_t so a saturation to the maximum value is
required when copying values to the TLV.

Link metrics have to be collected differently for wired and wireless
links. Define an interface class for a link metrics collector. Derived
implementation classes will override pure virtual methods.

Create an implementation class for Ethernet links. This implementation
reads network interface stats using a Netlink socket and the
NETLINK_ROUTE protocol.

TODO in future tasks:
- Implement link metrics collector for WiFi links in ([TASK] Link
metric collection for WiFi links #792)
- Move all link metrics related classes to BPL ([TASK] Move link
metric related classes to BPL #910)
- Implement Ethernet link metrics collector using and extending Netlink
classes defined in "Feature/add support for nl80211 standard commands
to BWL #900"

Signed-off-by: Mario Maz <[email protected]>
@mariomaz mariomaz self-assigned this Apr 8, 2020
@mergify mergify bot closed this as completed in #1178 Apr 29, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant