天天看點

《Cisco VPP SFC》2、NSH_SFC 安裝SFC概念NSH 概念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:

2.3、設定系統預設jdk:

2.4、價差java是否安裝成功:

java -version
javac -version
           

3、進入nsh_sfc/nsh-plugin源碼目錄,執行build.sh腳本,出現如下錯誤:

《Cisco VPP SFC》2、NSH_SFC 安裝SFC概念NSH 概念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/
  remotes/origin/stable/
  remotes/origin/stable/
  remotes/origin/stable/
  remotes/origin/stable/
  remotes/origin/stable/
  remotes/origin/stable/
root@ubuntu:/home/nsh_sfc# git checkout stable/1801
           

切換目前分支到1801與vpp版本對應上,再執行build.sh腳本,編譯通過:

《Cisco VPP SFC》2、NSH_SFC 安裝SFC概念NSH 概念NSH_SFC安裝:

4、進入nsh_sfc/nsh-plugin/build/java/jvpp目錄編譯java子產品并安裝:

cd build/java/jvpp
mvn package
mvn install:install-file -Dfile=./target/nsh-sfc-.jar -Dgrounpld=io.fd.vpp -DartifactId=nsh-sfc -Dversion=-SNAPSHOT -Dpackaging=jar
           
《Cisco VPP SFC》2、NSH_SFC 安裝SFC概念NSH 概念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/