【88】SR-IOV

29 篇文章 74 订阅
订阅专栏

    这篇文章已经写完半年,最近半年一直在适配各种国产CPU,一直没有时间整理。最近总算是把所有的国产CPU都适配完了。

0、前言

    为了充分利用硬件资源,需要使用虚拟化技术。为了更准确地了解SR-IOV,我们来看一下SR-IOV产生的背景和研究历史。

1、传统的系统

传统的系统主要有下面的设备组成:

2、带有VI的系统

    后面提高硬件资源利用效率,在不修改硬件的前提,在hardware和SI之间引入了VI(virtualiztion Intermediary),由软件来模拟硬件行为,在VI之上就是很多虚拟机。

    VI独占下面的hardware资源,然后为每个SI抽象出硬件。由于IO操作需要通过VI处理,性能会受到显著影响,并且会增加系统资源开销。

    为了减少系统资源开销,引入了SR-IOV技术。

3、SR-IOV系统

    PF和VF都是被物理机的OS枚举的,VM访问VF BAR的时候使用的GVA (Guest Virtual Address), 这个IO操作会触发MMU把GVA翻译为GPA(Guest Physical Address), 这个GPA其实就是VM看到的VF的BAR地址空间,随后GPA会经过EPT(Expended Page Table)被翻译成HPA(Host Physical Address),这个HPA就是host上,或者说物理上的VF的BAR地址空间。

4、拥有SR-IOV的单PF设备

为了减少硬件资源,每个VF和PF share配置空间。

(1)VF使用和PF一样的配置header type。

(2)PF内的所有VF share VF BAR set,并且share SR-IOV寄存器的memory space enable(MSE)。

(3)InitialVFs和TotalVFs字段代表属于改PFVF的最大数量。如果不支持VF migration,那么TotalVFsInitialVFs应该一样。如果支持VF migration,那么TotalVFs代表可以被分配给该PF的数量,InitialVFs代表分配给该PF已经初始化的VF的数量。

    每个PF和VF会分配唯一的Routing ID(bus、device、function)。

    所有的PCIe和SR-IOV的配置访问只有VI或者SR-PCIM可以访问。

    VF包含的non-shared的物理资源(例如work queue,data buffer)等是SI直接访问的,不需要通过VI或者SR-PCIM的干预。

5、SR-IOV初始化和资源分配

5.1配置VF的BAR

    System Page Size字段定义了system映射VFmemory地址时的page size。如果system page size bit n1,那么属于该PF的所有VF支持2^(n+12)次方page size对齐。

    当system page size确定后,属于PFVF需要把BAR资源和system page size对齐

    写system page size时,VF enable bit应该为0。 

    iov.c

    在PF枚举的初始化PCIe各种cap的时候会调用sriov_init初始化SR-IOVcap

pci_device_add->pci_init_capabilities->pci_iov_init->sriov_init

    BARb VFv starting address = VF BARb + (v - 1) x (VF BARb aperture size)

    对于同一个PF下的不同VF的同一个BARnmemory空间上是连续的。因此,PFSR-IOV寄存器只需要记录第一个VFBAR的地址,其他VFBAR的地址,需要通过上面公式计算。

   我们找一个82599的网卡,enable 2VF后看看PCIe资源

    00:02.0 PCI bridge: Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 2a (rev 07) (prog-if 00 [Normal decode])

    Memory behind bridge: f7c00000-f7ffffff

    Prefetchable memory behind bridge: 00000000f4000000-00000000f43fffff

    Root Port下面预留了4M的地址

 03:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)

  Capabilities: [160 v1] Single Root I/O Virtualization (SR-IOV)

    IOVCap: Migration-, Interrupt Message Number: 000

        IOVCtl: Enable+ Migration- Interrupt- MSE+ ARIHierarchy+

        IOVSta: Migration-

        Initial VFs: 64, Total VFs: 64, Number of VFs: 2, Function Dependency Link: 00

        VF offset: 128, stride: 2, Device ID: 10ed

        Supported Page Size: 00000553, System Page Size: 00000001

        Region 0: Memory at 00000000f4000000 (64-bit, prefetchable)

        Region 3: Memory at 00000000f4100000 (64-bit, prefetchable)

        VF Migration: offset: 00000000, BIR: 0

    PF0Initial VFs: 64表示归属PF0的已经初始化的VF个数是64

    Total VFs: 64, 表示归属PF0的最大VF的个数是64

    Number of VFs: 2表示归属PF0的可用的VF的个数是2

   VF offset: 128表示归属PF01VFrouting IDbus:device.functionoffset,用PF0routing ID+这个字段就是1VFroutingID

    stride: 2表示下1VFrouting ID到前1VFrouting IDoffset

    struct pci_dev *devPF(3:0.0)int vf_idVF的编号:

   

对于第2VF3:10.2)的bus=dev->bus->number + ((dev->dev_fun + dev->sriov->offset + dev->sriov->stride * vf_id) >>8) =3+((0+128+2*1)>>8)=3+0=32vfbus=0x3

    对于第2个VF(3:10.2)的devfun= (dev->dev_fun + dev->sriov->offset + dev->sriov->stride * vf_id) & 0xff = (0 + 128 + 2 * 1) & 0xff =0x822vfdevice=0x10, function=0x2

    Device ID: 10ed:表示SI看到的VFdeviceid

    PF0SR-IOV显示VFBAR0的起始地址是f4000000BAR3的起始地址是f4100000

VFBARVF0,VF1BAR0BAR3都是16K64bit prefetchable的,也就是说PF0VF0- PF0VF63BAR0占用64*16K=1M的大小,地址是f4000000f4000000+64*16K -1= f400 0000+0x10 0000-1= f4000000~F40F FFFF

  PF0VF0- PF0VF63BAR3占用64*16K=1M的大小,PF0VF1的地址是f4100000f4100000+64*16K -1= f4100000+0x10 0000-1= f4100000~F41F FFFF

  03:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)

    Capabilities: [160 v1] Single Root I/O Virtualization (SR-IOV)

        IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy-

        Initial VFs: 64, Total VFs: 64, Number of VFs: 0, Function Dependency Link: 01

        Region 0: Memory at 00000000f4200000 (64-bit, prefetchable)

        Region 3: Memory at 00000000f4300000 (64-bit, prefetchable)

    PF1VF虽然没有使能,但是地址还是预留的。

   PF1VF0- PF0VF63BAR0占用64*16K=1M的大小,地址是f4200000f4200000+64*16K -1= f4000000+0x10 0000-1= f4200000~F42F FFFF

    PF1VF0- PF0VF63BAR3占用64*16K=1M的大小,地址是f4300000f4300000+64*16K -1= f4300000+0x10 0000-1= f4300000~F43F FFFF

    说明不管VF使能与否,RootPort都预留了对应的资源的

     只有当SR-IOVVF EnableVF MSE都为1时,VFmemory空间才可以访问。修改System Page Size会影响VF BAR aperture

6、SR-IOV Reset机制

6.1 SR-IOV Conventional Reset

    Conventional reset将会导致PF和VF回到初始值。Conventional reset会导致PF的SR-IOV Control寄存器的VF Enable比特丢失,因此,Conventional reset后VF就不存在了。

6.2 VF的FLR

    VF的FLR只影响VF的state,不影响配置空间和PCI bus address space。PF的SR-IOV寄存器的VF的BAR和VF memory space enable不受影响,VF Resizable BAR capability 值也不受影响。

    VF一定要支持FLR的,因为VM在probe VF的是会调用FLR(猜测这么做的原因是,VM不知道物理机是否曾经使用过VF,在自己用之前FLR一下,保证VF是初始状态)

vfio_pci_open_device->vfio_pci_core_enable-> pci_try_reset_function-> __pci_reset_function_locked-> pci_reset_fn_methods[m].reset_fn-> pcie_reset_flr-> pcie_flr

cat /sys/bus/pci/devices/0000\:04\:00.0/reset_method 可以查看function支持哪些reset方式。

6.3 PF的FLR

    PF的FLR会影响PF的state,并且SR-IOV寄存器的VF enable也会被影响。也就是说PF发生FLR,对应的VF 不存在了。

    如果VF enable从1变成0,那么PF下面的所有VF都不存在了,VF不能发出PCIe transaction,也不能响应配置空间和memory空间的访问。VF也不会保存任何state(包括sticky的bit)

7、Linux对SR-IOV的支持

3. PCI Express I/O Virtualization Howto — The Linux Kernel documentation

    有多种方式可以使能SR-IOV。

    方式1:PF调用SR-IOV 的API(pci_enable_sriov / pci_disable_sriov)控制使能或者禁止。如果hardware有SR-IOV的cap,loading PF driver可以使能PF和归属于PF的所有VF。有些PF driver需要模块参数来设置enable VF的数量。

  方式2:写sysfs文件系统sriov_numvfs 来使能或者禁止PF归属的VFstruct pci_driver.sriov_configure

echo 'nr_virtfn' > /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_numvfs

7.1 枚举的PF时候初始化PF的SR-IOV capability

pci_device_add->pci_init_capabilities->pci_iov_init->sriov_init

  1. 读取PCI_SRIOV_CTRL,如果VF enable已经置1,则disable,并sleep 1秒
  2. 遍历dev->bus上的所有devcie,赋值给pdev,如果是PF,则跳转到found
  3. 读取PCI_SRIOV_TOTAL_VF,获取total的数量
  4. 设置page size
  5. 遍历SR-IOV的6个bar: PCI_SRIOV_NUM_BARS,赋值给iov的数据结构
  6. 读取PF SR-IOV的PCI_SRIOV_VF_DID,赋值给iov->vf_device
  7. 调用compute_max_vf_buses,计算pf需要消耗的bus数量

7.2 方式一:PF的probe函数使能SR-IOV(PF的probe调用pci_enable_sriov

PF的probe->pci_enable_sriov->sriov_enable->sriov_add_vfs->pci_iov_add_virtfn

7.3 方式一:PF的remove函数disable SR-IOV

PF的remove->sriov_disable->sriov_del_vfs->pci_iov_remove_virtfn

7.4 方式二:使用sys文件系统使能SR-IOV

echo 'nr_virtfn' > /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_numvfs

sriov_numvfs_strore->struct pci_driver.sriov_configure-> pci_enable_sriov->sriov_enable-> sriov_add_vfs->pci_iov_add_virtfn

比如82599的网卡,一开始没有vf的,我们使能2个VF

echo 2 > /sys/bus/pci/devices/0000\:04\:00.0/sriov_numvfs

SR-IOV
ljjshuishou2的博客
02-26 573
SR-IOV SR-IOV是Single Root I/O Virtualization的缩写。 一、SR-IOV是什么? 在虚拟机中,一切皆虚拟。比如网卡,虚拟机看来好像有一个真实网卡,但是这个网卡是宿主机虚拟出来的硬件,也就是一堆软件代码而已,没有真实硬件。 虚拟虽然万能,但是很显然,这一堆代码是需要CPU去执行的!所以,虚拟设备的性能会随着宿主机的性能而改变,另外宿主机由于需要进行数据处理,时延等也产生了。 我们之前也提到过,VT-D这个功能可以将物理的PCI-e设备直接分配给虚拟机,让虚拟机直接控制
【linux-虚拟化】 SR-IOV技术
metaopen的博客
01-25 1944
单根 I/O 虚拟化(SR-IOV)是一种规范,它允许单个 PCI Express(PCIe)设备向主机系统呈现多个独立的 PCI 设备,称为虚拟功能(VF)。提供与原始 PCI 设备相同的或类似的服务。出现在主机 PCI 总线的不同地址上。可使用 VFIO 分配功能分配到不同的虚拟机。例如,单个具有 SR-IOV 的网络设备可以向多个虚拟机显示 VF。虽然所有 VF 都使用相同的物理卡、相同的网络连接和相同的网线,但每个虚拟机都直接控制其自己的硬件网络设备,并且不使用主机的额外资源。
AXI Memory Mapped to PCI Express学习笔记(三)——IP核参数配置
最新发布
u011565038的博客
03-26 1365
在配置 AXI Memory Mapped to PCI Express core的过程中,需要根据设计需求调整各种参数,如数据位宽、时钟频率、输入输出接口等。这些参数将直接影响IP核的行为和性能,因此请务必仔细选择和配置。完成配置后,IP核生成,即可将其集成到设计中。
什么是SR-IOV?先用起来再说
tunmang5421的博客
03-29 1万+
如果再有人问我什么是SR-IOV,我可以把我搭建好的SR-IOV环境展示给他:nuo,这就是SR-IOV
深入理解SR-IOV和IO虚拟化
m0_74282605的博客
11-30 3899
SR-IOV(Single Root I/O Virtualization)是由PCI-SIG组织定义的PCIe规范的扩展规范《Single Root I/O Virtualization and Sharing Specification》,目的是通过提供一种标准规范,为VM(虚拟机)提供独立的内存空间、中断、DMA数据流,当前最新版本为1.1。图1.1。
虚拟化技术 — SR-IOV 单根 I/O 虚拟化
烟云的计算
04-20 2139
通过标签机制,可以实现 VEB、Director IO 和 VEPA 的混合部署方案,借助多通道技术,管理员可以根据网络安全、性能以及可管理等方面的需求,灵活的选择虚拟机与外部网络的接入方案(VEB、Director IO 或 VEPA)。如下图 Intel x710 VEB 所示,VMM 通过 PF 来管理 VEB 的配置,在启用了 VEB 的场景中,VEB 将 PF 和所有的 VFs 都连接了起来,通过 VF 和 PF 的 MAC 地址以及 VLAN ID 来进行二层转发。
proxmox服务器网卡直通和SR-IOV
11-29
proxmox 网卡直通教程。intel 万兆网卡的SR-IOV设置。SR-IOV是最新的虚拟网卡直通功能,需要先检查自己的网卡是否支持。
sriov-network-operator:用于配置和配置SR-IOV CNI插件和设备插件的操作员
03-10
Sriov Network Operator旨在帮助用户在Openshift集群中配置和配置SR-IOV CNI插件和设备插件。 动机 SR-IOV网络是Openshift群集的可选功能。 要使其正常工作,需要相应地配置和配置不同的组件。 让一个操作员在一个...
苏宁私有云SR-IOV虚拟网络性能优化
02-24
SR-IOV标准允许在虚拟机之间高效共享PCIe(PeripheralComponentInterconnectExpress,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的I/O性能。SR-IOV规范定义了新的标准,根据该...
基于FPGA的SR-IOV技术研究与实现.pdf
07-13
基于FPGA的SR-IOV技术研究与实现.pdf
网络虚拟化——SR-IOV
dillanzhou的博客
11-16 1万+
之前的多篇文章介绍了网络虚拟化常见的技术实现,特别是virtio/vhost技术的实现。虽然virtio/vhost架构显著改善了虚拟网络的性能,但virtio网卡仍然是软件模拟的设备,其性能稳定性和资源占用率显然无法达到物理网卡的水平。虚拟网络其实还有一种实现方式——设备直通,让虚拟机与网卡直接交互,从而获得最高的网络性能。但这种方式显然无法大规模使用,因为物理网卡的数量是有限的,成本也很高,无法为每个虚拟机分配一个。 SR-IOV(Single Root I/O Virtualization)技术就是
SR-IOV是什么
vb748的专栏
10-31 2916
SR-IOV是什么?性能能好到什么程度? - 知乎SR-IOV是Single Root I/O Virtualization的缩写。 在虚拟机中,一切皆虚拟。比如网卡,虚拟机看来好像有一个真实网卡,但是这个网卡是宿主机虚拟出来的硬件,也就是一堆软件代码而已,没有真实硬件。 虚拟虽然万能…https://zhuanlan.zhihu.com/p/91197211 SR-IOV是Single Root I/O Virtualization的缩写。 在虚拟机中,一切皆虚拟。比如网卡,虚拟机看来好像有一个真实网
硬核虚拟化技术 SR-IOV的原理及探索
Memblaze
03-18 9231
2007年9月,PCI-SIG官方发布了《Single Root I/O Virtualization and Sharing Specification Revision 1.0》规范,定义了多个System Images如何共享PCI接口的I/O硬件设备,这里的设备可以是PCIe 网卡,一块PCIe SSD等等。 这就是今天要讨论的话题——SR-IOV,一种硬件角度出发的虚拟化解决方案,本...
SR IOV
博客
06-02 2670
SR-IOV ,Single Root I/O Virtualization。技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到 I/O 设备。SR-IOV 中的两种新功能类型是:物理功能 (
kvm虚拟化之硬件辅助IO虚拟化之SR-IOV
虚拟化云计算技术
01-27 6297
(文章来自作者维护的社区微信公众号【虚拟化云计算】) (目前有两个微信群《kvm虚拟化》和《openstack》,扫描二维码点击“云-交流”,进群交流提问) SR-IOV是什么,它和virtio、Device assignment的IO虚拟化的技术有什么区别,本文中将会解答。 SR-IOV简介 SR-IOV(PCI-SIG Single Root I/O Virtualizati...
忆联SR-IOV解决方案:助力云数据中心节能提效,向“绿”而行
UnionMemory的博客
06-20 287
将 SSD 拆分成多个虚拟盘后,为了避免出现多个虚拟机同时运行以及同个虚拟机同时对盘上下业务从而出现性能上互相干扰的情况,忆联针对 SR-IOV 特性做了针对性能隔离的设计——SR-IOV with QoS,可通过 SSD 芯片对各 VF 进行流控,做到性能均衡,保障虚拟SSD盘的大带宽、低时延等特性,满足云数据中心对于高性能数据存储的需求。多年来,忆联持续加大SSD产品的研发创新投入力度,结合自身在闪存领域的多重优势,通过硬件技术与用户应用场景结合,不断迭代更为先进的SSD产品助力企业业务系统稳定运行。
高速网络技术之SR-IOV硬直通
lsz137105的专栏
09-11 6855
本文首发于我的公众号码农之屋(id:Spider1818),专注于干货分享,包含但不限于Java编程、网络技术、Linux内核及实操、容器技术等。欢迎大家关注,二维码文末可以扫。 导读:SR-IOV(Single Root I/O Virtualization)是一个将PCIe设备(如网卡)共享给虚拟机的标准,通过为虚拟机提供独立的内存空间、中断、DMA流,来绕过VMM实现数据访问。 0...
【网络】什么是SR-IOV、PF、VF|DPDK vs SR-IOV for NFV
bandaoyu的note
12-10 1万+
为提高服务器里虚拟机收发报文的性能和伸缩性,解决I/O虚拟化的最后一公里的问题,提出了 基于硬件的SR-IOV虚拟化解决方案。 SR-IOV标准允许在虚拟机之间高效共享PCIe(快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能接近的I/O性能。 sr-iov中两种功能: 1、物理功能:PF,用于支持SR-IOVPCI功能,拥有完全配置或控制PCIe设备资源的能力。 2、虚拟功能VF,是一种轻量级的PCIe功能,与PF相关联,可以与物理功能以及同一物理功能关联的其他VF共享
深入浅出SRIOV
热门推荐
王小东大将军的博客
05-23 1万+
虚拟化中的SR-IOV https://blog.51cto.com/maomaostyle/1439651 SRIOV,即单根虚拟化。Intel在早期为了支持虚拟化环境,在CPU和PCI总线上提供了三层虚拟化技术,它们分别是: 基于处理器的虚拟化技术VT-x 基于PCI总线实现的IO虚拟化技术VT-d 基于网络的虚拟化技术VT-c 从SRIOV的中文字面不难理解,它属于VT-d技...
promox sr-iov
07-27
Promox SR-IOV是一种技术,它用于在虚拟化环境中实现更高的性能和更低的延迟。SR-IOV代表单根输入/输出虚拟化,它允许虚拟机直接访问物理设备,而无需通过主机操作系统的干扰。 通常情况下,在虚拟化环境中,虚拟机通过主机操作系统来访问物理设备,这就导致了一定的性能损失和延迟。但是,Promox SR-IOV技术通过直接将物理设备的功能划分为虚拟功能,然后分配给虚拟机来解决这个问题。这使得虚拟机可以直接访问分配给它的物理设备,绕过主机操作系统的干扰。 Promox SR-IOV技术的一个重要优势是可以提供更低的延迟和更高的网络吞吐量。这对于需要高性能网络连接的应用程序非常重要,例如大规模数据传输和实时数据处理。此外,通过减少主机操作系统对网络流量的处理,SR-IOV还可以减少CPU消耗,提高整个系统的效率。 然而,Promox SR-IOV也存在一些限制。例如,由于物理设备的功能被划分为虚拟功能,因此每个虚拟机只能直接访问分配给它的特定功能。此外,SR-IOV还要求物理设备必须支持SR-IOV技术才能使用。这意味着,在实施Promox SR-IOV之前,需要对硬件进行适当的支持和配置。 总之,Promox SR-IOV是一种提高虚拟化环境性能和降低延迟的技术。通过直接将物理设备的功能划分为虚拟功能,并分配给虚拟机来实现,SR-IOV可以提供更低的延迟和更高的网络吞吐量。然而,SR-IOV也有一些限制,包括对硬件的特定支持和配置要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【14】PCIe架构下memory空间、IO空间、PCIe配置空间简介 34961
  • 【6】ssh登录失败,提示Connection closed和Connection reset,解决办法 31483
  • 【52】NVMe暴力热插拔对系统的要求 15182
  • 【4】ubuntu虚拟机硬盘大小调整 10495
  • 【60】MSI-X介绍 10110

分类专栏

  • PCIe协议及应用 29篇
  • linux PCIe driver 6篇

最新评论

  • 【14】PCIe架构下memory空间、IO空间、PCIe配置空间简介

    linjiasen: 你的说法是对的表情包,只是如果按照spec上规定说register number 为 bit2~bit7,共6位,就得详细介绍怎么把256Byte的配置空间切割成64*4Byte,然后通过register number计算register offset,反而不如把IO address port最后8bit理解成registe offset好理解。我把这里重新写了,介绍了这么通过6bit的register number访问256byte的配置空间

  • 【14】PCIe架构下memory空间、IO空间、PCIe配置空间简介

    Rob月初: 写得不错,不过纠正一点,CAM方式时,register number 为 bit2~bit7,共6位,并不是文中的8bits噢,能访问256bytes也是因为2的6次幂(也就是64)* 32bit CONFIG_DATA = 256byte。

  • 【14】PCIe架构下memory空间、IO空间、PCIe配置空间简介

    linjiasen: pci-express-technology-30_compress.pdf已经发送,附件超大,请及时查收

  • 【14】PCIe架构下memory空间、IO空间、PCIe配置空间简介

    沙舍: 1971530550@qq.com 楼主麻烦也发一下 谢谢哦

  • 【93】PCI Expansion ROM

    linjiasen: 是的,需要公司在PCI SIG注册后才可以下载,你要是没有给我个联系方式,我发给你

大家在看

  • pc版c语言数字操作系统代码 84

最新文章

  • 【96】write combine机制介绍
  • 【95】哪些错误会记录Header log
  • 【94】pcituils解析
2024年3篇
2023年4篇
2022年4篇
2021年14篇
2020年25篇
2019年38篇
2018年6篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linjiasen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网弓箭手英文全国公民身份证号码查询服务中心网络起人名电商营业执照公司名称怎么起陆鸣全文免费阅读怎样起公司名字能审核通过网上起名 靠谱吗修脚堂起名灯起名空间友情留言代码我的家乡作文400字女孩起什么名字好听误判死刑海字的起名张姓令字辈起名1518起名字55ccmm房地产营销公司起名钥匙管理制度离职申请表五行起名字有什么讲究北京起名中心二七路给新生的宝宝起个名属猴字 起名董传起名湖人vs公牛地球ol小说广州双食记星座查询日期淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化