中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tungsten Fabric入門寶典丨關于服務鏈、BGPaaS及其它

發布時間:2020-08-19 05:33:02 來源:ITPUB博客 閱讀:223 作者:TF中文社區 欄目:互聯網科技

Tungsten Fabric入門寶典系列文章 ,來自技術大牛傾囊相授的實踐經驗,由TF中文社區為您編譯呈現,旨在幫助新手深入理解TF的運行、安裝、集成、調試等全流程。如果您有相關經驗或疑問,歡迎與我們互動,并與社區極客們進一步交流。更多TF技術文章,請點擊公號底部按鈕>學習>文章合集。

作者:Tatsuya Naganawa  譯者:TF編譯組



   服務鏈

盡管有很多用例,但NFVI將成為Tungsten Fabric最突出的用例之一,這是由于NFVI許多獨特的功能,使其成為實現軟件的基礎。

其中最著名的功能就是服務鏈(service-chain),該功能可在不更改VNF IP的情況下管理流量,從而可以實時插入和刪除VNF。

由于vRouter可以在內部包含VRF,因此它可以在VNF的每個接口上都具有VRF,并且可以通過虛假的下一跳處理流量,例如發送給下一個VNF。

Tungsten Fabric的服務鏈是通過這種方式實現的,因此一旦創建服務鏈,你將看到很多個VRF被創建,并且將插入下一跳,將流量發送到服務鏈中的下一個VNF。

  • VRF(在control的術語中是routing-instance)被命名為domain-name:project-name:virtual-network-name:routing-instance-name。在大多數情況下,virtual-network-name和routing-instance-name是相同的,但是服務鏈是該規則的一個例外


要設置一個服務鏈示例,可以按照以下視頻中的步驟進行操作:

  • https://www.youtube.com/watch?v=h6qOqsPtQ7M


之后,你可以看到左側virtual-network具有右側virtual-network的前綴,并帶有更新的下一跳,該前綴指向VNF的左側接口,對于右側virtual-network反之亦然。

注意:據我所知,在使用服務鏈v2時,僅使用“左”和“右”接口進行服務鏈計算,而“管理”和“其它”接口則被忽略

   L2, L3, NAT

有許多具有不同流量類型集的VNF,因此NFVI的SDN也需要支持多種流量類型。

為此,Tungsten Fabric服務鏈支持三種流量類型,即l2,l3,nat。

l2服務鏈(也稱為透明服務鏈)可以與透明VNF一起使用,透明VNF與網橋具有相似的功能,并基于arp響應發送報文。

盡管vRouter始終使用相同的mac地址(00:01:00:5e:00:00),

  • https://github.com/Juniper/contrail-controller/wiki/Contrail-VRouter-ARP-Processing#vrouter-mac-address


但這種情況是該規則的例外,VNF左側的vRouter使用dest mac: 2:0:0:0:0:2發送流量,而VNF右側的vRouter使用dest mac 1:0:0:0:0:1發送流量。因此,bridge-type的VNF會將流量發送到其接口的另一側。

請注意,即使使用l2 vnf,左側virtual-network和右側virtual-network也需要具有不同的子網。這可能有點反常,但是由于vRouter可以進行l3路由,因此可以使用vRouter - L2VNF - vRouter,就像router - L2VNF – router是可以接受的一樣。

另一方面,l3服務鏈(也稱為in-network服務鏈)將在不更改mac地址的情況下將流量發送到VNF,因為在這種情況下,VNF將根據其目標IP進行路由(類似于路由器的行為)。除mac地址外,其行為與l2的情況幾乎相同。

Nat服務鏈類似于l3服務鏈,因為它希望VNF根據目標IP進行路由。一個很大的區別是,它將右側virtual-network的前綴復制到左側virtual-network,但是不會將左側virtual-network的前綴復制到右側virtual-network!

  • 因此左/右接口需要仔細選擇,因為在這種情況下它是不對稱的


這種服務鏈形式的典型用例是,在用于Internet訪問的SNAT等情況下,VNF的左側接口具有私網IP,而右側接口具有全局IP。由于私網IP無法導出到Internet,在這種情況下,左側virtual-network的前綴無法復制到右側virtual-network。

   ECMP,多VNF

服務鏈功能還支持ECMP設置,用于規模化部署。

  • 配置基本相同,但需要將多個端口-元組分配給一個服務實例。


在這之后,你會發現,流量將根據5個數據包的5元組進行負載平衡。

多VNF也可以設置,如果將多個服務實例分配到一個網絡策略上,則可以設置多VNF。

當使用l3服務鏈時,雖然可能會有反直覺,但需要將兩個VNF分配給同一個虛擬網絡。

  • 因為所有來自VNF的數據包都會在服務鏈的獨立VRF中,所以它們可以有相同的子網。


也支持同時使用l2和l3,不過在這種情況下,需要將l2 vnf分配到不同的虛擬網絡中,其中一個網絡政策是附加的。

  • 在這篇博文中描述了設置示例: https://tungsten.io/building-and-testing-layer2-service-images-for-opencontrail/


   子接口

這也是NFVI中使用的功能,因此這里我也要提一下。

VNF會基于各種原因發送帶標簽的報文。在這種情況下,如果vlan標簽不同,則vRouter可以使用不同的VRF。

  • 類似于Junos術語“set routing-instances routing-interface-name interface xxx”中的子接口


這里描述了具體操作:
https://www.youtube.com/watch?v=ANhBQe_DS2E

   DPDK

vRouter具有使用DPDK與物理NIC交互的功能。

它將經常用于NFV類型的部署,因為基于純Linux kernel的網絡堆棧,要獲得與典型VNF(本身可能使用DPDK或類似技術)相當的轉發性能仍然不容易。

  • https://blog.cloudflare.com/how-to-receive-a-million-packets/


要通過ansible-deployer啟用此功能,需要設置這些參數。

bms1:
  roles:
    vrouter:
      AGENT_MODE: dpdk
      CPU_CORE_MASK: “0xe”  ## coremask for forwarding core ( Note: please don't include first core in numa to reach optimal performance :( )
      SERVICE_CORE_MASK: “0x1”  ## this is for non-forwarding thread, so isolcpu for this core is not needed
      DPDK_CTRL_THREAD_MASK: “0x1”  ## same as SERVICE_CORE_MASK
      DPDK_UIO_DRIVER: uio_pci_generic  ## uio driver name
      HUGE_PAGES: 16000  ## number of 2MB hugepages, it can be smaller


當設置為AGENT_MODE: dpdk時,ansible-deployer將會安裝一些容器,例如vrouter-dpdk——這是一個針對物理NIC運行PMD的進程。因此在這種情況下,將基于DPDK實現從vRouter到物理NIC的轉發。

注意:

1. 由于vRouter鏈接到PMD的數量有限,因此要使用某些特定的NIC,可能需要重新構建vRouter

  • https://github.com/Juniper/contrail-vrouter/blob/master/SConscript#L321


2. 對于某些NIC(例如XL710),不能使用uio_pci_generic。在這種情況下,需要改用vfio-pci

  • https://doc.dpdk.org/guides-18.05/rel_notes/known_issues.html#uio-pci-generic-module-bind-failed-in-x710-xl710-xxv710


由于在這種情況下,vRouter的轉發平面不在kernel空間中,因此無法使用tap設備從VM獲取報文。為此,QEMU具有“vhostuser”的功能,用于在用戶空間中將報文發送到dpdk進程。當vRouter配置為AGENT_MODE: dpdk時,nova-vif-driver將自動創建vhostuser vif,而不是創建用于kernel vRouter的tap vif。

  • 從VM方面看,它看起來仍然像virtio,因此可以使用常規的virtio驅動程序與DPDK vRouter進行通信。


一個警告是,當QEMU將要連接到vhostuser界面時,qemu還需要為此提供巨大的支持。使用OpenStack時,此knob將為每個VM分配大量頁面。

Tungsten Fabric入門寶典丨關于服務鏈、BGPaaS及其它

為了達到最佳性能,kernel和dpdk進程本身都有很多調整參數。對我來說,在kernel方面以下兩篇文章是最有幫助的。

  • https://www.redhat.com/en/blog/tuning-zero-packet-loss-red-hat-openstack-platform-part-1

  • https://www.redhat.com/en/blog/going-full-deterministic-using-real-time-openstack

  • cat /proc/sched_debug也可用于查看核心隔離是否運行良好


而在vRouter方面,這一點可能需要注意。

1. vRouter將使用基于5-tuple的核心負載均衡,因此為了獲得最佳性能,可能需要增加流的數量

  • https://www.openvswitch.org/support/ovscon2018/6/0940-yang.pptx


注意:當使用vrouter-dpdk時,使用untagged數據包可能會帶來更多的吞吐量(這意味著在不使用--vlan_tci的情況下提供vrouter-dpdk)

   BGPaaS

BGPaaS也是Tungsten Fabric中比較獨特的功能,該功能用于在VNF中插入VRF的路由。

  • 從某種意義上說,它有點類似于AWS VPN網關,因為它會自動從VPC路由表中獲取路由


從操作角度來看,使用vRouter的網關IP和服務IP,vRouter中的VNF將具有IPV4 bgp對等方。

一個值得注意的用例是設置ipsec VNF,它可以通過VPN網關連接到公共云。在這種情況下,VPC的路由表將被復制到VNF,并將通過BGPaaS復制到vRouter的VRF,因此,當在公共云的VPC中新添加修改的子網時,所有前綴均會被正確分配。

   Service Mesh

Istio運行良好,多集群也是其中很有趣的主題。

  • https://www.youtube.com/watch?v=VSNc9qd2poA


  • https://istio.io/docs/setup/kubernetes/install/multicluster/vpn/





Tungsten Fabric入門寶典系列文章——


  1. 首次啟動和運行指南

  2. TF組件的七種“武器”

  3. 編排器集成

  4. 關于安裝的那些事(上)

  5. 關于安裝的那些事(下)

  6. 主流監控系統工具的集成

  7. 開始第二天的工作

  8. 8個典型故障及排查Tips

  9. 關于集群更新的那些事

  10. 說說L3VPN及EVPN集成


 Tungsten Fabric 架構解析 系列文章——


  • 第一篇: TF主要特點和用例

  •   第二篇: TF怎么運作

  •    第三篇:詳解vRouter體系結構

  •    第四篇: TF的服務鏈

  •   第五篇: vRouter的部署選項

  •    第六篇: TF如何收集、分析、部署?

  •    第七篇: TF如何編排

  •   第八篇: TF支持API一覽

  •   第九篇: TF如何連接到物理網絡

  •   第十篇: TF基于應用程序的安全策略

Tungsten Fabric入門寶典丨關于服務鏈、BGPaaS及其它

Tungsten Fabric入門寶典丨關于服務鏈、BGPaaS及其它

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呼伦贝尔市| 兴仁县| 吴堡县| 南靖县| 商南县| 信阳市| 南雄市| 南岸区| 安吉县| 兴隆县| 六盘水市| 金阳县| 乳山市| 苏尼特左旗| 鲜城| 东山县| 沅江市| 仪征市| 荔波县| 赞皇县| 霍林郭勒市| 凤庆县| 文安县| 广水市| 康定县| 科技| 紫云| 侯马市| 句容市| 肥东县| 长宁区| 遂平县| 夏邑县| 舒城县| 阜新| 定边县| 沅江市| 厦门市| 扶风县| 泸定县| 法库县|