WO2011090145A1 - ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 - Google Patents
ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 Download PDFInfo
- Publication number
- WO2011090145A1 WO2011090145A1 PCT/JP2011/051030 JP2011051030W WO2011090145A1 WO 2011090145 A1 WO2011090145 A1 WO 2011090145A1 JP 2011051030 W JP2011051030 W JP 2011051030W WO 2011090145 A1 WO2011090145 A1 WO 2011090145A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- address
- host
- packet
- network
- pci express
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/22—Arrangements for detecting or preventing errors in the information received using redundant apparatus to increase reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4604—LAN interconnection over a backbone network, e.g. Internet, Frame Relay
- H04L12/462—LAN interconnection over a bridge based backbone
- H04L12/4625—Single bridge functionality, e.g. connection of two networks over a single bridge
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
Definitions
- the present invention relates to a network device, a network configuration method, and a program recording medium in which a program of the network device is recorded, and more particularly, a network device, a network configuration method, and a network device program that enable flexible bus connection between a host and peripheral devices.
- the present invention relates to a program recording medium on which is recorded.
- FIG. 17 is a diagram illustrating an example of a network system related to the present invention described in Patent Document 1.
- the network system shown in FIG. 17 includes a host 1, an Ethernet (registered trademark) switch 200, a downstream PCI (Peripheral Component Interconnect) express-Ethernet bridge 7, and a peripheral device 8.
- the downstream PCI express-Ethernet bridge 7 bridges the PCI express bus and the Ethernet switch 200.
- the PCI express bus is the name of an I / O bus standard that is standardized by PCI-SIG (PCI Special Interest Group).
- the host 1 includes a CPU (Central Processing Unit) 11, a memory 13, a route complex 121, and an upstream PCI Express-Ethernet bridge 15.
- CPU Central Processing Unit
- the route complex 121 connects the CPU 11, the memory 13, and the upstream PCI express-Ethernet bridge 15 to each other.
- the upstream PCI express-Ethernet bridge 15 is a network interface that bridges the PCI express bus and the Ethernet switch 200.
- a packet transmitted / received between the CPU 11 or the memory 13 and the peripheral device 8 is referred to as an I / O packet.
- the upstream PCI express-Ethernet bridge 15 receives the I / O packet from the route complex 121, the upstream PCI express-Ethernet bridge 15 encapsulates the received I / O packet into an Ethernet frame destined for the downstream PCI express-Ethernet bridge 7. Send to.
- the upstream PCI express-Ethernet bridge 15 When the upstream PCI express-Ethernet bridge 15 receives an Ethernet frame in which an I / O packet is encapsulated from the Ethernet switch 200, the upstream PCI express-Ethernet bridge 15 decapsulates the received I / O packet and transmits the decapsulated packet to the route complex 121.
- the downstream PCI Express-Ethernet bridge 7 receives an Ethernet frame in which an I / O packet is encapsulated from the Ethernet switch 200, the downstream PCI express-Ethernet bridge 7 decapsulates the received I / O packet and transmits it to the peripheral device 8.
- the downstream PCI express-Ethernet bridge 7 receives an I / O packet from the peripheral device 8.
- the downstream PCI express-Ethernet bridge 7 encapsulates the received I / O packet into an Ethernet frame destined for the upstream PCI express-Ethernet bridge 15 and transmits it to the Ethernet switch 200.
- the network system described in FIG. 17 operates as follows. When the CPU 11 issues an I / O packet under the control of software, the I / O packet is transmitted to the upstream PCI Express-Ethernet bridge 15 via the route complex 121. The upstream PCI Express Ethernet bridge 15 encapsulates the received I / O packet using an Ethernet frame, and transmits the packet to the Ethernet switch 200 with the downstream PCI Express-Ethernet bridge 7 as a destination.
- the downstream PCI Express-Ethernet bridge 7 receives the Ethernet frame encapsulating the I / O packet, decapsulates the I / O packet, and transmits it to the peripheral device 8.
- the downstream PCI express-Ethernet bridge 7 encapsulates the I / O packet received from the peripheral device 8 using an Ethernet frame.
- the downstream PCI Express-Ethernet bridge 7 transmits the encapsulated I / O packet to the Ethernet switch 200 with the upstream PCI Express-Ethernet bridge 15 as a destination.
- the upstream PCI Express-Ethernet bridge 15 receives the Ethernet frame encapsulating the I / O packet and decapsulates the I / O packet.
- Patent Document 2 describes a shared system similar in structure to Patent Document 1 in which a CPU and an I / O device are connected via an upstream PCI express bridge, a network, and a downstream PCI express-Ethernet bridge. ing. Furthermore, Patent Document 3 describes a configuration in which an active NIC (Network Interface Card) and a standby NIC are provided, and when the NIC fails, the NIC is switched to the standby system and the operation is continued.
- NIC Network Interface Card
- JP 2007-219873 [0028] paragraph, FIG. 1
- JP 2008-078887 paragraph [0020]
- JP2003-078567 paragraph [0012]
- An object of the present invention is to enable flexible bus connection between a host and a peripheral device, thereby enabling a network device, a network configuration method, and a program recording that records a program for the network device to solve any of the above-described problems. To provide a medium.
- the network apparatus includes a first interface unit for connecting a host holding a plurality of I / O buses and the own network apparatus via a network, a peripheral device including the plurality of I / O interfaces, and the own network apparatus. And a control means for controlling the plurality of I / O interfaces to be connected under different I / O buses.
- the network system of the present invention is a first interface means for connecting a host holding a plurality of I / O buses, a peripheral device having a plurality of I / O interfaces, and the host and its own apparatus via a network.
- a network device comprising: a second interface unit that connects the peripheral device and the own device; and a control unit that controls the plurality of I / O interfaces to be connected to different I / O buses.
- the network configuration method of the present invention includes a step of connecting a host holding a plurality of I / O buses and the own network device via a network, a peripheral device having a plurality of I / O interfaces, and the own network device. And a step of controlling a plurality of I / O interfaces to be connected under different I / O buses.
- the program recording medium recording the program of the network device of the present invention is a first interface for connecting a computer provided in the network device to a host holding a plurality of I / O buses and the own network device via the network.
- Means a second interface means for connecting a peripheral device having a plurality of I / O interfaces and the own network device, and a control for controlling the plurality of I / O interfaces to be connected under different I / O buses.
- a program that functions as means is recorded.
- the network device, the network configuration method, and the program recording medium storing the network device program of the present invention are controlled so that each of the plurality of I / O buses connected from the host to the peripheral device is connected to a different interface. To do.
- the present invention has an effect that it is possible to flexibly configure an I / O bus that connects a host and peripheral devices.
- FIG. It is a flowchart explaining the operation
- FIG. 16 is a diagram illustrating the configuration of the network device according to the first embodiment of this invention.
- the network device 1601 includes an interface unit 1602 with a peripheral device, an interface unit 1603 with a host, and a control unit 1604.
- the control unit 1604 performs control so that a plurality of I / O interfaces accessed from software provided in the peripheral device are connected to different I / O buses held by different hosts connected to the peripheral device.
- the control unit 1604 controls an I / O device corresponding to each I / O interface of a peripheral device having a plurality of interfaces to belong to a different I / O bus of the peripheral device as viewed from the host.
- the control unit 1604 allows the host to recognize the connection state of the I / O interface so that a plurality of I / O devices connected to the same peripheral device are individually connected to different buses. it can.
- the first embodiment has an effect that the communication path between the host and the peripheral device can be flexibly controlled.
- one of a plurality of I / O devices may be operated as an active system and the remaining as a standby system.
- the operation may be switched from the active I / O device to the standby I / O device.
- the first modification of the first embodiment in addition to the effects of the first embodiment, it is possible to perform system switching of the transmission path of a packet having a redundant configuration at high speed. effective.
- a plurality of I / O devices may be operated simultaneously as an operation system. In this case, the data amount among a plurality of I / O devices may be load balanced.
- the second modification example of the first embodiment has an effect that load balancing can be easily performed in addition to the effect described in the first embodiment.
- FIG. 1 is a diagram showing a configuration of a network system according to a second embodiment of this invention.
- the computer system according to the second embodiment includes a host 1, an Ethernet 2, a downstream PCI Express Ethernet bridge 3, and an SR-IOV (Single Root I / O Virtualization) compatible I / O 4. .
- the SR-IOV compatible I / O 4 is a peripheral device compliant with SR-IOV.
- the SR-IOV is a PCI Express I / O defined by the PCI-SIG for controlling an I / O device and realizing access from a plurality of VMs (Virtual Machines) to the I / O device.
- a peripheral device compliant with SR-IOV is used by being inserted into an I / O slot of a host in which a plurality of VMs are operating. Each VM issues an I / O command directly to the assigned VF without going through the software mediation layer. As a result, overhead related to I / O processing can be reduced.
- the host 1 includes a CPU 11, a bridge 12, a memory 13, and upstream PCI express Ethernet bridges 14a and 14b.
- Upstream PCI Express-Ethernet bridges 14 a and 14 b are host 1 network interfaces to Ethernet 2.
- the upstream PCI express Ethernet bridge 14a and the upstream PCI express Ethernet bridge 14b may be the same.
- the subscripts of the upstream PCI Express-Ethernet bridge 14 are a and b.
- the SR-IOV compatible I / O 4 includes a plurality of interfaces accessible from software on the host 1. Each of these multiple interfaces is called a VF (Virtual Function).
- each VF is expressed as VF 41a, VF 41b, or the like.
- the VF 41a and the VF 41b are assigned to the host 1.
- the VF 41a is assigned so as to be connected to the host 1 from the downstream PCI express-Ethernet bridge 3 via the upstream PCI express Ethernet bridge 14a.
- the VF 41b is assigned from the downstream PCI express-Ethernet bridge 3 so as to be connected to the host 1 via the upstream PCI express Ethernet bridge 14b.
- FIG. 2 is a diagram illustrating a device tree of the host 1 in the second embodiment.
- the VF 41a and VF 41b of the SR-IOV compatible I / O 4 belong to different PCI express buses associated with the upstream PCI express Ethernet bridge 14a and the upstream PCI express Ethernet bridge 14b, respectively.
- the device tree of the host 1 is provided with I / O functions (hereinafter referred to as I / O devices) provided by the SR-IOV compatible I / O unit 4 one by one on different buses.
- I / O devices I / O functions
- the downstream PCI Express-Ethernet bridge 3 includes a network device including an Ethernet adapter 31, a host-side I / O packet transfer unit 32, a control unit 330, and an I / O-side I / O packet transfer unit 34. It is.
- the downstream PCI express-Ethernet bridge 3 further includes a connection host control unit 35 and a virtual resource register 36.
- the control unit 330 includes an address conversion unit 33, an address conversion table 37, and a connection virtualization unit 38.
- connection virtualization unit 38 includes an address correspondence unit 381 and an address assignment unit 382.
- the downstream PCI express-Ethernet bridge 3 may further include a CPU 39 and a memory 40.
- the Ethernet adapter 31 performs an encapsulation process of an I / O packet into an Ethernet frame.
- the host side I / O packet transfer unit 32 transfers the I / O packet to an appropriate destination.
- the address conversion unit 33 converts the address described in the I / O packet.
- the I / O side I / O packet transfer unit 34 transfers the I / O packet to an appropriate destination.
- the connection host control unit 35 controls the connection between the downstream PCI express Ethernet bridge 3 and the upstream PCI express Ethernet bridges 14a and 14b. As shown in FIG.
- the virtual resource register 36 includes virtual VF registers 361a and 361b used for controlling each VF.
- the configuration of the virtual resource register 36 will be described later with reference to FIG.
- the address conversion table 37 is used when the address conversion unit 33 converts an address written in the I / O packet.
- the address correspondence unit 381 and the address assignment unit 382 control the connection between the host 1 and the SR-IOV compatible I / O 4.
- the Ethernet adapter 31 receives an Ethernet frame in which a PCI Express I / O packet is encapsulated from the Ethernet 2 and decapsulates the received I / O packet.
- the Ethernet adapter 31 transmits an I / O packet to the host side I / O packet transfer unit 32 together with information for identifying the upstream PCI Express Ethernet bridge that has received the Ethernet frame.
- the Ethernet adapter 31 further receives from the host-side I / O packet transfer unit 32 the I / O packet issued by the SR-IOV compatible I / O 4 and information for identifying the issuing VF. If the I / O packet issuance source is VF 41a, the Ethernet adapter 31 encapsulates the I / O packet into an Ethernet frame using the MAC (Media Access Control) address of the upstream PCI Express Ethernet bridge 14a, and the Ethernet network. 2 to send.
- MAC Media Access Control
- FIG. 3 is a diagram showing a configuration of an Ethernet frame in which PCI Express I / O packets are encapsulated.
- an Ethernet frame 1101 includes an Ethernet header 1102 and a TLP (Transaction Layer Packet) 1103.
- the Ethernet header 1102 is a header of the Ethernet frame 1101.
- the Ethernet header 1102 includes a transmission destination MAC address 1104 and a transmission source MAC address 1105.
- the TLP 1103 is a PCI Express I / O packet.
- the PCI Express I / O packet includes a packet destination address 1106, a packet source address 1107, and a payload 1108.
- PCI Express there are three types of addresses that are assigned to connected devices: an I / O address mapped to the host I / O space, a memory address mapped to the host memory space, and an ID number. Available.
- the ID number is composed of a bus (Bus) number, a device (Device) number, and a function (Function) number.
- a set of these numbers constituting the ID number is hereinafter referred to as a “BDF number”.
- address routing for designating a destination memory address or I / O address and ID routing for designating a destination ID number can be used.
- the destination address 1106 of the packet and the source address 1107 of the packet can be used in combination with the memory address, I / O address, and ID number described above.
- an Ethernet-encapsulated I / O packet is transmitted between the Ethernet adapter 31 and the upstream PCI express-Ethernet bridges 14a and 14b.
- the host-side I / O packet transfer unit 32 receives from the Ethernet adapter 31 the I / O packet and the identification information of the upstream PCI Express-Ethernet bridge through which the I / O packet has passed.
- the host side I / O packet transfer unit 31 sends the received I / O packet to the address corresponding unit. 381. If the received I / O packet is any other I / O packet, the host side I / O packet transfer unit 31 transfers the received I / O packet to the address conversion unit 33. In any case, the received I / O packet is transferred to the transfer destination together with the identification information of the upstream PCI Express Ethernet bridge that has transmitted the I / O packet.
- the identification information of the upstream PCI Express-Ethernet bridge transferred together with the I / O packet may be included in the I / O packet.
- the MAC address of the upstream PCI express-Ethernet bridge or information corresponding to the MAC address may be used.
- the host-side I / O packet transfer unit 32 may treat other information that can identify the upstream PCI Express-Ethernet bridge as the identification information of the upstream PCI Express-Ethernet bridge.
- the identification information a number assigned in order to the upstream PCI Express-Ethernet bridge may be used. Examples of I / O packets related to address control include a configuration read packet and a configuration write packet defined by PCI Express.
- the configuration read packet and the configuration write packet are used to read the address value set in the SR-IOV compatible I / O 4 or write the address value to the SR-IOV compatible I / O 4, respectively.
- the host-side I / O packet transfer unit 32 receives an I / O packet issued by the VF 41a or VF 41b and a VF identification number for identifying the issue source VF from the address conversion unit. Then, the host side I / O packet transfer unit 32 transfers the I / O packet issued by the VF 41 a or VF 41 b and the VF identification number to the Ethernet adapter 31.
- the I / O packet may include the VF identification number that issued the own packet.
- the address conversion table 37 includes a target search table 370 and a plurality of mapping tables 371a and 371b.
- the address conversion unit 33 refers to the address conversion table 37 and rewrites the address of the I / O packet.
- the target search table 370 includes information indicating the correspondence between the VF number and the upstream PCI Express-Ethernet bridge identification information.
- the target search table 370 in FIG. 4 corresponds to the upstream PCI Express-Ethernet bridge whose identification information is 1 for the VF whose VF number is 1, and the upstream whose identification information is 2 for the VF whose VF number is 2.
- mapping tables 371a and 371b include a plurality of tables for each identification information of the upstream PCI Express-Ethernet bridge.
- each mapping table is represented as a mapping table 371a, a mapping table 371b, and the like.
- mapping table 371a a mapping table 371a
- mapping table 371b a mapping table 371b
- the number of mapping tables may be increased in accordance with the number. The contents of the mapping table will be described using the mapping table 371a as an example.
- the mapping table 371a is used for address conversion of an I / O packet that passes through an upstream PCI Express-Ethernet bridge whose identification information is 1.
- the mapping table 371a includes a host BDF number and a VF BDF number.
- the mapping table 371a may include a memory base value for use in converting a memory address.
- the mapping table 371a holds an address assigned by the host and an address assigned by the downstream PCI Express-Ethernet bridge 3 with respect to these addresses. The address assignment operation by the host and the downstream PCI Express-Ethernet bridge 3 will be described later.
- the address conversion unit 33 refers to the target search table 370 and the mapping tables 371a and 371b.
- the address translation unit 33 can obtain correspondence information between the VF number and the upstream PCI Express-Ethernet bridge. Furthermore, the address conversion unit 33 can also obtain correspondence information between the address assigned by the host and the address assigned by the downstream PCI Express-Ethernet bridge for each upstream PCI Express-Ethernet bridge.
- the destination address of the I / O packet transmitted from the host 1 to the SR-IOV compatible I / O 4 is converted by the address conversion unit 33 as follows.
- the destination address of the I / O packet is changed from the address assigned to the VF 41a and VF 41b by the host 1 at the time of activation by the address translation unit 33 to the address assigned to the VF 41a and VF 41b by the downstream PCI Express-Ethernet bridge 3 Converted.
- the source address of the I / O packet transmitted from the host to the SR-IOV compatible I / O 4 is converted from the address assigned by the host 1 into the address of the downstream PCI Express-Ethernet bridge 3 in the address conversion unit 33. Is done. A specific operation of the address conversion unit 33 will be described below.
- the address conversion unit 33 When receiving the I / O packet from the host 1 via the upstream PCI express Ethernet bridge 14a (identification information is “1”), the address conversion unit 33 receives the upstream PCI express-Ethernet bridge 14a from the received packet. Is read that the identification information is “1”. As a result, the address conversion unit 33 refers to the mapping table 371a corresponding to the identification information “1” of the upstream PCI Express-Ethernet bridge. On the other hand, when the address conversion unit 33 receives an I / O packet from the host 1 via the upstream PCI Express Ethernet bridge 14b (identification number is 2), it operates as follows.
- the address conversion unit 33 reads from the received packet that the identification information of the upstream PCI Express-Ethernet bridge 14b is “2”. As a result, the address conversion unit 33 refers to the mapping table 371b corresponding to the identification information “2” of the upstream PCI Express-Ethernet bridge.
- the target search table 370 is used by the address translation unit 33 to specify the destination upstream PCI Express-Ethernet bridge corresponding to the VF number of the I / O packet transferred from the SR-IOV compatible I / O 4 to the host. It is done.
- FIG. 5 is a diagram for explaining an example of address conversion of an I / O packet issued by the host 1. A specific address conversion procedure will be described with reference to FIG. FIG.
- the I / O packet 1201 shown in FIG. 5 shows a case where the destination address 1202 is designated by address routing and the packet source address 1203 is designated by an ID number. That is, the I / O packet 1201 stores a memory address as the destination address 1202 and a host BDF number as the source address 1203.
- the address conversion unit 33 When the address conversion unit 33 receives the I / O packet 1201 from the host-side I / O packet transfer unit 32, the destination address 1202 and the source address 1203 are “0001 0014h” and “0, 0, 0”, respectively. ing. Then, since the identification information of the upstream PCI Express-Ethernet bridge of the I / O packet 1201 is “1”, the address conversion unit 33 refers to the mapping table 371 a of FIG. 4 whose identification information is “1”. . The address conversion unit 33 refers to the mapping table 371a and rewrites the destination address 1202 of the I / O packet 1201 to “0000 1014h” based on the memory base values “0001 0000h” and “0000 1000h”.
- the source address 1203 of the I / O packet 1201 is rewritten from “0, 0, 0” assigned by the host 1 to “1, 0, 0” assigned by the downstream PCI Express-Ethernet bridge.
- each VF can process the I / O packet 1201 as a packet transmitted by the downstream PCI Express-Ethernet bridge.
- the destination address of the I / O packet 1201 is address routing.
- the routing by the BDF number may be used as the destination address routing method.
- the address conversion unit 33 may convert the BDF number from the BDF number specified by the host 1 to the BDF number specified by the downstream PCI Express-Ethernet bridge.
- the address conversion unit 33 receives an I / O packet issued by the SR-IOV compatible I / O 4 from the I / O side I / O packet transfer unit 34. Then, the address conversion unit 33 converts the address described in the I / O packet and transmits it to the host-side I / O packet transfer unit 32 together with the identification number of the VF that issued the I / O packet.
- FIG. 6 is a diagram for explaining an example of address conversion of an I / O packet issued by the VF 41. An example of a specific address conversion procedure will be described with reference to FIG. Assume that the routing method of the I / O packet 1301 issued by the SR-IOV compatible I / O 4 is the same as that of the I / O packet 1201 described in FIG.
- the destination address 1302 is designated by a memory address
- the transmission source address 1303 is designated by a BDF number.
- FIG. 6 illustrates a case where the transmission source of the I / O packet 1301 is the VF 41a whose VF number is “1”.
- the address conversion unit 33 receives the I / O packet 1301 from the I / O side I / O packet transfer unit 34, the destination address 1302 and the source address 1303 of the I / O packet 1301 are “0022 0000h” and “1, 0, 1”.
- the address conversion unit 33 then refers to the target search table 370 in FIG.
- the address conversion unit 33 Since the transmission source VF number of the I / O packet 1301 is “1”, the address conversion unit 33 knows that the identification number of the upstream PCI Express-Ethernet bridge through which it passes is “1”. Therefore, the address conversion unit 33 refers to the mapping table 371a whose identification information is “1”. In the source address of the I / O packet 1301, “1, 0, 1” that is the BDF number corresponding to the VF of the VF number 1 assigned by the downstream PCI Express-Ethernet bridge is set. Then, “0022 0000h” is set in the destination address 1302 of the I / O packet 1301.
- the address conversion unit 33 refers to the mapping table 371a, and changes the source address 1303 of the I / O packet 1301 from “1, 0, 1” assigned by the downstream PCI Express-Ethernet bridge to “13, Rewrite to "0,0".
- the host 1 can process the I / O packet 1301 as a packet transmitted by the downstream PCI Express-Ethernet bridge 3.
- the destination address 1302 (“0022 0000h”) is not rewritten in the address conversion of the I / O packet 1301. This is because access to the destination memory of the I / O packet 1301 is performed by DMA.
- the destination address 1302 of the I / O packet 1301 may be converted from the address space of the downstream PCI Express-Ethernet bridge to the address space of the host 1 using a procedure reverse to the destination address conversion in FIG. Good.
- the destination address of the I / O packet 1301 is address routing.
- the routing by the BDF number may be used as the destination address routing method.
- the address conversion unit 33 may convert the BDF number from the BDF number specified by the downstream PCI Express-Ethernet bridge to the BDF number specified by the host 1.
- the source address of the I / O packet is between the address assigned by the host 1 and the address assigned by the downstream PCI Express-Ethernet bridge 3 in the address conversion unit 33.
- the configuration is rewritten.
- the I / O packet is an I / O packet transmitted from the host 1 or the SR-IOV compatible I / O 4.
- the address conversion unit does not convert the transmission source address and directly converts the I / O packet. It is good also as a structure to transfer.
- the numerical values described in the address conversion table 37 shown in the above description are merely examples, and other numerical values, character strings, or the like can be used.
- a MAC address may be used as identification information for the upstream PCI Express-Ethernet bridge.
- the I / O side I / O packet transfer unit 34 receives the I / O packet issued by the host 1 from the address conversion unit 33 and transmits it to the designated VF of the SR-IOV compatible I / O 4.
- the I / O side I / O packet transfer unit 34 receives an I / O packet from the VF of the SR-IOV compatible I / O 4. If the received I / O packet relates to the control of the address assigned to the SR-IOV compatible I / O 4 by the downstream PCI Express Ethernet bridge, the I / O side I / O packet transfer unit 34 receives the received I / O packet. The / O packet is transmitted to the address allocation unit 382. For other I / O packets, the I / O side I / O packet transfer unit 34 transmits the received I / O packet to the address conversion unit 33.
- the connection host control unit 35 manages the connection between the downstream PCI express Ethernet bridge 3 and the upstream PCI express Ethernet bridges 14a and 14b.
- the upstream PCI express-Ethernet bridges 14 a and 14 b periodically broadcast their identification information including the MAC address to the downstream PCI express-Ethernet bridge 3.
- the connected host control unit 35 receives the identification information of the upstream PCI Express-Ethernet bridge broadcast from the upstream PCI Express-Ethernet bridges 14a, 14b. Then, the connection host control unit 35 notifies the Ethernet adapter 31 of the MAC addresses of the upstream PCI express Ethernet bridge 14 a and the upstream PCI express Ethernet bridge 14 b connected to the downstream PCI express Ethernet bridge 3.
- the connected host control unit 35 performs this notification before the host 1 starts using the SR-IOV compatible I / O 4.
- the Ethernet adapter 31 encapsulates the I / O packet using the notified MAC address.
- the connected host control unit 35 notifies the address correspondence unit 381 to allocate the VF 41a to the path corresponding to the upstream PCI Express Ethernet bridge 14a and to allocate the VF 41b to the path corresponding to the upstream PCI Express Ethernet bridge 14b.
- the connection virtualization unit 38 includes an address correspondence unit 381 and an address assignment unit 382.
- the address correspondence unit 381 receives information regarding the correspondence between each VF and the host from the connected host control unit 35.
- the address corresponding unit 381 receives the configuration read packet and the configuration write packet for each VF issued by the host 1 from the host-side I / O packet transfer unit 32.
- the address correspondence unit 381 causes the received configuration read packet to read the value of the virtual resource register 36 corresponding to the VF designated by the packet. Further, the address correspondence unit 381 writes the value designated by the received configuration write packet into the virtual VF register corresponding to the VF designated by the packet. Further, the address correspondence unit 381 registers the address information assigned by the host 1 described in the virtual VF register in the mapping table of the corresponding VF.
- the address allocation unit 382 transfers the I / O packet related to address control to the SR-IOV compatible I / O 4 before the host 1 starts using the SR-IOV compatible I / O 4. It is issued via the unit 34 and collects I / O information of SR-IOV compatible I / O4.
- the address assignment unit 382 assigns the address requested by the I / O information to the VF 41a and the VF 41b.
- the address assigning unit 382 registers the address of the VF 41a assigned by the address assigning unit 382 in the mapping table 371a and the address of the VF 41b in the mapping table 371b. Further, the address allocation unit 382 reflects the acquired I / O information in the virtual resource register 36.
- the address assigned by the address assigning unit 382 corresponds to an address assigned by the downstream PCI Express-Ethernet bridge in the mapping table.
- FIG. 7 is a diagram illustrating an example of the configuration of the virtual resource register 36.
- the virtual resource register 36 includes virtual VF registers 361a and 361b used for controlling each VF.
- the address area and device information required by these virtual VF registers are set by the address allocation unit 382.
- the access from the host 1 to the virtual VF register is performed only for the register corresponding to the VF assigned to the host 1 by the connected host control unit 35 under the control of the address corresponding unit 381.
- the value set in the virtual VF register for the host 1 to assign an address to each VF is reflected in the address conversion table 37.
- the virtual VF register is expressed as a virtual VF register 361a, a virtual VF register 361b, or the like.
- the virtual VF register 361a corresponds to the VF 41a
- the virtual VF register 361b corresponds to the VF 41b.
- the addresses assigned by the host 1 to the VF 41a and the VF 41b and information on I / O devices corresponding to the VFs (hereinafter referred to as “I / O information”). ) Respectively.
- the host 1 When the host 1 is activated or the SR-IOV compatible I / O 4 is hot-plugged to the host 1, the host 1 transmits a configuration read packet to the I / O bus at the start of the address assignment process. Then, the host 1 acquires I / O information connected under each I / O bus from the response of the configuration read packet. The operation will be described below.
- the host 1 reads the virtual VF registers 361a and 361b using the configuration read packet.
- the address correspondence unit 381 causes the configuration read packet received from the host 1 via the upstream PCI Express Ethernet bridge 14a to read the value of the virtual VF register 361a specified by the packet.
- the virtual VF register 361a describes I / O information corresponding to the VF 41a.
- the address correspondence unit 381 returns a response of the configuration read packet to the host 1.
- the address corresponding unit 381 causes the configuration read packet received from the host 1 via the upstream PCI Express Ethernet bridge 14b to read the virtual VF register 361b specified by the packet.
- the virtual VF register 361b describes I / O information corresponding to the VF 41b.
- the address correspondence unit 381 returns a response of the configuration read packet to the host 1.
- the host 1 obtains correspondence information between the I / O bus and the subordinate I / O information from the response of the configuration read packet from each I / O bus.
- the VF 41a and the VF 41b are controlled to belong to the I / O bus related to the upstream PCI Express Ethernet bridges 14a and 14b, respectively.
- the address corresponding unit 381 further receives an I / O packet issued by the host 1 for assigning an address to the VF 41a via the upstream PCI Express Ethernet bridge 14a.
- the address correspondence unit 381 also receives an I / O packet issued by the host 1 via the upstream PCI Express Ethernet bridge 14b in order to assign an address to the VF 41b.
- the host 1 assigns an address to the SR-IOV compatible I / O 4 in the following procedure. That is, the host 1 assigns an address to the VF 41a by writing the address to the virtual VF register 361a using the configuration write packet. Similarly, the host 1 assigns an address to the VF 41b by writing the address to the virtual VF register 361b using the configuration write packet.
- FIG. 8 is a diagram illustrating an example of the contents of the virtual VF register 361a. In the virtual VF register 361a, the addresses of the host 1 and the VF assigned by the host 1 with respect to the VF 41a are written.
- the virtual VF register 361a also describes I / O information of the I / O device corresponding to the VF.
- the configuration of the virtual VF register 361b in which an address related to the VF 41b is written is the same.
- the address corresponding unit 381 registers the address information assigned by the host 1 described in the virtual VF register 361a in the mapping table 371a.
- the address corresponding unit 381 registers the address information assigned by the host 1 described in the virtual VF register 361b in the mapping table 371b.
- FIG. 9 is a flowchart for explaining the operation of the connected host control unit 35.
- the connected host control unit 35 connects the upstream PCI express Ethernet bridge 14a and the upstream PCI express Ethernet bridge 14b connected to the downstream PCI express Ethernet bridge 3 before the host 1 starts using the SR-IOV compatible I / O 4.
- the MAC address is notified to the Ethernet adapter 31 (step C1).
- the connection host control unit 35 notifies the address correspondence unit 381 to allocate the VF 41a to the path corresponding to the upstream PCI Express Ethernet bridge 14a and to allocate the VF 41b to the path corresponding to the upstream PCI Express Ethernet bridge 14b (Step C2). ).
- FIG. 10 is a flowchart for explaining the operation of the address assignment unit 382. In FIG.
- the address allocation unit 382 sends an I / O packet related to address control to the I / O side I / O 4. It is issued via the / O packet transfer unit 34 and collects I / O information of SR-IOV compatible I / O4 (step D1).
- the address assignment unit 382 performs the operation of step D1 before the host 1 starts using the SR-IOV compatible I / O4.
- the address allocation unit 382 allocates an address requested by the I / O to each VF based on the collected information (step D2).
- the address assigning unit 382 registers the assigned VF address in the mapping table (step D3).
- the address allocation unit 382 reflects the acquired I / O information in the virtual resource register 36 (step D4).
- FIG. 18 is a flowchart for explaining the operation of the address correspondence unit 381.
- the address corresponding unit 381 receives information on the correspondence between the VF and the host from the connected host control unit 35. (Step D5).
- the address correspondence unit 381 causes the configuration read packet to read the value of the virtual resource register corresponding to the VF designated by the packet (step D6).
- the address corresponding unit 381 then writes the value specified by the configuration write packet into the virtual VF register corresponding to the VF specified by the packet (step D7).
- the address corresponding unit 381 registers the address information of each VF assigned by the host 1 written in the virtual VF register in the mapping table corresponding to each VF (step D8). As a result, the address corresponding unit 381 performs control so that the VFs 41a and 41b belong to the I / O bus related to the upstream PCI express Ethernet bridges 14a and 14b when viewed from the host 1.
- the downstream PCI Express Ethernet bridge 3 may include a CPU 39 and a memory 40.
- the operation procedure of either or both of the connection host control unit 35 and the address assignment unit 382 shown in FIGS. 9 and 10 is stored as a program in the memory 40, and the connection host control unit is based on the program in the CPU 39.
- FIG. 11 is a diagram illustrating a software stack that operates on the CPU 11 included in the host 1.
- the software stack mediates the operating system 61, a plurality of I / O devices, controls the operating system 61 as a single I / O device, and controls individual I / O devices.
- the I / O device driver 63a controls the VF 41a.
- the I / O device driver 63b controls the VF 41b.
- the mediation I / O device driver 62 holds the same interface as the I / O device drivers 63a and 63b.
- the intermediary I / O device driver 62 has two I / O devices provided by the SR-IOV-compatible I / O 4, and the I / O device driver 63 a and the I / O device driver correspond to them. 63b is recognized as being loaded.
- the mediation I / O device driver 62 uses the SR-IOV compatible I / O 4 by calling the I / O device driver 63a and the I / O device driver 63b.
- the mediation driver can control the I / O device drivers 63a and 63b at the same time.
- the mediation driver can independently control the use or non-use of the VF 41a and the VF 41b and the transmission amount of the packets used by the VF 41a and the VF 41b.
- control is performed so that the same SR-IOV-compatible I / O is connected by a plurality of different VFs (VF41a, VF41b) on the host device tree. Therefore, in the second embodiment, the mediation driver does not change the address setting described in the address conversion table, and the I / O between the host 1 and the SR-IOV compatible I / O 4 by the VF 41a and VF 41b. Packet transfer can be controlled.
- FIG. 12 is a flowchart showing an operation in which software operating on the host 1 issues an I / O packet to the SR-IOV compatible I / O 4.
- the mediation I / O device driver 62 that has received the I / O request from the operating system 61 selects an I / O device to be used (step A1).
- the mediation I / O device driver 62 calls the I / O device driver 63a (step A2).
- the bridge 12 issues an I / O packet (step A4).
- the upstream PCI express Ethernet bridge 14a receives the issued I / O packet, encapsulates it in an Ethernet frame with the MAC address of the downstream PCI express Ethernet bridge 3 as the destination, and transmits it to the Ethernet network 2 (step A4).
- the Ethernet network 2 transmits an Ethernet frame in which the I / O packet is encapsulated (step A5).
- the Ethernet adapter 31 of the downstream PCI Express-Ethernet bridge 3 receives the Ethernet frame in which the I / O packet is encapsulated, decapsulates the I / O packet, and transmits it to the host-side I / O packet transfer unit 32 (step). A11).
- the address conversion unit 33 receives the I / O packet from the host-side I / O packet transfer unit 32, refers to the address conversion table 37, and sets the destination address of the I / O packet downstream from the address assigned by the host 1 to the VF 41a.
- the PCI Express Ethernet bridge 3 converts the address assigned to the VF 41a, and converts the source address of the I / O packet from the address of the host 1 to the address of the downstream PCI Express Ethernet bridge 3 (step A12). Then, the address conversion unit 33 transmits the address-converted I / O packet to the I / O side I / O packet transfer unit 34 (step A13). In this way, the VF 41a receives the I / O packet from the I / O side I / O packet transfer unit 34.
- operations of the downstream PCI Express-Ethernet bridge 3 and the host 1 when an I / O packet is transferred from the SR-IOV compatible I / O 4 to the host will be described with reference to the drawings.
- FIG. 14 is a flowchart showing an operation in which the downstream PCI Express-Ethernet bridge processes the I / O packet issued by the SR-IOV compatible I / O.
- the address conversion unit 33 receives the I / O packet via the I / O side I / O packet transfer unit 34 (step B1).
- the address conversion unit 33 refers to the address conversion table 37 and converts the destination address of the I / O packet from the address assigned by the downstream PCI Express Ethernet bridge 3 to the address assigned by the host 1.
- the address conversion unit 33 converts the transmission source address of the I / O packet from the address assigned to the VF 41a by the downstream PCI Express Ethernet bridge 3 to the address assigned to the VF 41a by the host 1, and transfers the host side I / O packet. It transmits to the part 32 (step B2).
- the Ethernet adapter 31 receives an I / O packet from the host-side I / O packet transfer unit, and encapsulates the I / O packet into an Ethernet frame using the MAC address of the upstream PCI Express Ethernet bridge 14a. Then, the Ethernet adapter 31 transmits the encapsulated I / O packet to the Ethernet network 2 (step B3).
- the upstream PCI Express Ethernet bridge 14a receives the Ethernet frame in which the I / O packet is encapsulated, decapsulates the I / O packet, and transmits it to the bridge 12 (step B11).
- the bridge 12 receives the I / O packet, and performs processing specified by the I / O packet, such as interrupt to the CPU 11 and DMA processing to the memory 13 (step B12).
- the procedure described with reference to FIGS. 12 to 15 may be realized using a program.
- the host and SR -It is possible to flexibly control a plurality of communication paths to / from IOV-compatible I / O.
- the reason is that a plurality of different VFs are allocated to the same SR-IOV compatible I / O, and the same SR-IOV compatible I / O is connected to different buses on the host device tree. Because. By controlling the VF in this way, the mediation driver can control a plurality of VFs connected to the same SR-IOV-compatible I / O without changing the VF settings.
- the mediation I / O device driver 62 may operate two I / O devices, one as an active system and the other as a standby system.
- the mediation I / O device driver 62 is configured so that the standby I / O device driver 62 in the event of a failure in the upstream PCI Express-Ethernet bridge corresponding to the active I / O device or the cable or bus to which the bridge is connected.
- the device may be operated to switch usage. For example, in FIG.
- the system in which the host 1 and the VF 41a are connected via the upstream PCI Express-Ethernet bridge 14a is the active system, and the host 1 and the VF 41b are connected via the upstream PCI Express-Ethernet bridge 14b.
- the connected system is a standby system.
- the mediation I / O device driver 62 can control to switch the packet transmission path to the VF 41b.
- the VF 41a and the VF 41b are controlled to be connected to the same type of individual SR-IOV compatible I / O.
- the host 1, the downstream PCI Express-Ethernet bridge 3, and the SR-IOV compatible I / O 4 do not need to be activated. Furthermore, there is no need to perform processing such as changing the connection destination address of the VF or rewriting the address conversion table.
- the first modified example has an effect that the system switching of the transmission path of the packet having the redundant configuration can be performed at high speed.
- the mediation I / O device driver 62 may operate two I / O devices simultaneously as an operation system.
- the function of the mediation I / O device driver 62 can also load balance I / O instructions among a plurality of I / O devices.
- the intermediary I / O device driver 62 is connected to the VF 41a from the host 1 via the upstream PCI express-Ethernet bridge 14a and from the host 1 via the upstream PCI express-Ethernet bridge 14b.
- a route connected to the VF 41b may be used at the same time.
- load balancing load distribution
- the VF 41a and the VF 41b having different paths are controlled so as to be connected to the same type of individual SR-IOV compatible I / O. Therefore, even when load balancing is performed between the VF 41a and the VF 41b, it is not necessary to restart the hardware in the host 1, the downstream PCI Express-Ethernet bridge 3, and the SR-IOV compatible I / O 4. Furthermore, there is no need to perform processing such as changing the connection destination address of VF or rewriting the address conversion table.
- the second modification of the second embodiment has an effect that load balancing can be easily performed among a plurality of VFs in addition to the effect described in the second embodiment. is there.
- the configuration in which the host 1 and the SR-IOV compatible I / O 4 are each one is shown.
- the configuration of the embodiment to which the present invention is applicable is not limited to this.
- a configuration with a plurality of hosts and one SR-IOV compatible I / O 4 is also possible.
- VF 41a and VF 41b may be allocated to the host 1a
- VF 41c and VF 41d which are different VFs, may be allocated to the host 1b.
- a configuration in which a plurality of SR-IOV compatible I / Os 4 are connected to one host 1 is also possible.
- each SR-IOV compatible I / O 4 is connected to the Ethernet 2 via the individual downstream PCI Express Ethernet bridge 3.
- the upstream PCI express Ethernet bridge 14a and the upstream PCI express Ethernet bridge 14b are connected to the downstream PCI express Ethernet bridge 3 that is in one-to-one correspondence with the SR-IOV compatible I / O 4.
- Each upstream PCI Express Ethernet bridge provides an I / O bus path to any one different VF included in each SR-IOV compatible I / O.
- both the host 1 and the SR-IOV compatible I / O 4 are plural, there are a case where only the host 1 is plural and a case where only the SR-IOV compatible I / O 4 is plural. It can be realized by the combination.
- the configuration and operation have been described using a configuration in which two upstream PCI Express Ethernet bridges are connected to the host 1.
- the number of upstream PCI Express Ethernet bridges is not limited as long as it is two or more.
- a VF corresponding to the number of upstream PCI Express Ethernet bridges to which the host is connected is allocated to the host 1 from the SR-IOV compatible I / O 4.
- the number of VFs is not limited to two.
- the PCI express is used as the I / O bus
- the Ethernet network is described as an example of the network means for connecting the host and I / O.
- the type of I / O bus and the network means are not limited to these.
- the present invention can also be applied to configurations using other protocols that provide the same functions as these I / O buses and network means.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
ホストと周辺機器との間における柔軟なバス接続を可能とするために、ネットワーク装置は、複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段と、複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段と、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御する制御手段と、を備える。
Description
本発明はネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体に関し、特にホストと周辺機器との間において柔軟なバス接続を可能とするネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体に関する。
図17は、特許文献1に記載されている、本発明に関連するネットワークシステムの一例を示す図である。図17に示すネットワークシステムは、ホスト1と、イーサネット(登録商標)スイッチ200と、下流PCI(Peripheral Component Interconnect)エクスプレス−イーサネットブリッジ7と、周辺装置8とを含む。
下流PCIエクスプレス−イーサネットブリッジ7は、PCIエクスプレスバスとイーサネットスイッチ200との間をブリッジする。なお、PCIエクスプレスバスは、PCI−SIG(PCI Special Interest Group)で標準化されているI/Oバスの規格の名称である。
ホスト1は、CPU(Central Processing Unit)11と、メモリ13と、ルートコンプレックス121と、上流PCIエクスプレス−イーサネットブリッジ15とを備える。ルートコンプレックス121は、CPU11とメモリ13と上流PCIエクスプレス−イーサネットブリッジ15とを相互に接続する。上流PCIエクスプレス−イーサネットブリッジ15は、PCIエクスプレスバスとイーサネットスイッチ200とをブリッジする、ネットワークインタフェースである。CPU11またはメモリ13と、周辺装置8との間で送受信されるパケットをI/Oパケットと呼ぶ。
上流PCIエクスプレス−イーサネットブリッジ15は、ルートコンプレックス121からI/Oパケットを受信すると、受信したI/Oパケットを、下流PCIエクスプレス−イーサネットブリッジ7を宛先とするイーサネットフレームにカプセル化して、イーサネットスイッチ200に送信する。
上流PCIエクスプレス−イーサネットブリッジ15は、また、イーサネットスイッチ200からI/Oパケットがカプセル化されたイーサネットフレームを受信すると、受信したI/Oパケットをデカプセル化して、ルートコンプレックス121に送信する。
下流PCIエクスプレス−イーサネットブリッジ7は、イーサネットスイッチ200からI/Oパケットがカプセル化されたイーサネットフレームを受信すると、受信したI/Oパケットをデカプセル化し、周辺装置8に送信する。
下流PCIエクスプレス−イーサネットブリッジ7は、周辺装置8からI/Oパケットを受信する。そして、下流PCIエクスプレス−イーサネットブリッジ7は、受信したI/Oパケットを、上流PCIエクスプレス−イーサネットブリッジ15を宛先とするイーサネットフレームにカプセル化して、イーサネットスイッチ200に送信する。
図17に記載されたネットワークシステムは次のように動作する。
ソフトウェアの制御によってCPU11がI/Oパケットを発行すると、I/Oパケットはルートコンプレックス121を経由して上流PCIエクスプレス−イーサネットブリッジ15に送信される。上流PCIエクスプレスイーサネットブリッジ15は、受信したI/Oパケットをイーサネットフレームを用いてカプセル化し、下流PCIエクスプレス−イーサネットブリッジ7を宛先としてイーサネットスイッチ200に送信する。下流PCIエクスプレス−イーサネットブリッジ7は、I/Oパケットをカプセル化したイーサネットフレームを受信し、I/Oパケットをデカプセル化し、周辺装置8に送信する。
一方、周辺装置8がI/Oパケットを発行すると、下流PCIエクスプレス−イーサネットブリッジ7は、周辺装置8から受信したI/Oパケットをイーサネットフレームを用いてカプセル化する。そして、下流PCIエクスプレス−イーサネットブリッジ7は、カプセル化されたI/Oパケットを上流PCIエクスプレス−イーサネットブリッジ15を宛先としてイーサネットスイッチ200に送信する。上流PCIエクスプレス−イーサネットブリッジ15は、I/Oパケットをカプセル化したイーサネットフレームを受信し、I/Oパケットをデカプセル化する。そして、上流PCIエクスプレス−イーサネットブリッジ15は、I/Oパケットをルートコンプレックス121に送信する。
ルートコンプレックス121は、I/Oパケットを受信し、I/OパケットをCPU11またはメモリ13へ送信する。そして、I/Oパケットは、CPU11への割り込み制御や、メモリ13へのDMA(Direct Memory Access)など、指定された処理を行う。
また、特許文献2は、CPUと、I/O機器とが、上流PCIエクスプレスブリッジ、ネットワーク及び下流PCIエクスプレス−イーサネットブリッジを介して接続された、特許文献1と構成が類似する共有システムを記載している。
さらに、特許文献3は、運用系のNIC(Network Interface Card)と予備系のNICとを備え、NICが故障した場合にはNICを予備系に切り替えて運用を継続する構成を記載している。
下流PCIエクスプレス−イーサネットブリッジ7は、PCIエクスプレスバスとイーサネットスイッチ200との間をブリッジする。なお、PCIエクスプレスバスは、PCI−SIG(PCI Special Interest Group)で標準化されているI/Oバスの規格の名称である。
ホスト1は、CPU(Central Processing Unit)11と、メモリ13と、ルートコンプレックス121と、上流PCIエクスプレス−イーサネットブリッジ15とを備える。ルートコンプレックス121は、CPU11とメモリ13と上流PCIエクスプレス−イーサネットブリッジ15とを相互に接続する。上流PCIエクスプレス−イーサネットブリッジ15は、PCIエクスプレスバスとイーサネットスイッチ200とをブリッジする、ネットワークインタフェースである。CPU11またはメモリ13と、周辺装置8との間で送受信されるパケットをI/Oパケットと呼ぶ。
上流PCIエクスプレス−イーサネットブリッジ15は、ルートコンプレックス121からI/Oパケットを受信すると、受信したI/Oパケットを、下流PCIエクスプレス−イーサネットブリッジ7を宛先とするイーサネットフレームにカプセル化して、イーサネットスイッチ200に送信する。
上流PCIエクスプレス−イーサネットブリッジ15は、また、イーサネットスイッチ200からI/Oパケットがカプセル化されたイーサネットフレームを受信すると、受信したI/Oパケットをデカプセル化して、ルートコンプレックス121に送信する。
下流PCIエクスプレス−イーサネットブリッジ7は、イーサネットスイッチ200からI/Oパケットがカプセル化されたイーサネットフレームを受信すると、受信したI/Oパケットをデカプセル化し、周辺装置8に送信する。
下流PCIエクスプレス−イーサネットブリッジ7は、周辺装置8からI/Oパケットを受信する。そして、下流PCIエクスプレス−イーサネットブリッジ7は、受信したI/Oパケットを、上流PCIエクスプレス−イーサネットブリッジ15を宛先とするイーサネットフレームにカプセル化して、イーサネットスイッチ200に送信する。
図17に記載されたネットワークシステムは次のように動作する。
ソフトウェアの制御によってCPU11がI/Oパケットを発行すると、I/Oパケットはルートコンプレックス121を経由して上流PCIエクスプレス−イーサネットブリッジ15に送信される。上流PCIエクスプレスイーサネットブリッジ15は、受信したI/Oパケットをイーサネットフレームを用いてカプセル化し、下流PCIエクスプレス−イーサネットブリッジ7を宛先としてイーサネットスイッチ200に送信する。下流PCIエクスプレス−イーサネットブリッジ7は、I/Oパケットをカプセル化したイーサネットフレームを受信し、I/Oパケットをデカプセル化し、周辺装置8に送信する。
一方、周辺装置8がI/Oパケットを発行すると、下流PCIエクスプレス−イーサネットブリッジ7は、周辺装置8から受信したI/Oパケットをイーサネットフレームを用いてカプセル化する。そして、下流PCIエクスプレス−イーサネットブリッジ7は、カプセル化されたI/Oパケットを上流PCIエクスプレス−イーサネットブリッジ15を宛先としてイーサネットスイッチ200に送信する。上流PCIエクスプレス−イーサネットブリッジ15は、I/Oパケットをカプセル化したイーサネットフレームを受信し、I/Oパケットをデカプセル化する。そして、上流PCIエクスプレス−イーサネットブリッジ15は、I/Oパケットをルートコンプレックス121に送信する。
ルートコンプレックス121は、I/Oパケットを受信し、I/OパケットをCPU11またはメモリ13へ送信する。そして、I/Oパケットは、CPU11への割り込み制御や、メモリ13へのDMA(Direct Memory Access)など、指定された処理を行う。
また、特許文献2は、CPUと、I/O機器とが、上流PCIエクスプレスブリッジ、ネットワーク及び下流PCIエクスプレス−イーサネットブリッジを介して接続された、特許文献1と構成が類似する共有システムを記載している。
さらに、特許文献3は、運用系のNIC(Network Interface Card)と予備系のNICとを備え、NICが故障した場合にはNICを予備系に切り替えて運用を継続する構成を記載している。
上述の特許文献1及び特許文献2に記載された構成においては、CPUと周辺機器との間でI/Oパケットを送受信する際に、全てのI/Oパケットが同一の上流PCIエクスプレス−イーサネットブリッジを経由する。その結果、CPUと周辺装置との間のI/Oパケットの通信において、その性能や信頼性が当該上流PCIエクスプレス−イーサネットブリッジに依存して制限されるという課題がある。
また、特許文献3に記載された構成においては、通常は運用系のNICのみにより通信が行われる。このため、特許文献3に記載された構成には、MG(Media Gateway)とMGC(Media Gateway Controller)との間の通信において、通信速度が1枚のNICの性能により制限されるという課題がある。
さらに、特許文献3に記載された構成においては、複数枚のNICがそれぞれ運用系と予備系として用意される必要があるので、NICの運用系から予備系への切り替えの際にハードウエアの切り替えが発生する。ハードウエアの切り替えには時間を要するので、特許文献3に記載された構成には、切り替え時のサービスの中断時間が長くなるという課題もある。
本発明の目的は、ホストと周辺機器との間における柔軟なバス接続を可能とすることで、上述した課題のいずれかを解決するネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体を提供することにある。
また、特許文献3に記載された構成においては、通常は運用系のNICのみにより通信が行われる。このため、特許文献3に記載された構成には、MG(Media Gateway)とMGC(Media Gateway Controller)との間の通信において、通信速度が1枚のNICの性能により制限されるという課題がある。
さらに、特許文献3に記載された構成においては、複数枚のNICがそれぞれ運用系と予備系として用意される必要があるので、NICの運用系から予備系への切り替えの際にハードウエアの切り替えが発生する。ハードウエアの切り替えには時間を要するので、特許文献3に記載された構成には、切り替え時のサービスの中断時間が長くなるという課題もある。
本発明の目的は、ホストと周辺機器との間における柔軟なバス接続を可能とすることで、上述した課題のいずれかを解決するネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体を提供することにある。
本発明のネットワーク装置は、複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段と、複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段と、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御する制御手段と、を備える。
また、本発明のネットワークシステムは、複数のI/Oバスを保持するホストと、複数のI/Oインタフェースを備える周辺機器と、ホストと自装置とをネットワークを介して接続する第1のインタフェース手段と、周辺機器と自装置とを接続する第2のインタフェース手段と、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御する制御手段と、を備えるネットワーク装置と、を備える。
また、本発明のネットワーク構成方法は、複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続するステップと、複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続するステップと、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御するステップと、を備える。
さらに、本発明のネットワーク装置のプログラムを記録したプログラム記録媒体は、ネットワーク装置が備えるコンピュータを、複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段、複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御する制御手段、として機能させるプログラムを記録している。
また、本発明のネットワークシステムは、複数のI/Oバスを保持するホストと、複数のI/Oインタフェースを備える周辺機器と、ホストと自装置とをネットワークを介して接続する第1のインタフェース手段と、周辺機器と自装置とを接続する第2のインタフェース手段と、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御する制御手段と、を備えるネットワーク装置と、を備える。
また、本発明のネットワーク構成方法は、複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続するステップと、複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続するステップと、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御するステップと、を備える。
さらに、本発明のネットワーク装置のプログラムを記録したプログラム記録媒体は、ネットワーク装置が備えるコンピュータを、複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段、複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御する制御手段、として機能させるプログラムを記録している。
本発明のネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体は、ホストから周辺機器に接続される複数のI/Oバスのそれぞれが、異なるインタフェースに接続されているように制御する。その結果、本発明は、ホストと周辺機器とを接続するI/Oバスを柔軟に構成することを可能とするという効果を奏する。
次に、本発明の実施形態について図面を参照して詳細に説明する。
[第1の実施形態]
まず、本発明の第1の実施形態について説明する。
図16は、本発明の第1の実施形態のネットワーク装置の構成を示す図である。ネットワーク装置1601は、周辺機器とのインタフェース部1602、ホストとのインタフェース部1603と、制御部1604とを備える。制御部1604は、周辺機器が備える、ソフトウェアからアクセスされる複数のI/Oインタフェースを、周辺機器と接続されるホストが保持するそれぞれ異なるI/Oバスの配下に接続するように制御する。
制御部1604は、複数のインタフェースを保持する周辺機器の各I/Oインタフェースに対応するI/Oデバイスが、ホストから見て周辺機器の異なるI/Oバスに所属するように制御する。その結果、制御部1604は、ホストに対して、I/Oインタフェースの接続状態を、同一の周辺機器に接続された複数のI/Oデバイスが異なるバスに個別に接続するように認識させることができる。
その結果、第1の実施形態は、ホストと周辺機器との間の通信路を、柔軟に制御することができるという効果を奏する。
第1の実施形態の第1の変形例として、複数のI/Oデバイスのうち、1個を運用系、残余を予備系として動作させてもよい。この場合、運用系のI/Oデバイスに対応する経路上で障害が発生した場合、運用系のI/Oデバイスから予備系のI/Oデバイスに使用を切り替えるように動作させてもよい。
その結果、第1の実施形態の第1の変形例には、第1の実施形態の効果に加えて、さらに、冗長構成を備えたパケットの伝送路の系切り替えを高速に行うことができるという効果がある。
また、第1の実施形態の別の第2の変形例として、複数のI/Oデバイスを同時に運用系として動作させてもよい。この場合、複数のI/Oデバイスの間のデータ量をロードバランスさせてもよい。
その結果、第1の実施形態の第2の変形例には、第1の実施形態で説明した効果に加えて、さらに、ロードバランシングを容易に行うことができるという効果がある。
[第2の実施形態]
次に、本発明の第2の実施形態について説明する。第2の実施形態では、本願発明のネットワーク装置について、より詳細に説明する。
図1は、本発明の第2の実施形態のネットワークシステムの構成を示す図である。図1を参照すると、第2の実施形態のコンピュータシステムは、ホスト1と、イーサネット2と、下流PCIエクスプレスイーサネットブリッジ3と、SR−IOV(Single Root I/O Virtualization)対応I/O4とを含む。SR−IOV対応I/O4は、SR−IOVに準拠する周辺機器である。ここで、SR−IOVは、I/Oデバイスを制御して複数のVM(Virtual Machine)からのI/Oデバイスへのアクセスを実現するための、PCI−SIGが定めたPCIエクスプレスのI/Oデバイスに関する規格である。そして、SR−IOVに準拠した周辺機器は、複数のVMが動作しているホストのI/Oスロットに挿入して使用される。各VMは、割り当てられたVFに対して、ソフトウェアの仲介層を介さずに直接I/O命令を発行する。その結果、I/O処理に関するオーバヘッドの削減が可能卯となる。
ホスト1は、CPU11と、ブリッジ12と、メモリ13と、上流PCIエクスプレスイーサネットブリッジ14a及び14bと、を含む。上流PCIエクスプレス−イーサネットブリッジ14a及び14bは、イーサネット2に対するホスト1のネットワークインタフェースである。なお、上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとは同一のものであってもよい。これらのデバイスを識別するために、上流PCIエクスプレス−イーサネットブリッジ14の添字をa,bとしている。
ここで、SR−IOV対応I/O4は、ホスト1上のソフトウェアからアクセスできるインタフェースを複数備えている。これらの複数のインタフェースをそれぞれVF(Virtual Function)と呼ぶ。図1では、複数のインタフェースを区別するために、各VFをVF41a、VF41bなどと表記する。
また、第2の実施形態では、VF41aとVF41bとがホスト1に割り当てられる。VF41aは、下流PCIエクスプレス−イーサネットブリッジ3から、上流PCIエクスプレスイーサネットブリッジ14aを経由してホスト1に接続されるように割り当てられる。一方、VF41bは、下流PCIエクスプレス−イーサネットブリッジ3から、上流PCIエクスプレスイーサネットブリッジ14bを経由してホスト1に接続されるように割り当てられる。
図2は、第2の実施形態における、ホスト1のデバイスツリーを示す図である。SR−IOV対応I/O4のVF41aとVF41bとは、それぞれ上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとに関係づけられた、異なるPCIエクスプレスバスに属している。このため、ホスト1のデバイスツリーは、SR−IOV対応I/O部4が提供するI/O機能(以下、I/Oデバイスと呼ぶ)が、異なるバスに1つずつ備えられているように構成される。
図1において、下流PCIエクスプレス−イーサネットブリッジ3は、イーサネットアダプタ31と、ホスト側I/Oパケット転送部32と、制御部330と、I/O側I/Oパケット転送部34とを備えるネットワーク装置である。そして、下流PCIエクスプレス−イーサネットブリッジ3は、さらに、接続ホスト制御部35と、仮想リソースレジスタ36とを備える。ここで、制御部330は、アドレス変換部33と、アドレス変換テーブル37と、接続仮想化部38とを備える。さらに、接続仮想化部38は、アドレス対応部381と、アドレス割当部382とを備える。また、下流PCIエクスプレス−イーサネットブリッジ3は、さらに、CPU39及びメモリ40を備えていてもよい。
イーサネットアダプタ31は、I/Oパケットのイーサネットフレームへのカプセル化処理を行う。ホスト側I/Oパケット転送部32は、I/Oパケットを適切な宛先に転送する。アドレス変換部33は、I/Oパケットに記載されたアドレスを変換する。I/O側I/Oパケット転送部34は、I/Oパケットを適切な宛先に転送する。接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と、上流PCIエクスプレスイーサネットブリッジ14a、14bとの接続を制御する。図7に示すように、仮想リソースレジスタ36は、各VFの制御に用いられる仮想VFレジスタ361a、361bを含む。仮想リソースレジスタ36の構成については、後で図7を用いて説明する。アドレス変換テーブル37は、アドレス変換部33がI/Oパケットに記載されたアドレスを変換する際に使用される。アドレス対応部381及びアドレス割当部382は、ホスト1とSR−IOV対応I/O4との接続を制御する。
以下に、各部の動作をさらに詳細に説明する。
イーサネットアダプタ31は、イーサネット2からPCIエクスプレスのI/Oパケットがカプセル化されたイーサネットフレームを受信し、受信したI/Oパケットをデカプセル化する。また、イーサネットアダプタ31は、イーサネットフレームを受信した上流PCIエクスプレスイーサネットブリッジを識別する情報と共に、I/Oパケットをホスト側I/Oパケット転送部32に送信する。
イーサネットアダプタ31は、さらに、ホスト側I/Oパケット転送部32からSR−IOV対応I/O4が発行したI/Oパケットと、発行元のVFを識別する情報を受信する。そして、I/Oパケットの発行元がVF41aであれば、イーサネットアダプタ31は、上流PCIエクスプレスイーサネットブリッジ14aのMAC(Media Access Control)アドレスを用いてI/Oパケットをイーサネットフレームにカプセル化し、イーサネットネットワーク2に送信する。
また、I/Oパケットの発行元がVF41bであれば、イーサネットアダプタ31は、上流PCIエクスプレスイーサネットブリッジ14bのMACアドレスを用いてI/Oパケットをイーサネットフレームにカプセル化し、イーサネット2に送信する。
図3は、PCIエクスプレスのI/Oパケットがカプセル化されたイーサネットフレームの構成を示す図である。図3において、イーサネットフレーム1101は、イーサネットヘッダ1102及びTLP(Transaction Layer Packet)1103を含んで構成される。イーサネットヘッダ1102は、イーサネットフレーム1101のヘッダである。イーサネットヘッダ1102は、送信先MACアドレス1104、送信元MACアドレス1105を含む。TLP1103は、PCIエクスプレスのI/Oパケットである。PCIエクスプレスのI/Oパケットは、パケットの宛先アドレス1106、パケットの送信元アドレス1107及びペイロード1108を含む。
PCI Expressでは、接続されたデバイスに割り当てるアドレスとして、ホストのI/O空間にマッピングされたI/Oアドレスと、ホストのメモリ空間にマッピングされたメモリアドレスと、ID番号との3種類のアドレスが利用できる。ID番号は、バス(Bus)番号と、デバイス(Device)番号と、ファンクション(Function)番号との組で構成される。ID番号を構成するこれらの番号の組を、以下「BDF番号」と呼ぶ。
また、I/Oパケットのアドレッシングには、宛先のメモリアドレスまたはI/Oアドレスを指定するアドレスルーティングと、宛先のID番号を指定するIDルーティングとが利用できる。そして、パケットの宛先アドレス1106及びパケットの送信元アドレス1107としては、上で説明したメモリアドレス、I/Oアドレス及びID番号を組み合わせて用いることもできる。
図3に示すイーサネットフレームによって、イーサネットアダプタ31と上流PCIエクスプレス−イーサネットブリッジ14a、14bとの間で、イーサネットでカプセル化されたI/Oパケットが伝送される。
ホスト側I/Oパケット転送部32は、イーサネットアダプタ31から、I/Oパケット及びそのI/Oパケットが経由した上流PCIエクスプレス−イーサネットブリッジの識別情報を受信する。そして、ホスト側I/Oパケット転送部31は、受信したI/Oパケットがホスト1によるSR−IOV対応I/O4のアドレス制御に関するパケットである場合は、受信したI/Oパケットをアドレス対応部381に転送する。そして、ホスト側I/Oパケット転送部31は、受信したI/Oパケットがそれ以外のI/Oパケットであった場合は、受信したI/Oパケットをアドレス変換部33に転送する。いずれの場合も、受信したI/Oパケットは、I/Oパケットを送信した上流PCIエクスプレスイーサネットブリッジの識別情報と共に転送先へ転送される。ここで、I/Oパケットとともに転送される上流PCIエクスプレス−イーサネットブリッジの識別情報は、I/Oパケットに含まれていてもよい。
上流PCIエクスプレス−イーサネットブリッジの識別情報としては、上流PCIエクスプレス−イーサネットブリッジのMACアドレスまたはそのMACアドレスと対応する情報を用いてもよい。あるいは、ホスト側I/Oパケット転送部32は、上流PCIエクスプレス−イーサネットブリッジを識別できる他の情報を上流PCIエクスプレス−イーサネットブリッジの識別情報として扱ってもよい。たとえば、識別情報として、上流PCIエクスプレス−イーサネットブリッジに対して順に付与された番号を用いてもよい。
アドレスの制御に関するI/Oパケットの例としては、PCI Expressで定義されたコンフィグレーションリードパケットとコンフィグレーションライトパケットがある。コンフィグレーションリードパケットとコンフィグレーションライトパケットとは、それぞれ、SR−IOV対応I/O4に設定されたアドレスの値を読み出し、またはSR−IOV対応I/O4にアドレスの値を書き込むために用いられる。
また、ホスト側I/Oパケット転送部32は、アドレス変換部から、VF41aまたはVF41bが発行したI/Oパケットと、発行元VFを識別するためのVF識別番号とを受信する。そして、ホスト側I/Oパケット転送部32は、VF41aまたはVF41bが発行したI/OパケットとVF識別番号とをイーサネットアダプタ31に転送する。なお、I/Oパケットは、自パケットを発行したVF識別番号を含んでいてもよい。
図4は、アドレス変換部33により参照される、アドレス変換テーブル37の一例を示す図である。アドレス変換テーブル37は、ターゲットサーチテーブル370及び複数のマッピングテーブル371a、371bを含む。アドレス変換部33は、アドレス変換テーブル37を参照して、I/Oパケットのアドレスを書き替える。
ターゲットサーチテーブル370は、VF番号と、上流PCIエクスプレス−イーサネットブリッジの識別情報との対応関係を示す情報を含んでいる。図4のターゲットサーチテーブル370は、VF番号が1であるVFが、識別情報が1である上流PCIエクスプレス−イーサネットブリッジに対応し、VF番号が2であるVFが、識別情報が2である上流PCIエクスプレス−イーサネットブリッジに対応することを表している。
マッピングテーブル371a、371bは、上流PCIエクスプレス−イーサネットブリッジの識別情報ごとの複数のテーブルから成る。これらの複数のマッピングテーブルを区別するために、各マッピングテーブルは、マッピングテーブル371a、マッピングテーブル371bなどと表記される。本実施形態では、上流PCIエクスプレス−イーサネットブリッジが2個の場合について説明する。従って、マッピングテーブルは2個ある。しかし、上流PCIエクスプレス−イーサネットブリッジが3個あるいはそれ以上存在する場合は、その数に応じてマッピングテーブルの数を増やしてもよい。
マッピングテーブル371aを例にマッピングテーブルの内容を説明する。
マッピングテーブル371aは、識別情報が1である上流PCIエクスプレス−イーサネットブリッジを通過するI/Oパケットのアドレス変換の際に使用される。マッピングテーブル371aは、ホストのBDF番号と、VFのBDF番号とを含む。また、マッピングテーブル371aは、メモリアドレスの変換に用いるためのメモリベース値を含んでいてもよい。そして、マッピングテーブル371aは、これらのアドレスに関して、それぞれ、ホストが割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジ3が割り当てたアドレスを保持している。なお、ホスト及び下流PCIエクスプレス−イーサネットブリッジ3によるアドレス割当の動作については後述する。
アドレス変換部33は、ターゲットサーチテーブル370及びマッピングテーブル371a、371bを参照する。その結果、アドレス変換部33は、VF番号と上流PCIエクスプレス−イーサネットブリッジとの対応情報を得ることができる。さらに、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジ毎の、ホストが割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジが割り当てたアドレスとの対応情報を得ることもできる。
ホスト1からSR−IOV対応I/O4に送信されるI/Oパケットの宛先アドレスは、アドレス変換部33において、次のように変換される。すなわち、I/Oパケットの宛先アドレスは、アドレス変換部33において、ホスト1が起動時にVF41aとVF41bとに割り当てたアドレスから、下流PCIエクスプレス−イーサネットブリッジ3がVF41aとVF41bとに割り当てたアドレスにそれぞれ変換される。
そして、ホストからSR−IOV対応I/O4に送信されるI/Oパケットの送信元アドレスは、アドレス変換部33において、ホスト1で付与されたアドレスから下流PCIエクスプレス−イーサネットブリッジ3のアドレスに変換される。
アドレス変換部33の具体的な動作を以下に説明する。アドレス変換部33は、ホスト1からのI/Oパケットを上流PCIエクスプレスイーサネットブリッジ14a(識別情報を「1」とする)を経由して受信すると、受信したパケットから、上流PCIエクスプレス−イーサネットブリッジ14aの識別情報が「1」であることを読み出す。その結果、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジの識別情報「1」に対応する、マッピングテーブル371aを参照する。
一方、アドレス変換部33が、上流PCIエクスプレスイーサネットブリッジ14b(識別番号を2とする)を経由してホスト1からのI/Oパケットを受信した場合は、次のように動作する。すなわち、アドレス変換部33は、受信したパケットから、上流PCIエクスプレス−イーサネットブリッジ14bの識別情報が「2」であることを読み出す。その結果、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジの識別情報「2」に対応する、マッピングテーブル371bを参照する。
ターゲットサーチテーブル370は、SR−IOV対応I/O4からホストへ転送されるI/OパケットのVF番号に対応する送信先の上流PCIエクスプレス−イーサネットブリッジを、アドレス変換部33が指定するために用いられる。
図5は、ホスト1が発行したI/Oパケットのアドレス変換の一例を説明するための図である。図5を用いて、具体的なアドレス変換の手順を説明する。
なお、図5では、I/Oパケット1201の上流PCIエクスプレス−イーサネットブリッジの識別情報は「1」である場合の例を示す。すなわち、I/Oパケット1201は、上流PCIエクスプレス−イーサネットブリッジ14aを経由して送信されたものとする。
図5に示したI/Oパケット1201は、宛先アドレス1202をアドレスルーティングで指定し、パケットの送信元アドレス1203をID番号で指定する場合を示している。すなわち、I/Oパケット1201は、宛先アドレス1202としてメモリアドレス、送信元アドレス1203としてホストBDF番号をそれぞれ格納している。
アドレス変換部33がホスト側I/Oパケット転送部32からI/Oパケット1201を受信した時点では、宛先アドレス1202及び送信元アドレス1203はそれぞれ「0001 0014h」及び「0,0,0」となっている。そして、アドレス変換部33は、I/Oパケット1201の上流PCIエクスプレス−イーサネットブリッジの識別情報が「1」であることから、識別情報が「1」である、図4のマッピングテーブル371aを参照する。
アドレス変換部33は、マッピングテーブル371aを参照し、I/Oパケット1201の宛先アドレス1202を、メモリベース値「0001 0000h」及び「0000 1000h」に基づいて、「0000 1014h」に書き替える。そして、I/Oパケット1201の送信元アドレス1203を、ホスト1が割り当てた「0,0,0」から下流PCIエクスプレス−イーサネットブリッジが割り当てた「1,0,0」に書き替える。このアドレス変換により、各VFは、I/Oパケット1201を、下流PCIエクスプレス−イーサネットブリッジが送信したパケットとして処理することが可能になる。
ここで、図5においては、I/Oパケット1201の宛先アドレスを、アドレスルーティングとした。しかし、宛先アドレスのルーティング方法にBDF番号によるルーティングを用いてもよい。BDF番号によるルーティングを行う場合には、アドレス変換部33において、BDF番号をホスト1が指定するBDF番号から下流PCIエクスプレス−イーサネットブリッジが指定するBDF番号へ変換してもよい。
次に、アドレス変換部33における、SR−IOV対応I/O4がホスト1に向けて発行したI/Oパケットのアドレス変換の手順について説明する。
アドレス変換部33は、SR−IOV対応I/O4が発行したI/OパケットをI/O側I/Oパケット転送部34から受信する。そして、アドレス変換部33は、I/Oパケットに記載されたアドレスを変換し、ホスト側I/Oパケット転送部32にI/Oパケットを発行したVFの識別番号と共に送信する。
ここで、アドレス変換部33は、SR−IOV対応I/O4から送信されたI/Oパケットを受信すると、I/Oパケットの送信元アドレスを、下流PCIエクスプレス−イーサネットブリッジ3が送信元のVFに割り当てたアドレスから、ホスト1が送信元のVFに割り当てたアドレスに変換する。
図6は、VF41が発行したI/Oパケットのアドレス変換の一例を説明するための図である。図6を用いて、具体的なアドレス変換の手順の例を説明する。
SR−IOV対応I/O4が発行したI/Oパケット1301のルーティング方法は、図5で説明したI/Oパケット1201と同様であるとする。すなわち、I/Oパケット1301は、宛先アドレス1302をメモリアドレスで指定し、送信元アドレス1303をBDF番号で指定する。図6では、I/Oパケット1301の送信元が、VF番号が「1」であるVF41aの場合について説明する。
アドレス変換部33がI/O側I/Oパケット転送部34からI/Oパケット1301を受信した時点では、I/Oパケット1301の宛先アドレス1302及び送信元アドレス1303は、それぞれ「0022 0000h」及び「1,0,1」となっている。そして、アドレス変換部33は、図4のターゲットサーチテーブル370を参照する。アドレス変換部33は、I/Oパケット1301の送信元VF番号が「1」であることから、経由する上流PCIエクスプレス−イーサネットブリッジの識別番号が「1」であることを知る。このため、アドレス変換部33は、識別情報が「1」であるマッピングテーブル371aを参照する。
I/Oパケット1301の送信元アドレスには、下流PCIエクスプレス−イーサネットブリッジが割り当てたVF番号1のVFに対応するBDF番号である「1,0,1」が設定されている。そして、I/Oパケット1301の宛先アドレス1302には、「0022 0000h」が設定されている。
アドレス変換部33は、マッピングテーブル371aを参照し、I/Oパケット1301の送信元アドレス1303を、下流PCIエクスプレス−イーサネットブリッジが割り当てた「1,0,1」からホスト1が割り当てた「13,0,0」に書き替える。このアドレス変換により、ホスト1は、I/Oパケット1301を、下流PCIエクスプレス−イーサネットブリッジ3が送信したパケットとして処理することが可能になる。
なお、上の説明においては、I/Oパケット1301のアドレス変換においては、宛先アドレス1302(「0022 0000h」)の書き換えを行っていない。これは、I/Oパケット1301の宛先のメモリへのアクセスがDMAで行われるからである。すなわち、DMAアクセスの場合には、I/Oパケット生成時にすでに宛先アドレスとしてホスト空間のアドレスが指定されるので、アドレス変換部において宛先アドレスを変換する必要がないからである。しかしながら、図5における宛先アドレスの変換と逆の手順を用いて、I/Oパケット1301の宛先アドレス1302を、下流PCIエクスプレス−イーサネットブリッジのアドレス空間からホスト1のアドレス空間へ変換を行う構成としてもよい。
また、図6においては、I/Oパケット1301の宛先アドレスを、アドレスルーティングとした。しかし、宛先アドレスのルーティング方法にBDF番号によるルーティングを用いてもよい。BDF番号によるルーティングを行う場合には、アドレス変換部33において、BDF番号を下流PCIエクスプレス−イーサネットブリッジが指定するBDF番号からホスト1が指定するBDF番号へ変換してもよい。
図5及び図6で説明した実施形態では、I/Oパケットの送信元アドレスが、アドレス変換部33において、ホスト1が割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジ3が割り当てたアドレスとの間で書き替えられる構成とした。ここで、I/Oパケットは、ホスト1あるいはSR−IOV対応I/O4から送信されたI/Oパケットである。しかしながら、I/Oパケットの転送先が、送信元アドレスの変換を行うことなくI/Oパケットを処理可能であれば、アドレス変換部は送信元アドレスの変換を行わず、そのままI/Oパケットを転送する構成としてもよい。
さらに、上述の説明で示したアドレス変換テーブル37に記載された数値は例示であり、他の数値あるいは文字列等による表記も可能である。例えば、上流PCIエクスプレス−イーサネットブリッジの識別情報として、MACアドレスを使用してもよい。
I/O側I/Oパケット転送部34は、ホスト1が発行したI/Oパケットをアドレス変換部33から受信し、SR−IOV対応I/O4の指定されたVFへ送信する。
I/O側I/Oパケット転送部34は、SR−IOV対応I/O4のVFからI/Oパケットを受信する。そして、受信したI/Oパケットが、下流PCIエクスプレスイーサネットブリッジがSR−IOV対応I/O4に割り当てるアドレスの制御に関するものであれば、I/O側I/Oパケット転送部34は、受信したI/Oパケットをアドレス割当部382に送信する。それ以外のI/Oパケットであれば、I/O側I/Oパケット転送部34は、受信したI/Oパケットをアドレス変換部33に送信する。
接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と上流PCIエクスプレスイーサネットブリッジ14a、14bとの接続を管理する。
上流PCIエクスプレス−イーサネットブリッジ14a、14bは、MACアドレスを含む自身の識別情報を定期的に下流PCIエクスプレス−イーサネットブリッジ3へブロードキャストする。接続ホスト制御部35は、上流PCIエクスプレス−イーサネットブリッジ14a、14bからブロードキャストされた上流PCIエクスプレス−イーサネットブリッジの識別情報を受信する。そして、接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と接続する上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとのMACアドレスをイーサネットアダプタ31に通知する。接続ホスト制御部35は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、この通知を行う。イーサネットアダプタ31は、通知されたMACアドレスを用いて、I/Oパケットをカプセル化する。
一方、接続ホスト制御部35は、上流PCIエクスプレスイーサネットブリッジ14aに対応する経路にVF41aを割り当て、上流PCIエクスプレスイーサネットブリッジ14bに対応する経路にVF41bを割り当てるようにアドレス対応部381に通知する。
接続仮想化部38は、アドレス対応部381とアドレス割当部382とを備える。アドレス対応部381は、接続ホスト制御部35から、各VFとホストとの対応に関する情報を受信する。また、アドレス対応部381は、ホスト側I/Oパケット転送部32から、ホスト1が発行した各VFへのコンフィグレーションリードパケット及びコンフィグレーションライトパケットを受信する。そして、アドレス対応部381は、受信したコンフィグレーションリードパケットに、パケットで指定されたVFに対応する仮想リソースレジスタ36の値を読み込ませる。さらに、アドレス対応部381は、受信したコンフィグレーションライトパケットで指定された値を、パケットで指定されたVFに対応する仮想VFレジスタに書き込む。さらに、アドレス対応部381は、仮想VFレジスタに記載された、ホスト1によって割り当てられたアドレス情報を、対応するVFのマッピングテーブルに登録する。
アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、SR−IOV対応I/O4にアドレスの制御に関するI/OパケットをI/O側I/Oパケット転送部34を介して発行し、SR−IOV対応I/O4のI/O情報を収集する。そして、アドレス割当部382は、I/O情報が要求するアドレスをVF41aとVF41bとに割り当てる。また、アドレス割当部382は、アドレス割当部382が割り当てたVF41aのアドレスをマッピングテーブル371aに、VF41bのアドレスをマッピングテーブル371bに登録する。さらに、アドレス割当部382は、取得したI/O情報を仮想リソースレジスタ36に反映させる。ここでアドレス割当部382が割り当てるアドレスは、マッピングテーブルにおいて、下流PCIエクスプレス−イーサネットブリッジが割り当てるアドレスに相当する。
図7は、仮想リソースレジスタ36の構成の一例を示す図である。仮想リソースレジスタ36は、各VFの制御に用いられる仮想VFレジスタ361a、361bを含む。これらの仮想VFレジスタが要求するアドレス領域や、デバイス情報は、アドレス割当部382により設定される。また、ホスト1から仮想VFレジスタへのアクセスは、アドレス対応部381の制御により、接続ホスト制御部35がホスト1に割り当てたVFに対応するレジスタに対してのみ行われる。ホスト1が、各VFにアドレスを割り当てるために仮想VFレジスタに設定した値は、アドレス変換テーブル37に反映される。
図7では、仮想VFレジスタは、仮想VFレジスタ361a、仮想VFレジスタ361bなどと表記される。仮想VFレジスタ361aはVF41aに、仮想VFレジスタ361bはVF41bにそれぞれ対応するものとする。そして、仮想VFレジスタ361aと仮想VFレジスタ361bには、ホスト1がVF41aとVF41bとに割り当てたアドレス、及び、各VFに対応するI/Oデバイスの情報(以下、「I/O情報」という。)がそれぞれ記載されている。
ホスト1が起動されるか、SR−IOV対応I/O4がホスト1にホットプラグされた場合、ホスト1は、アドレス割り当て処理の開始時に、I/Oバスにコンフィグレーションリードパケットを送信する。そして、ホスト1は、コンフィグレーションリードパケットの応答から、各I/Oバスの配下に接続されているI/O情報を取得する。以下に、その動作について説明する。
ホスト1は、コンフィグレーションリードパケットを用いて仮想VFレジスタ361a、361bをリードする。I/Oバスの配下にI/Oデバイスが存在すると、そのI/O情報がコンフィグレーションリードパケットの応答としてホスト1に返送される。
アドレス対応部381は、上流PCIエクスプレスイーサネットブリッジ14aを経由してホスト1から受信したコンフィグレーションリードパケットに、パケットで指定された仮想VFレジスタ361aの値をリードさせる。仮想VFレジスタ361aには、VF41aに対応するI/O情報が記載されている。そして、アドレス対応部381は、コンフィグレーションリードパケットの応答をホスト1に返信する。
同様に、アドレス対応部381は、ホスト1から上流PCIエクスプレスイーサネットブリッジ14bを経由して受信したコンフィグレーションリードパケットに、パケットで指定された仮想VFレジスタ361bをリードさせる。仮想VFレジスタ361bには、VF41bに対応するI/O情報が記載されている。そして、アドレス対応部381は、コンフィグレーションリードパケットの応答をホスト1に返信する。
ホスト1は、各I/Oバスからのコンフィグレーションリードパケットの応答から、I/Oバスとその配下にあるI/O情報の対応情報を得る。
その結果、ホスト1から見て、VF41a、VF41bは、それぞれ上流PCIエクスプレスイーサネットブリッジ14a、14bに関するI/Oバスに所属するように制御される。すなわち、ホスト1からは、VF41aが上流PCIエクスプレスイーサネットブリッジ14aを経由するI/Oバスに所属しており、また、VF41bが上流PCIエクスプレスイーサネットブリッジ14bを経由するI/Oバスに所属しているように見えるようになる。
アドレス対応部381は、さらに、ホスト1がVF41aにアドレスを割り当てるために発行したI/Oパケットを、上流PCIエクスプレスイーサネットブリッジ14aを経由して受信する。アドレス対応部381は、また、VF41bにアドレスを割り当てるために、ホスト1が発行したI/Oパケットを上流PCIエクスプレスイーサネットブリッジ14bを経由して受信する。
そして、ホスト1は、SR−IOV対応I/O4を使用するために次の手順でSR−IOV対応I/O4にアドレスを割り当てる。すなわち、ホスト1は、コンフィグレーションライトパケットを用いて仮想VFレジスタ361aにアドレスを書き込むことで、VF41aにアドレスを割り当てる。同様に、ホスト1は、コンフィグレーションライトパケットを用いて仮想VFレジスタ361bにアドレスを書き込むことで、VF41bにアドレスを割り当てる。
図8は、仮想VFレジスタ361aの内容の一例を示す図である。仮想VFレジスタ361aには、VF41aに関してホスト1が割り当てたホスト1及びVFのアドレスが書き込まれている。また、仮想VFレジスタ361aには、VFに対応するI/OデバイスのI/O情報も記載されている。VF41bに関するアドレスが書き込まれている仮想VFレジスタ361bも、構成は同様である。
アドレス対応部381は、仮想VFレジスタ361aに記載された、ホスト1によって割り当てられたアドレス情報を、マッピングテーブル371aに登録する。同様に、アドレス対応部381は、仮想VFレジスタ361bに記載された、ホスト1によって割り当てられたアドレス情報をマッピングテーブル371bに登録する。
上記で説明した接続ホスト制御部35及び接続仮想化部38の動作を、流れ図を用いて以下に説明する。
図9は、接続ホスト制御部35の動作を説明するための流れ図である。接続ホスト制御部35は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、下流PCIエクスプレスイーサネットブリッジ3と接続する、上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとのMACアドレスをイーサネットアダプタ31に通知する(ステップC1)。
そして、接続ホスト制御部35は、上流PCIエクスプレスイーサネットブリッジ14aに対応する経路にVF41aを割り当て、上流PCIエクスプレスイーサネットブリッジ14bに対応する経路にVF41bを割り当てるようにアドレス対応部381に通知する(ステップC2)。
図10は、アドレス割当部382の動作を説明するための流れ図である。
図10において、アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、SR−IOV対応I/O4にアドレスの制御に関するI/OパケットをI/O側I/Oパケット転送部34を介して発行し、SR−IOV対応I/O4のI/O情報を収集する(ステップD1)。ここで、アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、ステップD1の動作を行う。そして、アドレス割当部382は、収集した情報に基づいて、I/Oが要求するアドレスを各VFに割り当てる(ステップD2)。そして、アドレス割当部382は、割り当てた各VFのアドレスをマッピングテーブルに登録する(ステップD3)。さらに、アドレス割当部382は、取得したI/O情報を仮想リソースレジスタ36に反映させる(ステップD4)。
図18は、アドレス対応部381の動作を説明するための流れ図である。
図18において、ホスト1が起動されるかSR−IOV対応I/O4がホスト1にホットプラグされると、アドレス対応部381は、接続ホスト制御部35からVFとホストとの対応に関する情報を受信する(ステップD5)。また、アドレス対応部381は、コンフィグレーションリードパケットに、パケットで指定されたVFに対応する仮想リソースレジスタの値を読み込ませる(ステップD6)。そして、アドレス対応部381は、コンフィグレーションライトパケットで指定された値を、パケットで指定されたVFに対応する仮想VFレジスタへ書き込ませる(ステップD7)。さらに、アドレス対応部381は、仮想VFレジスタに書き込まれた、ホスト1によって割り当てられた各VFのアドレス情報を、各VFに対応するマッピングテーブルに登録する(ステップD8)。その結果、アドレス対応部381は、ホスト1から見てVF41a、41bが上流PCIエクスプレスイーサネットブリッジ14a、14bに関するI/Oバスに所属するように制御する。
ここで、下流PCIエクスプレスイーサネットブリッジ3は、CPU39及びメモリ40を備えていてもよい。そして、図9及び図10にそれぞれ示した接続ホスト制御部35及びアドレス割当部382のいずれか又は両方の動作手順を、メモリ40にプログラムとして記憶させ、CPU39にそのプログラムに基づいて接続ホスト制御部35及びアドレス割当部382のいずれか又は両方を制御させることで実現してもよい。
あるいは、下流PCIエクスプレスイーサネットブリッジ3に、図9または図10に示したプログラムを書き込んだ組み込みプロセッサを実装してもよい。そして、その組み込みプロセッサが備えるCPUにプログラムを実行させることで、接続ホスト制御部35及びアドレス割当部382のいずれか又は両方を制御してもよい。
図11は、ホスト1が備えるCPU11上で動作するソフトウェアスタックを示す図である。ソフトウェアスタックは、オペレーティングシステム61と、複数のI/Oデバイスを仲介し、オペレーティングシステム61に対し1つのI/Oデバイスとして制御する仲介I/Oデバイスドライバ62と、個別のI/Oデバイスを制御するI/Oデバイスドライバ63a、63bとを含む。I/Oデバイスドライバ63aは、VF41aを制御する。I/Oデバイスドライバ63bはVF41bを制御する。仲介I/Oデバイスドライバ62は、I/Oデバイスドライバ63a、63bと同一のインタフェースを保持する。仲介I/Oデバイスドライバ62は、SR−IOV対応I/O4が提供するI/Oデバイスをホスト1が2つ保持しており、それらに対し、I/Oデバイスドライバ63aとI/Oデバイスドライバ63bとがロードされていると認識する。仲介I/Oデバイスドライバ62は、I/Oデバイスドライバ63aとI/Oデバイスドライバ63bを呼び出すことでSR−IOV対応I/O4を使用する。
仲介ドライバは、I/Oデバイスドライバ63a、63bを同時に制御することが可能である。従って、仲介ドライバは、VF41a及びVF41bの使用あるいは不使用や、VF41a及びVF41bがそれぞれ使用するパケットの伝送量を、それぞれ独立に制御することが可能である。ここで、本実施形態においては、ホストのデバイスツリー上では同一のSR−IOV対応I/Oが複数の異なるVF(VF41a、VF41b)でそれぞれ接続されているように制御されている。従って、第2の実施形態においては、仲介ドライバは、アドレス変換テーブルに記載されたアドレス設定を変更することなく、VF41a及びVF41bによるホスト1とSR−IOV対応I/O4との間のI/Oパケット転送を制御することができる。言い換えれば、仲介ドライバは、アドレス変換部の動作を変更することなく、VFごとのI/Oパケットの転送を制御することができる。
次に、ホスト1からSR−IOV対応I/O4に向けてパケットが転送される場合の、ホスト1及び下流PCIエクスプレス−イーサネットブリッジ3の動作を図面を参照して説明する。
図12は、ホスト1上で動作するソフトウェアがSR−IOV対応I/O4にI/Oパケットを発行する動作を示す流れ図である。ここではホスト1がVF41aにI/Oパケットを発行する場合について説明する。
オペレーティングシステム61からI/O要求を受信した仲介I/Oデバイスドライバ62は、使用するI/Oデバイスを選択する(ステップA1)。ここでは、例えばI/Oデバイス63aが選択されるとする。次に、仲介I/Oデバイスドライバ62が、I/Oデバイスドライバ63aを呼び出す(ステップA2)。そして、I/Oデバイスドライバ63aがI/O命令を発行すると(ステップA3)、ブリッジ12がI/Oパケットを発行する(ステップA4)。上流PCIエクスプレスイーサネットブリッジ14aは、発行されたI/Oパケットを受信し、下流PCIエクスプレスイーサネットブリッジ3のMACアドレスを宛先としてイーサネットフレームにカプセル化し、イーサネットネットワーク2に送信する(ステップA4)。
イーサネットネットワーク2はI/Oパケットがカプセル化されたイーサネットフレームを伝送する(ステップA5)。
図13は、下流PCIエクスプレス−イーサネットブリッジ3が、ホストが発行したI/Oパケットを処理する動作を説明する流れ図である。
下流PCIエクスプレス−イーサネットブリッジ3のイーサネットアダプタ31は、I/Oパケットがカプセル化されたイーサネットフレームを受信してI/Oパケットをデカプセル化し、ホスト側I/Oパケット転送部32に送信する(ステップA11)。
アドレス変換部33は、ホスト側I/Oパケット転送部32からI/Oパケットを受信し、アドレス変換テーブル37を参照し、I/Oパケットの宛先アドレスをホスト1がVF41aに割り当てたアドレスから下流PCIエクスプレスイーサネットブリッジ3がVF41aに割り当てたアドレスに変換し、I/Oパケットの送信元アドレスを、ホスト1のアドレスから下流PCIエクスプレスイーサネットブリッジ3のアドレスに変換する(ステップA12)。
そして、アドレス変換部33は、アドレス変換したI/OパケットをI/O側I/Oパケット転送部34に送信する(ステップA13)。
このようにして、VF41aはI/O側I/Oパケット転送部34からI/Oパケットを受信する。
次に、SR−IOV対応I/O4からホストにI/Oパケットが転送される場合の、下流PCIエクスプレス−イーサネットブリッジ3及びホスト1の動作を図面を参照して説明する。
図14は下流PCIエクスプレス−イーサネットブリッジが、SR−IOV対応I/Oが発行したI/Oパケットを処理する動作を示す流れ図である。ここではVF41aがホスト1にI/Oパケットを発行する場合について説明する。
VF41aがI/Oパケットを発行すると、アドレス変換部33はI/O側I/Oパケット転送部34を経由してI/Oパケットを受信する(ステップB1)。
アドレス変換部33は、アドレス変換テーブル37を参照し、I/Oパケットの宛先アドレスを、下流PCIエクスプレスイーサネットブリッジ3が割り当てたアドレスからホスト1が割り当てたアドレスに変換する。そして、アドレス変換部33は、I/Oパケットの送信元アドレスを、下流PCIエクスプレスイーサネットブリッジ3がVF41aに割り当てたアドレスからホスト1がVF41aに割り当てたアドレスに変換し、ホスト側I/Oパケット転送部32に送信する(ステップB2)。
イーサネットアダプタ31は、ホスト側I/Oパケット転送部からI/Oパケットを受信し、上流PCIエクスプレスイーサネットブリッジ14aのMACアドレスを用いてI/Oパケットをイーサネットフレームにカプセル化する。そして、イーサネットアダプタ31は、カプセル化したI/Oパケットをイーサネットネットワーク2に送信する(ステップB3)。
図15は、ホストがSR−IOV対応I/O4が発行したI/Oパケットを処理する動作を説明する流れ図である。
図15において、上流PCIエクスプレスイーサネットブリッジ14aは、I/Oパケットがカプセル化されたイーサネットフレームを受信し、I/Oパケットをデカプセル化し、ブリッジ12に送信する(ステップB11)。そして、ブリッジ12は、I/Oパケットを受信し、CPU11への割り込みや、メモリ13へのDMA処理など、I/Oパケットで指定された処理を行う(ステップB12)。
なお、図12から図15で説明した手順は、プログラムを用いて実現させてもよい。
以上説明したように、本実施形態によれば、ホストとSR−IOV対応I/Oとの間で、イーサネットでカプセル化されたPCIエクスプレスのI/Oパケットを送受信するネットワークシステムにおいて、ホストとSR−IOV対応I/Oとの間の複数の通信路を、柔軟に制御することができる。
その理由は、同一のSR−IOV対応I/Oに複数の異なるVFを割り当て、ホストのデバイスツリー上では同一のSR−IOV対応I/Oが異なるバスにそれぞれ接続されているように制御しているからである。そして、このようにVFを制御することで、仲介ドライバが、同一のSR−IOV対応I/Oに接続された複数のVFを、VFの設定を変更することなく制御できるからである。
第2の実施形態の第1の変形例として、仲介I/Oデバイスドライバ62は、2つのI/Oデバイスを、一方を運用系、他方を予備系として動作させてもよい。この場合、仲介I/Oデバイスドライバ62は、運用系のI/Oデバイスに対応する上流PCIエクスプレス−イーサネットブリッジや、ブリッジが接続するケーブルやバスに障害が発生した場合、予備系のI/Oデバイスに使用を切り替えるように動作させてもよい。
例えば、図1において、上流PCIエクスプレス−イーサネットブリッジ14aを経由してホスト1とVF41aとが接続される系が運用系であり、上流PCIエクスプレス−イーサネットブリッジ14bを経由してホスト1とVF41bとが接続される系が予備系であるとする。この場合、運用系として使用しているVF41aの経路上で障害が発生した場合に、仲介I/Oデバイスドライバ62は、パケットの伝送路をVF41bに切り替えるように制御することができる。仲介ドライバ62から見ると、VF41aとVF41bとは同種類の個別のSR−IOV対応I/Oに接続されているように制御されている。このため、VF41aからVF41bへの経路の切り替えの際には、ホスト1、下流PCIエクスプレス−イーサネットブリッジ3及びSR−IOV対応I/O4において、ハードウエアの起動を行う必要がない。さらに、VFの接続先アドレスの変更、あるいはアドレス変換テーブルの書き換えといった処理を行う必要もない。
その結果、第1の変形例には、第2の実施形態で説明した効果に加えて、さらに、冗長構成を備えたパケットの伝送路の系切り替えを高速に行うことができるという効果がある。
第2の実施形態の別の第2の変形例として、仲介I/Oデバイスドライバ62は、2つのI/Oデバイスを同時に運用系として動作させてもよい。この場合、仲介I/Oデバイスドライバ62の機能により、複数のI/Oデバイスの間でI/O命令をロードバランスさせることも可能である。
例えば、図1において、仲介I/Oデバイスドライバ62は、ホスト1から上流PCIエクスプレス−イーサネットブリッジ14aを経由してVF41aに接続する経路と、ホスト1から上流PCIエクスプレス−イーサネットブリッジ14bを経由してVF41bに接続する経路とを同時に使用してもよい。そして、伝送路の状況により、それぞれのVFに割り当てる伝送量を変化させ、ロードバランシング(負荷分散)を行なってもよい。
第1の変形例と同様に、仲介ドライバ62から見ると、経路の異なるVF41aとVF41bとは、同種類の個別のSR−IOV対応I/Oに接続されているように制御されている。このため、VF41aとVF41bとの間のロードバランシングの際にも、ホスト1、下流PCIエクスプレス−イーサネットブリッジ3及びSR−IOV対応I/O4において、ハードウエアの再起動を行う必要がない。さらに、VFの接続先アドレスの変更、あるいはアドレス変換テーブルの書き換えといった処理を行う必要もない。
さらに、複数のI/Oデバイスを同時に運用系として用いる構成においては、一部の上流PCIエクスプレス−イーサネットブリッジのデータ転送能力が低下したような場合でも、SR−IOV対応I/O4に対するデータ転送能力を維持することができる。これは、残余の上流PCIエクスプレス−イーサネットブリッジに対応するI/Oデバイスを利用する経路のデータ転送量を増加させることによって実現することができる
その結果、第2の実施形態の第2の変形例には、第2の実施形態で説明した効果に加えて、さらに、複数のVFの間でロードバランシングを容易に行うことができるという効果がある。
なお、第2の実施形態ではホスト1とSR−IOV対応I/O4とがそれぞれ1台である構成を示した。しかし、本発明が適用可能な実施形態の構成はこれに限定されない。例えば、複数台のホストと1台のSR−IOV対応I/O4による構成も可能である。この場合には、複数のホストをホスト1a、2aとすると、ホスト1aにVF41aとVF41bを割り当て、ホスト1bにはさらに異なるVFであるVF41cとVF41dとを割り当ててもよい。
また、1台のホスト1に対し、複数台のSR−IOV対応I/O4が接続される構成も可能である。この場合、各SR−IOV対応I/O4はそれぞれ個別の下流PCIエクスプレスイーサネットブリッジ3を介してイーサネット2に接続させる。上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとは、SR−IOV対応I/O4と1対1に対応した下流PCIエクスプレスイーサネットブリッジ3に接続する。そして、各上流PCIエクスプレスイーサネットブリッジは、各SR−IOV対応I/Oが含むいずれか1つの異なるVFに対するI/Oバスの経路を提供する。
また、ホスト1及びSR−IOV対応I/O4がいずれも複数台で構成されるシステムは、上記のホスト1だけが複数台の場合と、SR−IOV対応I/O4だけが複数台の場合との組み合わせで実現できる。
また、第2の実施形態では、ホスト1に上流PCIエクスプレスイーサネットブリッジを2台接続する構成を用いて構成及び動作を説明した。しかし、上流PCIエクスプレスイーサネットブリッジの数量は2台以上であれば数に制限がない。この場合、ホストが接続する上流PCIエクスプレスイーサネットブリッジの数量に相当するVFが、SR−IOV対応I/O4からホスト1に割り当てられる。このように、VFの数は2個に限定されるものではない。
さらに、第2の実施形態ではI/OバスとしてPCIエクスプレス、ホストとI/Oを接続するネットワーク手段としてイーサネットネットワークを例として説明した。しかし、I/Oバスの種類及びネットワーク手段はこれらに限定されるものではない。本発明は、これらのI/Oバスやネットワーク手段と同様の機能を提供する他のプロトコルを用いた構成にも適用することができる。
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2010年1月20日に出願された日本出願特願2010−009991を基礎とする優先権を主張し、その開示の全てをここに取り込む。
[第1の実施形態]
まず、本発明の第1の実施形態について説明する。
図16は、本発明の第1の実施形態のネットワーク装置の構成を示す図である。ネットワーク装置1601は、周辺機器とのインタフェース部1602、ホストとのインタフェース部1603と、制御部1604とを備える。制御部1604は、周辺機器が備える、ソフトウェアからアクセスされる複数のI/Oインタフェースを、周辺機器と接続されるホストが保持するそれぞれ異なるI/Oバスの配下に接続するように制御する。
制御部1604は、複数のインタフェースを保持する周辺機器の各I/Oインタフェースに対応するI/Oデバイスが、ホストから見て周辺機器の異なるI/Oバスに所属するように制御する。その結果、制御部1604は、ホストに対して、I/Oインタフェースの接続状態を、同一の周辺機器に接続された複数のI/Oデバイスが異なるバスに個別に接続するように認識させることができる。
その結果、第1の実施形態は、ホストと周辺機器との間の通信路を、柔軟に制御することができるという効果を奏する。
第1の実施形態の第1の変形例として、複数のI/Oデバイスのうち、1個を運用系、残余を予備系として動作させてもよい。この場合、運用系のI/Oデバイスに対応する経路上で障害が発生した場合、運用系のI/Oデバイスから予備系のI/Oデバイスに使用を切り替えるように動作させてもよい。
その結果、第1の実施形態の第1の変形例には、第1の実施形態の効果に加えて、さらに、冗長構成を備えたパケットの伝送路の系切り替えを高速に行うことができるという効果がある。
また、第1の実施形態の別の第2の変形例として、複数のI/Oデバイスを同時に運用系として動作させてもよい。この場合、複数のI/Oデバイスの間のデータ量をロードバランスさせてもよい。
その結果、第1の実施形態の第2の変形例には、第1の実施形態で説明した効果に加えて、さらに、ロードバランシングを容易に行うことができるという効果がある。
[第2の実施形態]
次に、本発明の第2の実施形態について説明する。第2の実施形態では、本願発明のネットワーク装置について、より詳細に説明する。
図1は、本発明の第2の実施形態のネットワークシステムの構成を示す図である。図1を参照すると、第2の実施形態のコンピュータシステムは、ホスト1と、イーサネット2と、下流PCIエクスプレスイーサネットブリッジ3と、SR−IOV(Single Root I/O Virtualization)対応I/O4とを含む。SR−IOV対応I/O4は、SR−IOVに準拠する周辺機器である。ここで、SR−IOVは、I/Oデバイスを制御して複数のVM(Virtual Machine)からのI/Oデバイスへのアクセスを実現するための、PCI−SIGが定めたPCIエクスプレスのI/Oデバイスに関する規格である。そして、SR−IOVに準拠した周辺機器は、複数のVMが動作しているホストのI/Oスロットに挿入して使用される。各VMは、割り当てられたVFに対して、ソフトウェアの仲介層を介さずに直接I/O命令を発行する。その結果、I/O処理に関するオーバヘッドの削減が可能卯となる。
ホスト1は、CPU11と、ブリッジ12と、メモリ13と、上流PCIエクスプレスイーサネットブリッジ14a及び14bと、を含む。上流PCIエクスプレス−イーサネットブリッジ14a及び14bは、イーサネット2に対するホスト1のネットワークインタフェースである。なお、上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとは同一のものであってもよい。これらのデバイスを識別するために、上流PCIエクスプレス−イーサネットブリッジ14の添字をa,bとしている。
ここで、SR−IOV対応I/O4は、ホスト1上のソフトウェアからアクセスできるインタフェースを複数備えている。これらの複数のインタフェースをそれぞれVF(Virtual Function)と呼ぶ。図1では、複数のインタフェースを区別するために、各VFをVF41a、VF41bなどと表記する。
また、第2の実施形態では、VF41aとVF41bとがホスト1に割り当てられる。VF41aは、下流PCIエクスプレス−イーサネットブリッジ3から、上流PCIエクスプレスイーサネットブリッジ14aを経由してホスト1に接続されるように割り当てられる。一方、VF41bは、下流PCIエクスプレス−イーサネットブリッジ3から、上流PCIエクスプレスイーサネットブリッジ14bを経由してホスト1に接続されるように割り当てられる。
図2は、第2の実施形態における、ホスト1のデバイスツリーを示す図である。SR−IOV対応I/O4のVF41aとVF41bとは、それぞれ上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとに関係づけられた、異なるPCIエクスプレスバスに属している。このため、ホスト1のデバイスツリーは、SR−IOV対応I/O部4が提供するI/O機能(以下、I/Oデバイスと呼ぶ)が、異なるバスに1つずつ備えられているように構成される。
図1において、下流PCIエクスプレス−イーサネットブリッジ3は、イーサネットアダプタ31と、ホスト側I/Oパケット転送部32と、制御部330と、I/O側I/Oパケット転送部34とを備えるネットワーク装置である。そして、下流PCIエクスプレス−イーサネットブリッジ3は、さらに、接続ホスト制御部35と、仮想リソースレジスタ36とを備える。ここで、制御部330は、アドレス変換部33と、アドレス変換テーブル37と、接続仮想化部38とを備える。さらに、接続仮想化部38は、アドレス対応部381と、アドレス割当部382とを備える。また、下流PCIエクスプレス−イーサネットブリッジ3は、さらに、CPU39及びメモリ40を備えていてもよい。
イーサネットアダプタ31は、I/Oパケットのイーサネットフレームへのカプセル化処理を行う。ホスト側I/Oパケット転送部32は、I/Oパケットを適切な宛先に転送する。アドレス変換部33は、I/Oパケットに記載されたアドレスを変換する。I/O側I/Oパケット転送部34は、I/Oパケットを適切な宛先に転送する。接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と、上流PCIエクスプレスイーサネットブリッジ14a、14bとの接続を制御する。図7に示すように、仮想リソースレジスタ36は、各VFの制御に用いられる仮想VFレジスタ361a、361bを含む。仮想リソースレジスタ36の構成については、後で図7を用いて説明する。アドレス変換テーブル37は、アドレス変換部33がI/Oパケットに記載されたアドレスを変換する際に使用される。アドレス対応部381及びアドレス割当部382は、ホスト1とSR−IOV対応I/O4との接続を制御する。
以下に、各部の動作をさらに詳細に説明する。
イーサネットアダプタ31は、イーサネット2からPCIエクスプレスのI/Oパケットがカプセル化されたイーサネットフレームを受信し、受信したI/Oパケットをデカプセル化する。また、イーサネットアダプタ31は、イーサネットフレームを受信した上流PCIエクスプレスイーサネットブリッジを識別する情報と共に、I/Oパケットをホスト側I/Oパケット転送部32に送信する。
イーサネットアダプタ31は、さらに、ホスト側I/Oパケット転送部32からSR−IOV対応I/O4が発行したI/Oパケットと、発行元のVFを識別する情報を受信する。そして、I/Oパケットの発行元がVF41aであれば、イーサネットアダプタ31は、上流PCIエクスプレスイーサネットブリッジ14aのMAC(Media Access Control)アドレスを用いてI/Oパケットをイーサネットフレームにカプセル化し、イーサネットネットワーク2に送信する。
また、I/Oパケットの発行元がVF41bであれば、イーサネットアダプタ31は、上流PCIエクスプレスイーサネットブリッジ14bのMACアドレスを用いてI/Oパケットをイーサネットフレームにカプセル化し、イーサネット2に送信する。
図3は、PCIエクスプレスのI/Oパケットがカプセル化されたイーサネットフレームの構成を示す図である。図3において、イーサネットフレーム1101は、イーサネットヘッダ1102及びTLP(Transaction Layer Packet)1103を含んで構成される。イーサネットヘッダ1102は、イーサネットフレーム1101のヘッダである。イーサネットヘッダ1102は、送信先MACアドレス1104、送信元MACアドレス1105を含む。TLP1103は、PCIエクスプレスのI/Oパケットである。PCIエクスプレスのI/Oパケットは、パケットの宛先アドレス1106、パケットの送信元アドレス1107及びペイロード1108を含む。
PCI Expressでは、接続されたデバイスに割り当てるアドレスとして、ホストのI/O空間にマッピングされたI/Oアドレスと、ホストのメモリ空間にマッピングされたメモリアドレスと、ID番号との3種類のアドレスが利用できる。ID番号は、バス(Bus)番号と、デバイス(Device)番号と、ファンクション(Function)番号との組で構成される。ID番号を構成するこれらの番号の組を、以下「BDF番号」と呼ぶ。
また、I/Oパケットのアドレッシングには、宛先のメモリアドレスまたはI/Oアドレスを指定するアドレスルーティングと、宛先のID番号を指定するIDルーティングとが利用できる。そして、パケットの宛先アドレス1106及びパケットの送信元アドレス1107としては、上で説明したメモリアドレス、I/Oアドレス及びID番号を組み合わせて用いることもできる。
図3に示すイーサネットフレームによって、イーサネットアダプタ31と上流PCIエクスプレス−イーサネットブリッジ14a、14bとの間で、イーサネットでカプセル化されたI/Oパケットが伝送される。
ホスト側I/Oパケット転送部32は、イーサネットアダプタ31から、I/Oパケット及びそのI/Oパケットが経由した上流PCIエクスプレス−イーサネットブリッジの識別情報を受信する。そして、ホスト側I/Oパケット転送部31は、受信したI/Oパケットがホスト1によるSR−IOV対応I/O4のアドレス制御に関するパケットである場合は、受信したI/Oパケットをアドレス対応部381に転送する。そして、ホスト側I/Oパケット転送部31は、受信したI/Oパケットがそれ以外のI/Oパケットであった場合は、受信したI/Oパケットをアドレス変換部33に転送する。いずれの場合も、受信したI/Oパケットは、I/Oパケットを送信した上流PCIエクスプレスイーサネットブリッジの識別情報と共に転送先へ転送される。ここで、I/Oパケットとともに転送される上流PCIエクスプレス−イーサネットブリッジの識別情報は、I/Oパケットに含まれていてもよい。
上流PCIエクスプレス−イーサネットブリッジの識別情報としては、上流PCIエクスプレス−イーサネットブリッジのMACアドレスまたはそのMACアドレスと対応する情報を用いてもよい。あるいは、ホスト側I/Oパケット転送部32は、上流PCIエクスプレス−イーサネットブリッジを識別できる他の情報を上流PCIエクスプレス−イーサネットブリッジの識別情報として扱ってもよい。たとえば、識別情報として、上流PCIエクスプレス−イーサネットブリッジに対して順に付与された番号を用いてもよい。
アドレスの制御に関するI/Oパケットの例としては、PCI Expressで定義されたコンフィグレーションリードパケットとコンフィグレーションライトパケットがある。コンフィグレーションリードパケットとコンフィグレーションライトパケットとは、それぞれ、SR−IOV対応I/O4に設定されたアドレスの値を読み出し、またはSR−IOV対応I/O4にアドレスの値を書き込むために用いられる。
また、ホスト側I/Oパケット転送部32は、アドレス変換部から、VF41aまたはVF41bが発行したI/Oパケットと、発行元VFを識別するためのVF識別番号とを受信する。そして、ホスト側I/Oパケット転送部32は、VF41aまたはVF41bが発行したI/OパケットとVF識別番号とをイーサネットアダプタ31に転送する。なお、I/Oパケットは、自パケットを発行したVF識別番号を含んでいてもよい。
図4は、アドレス変換部33により参照される、アドレス変換テーブル37の一例を示す図である。アドレス変換テーブル37は、ターゲットサーチテーブル370及び複数のマッピングテーブル371a、371bを含む。アドレス変換部33は、アドレス変換テーブル37を参照して、I/Oパケットのアドレスを書き替える。
ターゲットサーチテーブル370は、VF番号と、上流PCIエクスプレス−イーサネットブリッジの識別情報との対応関係を示す情報を含んでいる。図4のターゲットサーチテーブル370は、VF番号が1であるVFが、識別情報が1である上流PCIエクスプレス−イーサネットブリッジに対応し、VF番号が2であるVFが、識別情報が2である上流PCIエクスプレス−イーサネットブリッジに対応することを表している。
マッピングテーブル371a、371bは、上流PCIエクスプレス−イーサネットブリッジの識別情報ごとの複数のテーブルから成る。これらの複数のマッピングテーブルを区別するために、各マッピングテーブルは、マッピングテーブル371a、マッピングテーブル371bなどと表記される。本実施形態では、上流PCIエクスプレス−イーサネットブリッジが2個の場合について説明する。従って、マッピングテーブルは2個ある。しかし、上流PCIエクスプレス−イーサネットブリッジが3個あるいはそれ以上存在する場合は、その数に応じてマッピングテーブルの数を増やしてもよい。
マッピングテーブル371aを例にマッピングテーブルの内容を説明する。
マッピングテーブル371aは、識別情報が1である上流PCIエクスプレス−イーサネットブリッジを通過するI/Oパケットのアドレス変換の際に使用される。マッピングテーブル371aは、ホストのBDF番号と、VFのBDF番号とを含む。また、マッピングテーブル371aは、メモリアドレスの変換に用いるためのメモリベース値を含んでいてもよい。そして、マッピングテーブル371aは、これらのアドレスに関して、それぞれ、ホストが割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジ3が割り当てたアドレスを保持している。なお、ホスト及び下流PCIエクスプレス−イーサネットブリッジ3によるアドレス割当の動作については後述する。
アドレス変換部33は、ターゲットサーチテーブル370及びマッピングテーブル371a、371bを参照する。その結果、アドレス変換部33は、VF番号と上流PCIエクスプレス−イーサネットブリッジとの対応情報を得ることができる。さらに、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジ毎の、ホストが割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジが割り当てたアドレスとの対応情報を得ることもできる。
ホスト1からSR−IOV対応I/O4に送信されるI/Oパケットの宛先アドレスは、アドレス変換部33において、次のように変換される。すなわち、I/Oパケットの宛先アドレスは、アドレス変換部33において、ホスト1が起動時にVF41aとVF41bとに割り当てたアドレスから、下流PCIエクスプレス−イーサネットブリッジ3がVF41aとVF41bとに割り当てたアドレスにそれぞれ変換される。
そして、ホストからSR−IOV対応I/O4に送信されるI/Oパケットの送信元アドレスは、アドレス変換部33において、ホスト1で付与されたアドレスから下流PCIエクスプレス−イーサネットブリッジ3のアドレスに変換される。
アドレス変換部33の具体的な動作を以下に説明する。アドレス変換部33は、ホスト1からのI/Oパケットを上流PCIエクスプレスイーサネットブリッジ14a(識別情報を「1」とする)を経由して受信すると、受信したパケットから、上流PCIエクスプレス−イーサネットブリッジ14aの識別情報が「1」であることを読み出す。その結果、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジの識別情報「1」に対応する、マッピングテーブル371aを参照する。
一方、アドレス変換部33が、上流PCIエクスプレスイーサネットブリッジ14b(識別番号を2とする)を経由してホスト1からのI/Oパケットを受信した場合は、次のように動作する。すなわち、アドレス変換部33は、受信したパケットから、上流PCIエクスプレス−イーサネットブリッジ14bの識別情報が「2」であることを読み出す。その結果、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジの識別情報「2」に対応する、マッピングテーブル371bを参照する。
ターゲットサーチテーブル370は、SR−IOV対応I/O4からホストへ転送されるI/OパケットのVF番号に対応する送信先の上流PCIエクスプレス−イーサネットブリッジを、アドレス変換部33が指定するために用いられる。
図5は、ホスト1が発行したI/Oパケットのアドレス変換の一例を説明するための図である。図5を用いて、具体的なアドレス変換の手順を説明する。
なお、図5では、I/Oパケット1201の上流PCIエクスプレス−イーサネットブリッジの識別情報は「1」である場合の例を示す。すなわち、I/Oパケット1201は、上流PCIエクスプレス−イーサネットブリッジ14aを経由して送信されたものとする。
図5に示したI/Oパケット1201は、宛先アドレス1202をアドレスルーティングで指定し、パケットの送信元アドレス1203をID番号で指定する場合を示している。すなわち、I/Oパケット1201は、宛先アドレス1202としてメモリアドレス、送信元アドレス1203としてホストBDF番号をそれぞれ格納している。
アドレス変換部33がホスト側I/Oパケット転送部32からI/Oパケット1201を受信した時点では、宛先アドレス1202及び送信元アドレス1203はそれぞれ「0001 0014h」及び「0,0,0」となっている。そして、アドレス変換部33は、I/Oパケット1201の上流PCIエクスプレス−イーサネットブリッジの識別情報が「1」であることから、識別情報が「1」である、図4のマッピングテーブル371aを参照する。
アドレス変換部33は、マッピングテーブル371aを参照し、I/Oパケット1201の宛先アドレス1202を、メモリベース値「0001 0000h」及び「0000 1000h」に基づいて、「0000 1014h」に書き替える。そして、I/Oパケット1201の送信元アドレス1203を、ホスト1が割り当てた「0,0,0」から下流PCIエクスプレス−イーサネットブリッジが割り当てた「1,0,0」に書き替える。このアドレス変換により、各VFは、I/Oパケット1201を、下流PCIエクスプレス−イーサネットブリッジが送信したパケットとして処理することが可能になる。
ここで、図5においては、I/Oパケット1201の宛先アドレスを、アドレスルーティングとした。しかし、宛先アドレスのルーティング方法にBDF番号によるルーティングを用いてもよい。BDF番号によるルーティングを行う場合には、アドレス変換部33において、BDF番号をホスト1が指定するBDF番号から下流PCIエクスプレス−イーサネットブリッジが指定するBDF番号へ変換してもよい。
次に、アドレス変換部33における、SR−IOV対応I/O4がホスト1に向けて発行したI/Oパケットのアドレス変換の手順について説明する。
アドレス変換部33は、SR−IOV対応I/O4が発行したI/OパケットをI/O側I/Oパケット転送部34から受信する。そして、アドレス変換部33は、I/Oパケットに記載されたアドレスを変換し、ホスト側I/Oパケット転送部32にI/Oパケットを発行したVFの識別番号と共に送信する。
ここで、アドレス変換部33は、SR−IOV対応I/O4から送信されたI/Oパケットを受信すると、I/Oパケットの送信元アドレスを、下流PCIエクスプレス−イーサネットブリッジ3が送信元のVFに割り当てたアドレスから、ホスト1が送信元のVFに割り当てたアドレスに変換する。
図6は、VF41が発行したI/Oパケットのアドレス変換の一例を説明するための図である。図6を用いて、具体的なアドレス変換の手順の例を説明する。
SR−IOV対応I/O4が発行したI/Oパケット1301のルーティング方法は、図5で説明したI/Oパケット1201と同様であるとする。すなわち、I/Oパケット1301は、宛先アドレス1302をメモリアドレスで指定し、送信元アドレス1303をBDF番号で指定する。図6では、I/Oパケット1301の送信元が、VF番号が「1」であるVF41aの場合について説明する。
アドレス変換部33がI/O側I/Oパケット転送部34からI/Oパケット1301を受信した時点では、I/Oパケット1301の宛先アドレス1302及び送信元アドレス1303は、それぞれ「0022 0000h」及び「1,0,1」となっている。そして、アドレス変換部33は、図4のターゲットサーチテーブル370を参照する。アドレス変換部33は、I/Oパケット1301の送信元VF番号が「1」であることから、経由する上流PCIエクスプレス−イーサネットブリッジの識別番号が「1」であることを知る。このため、アドレス変換部33は、識別情報が「1」であるマッピングテーブル371aを参照する。
I/Oパケット1301の送信元アドレスには、下流PCIエクスプレス−イーサネットブリッジが割り当てたVF番号1のVFに対応するBDF番号である「1,0,1」が設定されている。そして、I/Oパケット1301の宛先アドレス1302には、「0022 0000h」が設定されている。
アドレス変換部33は、マッピングテーブル371aを参照し、I/Oパケット1301の送信元アドレス1303を、下流PCIエクスプレス−イーサネットブリッジが割り当てた「1,0,1」からホスト1が割り当てた「13,0,0」に書き替える。このアドレス変換により、ホスト1は、I/Oパケット1301を、下流PCIエクスプレス−イーサネットブリッジ3が送信したパケットとして処理することが可能になる。
なお、上の説明においては、I/Oパケット1301のアドレス変換においては、宛先アドレス1302(「0022 0000h」)の書き換えを行っていない。これは、I/Oパケット1301の宛先のメモリへのアクセスがDMAで行われるからである。すなわち、DMAアクセスの場合には、I/Oパケット生成時にすでに宛先アドレスとしてホスト空間のアドレスが指定されるので、アドレス変換部において宛先アドレスを変換する必要がないからである。しかしながら、図5における宛先アドレスの変換と逆の手順を用いて、I/Oパケット1301の宛先アドレス1302を、下流PCIエクスプレス−イーサネットブリッジのアドレス空間からホスト1のアドレス空間へ変換を行う構成としてもよい。
また、図6においては、I/Oパケット1301の宛先アドレスを、アドレスルーティングとした。しかし、宛先アドレスのルーティング方法にBDF番号によるルーティングを用いてもよい。BDF番号によるルーティングを行う場合には、アドレス変換部33において、BDF番号を下流PCIエクスプレス−イーサネットブリッジが指定するBDF番号からホスト1が指定するBDF番号へ変換してもよい。
図5及び図6で説明した実施形態では、I/Oパケットの送信元アドレスが、アドレス変換部33において、ホスト1が割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジ3が割り当てたアドレスとの間で書き替えられる構成とした。ここで、I/Oパケットは、ホスト1あるいはSR−IOV対応I/O4から送信されたI/Oパケットである。しかしながら、I/Oパケットの転送先が、送信元アドレスの変換を行うことなくI/Oパケットを処理可能であれば、アドレス変換部は送信元アドレスの変換を行わず、そのままI/Oパケットを転送する構成としてもよい。
さらに、上述の説明で示したアドレス変換テーブル37に記載された数値は例示であり、他の数値あるいは文字列等による表記も可能である。例えば、上流PCIエクスプレス−イーサネットブリッジの識別情報として、MACアドレスを使用してもよい。
I/O側I/Oパケット転送部34は、ホスト1が発行したI/Oパケットをアドレス変換部33から受信し、SR−IOV対応I/O4の指定されたVFへ送信する。
I/O側I/Oパケット転送部34は、SR−IOV対応I/O4のVFからI/Oパケットを受信する。そして、受信したI/Oパケットが、下流PCIエクスプレスイーサネットブリッジがSR−IOV対応I/O4に割り当てるアドレスの制御に関するものであれば、I/O側I/Oパケット転送部34は、受信したI/Oパケットをアドレス割当部382に送信する。それ以外のI/Oパケットであれば、I/O側I/Oパケット転送部34は、受信したI/Oパケットをアドレス変換部33に送信する。
接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と上流PCIエクスプレスイーサネットブリッジ14a、14bとの接続を管理する。
上流PCIエクスプレス−イーサネットブリッジ14a、14bは、MACアドレスを含む自身の識別情報を定期的に下流PCIエクスプレス−イーサネットブリッジ3へブロードキャストする。接続ホスト制御部35は、上流PCIエクスプレス−イーサネットブリッジ14a、14bからブロードキャストされた上流PCIエクスプレス−イーサネットブリッジの識別情報を受信する。そして、接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と接続する上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとのMACアドレスをイーサネットアダプタ31に通知する。接続ホスト制御部35は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、この通知を行う。イーサネットアダプタ31は、通知されたMACアドレスを用いて、I/Oパケットをカプセル化する。
一方、接続ホスト制御部35は、上流PCIエクスプレスイーサネットブリッジ14aに対応する経路にVF41aを割り当て、上流PCIエクスプレスイーサネットブリッジ14bに対応する経路にVF41bを割り当てるようにアドレス対応部381に通知する。
接続仮想化部38は、アドレス対応部381とアドレス割当部382とを備える。アドレス対応部381は、接続ホスト制御部35から、各VFとホストとの対応に関する情報を受信する。また、アドレス対応部381は、ホスト側I/Oパケット転送部32から、ホスト1が発行した各VFへのコンフィグレーションリードパケット及びコンフィグレーションライトパケットを受信する。そして、アドレス対応部381は、受信したコンフィグレーションリードパケットに、パケットで指定されたVFに対応する仮想リソースレジスタ36の値を読み込ませる。さらに、アドレス対応部381は、受信したコンフィグレーションライトパケットで指定された値を、パケットで指定されたVFに対応する仮想VFレジスタに書き込む。さらに、アドレス対応部381は、仮想VFレジスタに記載された、ホスト1によって割り当てられたアドレス情報を、対応するVFのマッピングテーブルに登録する。
アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、SR−IOV対応I/O4にアドレスの制御に関するI/OパケットをI/O側I/Oパケット転送部34を介して発行し、SR−IOV対応I/O4のI/O情報を収集する。そして、アドレス割当部382は、I/O情報が要求するアドレスをVF41aとVF41bとに割り当てる。また、アドレス割当部382は、アドレス割当部382が割り当てたVF41aのアドレスをマッピングテーブル371aに、VF41bのアドレスをマッピングテーブル371bに登録する。さらに、アドレス割当部382は、取得したI/O情報を仮想リソースレジスタ36に反映させる。ここでアドレス割当部382が割り当てるアドレスは、マッピングテーブルにおいて、下流PCIエクスプレス−イーサネットブリッジが割り当てるアドレスに相当する。
図7は、仮想リソースレジスタ36の構成の一例を示す図である。仮想リソースレジスタ36は、各VFの制御に用いられる仮想VFレジスタ361a、361bを含む。これらの仮想VFレジスタが要求するアドレス領域や、デバイス情報は、アドレス割当部382により設定される。また、ホスト1から仮想VFレジスタへのアクセスは、アドレス対応部381の制御により、接続ホスト制御部35がホスト1に割り当てたVFに対応するレジスタに対してのみ行われる。ホスト1が、各VFにアドレスを割り当てるために仮想VFレジスタに設定した値は、アドレス変換テーブル37に反映される。
図7では、仮想VFレジスタは、仮想VFレジスタ361a、仮想VFレジスタ361bなどと表記される。仮想VFレジスタ361aはVF41aに、仮想VFレジスタ361bはVF41bにそれぞれ対応するものとする。そして、仮想VFレジスタ361aと仮想VFレジスタ361bには、ホスト1がVF41aとVF41bとに割り当てたアドレス、及び、各VFに対応するI/Oデバイスの情報(以下、「I/O情報」という。)がそれぞれ記載されている。
ホスト1が起動されるか、SR−IOV対応I/O4がホスト1にホットプラグされた場合、ホスト1は、アドレス割り当て処理の開始時に、I/Oバスにコンフィグレーションリードパケットを送信する。そして、ホスト1は、コンフィグレーションリードパケットの応答から、各I/Oバスの配下に接続されているI/O情報を取得する。以下に、その動作について説明する。
ホスト1は、コンフィグレーションリードパケットを用いて仮想VFレジスタ361a、361bをリードする。I/Oバスの配下にI/Oデバイスが存在すると、そのI/O情報がコンフィグレーションリードパケットの応答としてホスト1に返送される。
アドレス対応部381は、上流PCIエクスプレスイーサネットブリッジ14aを経由してホスト1から受信したコンフィグレーションリードパケットに、パケットで指定された仮想VFレジスタ361aの値をリードさせる。仮想VFレジスタ361aには、VF41aに対応するI/O情報が記載されている。そして、アドレス対応部381は、コンフィグレーションリードパケットの応答をホスト1に返信する。
同様に、アドレス対応部381は、ホスト1から上流PCIエクスプレスイーサネットブリッジ14bを経由して受信したコンフィグレーションリードパケットに、パケットで指定された仮想VFレジスタ361bをリードさせる。仮想VFレジスタ361bには、VF41bに対応するI/O情報が記載されている。そして、アドレス対応部381は、コンフィグレーションリードパケットの応答をホスト1に返信する。
ホスト1は、各I/Oバスからのコンフィグレーションリードパケットの応答から、I/Oバスとその配下にあるI/O情報の対応情報を得る。
その結果、ホスト1から見て、VF41a、VF41bは、それぞれ上流PCIエクスプレスイーサネットブリッジ14a、14bに関するI/Oバスに所属するように制御される。すなわち、ホスト1からは、VF41aが上流PCIエクスプレスイーサネットブリッジ14aを経由するI/Oバスに所属しており、また、VF41bが上流PCIエクスプレスイーサネットブリッジ14bを経由するI/Oバスに所属しているように見えるようになる。
アドレス対応部381は、さらに、ホスト1がVF41aにアドレスを割り当てるために発行したI/Oパケットを、上流PCIエクスプレスイーサネットブリッジ14aを経由して受信する。アドレス対応部381は、また、VF41bにアドレスを割り当てるために、ホスト1が発行したI/Oパケットを上流PCIエクスプレスイーサネットブリッジ14bを経由して受信する。
そして、ホスト1は、SR−IOV対応I/O4を使用するために次の手順でSR−IOV対応I/O4にアドレスを割り当てる。すなわち、ホスト1は、コンフィグレーションライトパケットを用いて仮想VFレジスタ361aにアドレスを書き込むことで、VF41aにアドレスを割り当てる。同様に、ホスト1は、コンフィグレーションライトパケットを用いて仮想VFレジスタ361bにアドレスを書き込むことで、VF41bにアドレスを割り当てる。
図8は、仮想VFレジスタ361aの内容の一例を示す図である。仮想VFレジスタ361aには、VF41aに関してホスト1が割り当てたホスト1及びVFのアドレスが書き込まれている。また、仮想VFレジスタ361aには、VFに対応するI/OデバイスのI/O情報も記載されている。VF41bに関するアドレスが書き込まれている仮想VFレジスタ361bも、構成は同様である。
アドレス対応部381は、仮想VFレジスタ361aに記載された、ホスト1によって割り当てられたアドレス情報を、マッピングテーブル371aに登録する。同様に、アドレス対応部381は、仮想VFレジスタ361bに記載された、ホスト1によって割り当てられたアドレス情報をマッピングテーブル371bに登録する。
上記で説明した接続ホスト制御部35及び接続仮想化部38の動作を、流れ図を用いて以下に説明する。
図9は、接続ホスト制御部35の動作を説明するための流れ図である。接続ホスト制御部35は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、下流PCIエクスプレスイーサネットブリッジ3と接続する、上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとのMACアドレスをイーサネットアダプタ31に通知する(ステップC1)。
そして、接続ホスト制御部35は、上流PCIエクスプレスイーサネットブリッジ14aに対応する経路にVF41aを割り当て、上流PCIエクスプレスイーサネットブリッジ14bに対応する経路にVF41bを割り当てるようにアドレス対応部381に通知する(ステップC2)。
図10は、アドレス割当部382の動作を説明するための流れ図である。
図10において、アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、SR−IOV対応I/O4にアドレスの制御に関するI/OパケットをI/O側I/Oパケット転送部34を介して発行し、SR−IOV対応I/O4のI/O情報を収集する(ステップD1)。ここで、アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、ステップD1の動作を行う。そして、アドレス割当部382は、収集した情報に基づいて、I/Oが要求するアドレスを各VFに割り当てる(ステップD2)。そして、アドレス割当部382は、割り当てた各VFのアドレスをマッピングテーブルに登録する(ステップD3)。さらに、アドレス割当部382は、取得したI/O情報を仮想リソースレジスタ36に反映させる(ステップD4)。
図18は、アドレス対応部381の動作を説明するための流れ図である。
図18において、ホスト1が起動されるかSR−IOV対応I/O4がホスト1にホットプラグされると、アドレス対応部381は、接続ホスト制御部35からVFとホストとの対応に関する情報を受信する(ステップD5)。また、アドレス対応部381は、コンフィグレーションリードパケットに、パケットで指定されたVFに対応する仮想リソースレジスタの値を読み込ませる(ステップD6)。そして、アドレス対応部381は、コンフィグレーションライトパケットで指定された値を、パケットで指定されたVFに対応する仮想VFレジスタへ書き込ませる(ステップD7)。さらに、アドレス対応部381は、仮想VFレジスタに書き込まれた、ホスト1によって割り当てられた各VFのアドレス情報を、各VFに対応するマッピングテーブルに登録する(ステップD8)。その結果、アドレス対応部381は、ホスト1から見てVF41a、41bが上流PCIエクスプレスイーサネットブリッジ14a、14bに関するI/Oバスに所属するように制御する。
ここで、下流PCIエクスプレスイーサネットブリッジ3は、CPU39及びメモリ40を備えていてもよい。そして、図9及び図10にそれぞれ示した接続ホスト制御部35及びアドレス割当部382のいずれか又は両方の動作手順を、メモリ40にプログラムとして記憶させ、CPU39にそのプログラムに基づいて接続ホスト制御部35及びアドレス割当部382のいずれか又は両方を制御させることで実現してもよい。
あるいは、下流PCIエクスプレスイーサネットブリッジ3に、図9または図10に示したプログラムを書き込んだ組み込みプロセッサを実装してもよい。そして、その組み込みプロセッサが備えるCPUにプログラムを実行させることで、接続ホスト制御部35及びアドレス割当部382のいずれか又は両方を制御してもよい。
図11は、ホスト1が備えるCPU11上で動作するソフトウェアスタックを示す図である。ソフトウェアスタックは、オペレーティングシステム61と、複数のI/Oデバイスを仲介し、オペレーティングシステム61に対し1つのI/Oデバイスとして制御する仲介I/Oデバイスドライバ62と、個別のI/Oデバイスを制御するI/Oデバイスドライバ63a、63bとを含む。I/Oデバイスドライバ63aは、VF41aを制御する。I/Oデバイスドライバ63bはVF41bを制御する。仲介I/Oデバイスドライバ62は、I/Oデバイスドライバ63a、63bと同一のインタフェースを保持する。仲介I/Oデバイスドライバ62は、SR−IOV対応I/O4が提供するI/Oデバイスをホスト1が2つ保持しており、それらに対し、I/Oデバイスドライバ63aとI/Oデバイスドライバ63bとがロードされていると認識する。仲介I/Oデバイスドライバ62は、I/Oデバイスドライバ63aとI/Oデバイスドライバ63bを呼び出すことでSR−IOV対応I/O4を使用する。
仲介ドライバは、I/Oデバイスドライバ63a、63bを同時に制御することが可能である。従って、仲介ドライバは、VF41a及びVF41bの使用あるいは不使用や、VF41a及びVF41bがそれぞれ使用するパケットの伝送量を、それぞれ独立に制御することが可能である。ここで、本実施形態においては、ホストのデバイスツリー上では同一のSR−IOV対応I/Oが複数の異なるVF(VF41a、VF41b)でそれぞれ接続されているように制御されている。従って、第2の実施形態においては、仲介ドライバは、アドレス変換テーブルに記載されたアドレス設定を変更することなく、VF41a及びVF41bによるホスト1とSR−IOV対応I/O4との間のI/Oパケット転送を制御することができる。言い換えれば、仲介ドライバは、アドレス変換部の動作を変更することなく、VFごとのI/Oパケットの転送を制御することができる。
次に、ホスト1からSR−IOV対応I/O4に向けてパケットが転送される場合の、ホスト1及び下流PCIエクスプレス−イーサネットブリッジ3の動作を図面を参照して説明する。
図12は、ホスト1上で動作するソフトウェアがSR−IOV対応I/O4にI/Oパケットを発行する動作を示す流れ図である。ここではホスト1がVF41aにI/Oパケットを発行する場合について説明する。
オペレーティングシステム61からI/O要求を受信した仲介I/Oデバイスドライバ62は、使用するI/Oデバイスを選択する(ステップA1)。ここでは、例えばI/Oデバイス63aが選択されるとする。次に、仲介I/Oデバイスドライバ62が、I/Oデバイスドライバ63aを呼び出す(ステップA2)。そして、I/Oデバイスドライバ63aがI/O命令を発行すると(ステップA3)、ブリッジ12がI/Oパケットを発行する(ステップA4)。上流PCIエクスプレスイーサネットブリッジ14aは、発行されたI/Oパケットを受信し、下流PCIエクスプレスイーサネットブリッジ3のMACアドレスを宛先としてイーサネットフレームにカプセル化し、イーサネットネットワーク2に送信する(ステップA4)。
イーサネットネットワーク2はI/Oパケットがカプセル化されたイーサネットフレームを伝送する(ステップA5)。
図13は、下流PCIエクスプレス−イーサネットブリッジ3が、ホストが発行したI/Oパケットを処理する動作を説明する流れ図である。
下流PCIエクスプレス−イーサネットブリッジ3のイーサネットアダプタ31は、I/Oパケットがカプセル化されたイーサネットフレームを受信してI/Oパケットをデカプセル化し、ホスト側I/Oパケット転送部32に送信する(ステップA11)。
アドレス変換部33は、ホスト側I/Oパケット転送部32からI/Oパケットを受信し、アドレス変換テーブル37を参照し、I/Oパケットの宛先アドレスをホスト1がVF41aに割り当てたアドレスから下流PCIエクスプレスイーサネットブリッジ3がVF41aに割り当てたアドレスに変換し、I/Oパケットの送信元アドレスを、ホスト1のアドレスから下流PCIエクスプレスイーサネットブリッジ3のアドレスに変換する(ステップA12)。
そして、アドレス変換部33は、アドレス変換したI/OパケットをI/O側I/Oパケット転送部34に送信する(ステップA13)。
このようにして、VF41aはI/O側I/Oパケット転送部34からI/Oパケットを受信する。
次に、SR−IOV対応I/O4からホストにI/Oパケットが転送される場合の、下流PCIエクスプレス−イーサネットブリッジ3及びホスト1の動作を図面を参照して説明する。
図14は下流PCIエクスプレス−イーサネットブリッジが、SR−IOV対応I/Oが発行したI/Oパケットを処理する動作を示す流れ図である。ここではVF41aがホスト1にI/Oパケットを発行する場合について説明する。
VF41aがI/Oパケットを発行すると、アドレス変換部33はI/O側I/Oパケット転送部34を経由してI/Oパケットを受信する(ステップB1)。
アドレス変換部33は、アドレス変換テーブル37を参照し、I/Oパケットの宛先アドレスを、下流PCIエクスプレスイーサネットブリッジ3が割り当てたアドレスからホスト1が割り当てたアドレスに変換する。そして、アドレス変換部33は、I/Oパケットの送信元アドレスを、下流PCIエクスプレスイーサネットブリッジ3がVF41aに割り当てたアドレスからホスト1がVF41aに割り当てたアドレスに変換し、ホスト側I/Oパケット転送部32に送信する(ステップB2)。
イーサネットアダプタ31は、ホスト側I/Oパケット転送部からI/Oパケットを受信し、上流PCIエクスプレスイーサネットブリッジ14aのMACアドレスを用いてI/Oパケットをイーサネットフレームにカプセル化する。そして、イーサネットアダプタ31は、カプセル化したI/Oパケットをイーサネットネットワーク2に送信する(ステップB3)。
図15は、ホストがSR−IOV対応I/O4が発行したI/Oパケットを処理する動作を説明する流れ図である。
図15において、上流PCIエクスプレスイーサネットブリッジ14aは、I/Oパケットがカプセル化されたイーサネットフレームを受信し、I/Oパケットをデカプセル化し、ブリッジ12に送信する(ステップB11)。そして、ブリッジ12は、I/Oパケットを受信し、CPU11への割り込みや、メモリ13へのDMA処理など、I/Oパケットで指定された処理を行う(ステップB12)。
なお、図12から図15で説明した手順は、プログラムを用いて実現させてもよい。
以上説明したように、本実施形態によれば、ホストとSR−IOV対応I/Oとの間で、イーサネットでカプセル化されたPCIエクスプレスのI/Oパケットを送受信するネットワークシステムにおいて、ホストとSR−IOV対応I/Oとの間の複数の通信路を、柔軟に制御することができる。
その理由は、同一のSR−IOV対応I/Oに複数の異なるVFを割り当て、ホストのデバイスツリー上では同一のSR−IOV対応I/Oが異なるバスにそれぞれ接続されているように制御しているからである。そして、このようにVFを制御することで、仲介ドライバが、同一のSR−IOV対応I/Oに接続された複数のVFを、VFの設定を変更することなく制御できるからである。
第2の実施形態の第1の変形例として、仲介I/Oデバイスドライバ62は、2つのI/Oデバイスを、一方を運用系、他方を予備系として動作させてもよい。この場合、仲介I/Oデバイスドライバ62は、運用系のI/Oデバイスに対応する上流PCIエクスプレス−イーサネットブリッジや、ブリッジが接続するケーブルやバスに障害が発生した場合、予備系のI/Oデバイスに使用を切り替えるように動作させてもよい。
例えば、図1において、上流PCIエクスプレス−イーサネットブリッジ14aを経由してホスト1とVF41aとが接続される系が運用系であり、上流PCIエクスプレス−イーサネットブリッジ14bを経由してホスト1とVF41bとが接続される系が予備系であるとする。この場合、運用系として使用しているVF41aの経路上で障害が発生した場合に、仲介I/Oデバイスドライバ62は、パケットの伝送路をVF41bに切り替えるように制御することができる。仲介ドライバ62から見ると、VF41aとVF41bとは同種類の個別のSR−IOV対応I/Oに接続されているように制御されている。このため、VF41aからVF41bへの経路の切り替えの際には、ホスト1、下流PCIエクスプレス−イーサネットブリッジ3及びSR−IOV対応I/O4において、ハードウエアの起動を行う必要がない。さらに、VFの接続先アドレスの変更、あるいはアドレス変換テーブルの書き換えといった処理を行う必要もない。
その結果、第1の変形例には、第2の実施形態で説明した効果に加えて、さらに、冗長構成を備えたパケットの伝送路の系切り替えを高速に行うことができるという効果がある。
第2の実施形態の別の第2の変形例として、仲介I/Oデバイスドライバ62は、2つのI/Oデバイスを同時に運用系として動作させてもよい。この場合、仲介I/Oデバイスドライバ62の機能により、複数のI/Oデバイスの間でI/O命令をロードバランスさせることも可能である。
例えば、図1において、仲介I/Oデバイスドライバ62は、ホスト1から上流PCIエクスプレス−イーサネットブリッジ14aを経由してVF41aに接続する経路と、ホスト1から上流PCIエクスプレス−イーサネットブリッジ14bを経由してVF41bに接続する経路とを同時に使用してもよい。そして、伝送路の状況により、それぞれのVFに割り当てる伝送量を変化させ、ロードバランシング(負荷分散)を行なってもよい。
第1の変形例と同様に、仲介ドライバ62から見ると、経路の異なるVF41aとVF41bとは、同種類の個別のSR−IOV対応I/Oに接続されているように制御されている。このため、VF41aとVF41bとの間のロードバランシングの際にも、ホスト1、下流PCIエクスプレス−イーサネットブリッジ3及びSR−IOV対応I/O4において、ハードウエアの再起動を行う必要がない。さらに、VFの接続先アドレスの変更、あるいはアドレス変換テーブルの書き換えといった処理を行う必要もない。
さらに、複数のI/Oデバイスを同時に運用系として用いる構成においては、一部の上流PCIエクスプレス−イーサネットブリッジのデータ転送能力が低下したような場合でも、SR−IOV対応I/O4に対するデータ転送能力を維持することができる。これは、残余の上流PCIエクスプレス−イーサネットブリッジに対応するI/Oデバイスを利用する経路のデータ転送量を増加させることによって実現することができる
その結果、第2の実施形態の第2の変形例には、第2の実施形態で説明した効果に加えて、さらに、複数のVFの間でロードバランシングを容易に行うことができるという効果がある。
なお、第2の実施形態ではホスト1とSR−IOV対応I/O4とがそれぞれ1台である構成を示した。しかし、本発明が適用可能な実施形態の構成はこれに限定されない。例えば、複数台のホストと1台のSR−IOV対応I/O4による構成も可能である。この場合には、複数のホストをホスト1a、2aとすると、ホスト1aにVF41aとVF41bを割り当て、ホスト1bにはさらに異なるVFであるVF41cとVF41dとを割り当ててもよい。
また、1台のホスト1に対し、複数台のSR−IOV対応I/O4が接続される構成も可能である。この場合、各SR−IOV対応I/O4はそれぞれ個別の下流PCIエクスプレスイーサネットブリッジ3を介してイーサネット2に接続させる。上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとは、SR−IOV対応I/O4と1対1に対応した下流PCIエクスプレスイーサネットブリッジ3に接続する。そして、各上流PCIエクスプレスイーサネットブリッジは、各SR−IOV対応I/Oが含むいずれか1つの異なるVFに対するI/Oバスの経路を提供する。
また、ホスト1及びSR−IOV対応I/O4がいずれも複数台で構成されるシステムは、上記のホスト1だけが複数台の場合と、SR−IOV対応I/O4だけが複数台の場合との組み合わせで実現できる。
また、第2の実施形態では、ホスト1に上流PCIエクスプレスイーサネットブリッジを2台接続する構成を用いて構成及び動作を説明した。しかし、上流PCIエクスプレスイーサネットブリッジの数量は2台以上であれば数に制限がない。この場合、ホストが接続する上流PCIエクスプレスイーサネットブリッジの数量に相当するVFが、SR−IOV対応I/O4からホスト1に割り当てられる。このように、VFの数は2個に限定されるものではない。
さらに、第2の実施形態ではI/OバスとしてPCIエクスプレス、ホストとI/Oを接続するネットワーク手段としてイーサネットネットワークを例として説明した。しかし、I/Oバスの種類及びネットワーク手段はこれらに限定されるものではない。本発明は、これらのI/Oバスやネットワーク手段と同様の機能を提供する他のプロトコルを用いた構成にも適用することができる。
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2010年1月20日に出願された日本出願特願2010−009991を基礎とする優先権を主張し、その開示の全てをここに取り込む。
Claims (11)
- 複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段と、
複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段と、
前記複数のI/Oインタフェースを、それぞれ異なる前記I/Oバスの配下に接続するように制御する制御手段と、
を備えるネットワーク装置。 - 前記制御手段は、
自ネットワーク装置が前記I/Oインタフェースに第1のアドレスを割り当てるアドレス割り当て手段、及び、前記ホストが前記I/Oインタフェースに割り当てた第2のアドレスと前記第1のアドレスとを対応させるアドレス対応手段、を備える接続仮想化手段と、
前記アドレス対応手段が対応させた前記第1のアドレスと前記第2のアドレスとを保持するアドレス保持手段と、
前記アドレス保持手段を参照して、前記ホストと前記周辺機器との間で前記第1のインタフェース手段および第2のインタフェース手段を介して転送されるI/Oパケットに記載されたアドレスを変換するアドレス変換手段と、
を備える、請求項1に記載されたネットワーク装置。 - 前記アドレス割当手段は、前記周辺機器の情報を収集し、
前記情報に基づいて、前記周辺機器が要求するアドレスを前記I/Oインタフェースに割り当て、
割り当てたアドレスを前記アドレス保持手段に登録する、
請求項2に記載されたネットワーク装置。 - 前記I/Oパケットを所定のネットワーク手段でカプセル化し、前記I/Oインタフェース毎に前記ホストが備える複数のネットワークインタフェースを対応させ、前記ネットワークインタフェースとの間で前記カプセル化した前記I/Oパケットを送受信するネットワークアダプタ手段、
をさらに備える、請求項2又は3に記載されたネットワーク装置。 - 前記ネットワーク装置は、さらに、
前記ネットワークインタフェースの識別情報を前記ネットワークアダプタ手段に通知し、前記I/Oパケットを送受信する経路に前記ネットワークインタフェースに対応する前記I/Oインタフェースを割り当てる、接続ホスト制御手段を備える、請求項4に記載されたネットワーク装置。 - 前記ネットワーク装置が接続するネットワークはイーサネット(登録商標)に準拠し、
前記I/OバスはPCIエクスプレスに準拠し、
前記周辺機器は、SR−IOVに準拠している、請求項1乃至5のいずれかに記載されたネットワーク装置。 - 前記ホストは、
前記I/Oインタフェースに対し個別にロードされたデバイスドライバを仲介し、少なくとも1つの前記デバイスドライバが制御するインタフェースを運用系として用い、少なくとも1つのデバイスドライバが制御するインタフェースを予備系として用いる仲介デバイスドライバを備える、請求項1乃至6のいずれかに記載されたネットワーク装置。 - 前記ホストは、
前記I/Oインタフェースに対し個別にロードされたデバイスドライバを仲介し、
前記デバイスドライバが制御する少なくとも2つのインタフェースの間でI/O命令をロードバランスする制御を行う仲介デバイスドライバを備える、請求項1乃至6のいずれかに記載されたネットワーク装置。 - 複数のI/Oバスを保持するホストと、
複数のI/Oインタフェースを備える周辺機器と、
前記ホストと自装置とをネットワークを介して接続する第1のインタフェース手段と、
前記周辺機器と自装置とを接続する第2のインタフェース手段と、
前記複数のI/Oインタフェースを、それぞれ異なる前記I/Oバスの配下に接続するように制御する制御手段と、を備えるネットワーク装置と、
を備える、ネットワークシステム。 - 複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続し、
複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続し、
前記複数のI/Oインタフェースを、それぞれ異なる前記I/Oバスの配下に接続するように制御する、
ネットワーク構成方法。 - ネットワーク装置が備えるコンピュータを、
複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段、
複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段、
前記複数のI/Oインタフェースを、それぞれ異なる前記I/Oバスの配下に接続するように制御する制御手段、
として機能させるためのネットワーク装置のプログラム、を記録したプログラム記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011550962A JP5660053B2 (ja) | 2010-01-20 | 2011-01-14 | ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 |
US13/137,614 US20120183001A1 (en) | 2010-01-20 | 2011-08-30 | Network apparatus, network configuration method and program recording medium which records a network apparatus program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010009991 | 2010-01-20 | ||
JP2010-009991 | 2010-01-20 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/137,614 Continuation US20120183001A1 (en) | 2010-01-20 | 2011-08-30 | Network apparatus, network configuration method and program recording medium which records a network apparatus program |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2011090145A1 true WO2011090145A1 (ja) | 2011-07-28 |
Family
ID=44306945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2011/051030 WO2011090145A1 (ja) | 2010-01-20 | 2011-01-14 | ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120183001A1 (ja) |
JP (1) | JP5660053B2 (ja) |
WO (1) | WO2011090145A1 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013046814A1 (ja) * | 2011-09-27 | 2013-04-04 | 日本電気株式会社 | 分散型計算機システム |
WO2014027266A1 (en) * | 2012-08-15 | 2014-02-20 | International Business Machines Corporation | Network interface card having overlay gateway functionality |
WO2015079482A1 (ja) * | 2013-11-26 | 2015-06-04 | 株式会社日立製作所 | I/o制御システム、i/o制御方法およびコンピュータシステム |
WO2015145983A1 (ja) * | 2014-03-28 | 2015-10-01 | 日本電気株式会社 | コンピュータシステム、データ処理装置、バスデータ転送方法、および、コンピュータ可読記録媒体 |
JP2016208184A (ja) * | 2015-04-20 | 2016-12-08 | 日本電気株式会社 | 管理装置、管理システム、管理方法、および管理用プログラム |
WO2020110895A1 (ja) * | 2018-11-30 | 2020-06-04 | 日本電気株式会社 | 通信装置、情報処理システム、および通信方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11656775B2 (en) | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
US11372580B2 (en) * | 2018-08-07 | 2022-06-28 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
US11010314B2 (en) | 2018-10-30 | 2021-05-18 | Marvell Asia Pte. Ltd. | Artificial intelligence-enabled management of storage media access |
US11481118B2 (en) | 2019-01-11 | 2022-10-25 | Marvell Asia Pte, Ltd. | Storage media programming with adaptive write buffer release |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005011277A (ja) * | 2003-06-23 | 2005-01-13 | Hitachi Ltd | 外部ストレージに接続されるストレージ装置 |
WO2009025381A1 (ja) * | 2007-08-23 | 2009-02-26 | Nec Corporation | I/oシステムおよびi/o制御方法 |
JP2009238068A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 通信制御装置、通信制御方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832244A (en) * | 1996-02-20 | 1998-11-03 | Iomega Corporation | Multiple interface input/output port for a peripheral device |
US8171230B2 (en) * | 2007-12-03 | 2012-05-01 | International Business Machines Corporation | PCI express address translation services invalidation synchronization with TCE invalidation |
JP5731108B2 (ja) * | 2009-07-03 | 2015-06-10 | 日本電気株式会社 | 中継手段、中継システム、中継方法およびプログラム |
-
2011
- 2011-01-14 JP JP2011550962A patent/JP5660053B2/ja not_active Expired - Fee Related
- 2011-01-14 WO PCT/JP2011/051030 patent/WO2011090145A1/ja active Application Filing
- 2011-08-30 US US13/137,614 patent/US20120183001A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005011277A (ja) * | 2003-06-23 | 2005-01-13 | Hitachi Ltd | 外部ストレージに接続されるストレージ装置 |
WO2009025381A1 (ja) * | 2007-08-23 | 2009-02-26 | Nec Corporation | I/oシステムおよびi/o制御方法 |
JP2009238068A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 通信制御装置、通信制御方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013046814A1 (ja) * | 2011-09-27 | 2013-04-04 | 日本電気株式会社 | 分散型計算機システム |
WO2014027266A1 (en) * | 2012-08-15 | 2014-02-20 | International Business Machines Corporation | Network interface card having overlay gateway functionality |
US9008085B2 (en) | 2012-08-15 | 2015-04-14 | International Business Machines Corporation | Network interface card having overlay gateway functionality |
US9503313B2 (en) | 2012-08-15 | 2016-11-22 | International Business Machines Corporation | Network interface card having overlay gateway functionality |
WO2015079482A1 (ja) * | 2013-11-26 | 2015-06-04 | 株式会社日立製作所 | I/o制御システム、i/o制御方法およびコンピュータシステム |
WO2015145983A1 (ja) * | 2014-03-28 | 2015-10-01 | 日本電気株式会社 | コンピュータシステム、データ処理装置、バスデータ転送方法、および、コンピュータ可読記録媒体 |
JPWO2015145983A1 (ja) * | 2014-03-28 | 2017-04-13 | 日本電気株式会社 | コンピュータシステム、データ処理装置、バスデータ転送方法、および、コンピュータ可読記録媒体 |
US10324883B2 (en) | 2014-03-28 | 2019-06-18 | Nec Corporation | Computer system, data-processing apparatus, bus-data transferring method, and computer-readable recording medium for transferring data flowing through system bus |
JP2016208184A (ja) * | 2015-04-20 | 2016-12-08 | 日本電気株式会社 | 管理装置、管理システム、管理方法、および管理用プログラム |
WO2020110895A1 (ja) * | 2018-11-30 | 2020-06-04 | 日本電気株式会社 | 通信装置、情報処理システム、および通信方法 |
US11836105B2 (en) | 2018-11-30 | 2023-12-05 | Nec Corporation | Communication device, information processing system, and communication method |
Also Published As
Publication number | Publication date |
---|---|
US20120183001A1 (en) | 2012-07-19 |
JPWO2011090145A1 (ja) | 2013-05-23 |
JP5660053B2 (ja) | 2015-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5660053B2 (ja) | ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 | |
US9742671B2 (en) | Switching method | |
US8683110B2 (en) | I/O system and I/O control method | |
US8014413B2 (en) | Shared input-output device | |
US8144582B2 (en) | Differentiating blade destination and traffic types in a multi-root PCIe environment | |
US7913024B2 (en) | Differentiating traffic types in a multi-root PCI express environment | |
US7694047B1 (en) | Method and system for sharing input/output devices | |
JP6753412B2 (ja) | コンピュータ、デバイス割当管理方法及びプログラム | |
US20130151750A1 (en) | Multi-root input output virtualization aware switch | |
US10698849B2 (en) | Methods and apparatus for augmented bus numbering | |
JP5469081B2 (ja) | 制御パス入出力仮想化方法 | |
US11086703B2 (en) | Distributed input/output virtualization | |
US20240345970A1 (en) | Pcie peripheral sharing | |
US9639489B2 (en) | I/O device sharing system and I/O device sharing method | |
US10509751B2 (en) | Information processing apparatus that converts an address and requester ID on a local host to an address and requester ID on a system host | |
WO2023112646A1 (ja) | 情報処理装置、及び情報処理装置の制御方法 | |
CN118519951A (zh) | 计算系统及数据传输方法 | |
WO2015015652A1 (ja) | サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11734751 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2011550962 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 11734751 Country of ref document: EP Kind code of ref document: A1 |