Thursday, January 4, 2018

Adventures in stacking

There's been quite a bit of interest in FAUCET stacking (distributed switching), so over the next couple of weeks I will be adding some more features (including active link/cable verification, and some optimizations to the switching algorithm for switches at the edge so that fewer resources are required).

For now, here is an example topology with 3 switches, which we will develop upon.



vlans:
    100:
        description: "100"
dps:
    nf1248:
        dp_id: 0x1
        hardware: "NoviFlow"
        stack:
            priority: 1
        interfaces:
            46:
                native_vlan: 100
            47:
                stack:
                    dp: x510
                    port: 23
            48:
                stack:
                    dp: x930
                    port: 23
    x510:
        dp_id: 0xeccd6d9936ed
        hardware: "Allied-Telesis"
        interfaces:
            14:
                native_vlan: 100
            23:
                stack:
                    dp: nf1248
                    port: 47
    x930:
        dp_id: 0xeccd6ddf6ca4 
        hardware: "Allied-Telesis"
        interfaces:
            14:
                native_vlan: 100
            23:
                stack:
                    dp: nf1248

                    port: 48

Wednesday, January 3, 2018

flow table monitoring in Prometheus

From next week (8 Jan 2018), Gauge is able to log flow table statistics to Prometheus. This makes graphing ACL counters, packets by Ethernet source and destination etc, possible in Prometheus.

You will need this config in gauge.yml:


faucet_configs:
    - '/etc/ryu/faucet/faucet.yaml'
watchers:
    port_stats:
        dps: ['windscale-faucet-1']
        type: 'port_stats'
        interval: 10
        db: 'prometheus'
    flow_table:
        dps: ['windscale-faucet-1']
        type: 'flow_table'
        interval: 10
        db: 'prometheus'
dbs:
    prometheus:
        type: 'prometheus'
        prometheus_port: 9303

        prometheus_addr: ''


Then you can graph things like packets by eth_src: