Cisco ASR1001 Tungsten Fabric OpenStack VM

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску


Предварительная настройка

Openstack в этом сетапе использует Tungsten Fabric в качестве Core Network Plugin в Neutron.
Подробнее: Настройка Cisco ASR1001X как Edge Router для Tungsten Fabric

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, соообщите.


Создание ВМ по шагам

Дано: только что развернутый опенстек, в качестве внешнего роутреа используется ASR1001X
Требуется: Задеплоить 2 VM с Floating IP


openstack image create

Пример загрузки образа в OpenStack

openstack \
    image create \
    --container-format bare  \
    --disk-format qcow2 \
    --file ~/Downloads/noble-server-cloudimg-amd64.img \
    Ubuntu-24.04

keypair create

Создать пару ключей, если нужно, приватную часть сохранить так как она больше нигде не сохраняется.

openstack keypair create mmazur
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAp4Yv+iyTCrHSMwbPahlGRdSGuuMtG+JPMYdeIhi/QDA4Wvyh
Af/TlBUNkdiYJfOJp8R6xFCOv9wREs5VHlHHk3b3xcl/w8Vtz53G3jYSu/cRV0VY
<skipped>
4vyy0i8k2fkcZooAtU4I60g9GJEWhJLiLaytXcv0XXSralhV6hihICX4SxSL5HCP
DroCuM9W/AI4rK7gyfsMdqhF6yHri8lvVAYiQMHqmvrrS85WenuY
-----END RSA PRIVATE KEY-----

Публичная сеть

openstack network create

 openstack network create --external public
  • --external public - сеть внешняя, использует для Floating IPs и будет маршрутизироваться наружу, за пределы OpenStack

openstack subnet create

Сабнет определяет диапазон адресов

openstack subnet create \
     --network public \
     --subnet-range 10.170.6.0/24 \
     --allocation-pool start=10.170.6.201,end=10.170.6.249 \
     --dns-nameserver 8.8.8.8 \
     --gateway none \
     public-subnet

Приватная сеть

openstack network create internal

 openstack network create internal

openstack subnet create

 openstack subnet create \
    --subnet-range 192.168.77.0/24 \
    --network internal \
    --dns-nameserver 8.8.8.8 \
    internal-subnet

+----------------------+--------------------------------------+
| Field                | Value                                |
+----------------------+--------------------------------------+
| allocation_pools     | 192.168.77.2-192.168.77.254          |
| cidr                 | 192.168.77.0/24                      |
| created_at           | 2025-08-18T14:00:35.578348           |
| description          | None                                 |
| dns_nameservers      | 8.8.8.8                              |
| dns_publish_fixed_ip | None                                 |
| enable_dhcp          | True                                 |
| gateway_ip           | 192.168.77.1                         |
| host_routes          |                                      |
| id                   | 06488205-7fa6-416c-accb-d6cdc514ae13 |
| ip_version           | 4                                    |
| ipv6_address_mode    | None                                 |
| ipv6_ra_mode         | None                                 |
| name                 | internal-subnet                      |
| network_id           | 8546fd5c-f9bc-4521-8f46-f54f42a5491d |
| project_id           | f39e087061ea48378c9c68348eebbb59     |
| revision_number      | None                                 |
| segment_id           | None                                 |
| service_types        | None                                 |
| subnetpool_id        | None                                 |
| tags                 |                                      |
| updated_at           | 2025-08-18T14:00:35.578348           |
+----------------------+--------------------------------------+

router

openstack router create

 openstack router create rtr01

set external-gateway

openstack router set --external-gateway public rtr01
Вывод пустой

openstack router add subnet

openstack router add subnet rtr01 internal-subnet

openstack security group

openstack security group create

openstack security group create icmp_ssh

openstack security group rule create

openstack security group rule create \
     --remote-ip 0.0.0.0/0 \
     --protocol icmp \
     icmp_ssh
openstack security group rule create \
    --remote-ip 0.0.0.0/0 \
    --protocol tcp \
    --dst-port 22 \
    icmp_ssh

openstack server create (Cirros)

openstack server create \
    --flavor m1.small \
    --image Cirros-6.0.raw \
    --network internal \
    --security-group icmp_ssh \
    test-01
openstack server create \
    --flavor m1.small \
    --image Cirros-6.0.raw \
    --network internal \
    --security-group icmp_ssh \
    test-02

openstack floating

openstack floating ip create public

openstack server add floating ip

openstack server add floating ip test-01 10.170.6.202

SR-IOV

Простой случай - Access в сторонй VM

SR-IOV openstack network create

openstack \
  network create \
  --enable-port-security \
  --provider-network-type vlan \
  --provider-physical-network sriovnet0  \
  --provider-segment  101 \
  sriov-vlan101
  • --provider-network-type vlan ???
  • --provider-physical-network sriovnet0 ???
  • --provider-segment 100 ???

SR-IOV openstack subnet create

openstack \
  subnet create \
  --network  sriov-vlan101 \
  --no-dhcp \
  --ip-version 4 \
  --gateway none \
  --subnet-range 172.16.64.0/24 \
  sriov-vlan101-subnet01

SR-IOV openstack port create

openstack \
  port create \
    --network sriov-vlan101 \
    --enable-port-security \
    --fixed-ip subnet=sriov-vlan101-subnet01,ip-address=172.16.64.3 \
    --vnic-type direct \
    sriov-vlan101-subnet01-port01

openstack server add port

openstack server add port ubuntu-test-01 sriov-vlan101-subnet01-port01

После того как порт "прикреплен" к серверу, можно изучить его свойства

Подробности порта

openstack port show sriov-vlan101-subnet01-port01 -c binding_profile -c binding_vif_details  -f json

Ниже видно следующее

{
  "binding_profile": {
    "vf_num": 62,
    "capabilities": [
      "rx",
      "tx",
      "sg",
      "tso",
      "gso",
      "gro",
      "rxvlan",
      "txvlan",
      "txudptnl"
    ],
    "pf_mac_address": "00:e0:ed:da:5c:8e",
    "physical_network": "sriovnet0",
    "pci_slot": "0000:06:1f.5",
    "pci_vendor_info": "8086:10ed"
  },
  "binding_vif_details": {
    "port_filter": true,
    "vlan": "101"
  }
}
  • vf_num: 62, номер виртуальной функции
  • pf_mac_address: 00:e0:ed:da:5c:8e - это мак адрес корневого устройства, а не виртуальной функции
7: enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:e0:ed:da:5c:8e brd ff:ff:ff:ff:ff:ff
  • physical_network: sriovnet0 - имя физической сети, описанной в конфигурации нейтрона, куда привязаны сетевые карты
  • pci_slot: "0000:06:1f.5" - Адрес на шине PCI, что там "сидит" можно увидеть lspci -s 06:1f.5 -vv и извлечь имя устройства ls -l /sys/bus/pci/devices/0000:06:1f.5/net
  • pci_vendor_info: 8086:10ed Ведор (то же самое покажет например lspci -s 06:1f.5 -mm -nn
  • port_filter: true
  • vlan: 101 Номер Vlan

lspci -s

Зная PCI ID можно получить информацию об устройстве

lspci -s 06:1f.5 -vv
06:1f.5 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
	Subsystem: Intel Corporation 82599 Ethernet Controller Virtual Function
	Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	IOMMU group: 159
	Region 0: Memory at d02f8000 (64-bit, prefetchable) [virtual] [size=16K]
	Region 3: Memory at d03f8000 (64-bit, prefetchable) [virtual] [size=16K]
	Capabilities: [70] MSI-X: Enable+ Count=3 Masked-
		Vector table: BAR=3 offset=00000000
		PBA: BAR=3 offset=00002000
	Capabilities: [a0] Express (v0) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset- SlotPowerLimit 0.000W
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed unknown, Width x0, ASPM not supported
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed unknown (ok), Width x0 (ok)
			TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		AERCap:	First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap- ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [150 v1] Alternative Routing-ID Interpretation (ARI)
		ARICap:	MFVC- ACS-, Next Function: 0
		ARICtl:	MFVC- ACS-, Function Group: 0
	Kernel driver in use: ixgbevf
	Kernel modules: ixgbevf

ip link show

А так же он настройках виртуальной функции

enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:e0:ed:da:5c:8e brd ff:ff:ff:ff:ff:ff
    vf 0     link/ether 36:b8:ac:28:5a:83 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
<skipped>
    vf 62     link/ether 02:70:9d:70:5c:7c brd ff:ff:ff:ff:ff:ff, vlan 101, spoof checking on, link-state auto, trust off, query_rss off

Тут вижно что:

  • vf 62
  • 02:70:9d:70:5c:7c
  • vlan 101
  • spoof checking on
  • trust off

Вид "изунтри" виртуальной машины


openstack port set --disable-port-security --binding-profile trusted=true test-sriov01-sriov_port_1-manual