diff options
Diffstat (limited to 'docs/source/control.md')
-rw-r--r-- | docs/source/control.md | 159 |
1 files changed, 132 insertions, 27 deletions
diff --git a/docs/source/control.md b/docs/source/control.md index f94d3f3b9..e8d42bffa 100644 --- a/docs/source/control.md +++ b/docs/source/control.md @@ -1,31 +1,57 @@ -# Sysrepo plugin for hicn-plugin +# Control Plane Support -These plugins serve as a data management agent. They provide yang models via -NETCONF to allow the management of hicn-light, and hicn VPP plugin. +Control plane functionalities are provides via SDN controllers or via standard +IP routing protocols. SDN support is provided by using the NETCONF/YANG protocol +for network management, control and telemetry. -## Software Requirement +Routing is supported via synchronization of the IP FIB and the IP RIB as implemented +by one of the routng protocols in FRR. Without loss of generality we have reported +below one example of IGP routing via OSPF for IPv6. +The VPP IP FIB can be controlled and updated by one FRR routing protocol which +is used for routing over locators and also over hICN name prefixes. -- VPP -- sysrepo -- hicn-plugin -- hicn-light +## NETCONF/YANG -- libyang -- sysrepo -- libnetconf -- netopeer2 +### Getting started + +NETCONF/YANG support is provided via several external components such as +libyang, sysrepo, libnetconf and netopeer. +The hicn project provides a sysrepo plugin and a YANG model for two devices: +the VPP based hicn virtual switch and the portable forwarder. +The YANG model for the VPP based hICN vSwitch is based the full hICN C API +exported by the VPP plugin with the addition of some VPP APIs such as +interface and FIB management which are required by the hICN plugin. To install libyang, sysrepo, libnetconf and netopeer2 for Ubuntu18 amd64/arm64 -and ad-hoc repository is available and maintained in bintray. +or CentOS 7 and ad-hoc repository is available and maintained in bintray +at <https://dl.bintray.com/icn-team/apt-hicn-extras>. + +For instance in Ubuntu 18 LTS: + +Install the sysrepo YANG data store and a NETCONF server. ```shell -echo "deb [trusted=yes] https://dl.bintray.com/icn-team/apt-hicn-extras bionic main" | tee -a /etc/apt/sources.list +echo "deb [trusted=yes] https://dl.bintray.com/icn-team/apt-hicn-extras bionic main" \ + | tee -a /etc/apt/sources.list apt-get update && apt-get install -y libyang sysrepo libnetconf2 netopeer2-server ``` -## hICN yang model +Install the VPP based hICN virtual switch. -You can install the yang model using the following bash script: +```shell +curl -s https://packagecloud.io/install/repositories/fdio/release/script.deb.sh | bash +apt-get update && apt-get install -y hicn-plugin vpp-plugin-dpdk hicn-sysrepo-plugin +``` +The hICN YANG models are install under '/usr/lib/$(uname -m)-linux-gnu/modules_yang'. +Configure the NETCONF/YANG components + +```shell +bash /usr/bin/setup.sh sysrepoctl /usr/lib/$(uname -m)-linux-gnu/modules_yang root +bash /usr/bin/merge_hostkey.sh sysrepocfg openssl +bash /usr/bin/merge_config.sh sysrepocfg genkey +``` + +You can manually install the yang model using the following bash script: ```shell EXIT_CODE=0 @@ -38,18 +64,32 @@ sysrepoctl --install --yang=path_to_hicn_yang_model fi ``` +### YANG model + hicn.yang can be found in the yang-model. It consists of two container nodes: -hicn-conf and hicn-state. One is used to hold the configuration data (i.e., -hicn-conf) and one for providing the state data (i.e., hicn-state). The -hicn-conf has one node, params, which contains the hICN configuration -parameters. A controller can configure these parameters through the edit-config RPC + +```text +|--+ hicn-conf: holds the configuration data; +| |--+ params: contains all configuration parameters; +|--+ hicn-state: provides the state data +| |--+ state, +| |--+ strategy, +| |--+ strategies, +| |--+ route, +| |--+ face-ip-params +and corresponding leaves. +``` + +A controller can configure these parameters through the edit-config RPC call. This node can be used to enable and to initialize the hicn-plugin in VPP -instance. Hicn-state container is used to provide the state data to the +instance. hicn-state container is used to provide the state data to the controller. It consists of state, strategy, strategies, route, and face-ip-params nodes with the corresponding leaves. In the hicn model a variety of RPCs are provided to allow controller to communicate with the hicn-plugin as well as update the state data in hicn-state. +### Example + To setup the startup configuration you can use the following script: ```shell @@ -79,7 +119,7 @@ startup.xml is placed in the yang-model. Here you can find the content: </hicn-conf> ``` -As can be seen, it contains the leaves of the params in hicn-conf node which is +It contains the leaves of the params in hicn-conf node which is used as the startup configuration. This configuration can be changed through the controller by subscribing which changes the target to the running state. hicn yang model provides a list of RPCs which allows controller to communicate @@ -162,7 +202,7 @@ controler_rpcs_instances.xml in the yang-model. Here you can find the content: </punting-del> ``` -## Run the plugin +#### Run the plugin Firstly, verify the plugin and binary libraries are located correctly, then run the vpp through (service vpp start). Next, run the sysrepo daemon (sysrepod), @@ -171,7 +211,7 @@ sysrepo plugin (sysrepo-plugind), for debug mode: sysrep-plugind -d -l 4 which runs with high verbosity. Now, the hicn sysrepo plugin is loaded. Then, run the netopeer2-server which serves as NETCONF server. -## Connect from netopeer2-cli +#### Connect from netopeer2-cli In order to connect through the netopeer client run the netopeer2-cli. Then, follow these steps: @@ -198,7 +238,7 @@ You can modify the configuration but it needs an xml configuration input - user-rpc (you can call one of the rpc proposed by hicn model but it needs an xml input) -## Connect from OpenDaylight (ODL) controller +#### Connect from OpenDaylight (ODL) controller In order to connect through the OpenDaylight follow these procedure: @@ -233,7 +273,7 @@ POST <http://localhost:8181/restconf/operations/network-topology:network-topolog The body can be used the same as edit-config in netopeer2-cli. -## Connect from Network Services Orchestrator (NSO) +#### Connect from Cisco Network Services Orchestrator (NSO) To connect NSO to the netopeer2-server, first, you need to write a NED package for your device. The procedure to create NED for hicn is explained in the @@ -258,4 +298,69 @@ At this point, we are able to connect to the remote device. ## Release note -The current version is compatible with the 20.01 VPP stable and sysrepo devel.
\ No newline at end of file +The current version is compatible with the 20.01 VPP stable and sysrepo devel. + +## Routing plugin for VPP and FRRouting for OSPF6 + +This document describes how to configure the VPP with hicn_router +plugin and FRR to enable the OSPF protocol. The VPP and FRR +are configured in a docker file. + +### DPDK configuration on host machine + +```text +- Install and configure DPDK +- make install T=x86_64-native-linux-gcc && cd x86_64-native-linux-gcc && sudo make install + - modprobe uio + - modprobe uio_pci_generic + - dpdk-devbind --status + - the PCIe number of the desired device can be observed ("xxx") + - sudo dpdk-devbind -b uio_pci_generic "xxx" +``` + +### VPP configuration + +```text +- Run and configure the VPP (hICN router plugin is required to be installed in VPP) + - set int state TenGigabitEtherneta/0/0 up + - set int ip address TenGigabitEtherneta/0/0 a001::1/24 + - create loopback interface + - set interface state loop0 up + - set interface ip address loop0 b001::1/128 + - enable tap-inject # This creates the taps by router plugin + - show tap-inject # This shows the created taps + - ip mroute add ff02::/64 via local Forward # ff02:: is multicast ip address + - ip mroute add ff02::/64 via TenGigabitEtherneta/0/0 Accept + - ip mroute add ff02::/64 via loop0 Accept +``` + +```text +- Setup the tap interface + - ip addr add a001::1/24 dev vpp0 + - ip addr add b001::1/128 dev vpp1 + - ip link set dev vpp0 up + - ip link set dev vpp1 up +``` + +### FRR configuration + +Install FRR in Ubuntu 18 LTS: +<http://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-ubuntu1804.html> + +```text +- Run and configure FRRouting (ospf) + - /usr/lib/frr/frrinit.sh start & + - vtysh + - configure terminal + - router ospf6 + - area 0.0.0.0 range a001::1/24 + - area 0.0.0.0 range b001::1/128 + - interface vpp0 area 0.0.0.0 + - interface vpp1 area 0.0.0.0 + - end + - wr + - add "no ipv6 nd suppress-ra" to the first configurtion part of the /etc/frr/frr.conf +``` + +After the following configuration, the traffic over tap interface can be observered through "tcpdump- i vpp1". +The neighborhood and route can be seen by the "show ipv6 ospf6 neighbor/route". |