《Cisco VPP SFC》2、NSH_SFC 安装

原文地址:https://blog.csdn.net/u010827484/article/details/81031539

SFC概念

SFC是Service Function Chain的缩写,直译过来是服务功能链,通常简称服务链。简单地说把服务功能联接起来提供的一个有序的服务组合叫做服务链。SFC的延伸的含义包括服务链的定义,服务链的部署,基于policy的traffic steering,重点是在chain和策略,而不是在某个具体的服务功能service function。

在SFC中service是服务的泛指, service 可以是传统的网络服务,例如 firewall, load balancer,NAT等,也可以是专用的服务 比如 squid HTTP header manipulation,广义上说,服务是为了满足某种业务需要对数据进行存取,监控或者是按照一些特定的规则对数据进行处理。这里的服务主要指的是网络服务(networking service)。

基本术语
Service Functions
SF提供特定的网络服务,例如Firewall,NAT,QoS,DPI等。在OPNFV中,SF指提供虚拟网络功能的设备。

Service Function Forwarders
SFF是Service Chaining的核心组件。SFF的职责是引导Traffic到SF或是下一个compute节点,可以通过SDN控制器例如ODL对SFF进行编程。

Service Chains
在ODL的SFC项目中,Service Chains由如下组件构成:

  • SFC:Service Chain Function由多个有顺序的SF组成
  • SFP:Service ChainPath一个SFC的实例。
  • RSP:Rendered Service Path是实际Service Chain的实现。通过SFP和SFC来创建一个Service Chain。如果SFP没有提供SF的实例,那么根据SFs算法选择一个,当创建完RSP后,ODL将OpenFlow流表下发到SF上。

Classifiers
Classifier是进入Service Chain的第一个点,Classifier映射Traffic进入Service Chain,并将Traffic封装到VXLAN-GPE-NSH tunnel中。可以通过Matching来实现Classifier,例如简单的如ACL,复杂的如PCRF,DPI等。

SFC RFC7498

NSH 概念

Network Service Header (NSH) imposed on
packets or frames to realize Service Function Paths (SFPs). The NSH
also provides a mechanism for metadata exchange along the
instantiated service paths. The NSH is the Service Function Chaining
(SFC) encapsulation required to support the SFC architecture (defined
in RFC 7665).

NSH 是一种协议主要在数据包里面加上相应的头信息实现SFP(Service Function Paths)功能,NSH 还提供了不同实例之间交换元数据的通道。简单来说NSH就是提供一种网络数据包封装技术,用来在SFC架构中提供服务链的协议。SFC 参考 RFC7665。
NSH FRC8300

为什么需要NSH
如果没有NSH,Service Chain会遇到如下问题:

  • 1.当前的Chian的实现,都是基于VLAN或是Routing的静态配置的。
  • 2.在Service chain形成之后,数据业务的路径和网络的拓扑都不能动态的修改
  • 3.不能动态的插入新的业务到Chian中
  • 4.不能提供端到端的可视化,OAM,trouble shooting和性能管理
  • 5.SF之间彼此独立,不能共享Path和Metadata信息

NSH_SFC安装:

1、下载NSH_SFC源码:
git clone https://gerrit.fd.io/r/p/nsh_sfc.git
2、安装java,并配置java环境:
2.1、添加ppa:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

2.2、安装oracle-java-installer:

sudo apt-get install oracle-java8-installer

2.3、设置系统默认jdk:

sudo update-java-alternatives -s java-8-oracle

2.4、价差java是否安装成功:

java -version
javac -version

3、进入nsh_sfc/nsh-plugin源码目录,执行build.sh脚本,出现如下错误:
nsh-sfc编译出错
提示没有nsh.api.json文件。
查看git分支:

root@ubuntu:/home/nsh_sfc# git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/stable/1609
  remotes/origin/stable/1701
  remotes/origin/stable/1704
  remotes/origin/stable/1707
  remotes/origin/stable/1710
  remotes/origin/stable/1801
  remotes/origin/stable/1804
root@ubuntu:/home/nsh_sfc# git checkout stable/1801

切换当前分支到1801与vpp版本对应上,再执行build.sh脚本,编译通过:
编译通过
4、进入nsh_sfc/nsh-plugin/build/java/jvpp目录编译java模块并安装:

cd build/java/jvpp
mvn package
mvn install:install-file -Dfile=./target/nsh-sfc-18.01.jar -Dgrounpld=io.fd.vpp -DartifactId=nsh-sfc -Dversion=18.01-SNAPSHOT -Dpackaging=jar

安装nsh-sfc
拷贝nsh插件到系统环境:

cp ./build/.libs/nsh_plugin.so /usr/lib/vpp_plugins/
cp ./build/.libs/nsh_test_plugin.so /usr/lib/vpp_api_test_plugins/

参考:
https://www.sdnlab.com/17625.html
https://docs.google.com/presentation/d/18AGaiysVgHOd_fIHVpObMO7zUkMjJGOQ98CUwkxU1xo/edit#slide=id.p20
https://datatracker.ietf.org/doc/rfc7498/?include_text=1
https://datatracker.ietf.org/doc/rfc8300/

猜你喜欢

转载自blog.csdn.net/u010827484/article/details/81031539
今日推荐