目前市面上80%以上的標榜自己實現了FCoE的交換機產品其實都是只實現了NPV功能,NPIV(NPort ID Virtualization),是FC里面的概念。如果一臺物理服務器里面搞了好多虛擬機后,每個VM都打算弄個FC ID獨立通信,但只有一塊FC HBA網卡時。FC中通過NPIV解決了這種使用場景需求,可以給一個NPort分配多個FC ID,配合多個pWWN (private WWN)來進行區分安全控制。
理解了NPIV后就好理解NPV了,我們把上圖中的NPort拿出來作為個獨立設備給后面服務器代理進行FC ID注冊就是NPV(NPort Virtualization)了。NPV要做的兩件事:
1、自己先通過FLOGI向FC Switch注冊去要個FC ID
2、將后續Server過來的FLOGI請求代理成FDISC請求,向FC Switch再去申請更多的FC ID
NPV的好處是可以不需要Domain ID(每個FC區域最多只有255個),同時能將FC交換機下聯服務器規模擴大。NPV在FC網絡中最常見的應用是在刀片交換機上。
隨之有人將FCoE的腦筋動到了NPV與服務器之間的網絡上,如下圖所示:

在FCoE中的NPV相比較FC中要多做三件事,參考前面FIP流程:
1、回應節點設備關于FCoE承載VLAN的請求
2、回應節點設備的FCF查找請求,根據自己初始化時從FC Switch得到的FC ID生成仿冒FCF使用的MAC地址
3、在CNA網卡和FC Switch之間對轉發的數據報文進行FCoE頭的封包解包。
NPV不是FCoE標準中定義的元素,因此各個廠家在一些細節上實現起來都各玩各的。比如都是將連接服務器的Ethernet接口和連接FC Switch的FC接口綁定起來使用,但是對應的綁定規則就可能不同。再有如FC接口故障時,如何將服務器對應的通道切換到其他FC接口去,是否通知服務器變化重新進行FLOGI注冊,及通知等待時長等設定都會有所區別。
NPV的優點,首先是實現容易,之前描述的那幾件主要的任務現在都已經有公共芯片可以直接搞定,所以包裝盒子就是了。其次是部署簡單,不需要實現FCF,不用管FC轉發,不計算FSPF,不占Domain ID。最后是擴展方便,使用FC Switch的少量接口就可以連接大量的服務器。
由于NPV與服務器之間網絡為傳統以太網,因此NPV交換機也必須支持DCB標準中相關的無丟包以太網技術。
嚴格來講,NPV交換機不是FCoE標準中定義的FCoE交換機,但可以在接入層交換機上實現與服務器之間的Ethernet網絡復用,減少了服務器的物理網卡數量(并未減少操作系統層面的網絡通道數量),擴展了FC網絡接入服務器節點的規模,適用于云計算大規模服務器部署應用。
補充一下ENPV(Ethernet NPV)的概念,這個概念由Cisco提出,就是在服務器與FCoE交換機(FCF)之間串個NPV進去,還是做些代理的工作,可以對FIP進行Snooping,監控FIP注冊過程,獲取VLAN/FC ID/WWN等信息,對過路流量做安全控制。