1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
blockdiag components-bagpipe {
span_width = 64
node_height = 100
shadow_style=none
default_shape = roundedbox
group neutron {
label="Neutron"
color=red
api[label="API\n(e.g Core)",color="lightyellow"]
db[shape=flowchart.database,label="DB",color="lightyellow"]
driver[label="bagpipe driver",color="lightyellow"]
api -> driver
api -> db[folded]
driver -> db[folded]
}
/* api_user [shape=actor,label="admin, tenant"]
api_user -> api[color=blue] */
group computeA {
label="compute node"
color=orange
agent_a[label="Neutron Agent\n+ bagpipe extension",color=grey,textcolor=darkorange]
vswitch_a[label="vswitch\n(OVS)",color=lightgrey]
bgpspeaker_a[label="bagpipe-bgp",color="darkorange"]
agent_a -> bgpspeaker_a[label="REST"]
agent_a -> vswitch_a[folded]
bgpspeaker_a -> vswitch_a[folded]
}
group computeB {
label="compute node"
color=orange
agent_b[label="Neutron Agent\n+ bagpipe extension",color=grey,textcolor=darkorange]
vswitch_b[label="vswitch\n(OVS)",color=lightgrey]
bgpspeaker_b[label="bagpipe-bgp",color="darkorange"]
agent_b -> bgpspeaker_b[label="REST"]
agent_b -> vswitch_b[folded]
bgpspeaker_b -> vswitch_b[folded]
}
group routers {
color=lightgrey
shape=line
style=none
bgppeers[label="BGP Peers\nand/or\nRoute Reflector",stacked,color=green];
}
bgpspeaker_a, bgpspeaker_b <-> bgppeers [color=green,
label="BGP",
textcolor=green]
/*vswitch_b <-> vswitch_a [label="VXLAN", folded]
vswitch_a, vswitch_b <-> mplsrouters[label="MPLS\n(over-x)"]*/
driver <-> agent_a, agent_b [label="RPCs"];
/*vswitch_a <-> mplsrouters [label="MPLS\n(over-x)"]
vswitch_b <-> mplsrouters [label="MPLS\n(over-x)"]*/
}
|