SMB Direct Requirements:
DMA NICs
Windows feature
QOS policy
Traffic class

RDMA (Remote Direct Memory Access) is based on Direct Memory Access

Remote DMA, or RDMA, is a technology that allows two different computers with RDMA network adapters to write data from the memory of one machine to the memory of another without involving the processor or even the processor cache of either computer.
The data goes from RAM to NIC to NIC to RAM. In the beginning of this course I said that if you wanted to transfer larger files faster you needed to buy a faster NIC, this is a faster NIC.

RDMA有三个实现版本,iWARP, RDMA over Converged Ethernet (RoCE)和Infiniband (IB)。由于融合网络架构的流行,iWARP和RoCE使用场景更加广泛。
代表iWARP的是Chelsio的T520-CR
代表RoCE的是Mellanox的ConnectX-3
两者都支持RDMA,且都是两个万兆接口。

运行powershell
安装 Data-Center-Bridging
Install-WindowsFeature Data-Center-Bridging

为 SMB Direct 设置网络 QoS 策略(445 is the port number for Microsoft file sharing, or SMB. the priority that I'm going to assign it is a 3.)
New-NetQosPolicy "SMB" -NetDirectPortMatchCondition 445 -PriorityValue8021Action 3

建立新的NetQosPolicy
Enable-NetQosFlowControl -Priority 3

针对其他流量禁用流控制
Disable-NetQosFlowControl -Priority 0,1,2,4,5,6,7

Now we can apply this policy to the correct adapter(将网络 QoS 策略应用于目标适配器。)
Enable-NetAdapterQos -InterfaceAlias "Slot 2*"

If you need to know your interface alias you can use the Get-NetIPInterface to list all of your network interfaces and it will show the interface alias for each one.
Get-NetIPInterface

创建流量类别并为 SMB Direct 指定 30% 的最高带宽。 设置类名称将为“SMB” 。And specify ETS as the Algorithm that will apply that.
New-NetQosTrafficClass "SMB" -Priority 3 -BandwidthPercentage 30 -Algorithm ETS

If your network adapter supports RDMA then all you need to do is make sure it's enabled on that NIC.
获取网络适配器列表来识别目标适配器(以查询哪些是RDMA 适配器)
Get-NetIPInterface
SMB Direct(加快文件服务器访问速度)

And specifically I'm looking for the vEthernet with the name of the virtual switch that my VM connects to. And I'm going to enable RDMA for the vEthernet, or the virtual network adapter that connects my server to the virtual switch named Adapter 1
Enable-NetAdapterRDMA "vethernet (Adapter 1)"

Now if you find that after creating and enabling these policies that things stop working the way they should or situations get worse removing these policies uses command very similar to the ones used to create the objects.
Remove-NetQosTrafficClass "SMB"
Remove-NetQosPolicy "SMB"