diff options
Diffstat (limited to 'examples/docker/bgp_demo')
9 files changed, 480 insertions, 0 deletions
diff --git a/examples/docker/bgp_demo/Readme.txt b/examples/docker/bgp_demo/Readme.txt new file mode 100644 index 000000000..896a6f7c8 --- /dev/null +++ b/examples/docker/bgp_demo/Readme.txt @@ -0,0 +1,42 @@ +BGP demo +--------------------------------------------------- + +Provides examples of BGP config using Honeycomb +two VPP nodes (docker containers). + +Configuration was tested using VPP 18.01 and hc2vpp 1.18.01. + +1) Create & start containers (requires hc2vpp image) +sudo ./build_topology.sh + +3) Run vpp and honeycomb with preconfigured veth interfaces + +Either manually connect +docker exec -it vpp1 bash +docker exec -it vpp2 bash + +and then run vpp and honeycomb on vpp1 and vpp2 respectively: +/hc2vpp/mpls_demo/init/vpp.sh 1 +/hc2vpp/mpls_demo/init/vpp.sh 2 + +or run everything via script (uses xfce4-terminal): +./run_terminals.sh + +After vpp and honeycomb stars, +you should be able to ping vpp2 from vpp1. + +Either using vppctl: +vppctl ping 10.12.1.2 + +or directly (we are using tuntap): +ping 10.12.1.2 + +4) Use postman_collection.json for BGP configuration examples + +First configure loop0 interface on vpp2. + +Then configure eBGP peers on vpp1 and vpp2 +and program route to loop0 using application peer from vpp2. + +Now loop0 is reachable from vpp1: +vppctl ping 10.100.1.1 diff --git a/examples/docker/bgp_demo/build_topology.sh b/examples/docker/bgp_demo/build_topology.sh new file mode 100755 index 000000000..c532916a3 --- /dev/null +++ b/examples/docker/bgp_demo/build_topology.sh @@ -0,0 +1,27 @@ +#!/bin/bash +source ../utils.sh + +if [[ $UID != 0 ]]; then + echo "Please run this script with sudo:" + echo "sudo $0 $*" + exit 1 +fi + +# Cleanup +../remove_hc2vpp_containers.sh + +# Create directory for storing network namespaces +mkdir -p /var/run/netns + +# Build topology +# +# vpp1 – vpp2 +# +create_container vpp1 hc2vpp +create_container vpp2 hc2vpp + +start_container vpp1 +start_container vpp2 + +# Connect containers using veth interfaces +create_link vpp1 veth12 veth21 vpp2 diff --git a/examples/docker/bgp_demo/init/init.sh b/examples/docker/bgp_demo/init/init.sh new file mode 100755 index 000000000..8ed4cd25c --- /dev/null +++ b/examples/docker/bgp_demo/init/init.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# Starts and initializes vpp. +# Then starts honeycomb +# + +NODE_ID=$1 +NODE_NAME=vpp$1 + +echo "Enable tuntap interface in startup.conf" +echo -e "tuntap {\n enable\n}\n" >> /etc/vpp/startup.conf + +/hc2vpp/vpp/start.sh & VPP_PID=$! +echo "Waiting 5s for vpp to start" +sleep 5 +VPP_VERSION=$(vppctl show version) +if [ "${VPP_VERSION}" != "" ] +then + echo "VPP started successfully. Version:" + echo "${VPP_VERSION}" +else + echo "VPP failed to start. Stopping initialization script." + exit 1 +fi + +# Configure veth interfaces using VPP CLI +# (not fully supported by hc2vpp 18.01) +echo "Configuring vpp" +vppctl exec /hc2vpp/bgp_demo/init/$NODE_NAME.cmd + +# Update address of interface BGP is listening on +IP="10.12.1.${NODE_ID}" +jshon -s $IP -i "bgp-binding-address" -I -F /opt/honeycomb/config/bgp.json + +# Set AS number +AS_NUMBER=$((65000+NODE_ID)) +jshon -n $AS_NUMBER -i "bgp-as-number" -I -F /opt/honeycomb/config/bgp.json + +# Update module configuration +# Enables BGP and disables some of the modules not used in the example +cp /hc2vpp/bgp_demo/init/*-module-config /opt/honeycomb/modules + +echo "Starting honeycomb" +/hc2vpp/honeycomb/start.sh diff --git a/examples/docker/bgp_demo/init/io-fd-hc2vpp-integration_vpp-integration-distribution_1-18-01-SNAPSHOT-module-config b/examples/docker/bgp_demo/init/io-fd-hc2vpp-integration_vpp-integration-distribution_1-18-01-SNAPSHOT-module-config new file mode 100644 index 000000000..f236d4eab --- /dev/null +++ b/examples/docker/bgp_demo/init/io-fd-hc2vpp-integration_vpp-integration-distribution_1-18-01-SNAPSHOT-module-config @@ -0,0 +1,27 @@ +// This is list of hc2vpp modules based on configuration file from /opt/honeycomb/modules +// +// BGP modules (disabled by default) were enabled. +// Modules not used in the demo were disabled to reduce footprint. +// +io.fd.hc2vpp.common.integration.VppCommonModule +io.fd.hc2vpp.management.VppManagementModule +// io.fd.hc2vpp.lisp.LispModule +// io.fd.hc2vpp.lisp.gpe.GpeModule +io.fd.hc2vpp.v3po.V3poModule +// io.fd.hc2vpp.iface.role.InterfaceRoleModule +io.fd.hc2vpp.l3.InterfaceL3Module +io.fd.hc2vpp.l3.SubInterfaceL3Module +// io.fd.hc2vpp.l3.ProxyArpModule +io.fd.hc2vpp.vpp.classifier.VppClassifierModule +// io.fd.hc2vpp.vpp.classifier.InterfaceClassifierAclModule +// io.fd.hc2vpp.vpp.classifier.SubInterfaceClassifierAclModule +// io.fd.hc2vpp.nat.NatModule +io.fd.hc2vpp.routing.RoutingModule +// io.fd.hc2vpp.acl.AclModule +// io.fd.hc2vpp.dhcp.DhcpModule +// io.fd.hc2vpp.policer.PolicerModule +io.fd.hc2vpp.mpls.MplsModule +// io.fd.hc2vpp.vppnsh.impl.VppNshModule +// io.fd.hc2vpp.vppioam.impl.VppIoamModule +io.fd.hc2vpp.bgp.inet.BgpInetModule +io.fd.hc2vpp.bgp.prefix.sid.BgpPrefixSidModule
\ No newline at end of file diff --git a/examples/docker/bgp_demo/init/io-fd-honeycomb_minimal-distribution_1-18-01-SNAPSHOT-module-config b/examples/docker/bgp_demo/init/io-fd-honeycomb_minimal-distribution_1-18-01-SNAPSHOT-module-config new file mode 100644 index 000000000..476a1a1a5 --- /dev/null +++ b/examples/docker/bgp_demo/init/io-fd-honeycomb_minimal-distribution_1-18-01-SNAPSHOT-module-config @@ -0,0 +1,24 @@ +// This is list of honeycomb modules based on configuration file from /opt/honeycomb/modules +// +// BGP modules (disabled by default) used in the demo were enabled. +// +io.fd.honeycomb.infra.distro.schema.YangBindingProviderModule +io.fd.honeycomb.infra.distro.schema.SchemaModule +io.fd.honeycomb.infra.distro.data.ConfigAndOperationalPipelineModule +io.fd.honeycomb.infra.distro.data.context.ContextPipelineModule +io.fd.honeycomb.infra.distro.initializer.InitializerPipelineModule +io.fd.honeycomb.northbound.CredentialsModule +io.fd.honeycomb.northbound.netconf.NetconfModule +io.fd.honeycomb.northbound.netconf.NetconfReadersModule +io.fd.honeycomb.northbound.restconf.RestconfModule +io.fd.honeycomb.infra.distro.cfgattrs.CfgAttrsModule +io.fd.honeycomb.infra.bgp.BgpModule +io.fd.honeycomb.infra.bgp.BgpReadersModule +io.fd.honeycomb.infra.bgp.BgpWritersModule +// io.fd.honeycomb.northbound.bgp.extension.EvpnModule +io.fd.honeycomb.northbound.bgp.extension.InetModule +// io.fd.honeycomb.northbound.bgp.extension.L3VpnV4Module +// io.fd.honeycomb.northbound.bgp.extension.L3VpnV6Module +io.fd.honeycomb.northbound.bgp.extension.LabeledUnicastModule +// io.fd.honeycomb.northbound.bgp.extension.LinkstateModule +// io.fd.honeycomb.footprint.FootprintModule
\ No newline at end of file diff --git a/examples/docker/bgp_demo/init/vpp1.cmd b/examples/docker/bgp_demo/init/vpp1.cmd new file mode 100644 index 000000000..5760f167b --- /dev/null +++ b/examples/docker/bgp_demo/init/vpp1.cmd @@ -0,0 +1,4 @@ +create host-interface name veth12 +set int state host-veth12 up +set int ip address host-veth12 10.12.1.1/24 +set interface unnumbered tuntap-0 use host-veth12 diff --git a/examples/docker/bgp_demo/init/vpp2.cmd b/examples/docker/bgp_demo/init/vpp2.cmd new file mode 100644 index 000000000..07f2005e0 --- /dev/null +++ b/examples/docker/bgp_demo/init/vpp2.cmd @@ -0,0 +1,4 @@ +create host-interface name veth21 +set int state host-veth21 up +set int ip address host-veth21 10.12.1.2/24 +set interface unnumbered tuntap-0 use host-veth21 diff --git a/examples/docker/bgp_demo/postman_collection.json b/examples/docker/bgp_demo/postman_collection.json new file mode 100644 index 000000000..545a9d78c --- /dev/null +++ b/examples/docker/bgp_demo/postman_collection.json @@ -0,0 +1,299 @@ +{ + "id": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "name": "Hc2vpp2 BGP configuration examples", + "description": "Examples of BGP configration based on \nhttp://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html", + "order": [], + "folders": [ + { + "id": "87048983-134d-ae10-16a1-c28b3e6cfe67", + "name": "vpp1", + "description": "", + "order": [ + "1af04e52-88fe-eda0-c175-203d6cdd6ea8", + "6c8a9854-1eec-bdcd-2a7e-fb2dadd79f1d", + "33d6cc8b-80d7-4493-ab29-a5d4df4f9709", + "fc913f70-aaa5-fed6-fe00-dc93ed59ffb2", + "36627e62-925f-3de7-7943-d10402ceb160" + ], + "owner": 0 + }, + { + "id": "f294a1aa-4a81-0271-3d70-db7627278200", + "name": "vpp2", + "description": "", + "order": [ + "e5d0baab-866f-4327-8c45-53587edb8e42", + "6dd77ec0-b213-adcc-9456-6e27b6455496", + "e3954b49-2f90-4868-a388-2c58b7951afe", + "79912b82-12fb-9210-6257-bbf0f4c05a7e", + "2026a32e-3f9e-3da4-1e68-6a659d91b557", + "b7339b36-1c6a-bad6-707a-cc010e5d8e7d", + "53b4f9f5-54e6-cd98-cec5-ad925d6c561d", + "90d5c0b1-572b-924e-2ccb-e5cd61b8e1e0" + ], + "owner": 0, + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46" + } + ], + "timestamp": 1515051953592, + "owner": 0, + "public": false, + "requests": [ + { + "id": "1af04e52-88fe-eda0-c175-203d6cdd6ea8", + "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.2:8445/restconf/config/openconfig-network-instance:network-instances/network-instance/global-bgp/openconfig-network-instance:protocols/protocol/openconfig-policy-types:BGP/hc-bgp-instance/bgp/bgp-openconfig-extensions:neighbors/neighbor/10.12.1.2", + "preRequestScript": null, + "pathVariables": {}, + "method": "PUT", + "data": [], + "dataMode": "raw", + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515414858820, + "name": "Add eBGP peer configured on vpp2", + "description": "Based on http://docs.opendaylight.org/en/stable-nitrogen/user-guide/bgp-user-guide.html#external-peering-configuration", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "{\n \"neighbor\": {\n \"neighbor-address\": \"10.12.1.2\",\n \"timers\": {\n \"config\": {\n \"hold-time\": 90,\n \"connect-retry\": 10\n }\n },\n \"config\": {\n \"peer-type\": \"EXTERNAL\",\n \"peer-as\": \"65002\"\n },\n \"transport\": {\n \"config\": {\n \"remote-port\": 1790,\n \"passive-mode\": true\n }\n },\n \"afi-safis\": {\n \"afi-safi\": [\n {\n \"afi-safi-name\": \"openconfig-bgp-types:IPV4-UNICAST\",\n \"receive\": true,\n \"send-max\": 0\n },\n {\n \"afi-safi-name\": \"openconfig-bgp-types:IPV4-LABELLED-UNICAST\",\n \"receive\": true,\n \"send-max\": 0\n }\n ]\n }\n }\n}" + }, + { + "id": "2026a32e-3f9e-3da4-1e68-6a659d91b557", + "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.3:8445/restconf/config/openconfig-network-instance:network-instances/network-instance/global-bgp/openconfig-network-instance:protocols/protocol/openconfig-policy-types:BGP/hc-bgp-instance/bgp/bgp-openconfig-extensions:neighbors/neighbor/10.25.1.9", + "preRequestScript": null, + "pathVariables": {}, + "method": "PUT", + "data": [], + "dataMode": "raw", + "version": 2, + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515415282689, + "name": "Add application peer", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "{\n \"neighbor\": {\n \"neighbor-address\": \"10.25.1.9\",\n \"config\": {\n \"peer-group\": \"application-peers\"\n },\n \"afi-safis\": {\n \"afi-safi\": [\n {\n \"afi-safi-name\": \"openconfig-bgp-types:IPV4-UNICAST\",\n \"receive\": true,\n \"send-max\": 0\n },\n {\n \"afi-safi-name\": \"openconfig-bgp-types:IPV4-LABELLED-UNICAST\",\n \"receive\": true,\n \"send-max\": 0\n }\n ]\n }\n }\n}" + }, + { + "id": "33d6cc8b-80d7-4493-ab29-a5d4df4f9709", + "headers": "Content-Type: application/xml\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.2:8445/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance/loc-rib", + "pathVariables": {}, + "preRequestScript": null, + "method": "GET", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "data": [], + "dataMode": "raw", + "name": "Show Loc-RIB of vpp1", + "description": "", + "descriptionFormat": "html", + "time": 1515415010644, + "version": 2, + "responses": [], + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "folder": "87048983-134d-ae10-16a1-c28b3e6cfe67", + "rawModeData": "<neighbor xmlns=\"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions\">\n <neighbor-address>10.25.1.9</neighbor-address>\n <config>\n <peer-group>application-peers</peer-group>\n </config>\n</neighbor>" + }, + { + "id": "36627e62-925f-3de7-7943-d10402ceb160", + "headers": "Content-Type: application/xml\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.2:8445/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance", + "preRequestScript": null, + "pathVariables": {}, + "method": "GET", + "data": [], + "dataMode": "raw", + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515417781413, + "name": "Show HC BGP state on vpp1", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "rawModeData": "<neighbor xmlns=\"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions\">\n <neighbor-address>192.0.2.1</neighbor-address>\n <timers>\n <config>\n <hold-time>90</hold-time>\n <connect-retry>10</connect-retry>\n </config>\n </timers>\n <transport>\n <config>\n <remote-port>179</remote-port>\n <passive-mode>false</passive-mode>\n </config>\n </transport>\n <config>\n <peer-type>INTERNAL</peer-type>\n </config>\n</neighbor>" + }, + { + "id": "53b4f9f5-54e6-cd98-cec5-ad925d6c561d", + "headers": "Content-Type: application/xml\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.3:8445/restconf/config/openconfig-network-instance:network-instances/", + "preRequestScript": null, + "pathVariables": {}, + "method": "GET", + "data": [], + "dataMode": "raw", + "version": 2, + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515417814797, + "name": "Show BGP configuration on vpp2", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "<neighbor xmlns=\"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions\">\n <neighbor-address>192.0.2.1</neighbor-address>\n <timers>\n <config>\n <hold-time>90</hold-time>\n <connect-retry>10</connect-retry>\n </config>\n </timers>\n <transport>\n <config>\n <remote-port>179</remote-port>\n <passive-mode>false</passive-mode>\n </config>\n </transport>\n <config>\n <peer-type>INTERNAL</peer-type>\n </config>\n</neighbor>" + }, + { + "id": "6c8a9854-1eec-bdcd-2a7e-fb2dadd79f1d", + "headers": "Content-Type: application/xml\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.2:8445/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance/peer/bgp:%2F%2F10.12.1.2", + "preRequestScript": null, + "pathVariables": {}, + "method": "GET", + "data": [], + "dataMode": "raw", + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515414946071, + "name": "Show vpp2 peer state", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "<neighbor xmlns=\"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions\">\n <neighbor-address>192.0.2.1</neighbor-address>\n <timers>\n <config>\n <hold-time>90</hold-time>\n <connect-retry>10</connect-retry>\n </config>\n </timers>\n <transport>\n <config>\n <remote-port>179</remote-port>\n <passive-mode>false</passive-mode>\n </config>\n </transport>\n <config>\n <peer-type>INTERNAL</peer-type>\n </config>\n</neighbor>" + }, + { + "id": "6dd77ec0-b213-adcc-9456-6e27b6455496", + "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", + "url": "https://172.17.0.3:8445/restconf/operational/ietf-interfaces:interfaces-state/interface/loop0", + "preRequestScript": "", + "pathVariables": {}, + "method": "GET", + "data": [], + "dataMode": "raw", + "version": 2, + "tests": "", + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515419116647, + "name": "Show loop0 state", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"loop0\",\n \"enabled\": true,\n \"type\": \"v3po:loopback\",\n \"ietf-ip:ipv4\": {\n \"address\": [\n {\n \"ip\": \"10.100.1.1\",\n \"prefix-length\": 24\n }\n ]\n },\n \"v3po:ethernet\": {\n \"mtu\": 9216\n }\n }\n ]\n}" + }, + { + "id": "79912b82-12fb-9210-6257-bbf0f4c05a7e", + "headers": "Content-Type: application/xml\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.3:8445/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance/peer/bgp:%2F%2F10.12.1.1", + "preRequestScript": null, + "pathVariables": {}, + "method": "GET", + "data": [], + "dataMode": "raw", + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515414975231, + "name": "Show vpp1 peer state", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "<neighbor xmlns=\"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions\">\n <neighbor-address>192.0.2.1</neighbor-address>\n <timers>\n <config>\n <hold-time>90</hold-time>\n <connect-retry>10</connect-retry>\n </config>\n </timers>\n <transport>\n <config>\n <remote-port>179</remote-port>\n <passive-mode>false</passive-mode>\n </config>\n </transport>\n <config>\n <peer-type>INTERNAL</peer-type>\n </config>\n</neighbor>" + }, + { + "id": "90d5c0b1-572b-924e-2ccb-e5cd61b8e1e0", + "headers": "Content-Type: application/xml\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.3:8445/restconf/operational/bgp-rib:bgp-rib/rib/hc-bgp-instance", + "preRequestScript": null, + "pathVariables": {}, + "method": "GET", + "data": [], + "dataMode": "raw", + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515417838727, + "name": "Show HC BGP state on vpp2", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "rawModeData": "<neighbor xmlns=\"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions\">\n <neighbor-address>192.0.2.1</neighbor-address>\n <timers>\n <config>\n <hold-time>90</hold-time>\n <connect-retry>10</connect-retry>\n </config>\n </timers>\n <transport>\n <config>\n <remote-port>179</remote-port>\n <passive-mode>false</passive-mode>\n </config>\n </transport>\n <config>\n <peer-type>INTERNAL</peer-type>\n </config>\n</neighbor>" + }, + { + "id": "b7339b36-1c6a-bad6-707a-cc010e5d8e7d", + "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.3:8445/restconf/config/bgp-rib:application-rib/10.25.1.9/tables/bgp-types:ipv4-address-family/bgp-types:unicast-subsequent-address-family/bgp-inet:ipv4-routes/ipv4-route/10.100.1.1%2F24/0", + "preRequestScript": null, + "pathVariables": {}, + "method": "PUT", + "data": [], + "dataMode": "raw", + "version": 2, + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515419061792, + "name": "Announce route to loop0", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "{\n \"bgp-inet:ipv4-route\": [\n {\n \"prefix\": \"10.100.1.1/24\",\n \"path-id\": 0,\n \"attributes\": {\n \"origin\": {\n \"value\": \"igp\"\n },\n \"as-path\": {},\n \"local-pref\": {\n \"pref\": 100\n },\n \"ipv4-next-hop\": {\n \"global\": \"10.12.1.2\"\n }\n }\n }\n ]\n}" + }, + { + "id": "e3954b49-2f90-4868-a388-2c58b7951afe", + "headers": "Content-Type: application/json\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.3:8445/restconf/config/openconfig-network-instance:network-instances/network-instance/global-bgp/openconfig-network-instance:protocols/protocol/openconfig-policy-types:BGP/hc-bgp-instance/bgp/bgp-openconfig-extensions:neighbors/neighbor/10.12.1.1", + "preRequestScript": null, + "pathVariables": {}, + "method": "PUT", + "data": [], + "dataMode": "raw", + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515414866281, + "name": "Add eBGP peer configured on vpp1", + "description": "Based on http://docs.opendaylight.org/en/stable-nitrogen/user-guide/bgp-user-guide.html#external-peering-configuration", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "{\n \"neighbor\": {\n \"neighbor-address\": \"10.12.1.1\",\n \"timers\": {\n \"config\": {\n \"hold-time\": 90,\n \"connect-retry\": 10\n }\n },\n \"config\": {\n \"peer-type\": \"EXTERNAL\",\n \"peer-as\": \"65001\"\n },\n \"transport\": {\n \"config\": {\n \"remote-port\": 1790,\n \"passive-mode\": false\n }\n },\n \"afi-safis\": {\n \"afi-safi\": [\n {\n \"afi-safi-name\": \"openconfig-bgp-types:IPV4-UNICAST\",\n \"receive\": true,\n \"send-max\": 0\n },\n {\n \"afi-safi-name\": \"openconfig-bgp-types:IPV4-LABELLED-UNICAST\",\n \"receive\": true,\n \"send-max\": 0\n }\n ]\n }\n }\n}" + }, + { + "id": "e5d0baab-866f-4327-8c45-53587edb8e42", + "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", + "url": "https://172.17.0.3:8445/restconf/config/ietf-interfaces:interfaces/interface/loop0", + "preRequestScript": "", + "pathVariables": {}, + "method": "PUT", + "data": [], + "dataMode": "raw", + "version": 2, + "tests": "", + "currentHelper": "normal", + "helperAttributes": {}, + "time": 1515420990010, + "name": "Configure loop0", + "description": "", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "responses": [], + "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"loop0\",\n \"enabled\": true,\n \"type\": \"v3po:loopback\",\n \"ietf-ip:ipv4\": {\n \"address\": [\n {\n \"ip\": \"10.100.1.1\",\n \"prefix-length\": 24\n }\n ]\n },\n \"loopback\": {\n \"mac\" : \"aa:bb:cc:dd:ee:ff\"\n }\n }\n ]\n}" + }, + { + "id": "fc913f70-aaa5-fed6-fe00-dc93ed59ffb2", + "headers": "Content-Type: application/xml\nAuthorization: Basic YWRtaW46YWRtaW4=\n", + "url": "https://172.17.0.2:8445/restconf/config/openconfig-network-instance:network-instances/", + "pathVariables": {}, + "preRequestScript": null, + "method": "GET", + "collectionId": "c632c61d-2681-b9ea-23b7-124a1f228e46", + "data": [], + "dataMode": "raw", + "name": "Show BGP configuration on vpp1", + "description": "", + "descriptionFormat": "html", + "time": 1515415028428, + "version": 2, + "responses": [], + "tests": null, + "currentHelper": "normal", + "helperAttributes": {}, + "folder": "87048983-134d-ae10-16a1-c28b3e6cfe67", + "rawModeData": "<neighbor xmlns=\"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions\">\n <neighbor-address>192.0.2.1</neighbor-address>\n <timers>\n <config>\n <hold-time>90</hold-time>\n <connect-retry>10</connect-retry>\n </config>\n </timers>\n <transport>\n <config>\n <remote-port>179</remote-port>\n <passive-mode>false</passive-mode>\n </config>\n </transport>\n <config>\n <peer-type>INTERNAL</peer-type>\n </config>\n</neighbor>" + } + ] +}
\ No newline at end of file diff --git a/examples/docker/bgp_demo/run_terminals.sh b/examples/docker/bgp_demo/run_terminals.sh new file mode 100755 index 000000000..e2f7e3e12 --- /dev/null +++ b/examples/docker/bgp_demo/run_terminals.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Opens connections to hc2vpp containers + +xfce4-terminal --title=vpp1 --command="docker exec -it vpp1 \ + bash -c '/hc2vpp/bgp_demo/init/init.sh 1; exec $SHELL'" + +xfce4-terminal --title=vpp2 --command="docker exec -it vpp2 \ + bash -c '/hc2vpp/bgp_demo/init/init.sh 2; exec $SHELL'" |