<ก่อนหน้านี้ | Contents | ถัดไป>
5.1 ข้อกำหนดเบื้องต้น
แพ็คเกจนี้ได้รับการคอมไพล์สำหรับความต้องการ CPU ที่ต่ำที่สุดที่เป็นไปได้ ซึ่งยังคงต้องการ SSE3 เป็นอย่างน้อยเพื่อให้ CPU รองรับ
รายการการ์ดเครือข่ายที่รองรับ DPDK ต้นน้ำสามารถพบได้ที่ NIC ที่รองรับ22. แต่ส่วนมากจะถูกปิดใช้งานโดยค่าเริ่มต้นในโปรเจ็กต์ต้นน้ำเนื่องจากยังไม่อยู่ในสถานะเสถียร ชุดย่อยของการ์ดเครือข่ายที่เปิดใช้งาน DPDK ในแพ็คเกจที่มีใน Ubuntu 16.04 คือ:
อินเทล
• e100023 (82540, 82545, 82546)
• e1000e24 (82571..82574, 82583, ICH8..ICH10, PCH..PCH2)
• ไอจี25 (82575..82576, 82580, I210, I211, I350, I354, DH89xx)
• ixgbe26 (82598..82599, X540, X550)
• i40e27 (X710, XL710, X722)
• เอฟเอ็ม10เค28 (เอฟเอ็ม10420)
เชลซี
• cxgbe29 (เทอร์มิเนเตอร์ 5)
ซิสโก้
• เอนิค30 (การ์ดอินเทอร์เฟซเสมือน UCS) การจำลองเสมือน
23 http://dpdk.org/doc/guides/nics/e1000em.html
24 http://dpdk.org/browse/dpdk/tree/drivers/net/e1000/
25 http://dpdk.org/browse/dpdk/tree/drivers/net/e1000/
26 http://dpdk.org/doc/guides/nics/ixgbe.html
27 http://dpdk.org/browse/dpdk/tree/drivers/net/i40e/
28 http://dpdk.org/doc/guides/nics/fm10k.html
29 http://dpdk.org/doc/guides/nics/cxgbe.html
30 http://dpdk.org/browse/dpdk/tree/drivers/net/enic
• virtio-net31 (คิวมู)
• vmxnet332
ผลิตภัณฑ์อื่นๆ
• af_packet33 (ซ็อกเก็ต Linux AF_PACKET)
• แหวน34 (หน่วยความจำ)
นอกจากนี้ ยังทดลองเปิดใช้งานไดรเวอร์ PMD สองตัวต่อไปนี้เนื่องจากเป็นตัวแทนของอุปกรณ์ (เสมือน) ที่ผู้ใช้ปลายทางสามารถเข้าถึงได้มาก
paravirtualization
• เซนเวียร์ต35 (เซน)
ผลิตภัณฑ์อื่นๆ
• พีซีแคป36 (ไฟล์หรือไดรเวอร์เคอร์เนล)
ต้องยกเลิกการกำหนดการ์ดจากไดรเวอร์เคอร์เนลและกำหนดให้ uio_pci_generic ของ vfio-pci แทน uio_pci_generic นั้นเก่ากว่าและมักจะทำงานได้ง่ายขึ้น
vfio-pci ที่ใหม่กว่าต้องการให้คุณเปิดใช้งานพารามิเตอร์เคอร์เนลต่อไปนี้เพื่อเปิดใช้งาน iommu
iommu=pt intel_iommu=เปิด
ด้านบนสำหรับ vfio-pci คุณต้องกำหนดค่าและกำหนดกลุ่ม iommu ตามลำดับ
หมายเหตุ: ในสภาพแวดล้อมที่อิง virtio ก็เพียงพอที่จะ "ยกเลิกการมอบหมาย" อุปกรณ์จากไดรเวอร์เคอร์เนล หากไม่มี DPDK จะปฏิเสธที่จะใช้อุปกรณ์เพื่อหลีกเลี่ยงปัญหากับเคอร์เนลและ DPDK ที่ทำงานบนอุปกรณ์พร้อมกัน เนื่องจาก DPDK สามารถทำงานบนอุปกรณ์ virtio ได้โดยตรง จึงไม่จำเป็นต้องกำหนด เช่น uio_pci_generic ให้กับอุปกรณ์เหล่านั้น
การกำหนดค่าด้วยตนเองและการตรวจสอบสถานะสามารถทำได้ผ่าน sysfs หรือด้วยเครื่องมือ dpdk_nic_bind
dpdk_nic_bind -- ช่วยด้วย
การใช้งาน:
------
dpdk_nic_bind [ตัวเลือก] DEVICE1 DEVICE2 ....
โดยที่ DEVICE1, DEVICE2 ฯลฯ ถูกระบุผ่านไวยากรณ์ "domain:bus:slot.func" ของ PCI หรือไวยากรณ์ "bus:slot.func" สำหรับอุปกรณ์ที่เชื่อมต่อกับไดรเวอร์เคอร์เนลของ Linux อาจ
31 http://dpdk.org/doc/guides/nics/virtio.html
32 http://dpdk.org/doc/guides/nics/vmxnet3.html
33 http://dpdk.org/browse/dpdk/tree/drivers/net/af_packet
34 http://dpdk.org/doc/guides/nics/pcap_ring.html#rings-based-pmd
35 http://dpdk.org/doc/guides/xen/pkt_switch.html#xen-pmd-frontend-prerequisites
36 http://dpdk.org/doc/guides/nics/pcap_ring.html#libpcap-based-pmd
ยังถูกอ้างถึงโดยชื่ออินเตอร์เฟส Linux เช่น eth0, eth1, em0, em1 เป็นต้น
ตัวเลือก:
--ช่วย -- การใช้งาน:
แสดงข้อมูลการใช้งานและออก
-s, --สถานะ:
พิมพ์สถานะปัจจุบันของอินเทอร์เฟซเครือข่ายที่รู้จักทั้งหมด
สำหรับอุปกรณ์แต่ละตัว จะแสดงโดเมน PCI, บัส, สล็อต และฟังก์ชัน พร้อมด้วยคำอธิบายข้อความของอุปกรณ์ ขึ้นอยู่กับว่าอุปกรณ์ถูกใช้โดยไดรเวอร์เคอร์เนล ไดรเวอร์ igb_uio หรือไม่มีไดรเวอร์ ข้อมูลที่เกี่ยวข้องอื่น ๆ จะปรากฏขึ้น:
* ชื่ออินเตอร์เฟส Linux เช่น if=eth0
* ไดรเวอร์ที่ใช้ เช่น drv=igb_uio
* ไดรเวอร์ที่เหมาะสมใด ๆ ที่ไม่ได้ใช้อุปกรณ์นั้นในปัจจุบัน
เช่น unused=igb_uio
หมายเหตุ: หากแฟล็กนี้ถูกส่งไปพร้อมกับตัวเลือกผูก/เลิกผูก การแสดงสถานะจะเกิดขึ้นเสมอหลังจากการดำเนินการอื่นๆ เกิดขึ้น
-b ไดรเวอร์ --bind=driver:
เลือกไดรเวอร์ที่จะใช้หรือ "ไม่มี" เพื่อยกเลิกการเชื่อมโยงอุปกรณ์
-u, --เลิกผูก:
เลิกผูกอุปกรณ์ (เทียบเท่ากับ "-b none")
--บังคับ:
โดยค่าเริ่มต้น อุปกรณ์ที่ใช้โดย Linux - ตามที่ระบุโดยมีเส้นทางในตารางเส้นทาง - ไม่สามารถแก้ไขได้ การใช้แฟล็ก --force จะลบล้างพฤติกรรมนี้ ทำให้ลิงก์ที่ทำงานอยู่ถูกบังคับให้เลิกผูก
คำเตือน: การทำเช่นนี้อาจทำให้สูญเสียการเชื่อมต่อเครือข่าย และควรใช้ด้วยความระมัดระวัง
ตัวอย่าง:
---------
วิธีแสดงสถานะอุปกรณ์ปัจจุบัน: dpdk_nic_bind --status
ในการผูก eth1 จากไดรเวอร์ปัจจุบันและย้ายไปใช้ igb_uio dpdk_nic_bind --bind=igb_uio eth1
หากต้องการเลิกผูก 0000:01:00.0 จากการใช้ไดรเวอร์ใด ๆ dpdk_nic_bind -u 0000:01:00.0
เพื่อผูก 0000:02:00.0 และ 0000:02:00.1 กับไดรเวอร์เคอร์เนล ixgbe dpdk_nic_bind -b ixgbe 02:00.0 02:00