Fleutan

Fleutan - a scalable network flows and paths wielding lever


Keywords
linux, android, correlate, flow, flows, hops, introspection, network-analysis, operations, paths, research, resources, sockets, ss, stats, tcp, tool, troubleshoot, unix, userland
License
GPL-3.0
Install
pip install Fleutan==0.8

Documentation

fleutan

(Altger. fliessen, fliessend, engl. flowing)

Alt text

Purpose

Fleutan aims at forming an complementing or functionality enriching agglomeration of tools or mechanisms all around flowing on unixoid systems to enhance the way engineers can research, analyze and operate their nodes. It's thereby focused on the single endpoint and tries to reach or look into the network fabrics as deeply as it can when it comes to what is available to it on the certain systems acting as the endpoint.

Target Audience

  • all kinds of systems engineers, foremost operations focused
  • network researchers

Install

# pip install Fleutan

Prerequs

Out of python trees ...

BCC! : In case you want to use eBFS based kernel skb flow volume tracing.

Examples

To show the prevailing association of flows to cpus you can run

$ fleutan flows --cpu -i 5
~>/usr/lib/thunderbird/thunderbird(2847)
tcp              192.168.10.50#34718                     212.227.17.170#993
tcp              192.168.10.50#55258                     194.25.134.115#993
___

####################################################################################################
*************************************************************************          100.00          0
                                                                                     0.00          1
                                                                                     0.00          2
                                                                                     0.00          3
                                                                                     0.00          4
                                                                                     0.00          5
                                                                                     0.00          6
                                                                                     0.00          7
...
~>hexchat(11290)
tcp       2003:62:4655:968b:18d0:33a6:3314:7c7#34482               2001:5a0:3604:1:64:86:243:181#6667
tcp       2003:62:4655:968b:18d0:33a6:3314:7c7#38930               2a02:2f0d:bff0:1:81:18:73:123#6667
tcp       2003:62:4655:968b:18d0:33a6:3314:7c7#35660                 2605:ac00:0:39::38#6697
___

####################################################################################################
                                                                                     0.00          0
                                                                                     0.00          1
                                                                                     0.00          2
                                                                                     0.00          3
*************************************************************************          150.00          4
                                                                                     0.00          5
                                                                                     0.00          6
                                                                                     0.00          7
...
~>/usr/lib/firefox/firefox(11181)
tcp       2003:62:4655:968b:18d0:33a6:3314:7c7#59780                2a00:1450:4021:c::b#443
tcp       2003:62:4655:968b:18d0:33a6:3314:7c7#59774                2a00:1450:4021:c::b#443
tcp       2003:62:4655:968b:18d0:33a6:3314:7c7#44950               2a00:1450:4001:81f::200e#443
___

####################################################################################################
************************                                                            15.00          0
**************                                                                       9.00          1
***************************************                                             24.00          2
*****************************                                                       18.00          3
****                                                                                 3.00          4
                                                                                     0.00          5
**************************************************************************          45.00          6
***********************************************************                         36.00          7

Helpful is also to see the paths certain flows are traversing:

$ fleutan paths -d
**>Flows
tcp       2003:62:4655:968b:18d0:33a6:3314:7c7#36582                 2605:ac00:0:39::38#6697        p0
tcp       2003:62:4655:968b:18d0:33a6:3314:7c7#41570               2600:3c02::f03c:91ff:fe59:7d2e#6667        p1
tcp              192.168.10.50#35238                     212.227.17.170#993        p2

..>paths

p0                                                                     p1                                                                     p2             
---------------------------------------------------------------------  ---------------------------------------------------------------------  -------------  
2003:0:1801:c209::1                                                    2003:0:1801:c209::1                                                    speedport.ip   
['2003:0:1801:c258::2', '2003:0:1803:8358::2', '2003:0:1801:c258::2']  ['2003:0:1801:c258::2', '2003:0:1803:8358::2', '2003:0:1801:c258::2']  87.186.224.45  
2003:0:130c:8000::1                                                    ['2600:3c02:4444:3::2', '2600:3c02:4444:4::2']                         217.0.74.226   
2003:0:130c:8024::2                                                    moon.freenode.net                                                      217.239.52.94  
2001:5a0:0:501::16                                                                                                                            80.157.204.86  
2001:1978:2:5::d                                                                                                                              imap.gmx.net                                                   
2001:1978:203::e                                                                                                                                                                                             
2001:1978:1300:10::12                                                                                                                                                                                        
2605:ac00:ffff:ffff:ffff:ffff:ffff:fffe                                                                                                                                                                      
   

Even better, to introspect the latency outline of the currently held TCP flows of the system do a

$ fleutan flows --lat
**TCP FLOWS: (NUM 24)
*latency distribution [rtt-range]

####################################################################################################
█████████████████████████████████████████████████                  7.00          [28.843-38.6062]   
█████████████████████████████████████████████████████████          8.00          [38.6062-48.3694]  
█████████████████████████████████████████████████                  7.00          [48.3694-58.1326]  
                                                                   0.00          [58.1326-67.8958]  
                                                                   0.00          [67.8958-77.659]   
                                                                   0.00          [77.659-87.4222]   
                                                                   0.00          [87.4222-97.1854]  
                                                                   0.00          [97.1854-106.9486] 
                                                                   0.00          [106.9486-116.7118]
██████████████                                                     2.00          [116.7118-126.475] 

---
*latency per flow in rtt(ms)

######################################################################################################################################################
█████████                                                    28.84          2003:62:462c:d506:6c2b:ba8:6530:b564#57310 2a00:1450:4016:80c::2003#443   
██████████                                                   31.69                 192.168.10.50#34340         35.190.27.37#443                       
██████████                                                   32.40                 192.168.10.50#49322        194.25.134.50#993                       
███████████                                                  33.91          2003:62:463d:7012:6c2b:ba8:6530:b564#36768  2a00:1450:4021:7::a#443       
████████████                                                 35.60          2003:62:462c:d506:6c2b:ba8:6530:b564#37096 2a00:1450:4001:817::200e#443   
████████████                                                 35.87                 192.168.10.50#51392       212.227.17.170#993                       
████████████                                                 35.91          2003:62:462c:d506:6c2b:ba8:6530:b564#38224 2a00:1450:4001:80b::2008#443   
█████████████                                                39.45                 192.168.10.50#36450         151.101.1.69#443                       
██████████████                                               40.56          2003:62:462c:d506:6c2b:ba8:6530:b564#57750 2a00:1450:400c:c04::9c#443     
██████████████                                               40.69                 192.168.10.50#51384       212.227.17.170#993                       
██████████████                                               42.08                 192.168.10.50#57468         52.84.161.71#443                       
███████████████                                              44.02          2003:62:462c:d506:6c2b:ba8:6530:b564#56758 2a00:1450:4001:825::200e#443   
███████████████                                              44.61                 192.168.10.50#40534          66.117.29.3#443                       
████████████████                                             46.75          2003:62:462c:d506:6c2b:ba8:6530:b564#34772 2a00:1450:4001:820::2002#443   
█████████████████                                            48.32          2003:62:462c:d506:6c2b:ba8:6530:b564#56834 2a00:1450:4001:825::200e#443   
█████████████████                                            49.33          2003:62:462c:d506:6c2b:ba8:6530:b564#60842 2a00:1450:4001:824::200a#443   
█████████████████                                            49.52                 192.168.10.50#50658       151.101.193.69#443                       
██████████████████                                           50.58          2003:62:463d:7012:6c2b:ba8:6530:b564#49344 2a00:1450:4001:825::200e#443   
██████████████████                                           50.98          2003:62:462c:d506:6c2b:ba8:6530:b564#60852 2a00:1450:4001:824::200a#443   
███████████████████                                          52.91          2003:62:462c:d506:6c2b:ba8:6530:b564#52794 2a00:1450:400e:80b::2004#443   
███████████████████                                          53.36          2003:62:463d:7012:6c2b:ba8:6530:b564#53478 2a00:1450:4001:815::200e#443   
███████████████████                                          53.46          2003:62:462c:d506:6c2b:ba8:6530:b564#51998 2a00:1450:4001:815::200e#443   
███████████████████████████████████████████████             125.46                 192.168.10.50#34272       192.30.253.124#443                       
████████████████████████████████████████████████            126.47          2003:62:462c:d506:6c2b:ba8:6530:b564#48300 2607:f8b0:4006:804::2003#443  

When one is planning to do some low level performance tuning on the egress(TX) side of the stack, perceiving what flows with what outline are passing through the different queueing discipline instances for example of a multi queueing device over time by doing:

$ sudo ./fleutan flows -q -i 5

qdisc queues #>
load (bytes) per qu
####################################################################################################
███████████████████████                                                              0.3K          0
██████████████████████████████████████████████████████████████████████████          1.00K          1
----

flowing volumes per qu ##>
0
#######################################################################################################################################################
████                                                         66.00                 192.168.10.50#47956         91.1.49.97#80                         
█████                                                        78.00                            ::#58                      ::#0                          
██████                                                       86.00          2003:62:4625:d1a4:a166:cf47:30a6:e612#51358 2a00:1450:4001:80b::200a#80    
██████                                                       86.00          2003:62:4625:d1a4:a166:cf47:30a6:e612#51360 2a00:1450:4001:80b::200a#80    

----
flowing volumes per qu ##>
1
#######################################################################################################################################################
██████                                                       86.00          2002:22:4625:d1a4:a166:cf47:30a6:e612#51360 2a00:1450:4001:80b::200a#80    
███████                                                     112.00                 192.168.10.50#43660        192.111.249.9#443                        
████████████                                                172.00          2003:62:4625:d1a4:a166:cf47:30a6:e612#55834 2a02:26f0:fc::5c7a:317c#80     
██████████████████████████████████████████████████          710.00          2003:62:4625:d1a4:a166:cf47:30a6:e612#54292 2a00:1450:4001:819::200e#443   
----