On 1/30/24 16:45, Eelco Chaudron wrote:


On 1 Dec 2023, at 20:14, Adrian Moreno wrote:

This series introduces a python utility called ovs-flowviz.

The goal of this utility is to read both datapath and Openflow flows
(using the flow library already available) and print them in different
formats and styles to make it easier to understand them and troubleshoot
issues.

The formats are quite opinionated and so are the colors chosen so I'm
eager to hear what is the impression caused to the community.

Here is a summary of the formats and features supported:

- Openflow
    - Console: Prints flows back to the console allowing filtering and
      extensive formatting.
    - Cookie: Arranges flows based on cookie (instead of table) to ease
      visualization of OVN-generated flows.
    - HTML: Prints an HTML file that shows the flows arranged by tables.
      resubmit actions have a hyperlinke to the target table to ease
      navegation.
    - Logic: Many times OVN generates many "logically-equivalent" flows.
      These are flows that have the same structure: match on the same
      values and have the same actions. The only thing that changes is
      the actual value they match against and maybe the arguments of the
      actions. This format collapses these flows so you can visualize the
      logical pipeline easier.
    - JSON: JSON format.

More OpenFlow features:
    - OVN metadata: Both the "cookie" and the "logic" format allow to
      connect to a running OVN NB/SB databases and enrich the flows with
      OVN context based on the flow's cookie.

- Datapath:
    - Console: Prints flows back to the console allowing filtering and
      extensive formatting.
    - Tree: Datapath flows use recirculation to further execute
      additional actions. This format builds a tree of flows following
      the recirculation identifiers and prints it in the console.
    - HTML: Prints the datapath flow tree in HTML. It includes some
      minimal JS to support expanding and collapsing of entire branches.
    - Graph: Following the "tree" format, this one prints the tree in
      graphviz format.
    - JSON: JSON format.

Additional datapath features:
    - Many datapath formats are based on the tree flow hierarchy. An
      interesting feature of this structure is that filtering is done at
      the branch level. This means that when a flow satisfies the filter,
      the entire sub-tree leading to that flow is shown.

Additional common features:
    - Styling: Styles for both console and HTML formats can be defined
      using a configuration file.
    - Heat maps: Some formats support heat-maps. A color pallete ranging
      from blue (cold) to red (hot) is used to print the number of
      packets and bytes of the flows. That way, the flows that are
      handling more traffic are much easier to spot

I know this is a long series, so it's OK if it takes time to review. I'm
specially interested to know what is found useful and what is worth
removing (if any).

Thanks Adrian, for submitting the series and I think the quality of the code is 
good enough to submit it as a non-RFC. Most of the comments I have are style 
nits.

The only main thing missing is some documentation/man pages for the tool.


Thanks Eelco for the review.

I’ll reply to the individual patches with comments.

Cheers,

Eelco


--
Adrián Moreno

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to