doc/figures/sai_srv6_encap_model.gv (176 lines of code) (raw):

// SAI SRv6 Encap model Graphviz file // To generate the diagram use below command: // dot -Tpng sai_srv6_encap_model.gv -o sai_srv6_encap_model.png digraph g { fontname="Helvetica,Arial,sans-serif" node [fontname="Helvetica,Arial,sans-serif"] edge [fontname="Helvetica,Arial,sans-serif"] graph [ rankdir = "LR" ]; node [ fontsize = "16" ]; edge [ ]; subgraph cluster_vrf { "VRF_a_route_table_label" [ label = <VRF-A Route table> style = "filled,setlinewidth(5)" fillcolor = "#91b5c9" shape = box width = 2.2 ] "Route_10_0_0_0" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD colspan="2" BGCOLOR="palegreen" PORT="title">SAI Route</TD></TR> <tr><td>Prefix</td><td>10.0.0.0/8</td></tr> <tr><td>VRF</td><td>VRF-A</td></tr> <tr><td BGCOLOR="tomato">Prefix Agg ID</td><td BGCOLOR="tomato">10</td></tr> <tr><td>Prefix</td><td port="nexthop">Overlay NHG1</td></tr> </TABLE> > shape = plaintext ] "Route_12_0_0_0" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD colspan="2" BGCOLOR="palegreen" PORT="title">SAI Route</TD></TR> <tr><td>Prefix</td><td>12.0.0.0/8</td></tr> <tr><td>VRF</td><td>VRF-A</td></tr> <tr><td BGCOLOR="tomato">Prefix Agg ID</td><td BGCOLOR="tomato">20</td></tr> <tr><td>Prefix</td><td port="nexthop">SRv6 NH1</td></tr> </TABLE> > shape = plaintext ] } "Route_10_0_0_0":nexthop -> "l1_nhg1":ecmp_group "Route_12_0_0_0":nexthop -> "srv6_nh1":nexthop subgraph cluster_l1_ecmp { // rank = same label = <Overlay Next hop group> "l1_nhg1" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD PORT="ecmp_group" BGCOLOR="palegreen">L1 ECMP Group</TD></TR> <tr><td BGCOLOR="black"></td></tr> <TR><TD BGCOLOR="skyblue" PORT="nh_mbr_id">NHG member list</TD></TR> <tr><td port="nh2">SRv6 NH2</td></tr> <tr><td port="nh1">SRv6 NH1</td></tr> </TABLE> > shape = plaintext ] } subgraph cluster_srv6_nh { rank = same "srv6_nh1" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD PORT="nexthop" BGCOLOR="palegreen">SRv6 NH1</TD></TR> <TR><TD>Nexthop OID</TD></TR> <TR><TD PORT="tunnel">NODE_21 Tunnel OID</TD></TR> <TR><TD PORT="sidlist">SIDList OID1</TD></TR> </TABLE> > shape = plaintext ] "srv6_nh2" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD PORT="nexthop" BGCOLOR="palegreen">SRv6 NH2</TD></TR> <TR><TD>Nexthop OID</TD></TR> <TR><TD PORT="tunnel">NODE_22 Tunnel OID</TD></TR> <TR><TD PORT="sidlist">SIDList OID2</TD></TR> </TABLE> > shape = plaintext ] } "l1_nhg1":nh1 -> "srv6_nh1":nexthop "l1_nhg1":nh2 -> "srv6_nh2":nexthop "srv6_nh1":tunnel -> "node21-tunnel":tunnel "srv6_nh2":tunnel -> "node22-tunnel":tunnel subgraph cluster_tunnel { rank = same "node21-tunnel" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD PORT="tunnel" BGCOLOR="palegreen">SAI Tunnel<br/>NODE_21 Endpoint</TD></TR> <TR><TD>Tunnel OID</TD></TR> <TR><TD PORT="mapper">Encap mapper</TD></TR> <TR><TD>Encap SRC IP</TD></TR> <TR><TD>Type = P2P</TD></TR> <TR><TD>Encap DST IP</TD></TR> </TABLE> > shape = plaintext ] "node21-encap_mapper" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD colspan="2" PORT="mapper" BGCOLOR="palegreen">Encap Mapper</TD></TR> <TR><TD colspan="2">Encap Mapper OID 1</TD></TR> <tr><td colspan="2" BGCOLOR="black"></td></tr> <TR><TD BGCOLOR="skyblue" colspan="3">PrefixID to VPNSID</TD></TR> <TR><TD BGCOLOR="tomato">10</TD><TD PORT="sidlist1" BGCOLOR="tomato">VPN SID1</TD></TR> <TR><TD BGCOLOR="tomato">20</TD><TD PORT="sidlist2" BGCOLOR="tomato">VPN SID2</TD></TR> </TABLE> > shape = plaintext ] "node21-tunnel":mapper -> "node21-encap_mapper":mapper "node22-tunnel" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD PORT="tunnel" BGCOLOR="palegreen">SAI Tunnel<br/>NODE_22 Endpoint</TD></TR> <TR><TD>Tunnel OID</TD></TR> <TR><TD PORT="mapper">Encap mapper</TD></TR> <TR><TD>Encap SRC IP</TD></TR> <TR><TD>Encap DST IP</TD></TR> </TABLE> > shape = plaintext ] "node22-encap_mapper" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD colspan="2" PORT="mapper" BGCOLOR="palegreen">Encap Mapper</TD></TR> <TR><TD colspan="2">Encap Mapper OID 2</TD></TR> <tr><td colspan="2" BGCOLOR="black"></td></tr> <TR><TD BGCOLOR="skyblue" colspan="3">PrefixID to VPNSID</TD></TR> <TR><TD BGCOLOR="tomato">10</TD><TD PORT="sidlist1" BGCOLOR="tomato">VPN SID3</TD></TR> </TABLE> > shape = plaintext ] "node22-tunnel":mapper -> "node22-encap_mapper":mapper } subgraph sidlist_block { label = <SID Lists> rank = same "SID_List1" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD colspan="2" BGCOLOR="palegreen" PORT="title">SAI SIDList 1</TD></TR> <TR><TD>SID</TD><TD>IPv6 address list</TD></TR> <TR><TD BGCOLOR="tomato">Underlay NH</TD><TD BGCOLOR="tomato">IP NH_OID</TD></TR> </TABLE> > shape = plaintext ] "SID_List2" [ label = < <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD colspan="2" BGCOLOR="palegreen" PORT="title">SAI SIDList 2</TD></TR> <TR><TD>SID</TD><TD>IPv6 address list</TD></TR> <TR><TD BGCOLOR="tomato">Underlay NH</TD><TD BGCOLOR="tomato">Unspecified</TD></TR> </TABLE> > shape = plaintext ] } "srv6_nh1":sidlist -> "SID_List1":title "srv6_nh2":sidlist -> "SID_List2":title }