示例:在 NFX250 下一代设备上使用自定义网桥配置服务链
此示例说明如何使用自定义网桥配置服务链。
要求
此示例使用运行 Junos OS 19.1R1 版的 NFX250 NextGen 设备。
概述
默认系统网桥为 Open vSwitch (OVS)。OVS 网桥是 VLAN 感知的系统网桥,充当 VNF 和 FPC 连接的网络功能虚拟化 (NFV) 背板。但是,您可以选择根据需要创建自定义网桥。此示例说明如何使用自定义网桥配置服务链。
配置
配置 VLAN 和创建自定义网桥
分步过程
为 LAN 端接口配置 VLAN:
user@host# set vlans vlan100 vlan-id 100 user@host# set vlans vlan200 vlan-id 200
创建自定义网桥:
user@host# set vmhost vlans custom-br vlan-id none
将第 3 层接口映射到自定义网桥:
user@host# set vmhost virtualization-options interfaces ge-1/0/2 mapping vlan custom-br
配置第 2 层数据路径
分步过程
配置 LAN 端前面板端口并将其添加到 LAN 端 VLAN。
user@host# set interfaces ge-0/0/0 unit 0 family ethernet-switching interface-mode trunk user@host# set interfaces ge-0/0/0 unit 0 family ethernet-switching vlan members vlan100 user@host# set interfaces xe-0/0/12 unit 0 family ethernet-switching interface-mode trunk user@host# set interfaces xe-0/0/12 unit 0 family ethernet-switching vlan members vlan200
将面向内部的接口配置为中继端口,并将其添加到 LAN 端 VLAN。面向内部的接口通常是中继端口,因为它们必须支持来自多个前面板端口和 VLAN 的流量。
user@host# set interfaces sxe-0/0/0 unit 0 family ethernet-switching interface-mode trunk user@host# set interfaces sxe-0/0/0 unit 0 family ethernet-switching vlan members vlan100 user@host# set interfaces sxe-0/0/1 unit 0 family ethernet-switching interface-mode trunk user@host# set interfaces sxe-0/0/1 unit 0 family ethernet-switching vlan members vlan200
配置第 3 层数据路径
分步过程
在 ge-1/0/0 上配置 VLAN 标记:
user@host# set interfaces ge-1/0/0 vlan-tagging user@host# set interfaces ge-1/0/0 unit 0 vlan-id 100 user@host# set interfaces ge-1/0/0 unit 0 family inet address 192.0.2.1/24
在 ge-1/0/2 上配置 VLAN 标记:
user@host# set interfaces ge-1/0/2 vlan-tagging user@host# set interfaces ge-1/0/2 unit 0 vlan-id 200 user@host# set interfaces ge-1/0/2 unit 0 family inet address 203.0.113.2/24
配置 VNF
分步过程
此示例使用第 2 层 VNF。
启动 VNF:
user@host# set virtual-network-functions vnf-name image /var/public/centos-updated1.img user@host# set virtual-network-functions vnf-name image image-type raw
指定 VNF 所需的 CPU 数量:
user@host# set virtual-network-functions vnf-name virtual-cpu count 1
将虚拟 CPU 固定到物理 CPU:
user@host# set virtual-network-functions vnf-name virtual-cpu 0 physical-cpu 2
配置 vmhost 实例:
user@host# set vmhost vlans vlan200 vlan-id 200
在自定义 OVS 网桥上创建 VNF 接口:
user@host# set virtual-network-functions vnf-name interfaces eth2 mapping vlan members custom-br
在 OVS 网桥上创建 VNF 接口:
user@host# set virtual-network-functions vnf-name interfaces eth3 mapping vlan members vlan200
指定 VNF 的内存分配:
user@host# set virtual-network-functions vnf-name memory size 1048576
注意:将 VNF 接口映射到自定义网桥时,应重新启动 VNF 才能使映射生效。
验证配置
验证控制平面配置
目的
验证控制平面配置:
行动
验证是否已配置 VLAN:
user@host > show vlans Routing instance VLAN name Tag Interfaces default-switch default 1 default-switch vlan100 100 ge-0/0/0.0* sxe-0/0/0.0* default-switch vlan200 200 sxe-0/0/1.0* xe-0/0/12.0*
验证虚拟机主机 VLAN:
user@host> show vmhost vlans Routing instance VLAN name Tag Interfaces vmhost custom-br vnf-name_eth2.0 vmhost vlan200 200 vnf-name_eth3.0
验证 VNF 是否正常运行。该
State
字段显示Running
的是已启动的 VNF。user@host> show virtual-network-functions ID Name State Liveliness -------------------------------------------------------------------------------- 4 vnf-name Running alive 1 vjunos0 Running alive
VNF 字段指示
Liveliness
是否可以从 Junos 控制平面 (JCP) 访问 VNF 的内部管理 IP 地址。要查看 VNF 的更多详细信息:
user@host> show virtual-network-functions vnf-name detail Virtual Network Function Information ------------------------------------ Id: 4 Name: vnf-name State: Running Liveliness: alive IP Address: 192.0.2.100 VCPUs: 1 Maximum Memory: 1048576 KiB Used Memory: 1048576 KiB Used 1G Hugepages: 0 Used 2M Hugepages: 0 Error: None
验证数据平面配置
目的
验证数据平面配置。
行动
验证第 2 层 (ge-0/0/x) 和第 3 层 (ge-1/0/x) 接口的状态。
user@host > show interfaces interface-name statistics
例如:
user@host > show interfaces ge-0/0/0 statistics Physical interface: ge-0/0/0, Enabled, Physical link is Up Interface index: 149, SNMP ifIndex: 517 Link-level type: Ethernet, MTU: 1514, LAN-PHY mode, Link-mode: Full-duplex, Speed: 1000mbps, Duplex: Full-Duplex, BPDU Error: None, Loop Detect PDU Error: None, Ethernet-Switching Error: None, MAC-REWRITE Error: None, Loopback: Disabled, Source filtering: Disabled, Flow control: Enabled, Auto-negotiation: Enabled, Remote fault: Online, IEEE 802.3az Energy Efficient Ethernet: Disabled, Auto-MDIX: Enabled Device flags : Present Running Interface flags: SNMP-Traps Internal: 0x4000 Link flags : None CoS queues : 12 supported, 12 maximum usable queues Current address: 30:7c:5e:4c:78:03, Hardware address: 30:7c:5e:4c:78:03 Last flapped : 2018-11-26 11:03:32 UTC (04:25:39 ago) Input rate : 0 bps (0 pps) Output rate : 0 bps (0 pps) Active alarms : None Active defects : None PCS statistics Seconds Bit errors 0 Errored blocks 0 Ethernet FEC statistics Errors FEC Corrected Errors 0 FEC Uncorrected Errors 0 FEC Corrected Errors Rate 0 FEC Uncorrected Errors Rate 0 PRBS Statistics : Disabled Interface transmit statistics: Disabled Logical interface ge-0/0/0.0 (Index 330) (SNMP ifIndex 519) Flags: Up SNMP-Traps 0x24024000 Encapsulation: Ethernet-Bridge Input packets : 0 Output packets: 0 Protocol eth-switch, MTU: 1514 Flags: Trunk-Mode
验证 OVS 和自定义网桥上的接口状态:
user@host > show vmhost network nfv-back-plane Network Name : custom-br Interface : custom-br Type : internal, Link type : Full-Duplex, MAC : 2e:8e:a3:e3:e5:40 MTU : [], Link State :down, Admin State : down IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0 Interface : vnf-name_eth2 Type : dpdkvhostuser, Link type : Full-Duplex, MAC : 00:00:00:00:00:00 MTU : 1500, Link State :down, Admin State : up IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0 Network Name : ovs-sys-br Interface : ovs-sys-br Type : internal, Link type : Full-Duplex, MAC : 66:9c:3f:25:04:40 MTU : [], Link State :down, Admin State : down IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0 Interface : dpdk0 Type : dpdk, Link type : Full-Duplex, MAC : 02:09:c0:1a:c6:ee MTU : [], Link State :up, Admin State : up IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0 Interface : dpdk1 Type : dpdk, Link type : Full-Duplex, MAC : 02:09:c0:7b:6c:47 MTU : [], Link State :up, Admin State : up IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0 Interface : l3_h_ge_1_0_0 Type : dpdkvhostuser, Link type : Full-Duplex, MAC : 00:00:00:00:00:00 MTU : [], Link State :down, Admin State : up IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0 Interface : l3_h_ge_1_0_1 Type : dpdkvhostuser, Link type : Full-Duplex, MAC : 00:00:00:00:00:00 MTU : [], Link State :down, Admin State : up IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0 Interface : l3_h_ge_1_0_2 Type : dpdkvhostuser, Link type : Full-Duplex, MAC : 00:00:00:00:00:00 MTU : [], Link State :down, Admin State : up IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0 Interface : vnf-name_eth3 Type : dpdkvhostuser, Link type : Full-Duplex, MAC : 00:00:00:00:00:00 MTU : 1500, Link State :down, Admin State : up IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 0 Tx-drops : 0 Tx-errors : 0