Adding a complete sample TTP that can be used as an example in docs. 51/11551/1
authorColin Dixon <colin@colindixon.com>
Thu, 25 Sep 2014 00:04:31 +0000 (19:04 -0500)
committerColin Dixon <colin@colindixon.com>
Thu, 25 Sep 2014 00:04:31 +0000 (19:04 -0500)
Change-Id: I194e14dbd68d7cc0db6b158c9e446e05ab40bc22
Signed-off-by: Colin Dixon <colin@colindixon.com>
parser/sample-TTP-from-tests.ttp [new file with mode: 0644]

diff --git a/parser/sample-TTP-from-tests.ttp b/parser/sample-TTP-from-tests.ttp
new file mode 100644 (file)
index 0000000..4513094
--- /dev/null
@@ -0,0 +1,361 @@
+{
+    "table-type-patterns": {
+        "table-type-pattern": [
+            {
+                "security": {
+                    "doc": [
+                        "This TTP is not published for use by ONF. It is an example and for",
+                        "illustrative purposes only.",
+                        "If this TTP were published for use it would include",
+                        "guidance as to any security considerations in this doc member."
+                    ]
+                },
+                "NDM_metadata": {
+                    "authority": "org.opennetworking.fawg",
+                    "OF_protocol_version": "1.3.3",
+                    "version": "1.0.0",
+                    "type": "TTPv1",
+                    "doc": [
+                        "Example of a TTP supporting L2 (unicast, multicast, flooding), L3 (unicast only),",
+                        "and an ACL table."
+                    ],
+                    "name": "L2-L3-ACLs"
+                },
+                "identifiers": [
+                    {
+                        "doc": [
+                            "The VLAN ID of a locally attached L2 subnet on a Router."
+                        ],
+                        "var": "<subnet_VID>"
+                    },
+                    {
+                        "doc": [
+                            "An OpenFlow group identifier (integer) identifying a group table entry",
+                            "of the type indicated by the variable name"
+                        ],
+                        "var": "<<group_entry_types/name>>"
+                    }
+                ],
+                "features": [
+                    {
+                        "doc": [
+                            "Flow entry notification Extension – notification of changes in flow entries"
+                        ],
+                        "feature": "ext187"
+                    },
+                    {
+                        "doc": [
+                            "Group notifications Extension – notification of changes in group or meter entries"
+                        ],
+                        "feature": "ext235"
+                    }
+                ],
+                "meter_table": {
+                    "meter_types": [
+                        {
+                            "name": "ControllerMeterType",
+                            "bands": [
+                                {
+                                    "type": "DROP",
+                                    "rate": "1000..10000",
+                                    "burst": "50..200"
+                                }
+                            ]
+                        },
+                        {
+                            "name": "TrafficMeter",
+                            "bands": [
+                                {
+                                    "type": "DSCP_REMARK",
+                                    "rate": "10000..500000",
+                                    "burst": "50..500"
+                                },
+                                {
+                                    "type": "DROP",
+                                    "rate": "10000..500000",
+                                    "burst": "50..500"
+                                }
+                            ]
+                        }
+                    ],
+                    "built_in_meters": [
+                        {
+                            "name": "ControllerMeter",
+                            "meter_id": 1,
+                            "type": "ControllerMeterType",
+                            "bands": [
+                                {
+                                    "rate": 2000,
+                                    "burst": 75
+                                }
+                            ]
+                        },
+                        {
+                            "name": "AllArpMeter",
+                            "meter_id": 2,
+                            "type": "ControllerMeterType",
+                            "bands": [
+                                {
+                                    "rate": 1000,
+                                    "burst": 50
+                                }
+                            ]
+                        }
+                    ]
+                },
+                "table_map": [
+                    {
+                        "name": "ControlFrame",
+                        "number": 0
+                    },
+                    {
+                        "name": "IngressVLAN",
+                        "number": 10
+                    },
+                    {
+                        "name": "MacLearning",
+                        "number": 20
+                    },
+                    {
+                        "name": "ACL",
+                        "number": 30
+                    },
+                    {
+                        "name": "L2",
+                        "number": 40
+                    },
+                    {
+                        "name": "ProtoFilter",
+                        "number": 50
+                    },
+                    {
+                        "name": "IPv4",
+                        "number": 60
+                    },
+                    {
+                        "name": "IPv6",
+                        "number": 80
+                    }
+                ],
+                "parameters": [
+                    {
+                        "doc": [
+                            "documentation"
+                        ],
+                        "name": "Showing-curt-how-this-works",
+                        "type": "type1"
+                    }
+                ],
+                "flow_tables": [
+                    {
+                        "doc": [
+                            "Filters L2 control reserved destination addresses and",
+                            "may forward control packets to the controller.",
+                            "Directs all other packets to the Ingress VLAN table."
+                        ],
+                        "name": "ControlFrame",
+                        "flow_mod_types": [
+                            {
+                                "doc": [
+                                    "This match/action pair allows for flow_mods that match on either",
+                                    "ETH_TYPE or ETH_DST (or both) and send the packet to the",
+                                    "controller, subject to metering."
+                                ],
+                                "name": "Frame-To-Controller",
+                                "match_set": [
+                                    {
+                                        "field": "ETH_TYPE",
+                                        "match_type": "all_or_exact"
+                                    },
+                                    {
+                                        "field": "ETH_DST",
+                                        "match_type": "exact"
+                                    }
+                                ],
+                                "instruction_set": [
+                                    {
+                                        "doc": [
+                                            "This meter may be used to limit the rate of PACKET_IN frames",
+                                            "sent to the controller"
+                                        ],
+                                        "instruction": "METER",
+                                        "meter_name": "ControllerMeter"
+                                    },
+                                    {
+                                        "instruction": "APPLY_ACTIONS",
+                                        "actions": [
+                                            {
+                                                "action": "OUTPUT",
+                                                "port": "CONTROLLER"
+                                            }
+                                        ]
+                                    }
+                                ]
+                            }
+                        ],
+                        "built_in_flow_mods": [
+                            {
+                                "doc": [
+                                    "Mandatory filtering of control frames with C-VLAN Bridge reserved DA."
+                                ],
+                                "name": "Control-Frame-Filter",
+                                "priority": "1",
+                                "match_set": [
+                                    {
+                                        "field": "ETH_DST",
+                                        "mask": "0xfffffffffff0",
+                                        "value": "0x0180C2000000"
+                                    }
+                                ]
+                            },
+                            {
+                                "doc": [
+                                    "Mandatory miss flow_mod, sends packets to IngressVLAN table."
+                                ],
+                                "name": "Non-Control-Frame",
+                                "priority": "0",
+                                "instruction_set": [
+                                    {
+                                        "instruction": "GOTO_TABLE",
+                                        "table": "IngressVLAN"
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ],
+                "group_entry_types": [
+                    {
+                        "doc": [
+                            "Output to a port, removing VLAN tag if needed.",
+                            "Entry per port, plus entry per untagged VID per port."
+                        ],
+                        "name": "EgressPort",
+                        "group_type": "INDIRECT",
+                        "bucket_types": [
+                            {
+                                "name": "OutputTagged",
+                                "action_set": [
+                                    {
+                                        "action": "OUTPUT",
+                                        "port": "<port_no>"
+                                    }
+                                ]
+                            },
+                            {
+                                "name": "OutputUntagged",
+                                "action_set": [
+                                    {
+                                        "action": "POP_VLAN"
+                                    },
+                                    {
+                                        "action": "OUTPUT",
+                                        "port": "<port_no>"
+                                    }
+                                ]
+                            },
+                            {
+                                "opt_tag": "VID-X",
+                                "name": "OutputVIDTranslate",
+                                "action_set": [
+                                    {
+                                        "action": "SET_FIELD",
+                                        "field": "VLAN_VID",
+                                        "value": "<local_vid>"
+                                    },
+                                    {
+                                        "action": "OUTPUT",
+                                        "port": "<port_no>"
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                ],
+                "flow_paths": [
+                    {
+                        "doc": [
+                            "This object contains just a few examples of flow paths, it is not",
+                            "a comprehensive list of the flow paths required for this TTP.  It is",
+                            "intended that the flow paths array could include either a list of",
+                            "required flow paths or a list of specific flow paths that are not",
+                            "required (whichever is more concise or more useful."
+                        ],
+                        "name": "L2-2",
+                        "path": [
+                            "Non-Control-Frame",
+                            "IV-pass",
+                            "Known-MAC",
+                            "ACLskip",
+                            "L2-Unicast",
+                            "EgressPort"
+                        ]
+                    },
+                    {
+                        "name": "L2-3",
+                        "path": [
+                            "Non-Control-Frame",
+                            "IV-pass",
+                            "Known-MAC",
+                            "ACLskip",
+                            "L2-Multicast",
+                            "L2Mcast",
+                            "[EgressPort]"
+                        ]
+                    },
+                    {
+                        "name": "L2-4",
+                        "path": [
+                            "Non-Control-Frame",
+                            "IV-pass",
+                            "Known-MAC",
+                            "ACL-skip",
+                            "VID-flood",
+                            "VIDflood",
+                            "[EgressPort]"
+                        ]
+                    },
+                    {
+                        "name": "L2-5",
+                        "path": [
+                            "Non-Control-Frame",
+                            "IV-pass",
+                            "Known-MAC",
+                            "ACLskip",
+                            "L2-Drop"
+                        ]
+                    },
+                    {
+                        "name": "v4-1",
+                        "path": [
+                            "Non-Control-Frame",
+                            "IV-pass",
+                            "Known-MAC",
+                            "ACLskip",
+                            "L2-Router-MAC",
+                            "IPv4",
+                            "v4-Unicast",
+                            "NextHop",
+                            "EgressPort"
+                        ]
+                    },
+                    {
+                        "name": "v4-2",
+                        "path": [
+                            "Non-Control-Frame",
+                            "IV-pass",
+                            "Known-MAC",
+                            "ACLskip",
+                            "L2-Router-MAC",
+                            "IPv4",
+                            "v4-Unicast-ECMP",
+                            "L3ECMP",
+                            "NextHop",
+                            "EgressPort"
+                        ]
+                    }
+                ]
+            }
+        ]
+    }
+}