diff options
author | Marek Gradzki <mgradzki@cisco.com> | 2017-12-13 12:25:58 +0100 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2018-01-08 15:11:17 +0000 |
commit | 686309091cf77d9b35cf5ae19c80172ad29d68b6 (patch) | |
tree | 9c623ddef516d80f2ae981ae0512db8e54e97526 /docker/bgp_demo/init | |
parent | c127a6e1f1f7c37864bf9e11887cb7b84dfad826 (diff) |
BGP-HC docker example
Shows how to announce BGP prefix from one HC instance to another.
Configuration (RESTCONF) is done over builtin docker0 network.
Data plane is using veth pair that connects containers.
BGP is also using veth but via unnumbered tuntap.
Change-Id: Ia18b0729e12a4893ba559d0a68a9e962e58d2a2f
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'docker/bgp_demo/init')
5 files changed, 94 insertions, 0 deletions
diff --git a/docker/bgp_demo/init/init.sh b/docker/bgp_demo/init/init.sh new file mode 100755 index 000000000..14e60aa0b --- /dev/null +++ b/docker/bgp_demo/init/init.sh @@ -0,0 +1,35 @@ +#!/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 +echo "Waiting for vpp to start" +sleep 5 + +# 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/docker/bgp_demo/init/io-fd-hc2vpp-integration_vpp-integration-distribution_1-18-01-SNAPSHOT-module-config b/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/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/docker/bgp_demo/init/io-fd-honeycomb_minimal-distribution_1-18-01-SNAPSHOT-module-config b/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/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/docker/bgp_demo/init/vpp1.cmd b/docker/bgp_demo/init/vpp1.cmd new file mode 100644 index 000000000..5760f167b --- /dev/null +++ b/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/docker/bgp_demo/init/vpp2.cmd b/docker/bgp_demo/init/vpp2.cmd new file mode 100644 index 000000000..07f2005e0 --- /dev/null +++ b/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 |