• ポートフォリオ機能


ポートフォリオを新規に作成して保存
既存のポートフォリオに追加保存

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 取り消して特許、登録 H04L
管理番号 1368613
審判番号 不服2019-13827  
総通号数 253 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2021-01-29 
種別 拒絶査定不服の審決 
審判請求日 2019-10-17 
確定日 2020-12-15 
事件の表示 特願2016-530322「データ・パケットを処理するための方法、システム、およびコンピュータ・プログラム」拒絶査定不服審判事件〔平成27年 2月 5日国際公開、WO2015/014198、平成28年 8月25日国内公表、特表2016-525846、請求項の数(8)〕について、次のとおり審決する。 
結論 原査定を取り消す。 本願の発明は、特許すべきものとする。 
理由 第1 手続の経緯
本願は、2014年(平成26年)7月9日(パリ条約による優先権主張2013年7月31日、中国)を国際出願日とする出願であって、平成30年6月6日付けで拒絶理由通知がされ、平成30年7月23日に意見書が提出され、平成30年12月26日付けで拒絶理由通知がされ、平成31年4月2日に意見書が提出されたが、令和元年6月6日付けで拒絶査定(原査定)がされ、これに対し、令和元年10月17日に拒絶査定不服審判の請求がされると同時に手続補正がされたものである。

第2 原査定の概要
原査定(令和元年6月6日付け拒絶査定)の概要は次のとおりである。

1.本願請求項1-21に係る発明は、以下の引用文献1に基づいて、その発明の属する技術の分野における通常の知識を有する者(以下、「当業者」という。)が容易に発明できたものであるから、特許法第29条第2項の規定により特許を受けることができない。

引用文献等一覧
1.国際公開第2012/114398号

第3 本願発明
本願請求項1-8に係る発明(以下、それぞれ「本願発明1」-「本願発明8」という。)は、令和元年10月17日になされた手続補正で補正された特許請求の範囲の請求項1-8に記載された事項により特定される発明であり、本願発明1は以下のとおりの発明である。

「【請求項1】
ネットワークでデータパケットを処理するための方法であって、
データパケットを含んでいるフローを、特定の分類パラメーターに従って、エレファント・フローとマイス・フローに分類するステップであって、1つのエレファント・フローには1つのマイス・フローよりも多くのデータパケットを含んでおり、前記特定の分類パラメーターは閾値であり、
各フローのデータパケットを記録するステップと、
データパケット数が前記閾値よりも少ないフローをマイス・フローとして分類するステップと、
データパケット数が前記閾値以上のフローをエレファント・フローとして分類するステップと、を含むステップと、
前記分類された前記エレファント・フローと前記マイス・フローをサーバーにおける仮想スイッチに送信するステップと、
前記仮想スイッチで前記マイス・フローを処理するステップと、
前記仮想スイッチに送信されたエレファント・フローと前記処理されたマイス・フローをネットワークにおけるハードウェア・スイッチに送信するステップと、
前記ハードウェア・スイッチで前記エレファント・フローを処理し、前記マイス・フローを処理せず、処理されたエレファント・フローと受信したマイス・フローを転送するステップと、
を含み、
ここで前記処理するステップは、フロー情報をバッファリングするステップ、パケット・ヘッダを置き換えるステップ、カプセル化するステップ、およびカプセル化解除するステップのうちの1つまたは複数を含む、方法。」

なお、本願発明2-8の概要は以下のとおりである。

本願発明2-6は、本願発明1を減縮した発明である。
本願発明7、8は、それぞれ、本願発明1-6に対応するシステム、及び、コンピュータ・プログラムの発明であり、本願発明1-6とカテゴリ表現が異なるだけの発明である。

第4 引用文献1及び引用発明
1.引用文献1について
原査定の拒絶の理由に引用された引用文献1には、図面とともに次の事項が記載されている(訳文は、引用文献1の国内公表文献である特表2014-506739号公報を参照して当審が作成した。下線は当審付与。以下同様。)。

(ア)「Technical Field
[0001] The present invention relates to a network system incorporating a server based on a virtualization technique and a flow control method in such network system.
Background Art
[0002] The virtualization technique is of importance in the field of the server. More specifically, one physical machine can be operated as multiple virtual machines (VMs) through a virtualization technique which uses virtualization software such as VMware and Xen (which are both registered trademarks). This enables efficient server operations.
[0003] The virtualization technique also provides a virtual switch in a physical server, in addition to virtual machines. The virtual switch is a software-based packet switch and relays communications among virtual machines and between the virtual machines and external entities, as shown in Figs. 1A and 1B. The traffic control of the virtual switch is easily achieved, since the virtual switch is provided adjacent to the virtual machines. In addition, the virtual switch is superior in the flexibility and extensibility since the virtual switch is based on software.
[0004] Also known in the art is the I/O (input/output) virtualization technique, such as VT-d/Vt-c (registered trademark). The I/O virtualization technique allows direct data exchanges between virtual machines and network interface cards (NIC) without using a virtual switch. More specifically, as shown in Fig. 2, a virtual NIC is provided for each virtual machine. The use of these virtual NIC enables completely bypassing the virtual switch. Such processing is referred to as "NIC-offloading", hereinafter.」

「(当審訳)
技術分野
[0001]
本発明は、仮想化技術に基づくサーバを含むネットワークシステム、及びそのネットワークシステムにおけるフロー制御方法に関する。
背景技術
[0002]
サーバの分野において、仮想化技術は重要である。具体的には、VMware(登録商標)やXen(登録商標)といった仮想化ソフトウェアを用いた仮想化技術によって、1台の物理マシンを複数の仮想マシン(VM: Virtual Machine)として稼働させることができる。これにより、効率的なサーバ運用が可能となる。
[0003]
仮想化技術により、物理サーバ内には仮想マシンと共に仮想スイッチ(Virtual Switch)も構築される。仮想スイッチは、ソフトウェアベースのパケットスイッチであり、図1A及び図1Bに示されるように、仮想マシン間、及び、仮想マシンと外部との間の通信を中継する。仮想スイッチは仮想マシンと隣接しているため、トラフィック制御が容易である。また、仮想スイッチはソフトウェアベースであるため、柔軟性及び拡張性に優れている。
[0004]
また、VT-d/VT-c(登録商標)といったI/O(入出力)仮想化技術が知られている。このI/O仮想化技術によれば、仮想スイッチを介することなく仮想マシンとネットワークインタフェースカード(NIC: Network Interface Card)との間で直接データのやりとりが可能となる。具体的には、図2に示されるように、仮想NICが仮想マシン毎に構築される。そして、それら仮想NICを利用することによって、仮想スイッチを完全にバイパスすることが可能となる。このような処理は、以下「NICオフロード」と参照される。」

(イ)「[0009] For the cases of Figs. 1A and 1B, the virtual switch relays the entire traffic between the virtual machines and external entities. This implies that the traffic is concentrated on the virtual switch. In addition, the virtual switch, which operates based on software, may proceed with the switch processing with a single thread in some cases. In this case, the virtual switch may be unable to accommodate the concentrated traffic. Therefore, the virtual switch tends to become a bottleneck in network processing.
[0010] The use of the NIC-offloading shown in Fig. 2, on the other hand, enables completely bypassing the virtual switch. In this case, however, the packet communication route is fixed, resulting in that the advantage of the flexible traffic control based on the virtual switch is discarded.」

「(当審訳)
[0009]
図1A及び図1Bの場合、仮想スイッチは、仮想マシンと外部との間の全てのトラフィックを中継する。つまり、仮想スイッチにはトラフィックが集中する。また、仮想スイッチはソフトウェアベースであり、場合によってはシングルスレッドでスイッチ処理が進行する。その場合、集中するトラフィックを処理しきれなくなる。このようなことから、仮想スイッチは、ネットワーク処理におけるボトルネックになりやすい。
[0010]
一方、図2で示されたNICオフロードを利用すれば、仮想スイッチを完全にバイパスすることが可能となる。しかしながらこの場合、パケット通信経路は固定され、仮想スイッチを利用した柔軟なトラフィック制御の利点を享受することができなくなる。」

(ウ)「[0014] The inventor focuses attention on the following issue: Some commercially-available NICs do not have a sufficient flow resolution. For example, some commercially-available NICs can use only five tuples for matching, although the OpenFlow requires 12 tuples. When the flow resolution of a NIC is insufficient as thus described, this makes it impossible to apply NIC-offloading to a desired flow. More generally, when a function of a network adapter of a server is insufficient, there is a possibility in which a desired NIC-offloading is not achieved. In this case, it is impossible to sufficiently suppress the concentration of the traffic on the virtual switch.
[0015] Therefore, one objective of the present invention is to provide a technique for compensating the function insufficiency of a network adapter of a server.」

「(当審訳)
[0014]
本願発明者は、次の点に着目した。市販のNICの中には、十分なフロー分解能を持たないものがある。例えば、オープンフローは12tupleを必要とするが、市販のNICでは5tupleしかマッチングに使えない場合がある。このようにNICのフロー分解能が不足していると、所望のフローにNICオフロードを適用することができなくなる。より一般化すれば、サーバのネットワークアダプタの機能が不足している場合、所望のNICオフロードを実現できなくなる可能性がある。その場合、仮想スイッチへのトラフィックの集中を十分に抑制することができなくなる。
[0015]
本発明の1つの目的は、サーバのネットワークアダプタの機能不足を補うことができる技術を提供することにある。」

(エ)「[0023] Fig. 3 is a block diagram schematically showing an exemplary configuration of a network system 1 according to the present embodiment. The network system 1 includes a plurality of servers (physical servers) 10 connected to a network (not shown). Multiple switches are provided among the servers 10. The network system 1 is connected to an external network via a network appliance, such as a firewall and a load balancer. The network system 1 is used within a data center, for example.
[0024] Fig. 4 is a block diagram showing an exemplary hardware configuration of each server 10 of the present embodiment. Each server 10 includes a CPU (central processing unit) 20, a main memory 30 and a network adapter (network interface device) 100. The network adapter 100 may be also referred to as network card or NIC (network interface card). The CPU 20, the main memory 30 and the network adapter 100 are mutually connected.
[0025] The main memory 30 stores virtualization software and a flow control program PROG. The virtualization software includes a computer program to be executed by the CPU 20, which builds virtual machines (VMs) and a virtual switch on each server 10. The flow control program PROG, which is executed by the CPU 20, provides a "route switching function" for each server 10 as described later. The virtualization software and the flow control program PROG may be recorded in a non-transitory computer-readable recording medium 80. The flow control program PROG may be incorporated within the virtualization software.
[0026] Fig. 5 is a block diagram schematically showing the configuration of each server 10 in the present invention. The server 10 includes a processing unit 40 and a network adapter 100 connected to the processing unit 40. The processor 40 is implemented as a cooperative combination of the afore-mentioned CPU 20, memory 30, virtualization software and flow control program PROG, and has various functions based on the virtual environment. More specifically, the processor 40 includes a hypervisor 50, a virtual switch 200 and at least one virtual machine (virtual server) 300. The hypervisor 50 manages the operation of each virtual machine 300 and provides communication paths among the virtual machines 300. The hypervisor 50 may be also referred to as virtual machine monitor (VMM). The virtual switch 200 relays packets transmitted and received by the virtual machines 300 to and from external entities. The virtual switch 200 may operate on a control virtual machine (control VM) (see Fig. 1A) or operate on the hypervisor 50 (see Fig. 1B). Applications are run on each virtual machine 300 (guest VM). The control VM may be also referred to as input/output virtual machine (IOVM).
[0027] In this embodiment, "NIC-offloading" is available by using the network adapter 100. In other words, data can be directly exchanged between the network adapter 100 and the virtual machines 300.
[0028] Fig. 6 is a block diagram showing the basic configuration of the network adapter 100 according to the present embodiment. The network adapter 100 includes virtual NICs (shown as dotted frames), a reception filter 110, a transmission filter 120, a storage device 130 and a data direct transmission function 140. The data direct transmission function 140 is a function for directly transmitting and receiving packets to and from the virtual machines 300 without using the virtual switch 200. In detail, the data direct transmission function 140 performs direct data transmission between the transmission and reception queues of the network adapter 100 and the address space used by the virtual machines 300.
[0029] Virtual NICs are respectively provided for virtual machines 300 (VM1, VM2, ...). Each virtual NIC includes a reception queue 101 and a transmission queue 102. The reception queue 101 stores therein reception packets received by the network adapter 100 from a data link. The reception packets stored in the reception queue 101 are directly transmitted to the corresponding virtual machine 300. The transmission packets which the network adapter 100 directly receives from the virtual machines by using the data direct transmission function 104 are stored in the transmission queues 102 corresponding to the virtual machines.
[0030] A virtual NIC is also provided for the virtual switch 200. The reception queue 101 and transmission queue 102 of the virtual NIC associated with the virtual switch 200 are referred to as reception queue 101-S and transmission queue 102-S, respectively, hereinafter. The reception queue 101-S stores therein reception packets received by the network adapter 100 from the external data link. The reception packets stored in the reception queue 101-S are forwarded to the virtual switch 200. Also, the transmission packets received by the network adapter 100 from the virtual switch 200 are stored in the transmission queue 102-S.
[0031] The transmission filter 120 selects the transmission queues 102 and 102-S in a predetermined order at predetermined timings. The transmission filter 120 then retrieves transmission packets from the selected transmission queue 102 or 102-S and forwards the transmission packets to the data link. It should be noted that the transmission queues 102 may store meta data of the packets, such as addresses at which the packets are stored within the virtual machines 300, in place of the packet data themselves. In this case, after selecting the transmission queue 102 from which packets are to be retrieved next, the transmission filter 120 instructs the data direct transmission function 140 to forward the relevant packets from the virtual machines 300 by using the meta data of the packets stored in the selected queue.
[0032] The reception filter 110 receives reception packets from the data link. The reception filter 110 selects which reception queue 101 or 101-S the reception packets are to be stored into. A "reception filter table FILT1" is used for this selection. The reception filter table FILT1 is stored in the storage device 130. Examples of the storage device 130 include a DRAM (dynamic random access memory), an SRAM (static random access memory) and a content addressable memory (CAM).
[0033] The reception filter table FILT1 indicates the association of the flows with the reception actions. The reception filter 110 refers to the reception filter table FILT1 and performs the reception action associated with the flow of the reception packets. There are two kinds of the reception actions. The first reception action involves "directly transmitting the reception packets to a specified virtual machine 300 by using the data direct transmission function 140". In this case, the reception filter 110 stores the reception packets 101 to the corresponding reception queue. The second reception action involves "transmitting the reception packets to the virtual switch 200". In this case, the reception filter 110 stores the reception packets into the reception queue 101-S, which is dedicated to the virtual switch 200.
[0034] Fig. 7 shows one example of the reception filter table FILT1. The reception filter table FILT1 includes a plurality of filter entries. Each filter entry indicates a key (Key) for identifying the flow and a reception action (Action) which is to be performed on reception packets of the associated flow. Each key is flow identification information which is formed as a combination of predetermined protocol header fields in the header information of reception packets. In one example, keys of the flow table of OpenFlowSwitch are used as the keys of the reception filter table FILT1 (see http://www.openflowswitch.org/). Each reception action indicates the reception queue into which the reception packets are to be stored. For example, "reception action: VM1" means the reception queue 101 associated with the virtual machine VM1, and indicates the aforementioned first reception action. Also, "reception action: vswitch" means the reception queue 101-S associated with the virtual switch 200, and indicates the aforementioned second reception action.
[0035] Upon reception of a reception packet, the reception filter 110 retrieves an exact match entry in the reception filter table FILT1 by using the header information of the reception packet. When there is an exact match entry which matches the flow of the reception packet, the reception filter 110 performs the first reception action on the reception packet, as indicated by the exact match entry. In the example of Fig. 7, for example, the reception filter 110 stores a reception packet belonging to the flow "flow1" in the reception queue 101 associated with the virtual machine VM1. When there is no exact match entry which matches the flow of the reception packet, on the other hand, the reception filter 110 performs the second reception action on the reception packet, that is, stores the reception packet into the reception queue 101-S associated with the virtual switch 200. Such operation allows performing the NIC-offloading.
[0036] The server 10 of the present embodiment further includes a route switcher 60. Fig. 8 is a schematic diagram showing the function of the route switcher 60 in this embodiment. In this embodiment, the route switcher 60 dynamically switches the transmission routes of packets transmitted and received by the virtual machines 400.
[0037] In detail, there are two kinds of transmission routes of packets transmitted and received by the virtual machines 300. In the first route pattern, packets are directly exchanged between the network adapter 100 and the virtual machines 300 without using the virtual switch 200, by the aforementioned data direct transmission function 140 of the network adapter 100. In the second route pattern, on the other hand, packets are transmitted and received by the virtual machines 300 at least via the virtual switch 200. Hereinafter, the flows of the first and second route patterns are referred to as "first pattern flow" and "second pattern flow", respectively.
[0038] The route switcher 60 switches the route of each flow of packets transmitted and received by the virtual machines 300 between the first route pattern and the second route pattern. Furthermore, the route switcher 60 dynamically switches the route setting under predetermined conditions. In other words, the route switcher 60 dynamically switches each flow of packets transmitted and received by the virtual machines 300 between the first route pattern flow and the second route pattern flow. And, the route switcher 60 causes the data direct transmission function 140 of the network adapter 100 to handle the first route pattern flows and causes the virtual switch 200 to handle the second route pattern flows.
[0039] As thus described, all of the flows do not fixedly bypass the virtual switch 200 in this embodiment; only desired flows (the first route pattern flows) are subjected to NIC-offloading to bypass the virtual switch 200. Other flows (the second route pattern flows) are transmitted via the virtual switch 200, as in the normal operation. This allows suppressing the concentration of the traffic on the virtual switch 200, while providing the advantage of flexible traffic control based on the virtual switch 200.
[0040] It should be noted that the route switcher 60 may be achieved by executing the flow control program PROG by the server 10 (or the CPU 20). The route switcher 60 may be incorporated in the processor 40 as shown in Fig. 5. Instead, the route switcher 60 may be incorporated in the network adapter 100. Specifically, the route switcher 60 may be incorporated in the virtual switch 200 or the hypervisor 50 of the processor 40; however, the embodiment of the route switcher 60 is not limited to this.
[0041] In the following, the route switching process of the present embodiment is further described in detail.
[0042] Fig. 9 is a schematic diagram showing one example of the route switching process of the present embodiment. In this example, a transmission filter table FILT2 is provided in the network adapter 100, in addition to the reception filter table FILT1. The transmission filter table FILT2 is stored in the storage device 130, as is the case of the reception filter table FILT1. It should be noted that the reception filter table FILG1 and the transmission filter table FILT2 may be collectively referred to as "filter tables FILT".
[0043] The transmission filter table FILT2 indicates the association of the flows with the transmission actions. The transmission filter 120 refers to the transmission filter table FILT2 and performs the transmission action associated with each flow of transmission packets.
There are two kinds of transmission actions. The first transmission action involves "transmitting transmission packets to the external data link". In this case, the transmission filter 120 forwards the transmission packets to the data link. The second transmission action involves "looping back the transmission packets as reception packets to the reception filter 110 (on the reception route)". In this case, the transmission filter 120 loops back the transmission packets as reception packets to the reception filter 110.
[0044] Fig. 10 shows one example of the transmission filter table FILT2. The transmission filter table FILT2 includes a plurality of filter entries. Each filter entry indicates a key (Key) for identifying a flow and a transmission action (Action) to be performed on transmission packets of the relevant flow. Each key is flow identification information which is formed as a combination of predetermined protocol header fields of the header information of transmission packets. For example, keys of the flow table of OpenFlowSwitch (see http://www.openflowswitch.org/) may be used as the keys of the transmission filter table FILT2. Each transmission action indicates the first transmission action "out" or the second transmission action "loopback".
[0045] After acquiring a transmission packet from the selected transmission queue 102, the transmission filter 120 retrieves an exact match entry in the transmission filter table FILT2 by using the header information of the transmission packet. When there is an exact match entry which matches the flow of the transmission packet, the transmission filter 120 performs the first transmission action (out) on the transmission packet, as indicated by the exact match entry, that is, forwards the transmission packet to the data link. When there is no exact match entry which matches the flow of the transmission packet, on the other hand, the transmission filter 120 performs the second transmission action (loopback) on the transmission packet, that is, loops back the transmission packet as a reception packet to the reception filter 110 (on the reception route).
[0046] In the following, a description is given of the two route patterns with reference to Figs. 9 and 11. In the example of Figs. 9 and 11, only the flows "flow1" and "flow2" are associated with the first reception action in the reception filter table FILT1, and the other flows are associated with the second reception action. Also, only the flows "flow1" and "flow2" are associated with the first transmission action in the transmission filter table FILT2, and the other flows are associated with the second transmission action.
[0047] In this example, a transmission packet transmitted from a virtual machine 300 is first inputted to the network adapter 100. In this case, the transmission packet is directly inputted to the network adapter 100 without using the virtual switch 200 by the data direct transmission function 140 of the network adapter 100. The transmission filter 120 retrieves the transmission packet from the selected transmission queue 102.
[0048] When the transmission packet belongs to the flow "flow1" or "flow2", an exact match entry is hit in the transmission filter table FILT2. Accordingly, the transmission filter 120 forwards the transmission packet to the data link. That is, this transmission packet is transmitted to an external entity from the virtual machine 300 via the network adapter 100 without passing the virtual switch 200. This procedure corresponds to the aforementioned first route pattern.
[0049] When the transmission packet belongs to a different flow, there is no exact match entry which is hit in the transmission filter table FILT2. Accordingly, the transmission filter 120 loops back the transmission packet as a reception packet to the reception filter 110. There is no exact match entry which is hit in the reception filter table FILT1, neither. Accordingly, the reception filter 110 transmits the reception packet to the virtual switch 200 via the reception queue 101-S. As a result, the packet is once inputted to the network adapter 100 and then processed by the virtual switch 200. Such operation corresponds to the aforementioned second route pattern.
[0050] A reception packets received from the data link is handled as follows: When the reception packet belongs to the flow "flow1" or "flow2", an exact match entry is hit in the reception filter table FILT1. Accordingly, the reception filter 110 stores the reception packet into the reception queue 101 associated with the corresponding virtual machine 300. The reception packet is directly transmitted to the corresponding virtual machine 300 by the data direct transmission function 140 without using the virtual switch 200. Such operation corresponds to the first route pattern.
[0051] When the reception packet belongs to a different flow, there is no exact match entry which is hit in the reception filter table FILT1. Accordingly, the reception filter 110 stores the reception packet into the reception queue 101-S associated with the virtual switch 200. This results in that the reception packet is processed by the virtual switch 200. Such operation corresponds to the second route pattern.
[0052] It should be noted that, as shown in Fig. 12, the reception filter table FILT1 and the transmission filter table FILT2 may be combined and prepared as a single transmission/reception filter table. In the example of Fig. 12, the second reception action and the second transmission action both involve "vswitch: storing the packet in the reception queue 101-S associated with the virtual switch 200". Such operation also achieves looping-back of the transmission packet to the reception route.
[0053] As thus described, the flow routes of packets transmitted and received by the virtual machines 300 can be switched between the first route pattern and the second route pattern by the entry settings of the reception filter table FILT1 and the transmission filter table FILT2. The flow route can be "dynamically" switched by modifying the entry settings of the reception filter table FILT1 and the transmission filter table FILT2. The route switcher 60 performs such entry settings and setting modifications.
[0054] More specifically, the route switcher 60 assigns each flow of packets transmitted and received by the virtual machines 300 to the first or second route pattern flow on the basis of predetermined standards. This assignment is allowed to be dynamically modified. The route switcher 60 sets the reception filter table FILT1 so as to correlate the first route pattern flows with the aforementioned first reception action and to correlate the second route patter flows with the second reception action. In addition, the route switcher 60 sets the transmission filter table FILT2 so as to correlate the first route pattern flows with the aforementioned first transmission action and to correlate the second route patter flows with the second transmission action. As a result, the first route pattern flows are processed without using the virtual switch 200, that is, NIC-offloading is achieved. The second route pattern flows, on the other hand, are processed by the virtual switch 200.」

「(当審訳)
[0023]
図3は、本実施の形態に係るネットワークシステム1の構成例を概略的に示すブロック図である。ネットワークシステム1は、ネットワーク(不図示)に接続された複数のサーバ10を備えている。サーバ10間には、複数のスイッチが配置されている。このネットワークシステム1は、ファイアウォールやロードバランサといったネットワークアプライアンスを介して外部ネットワークに接続されている。ネットワークシステム1は、例えばデータセンタ(data center)内のネットワークシステムである。
[0024]
図4は、本実施の形態に係るサーバ(物理サーバ)10のハードウェア構成を示すブロック図である。サーバ10は、CPU(Central Processing Unit)20、メインメモリ30、及びネットワークアダプタ(ネットワークインタフェース装置)100を備えている。ネットワークアダプタ100は、ネットワークカードまたはNIC(Network Interface Card)とも呼ばれる。CPU20、メインメモリ30、及びネットワークアダプタ100は、互いに接続されている。
[0025]
メインメモリ30には、仮想化ソフトウェアやフロー制御プログラムPROGが格納される。仮想化ソフトウェアは、CPU20によって実行されるコンピュータプログラムであり、サーバ10上に仮想マシン(VM: Virtual Machine)や仮想スイッチ(Virtual Switch)を構築する。フロー制御プログラムPROGは、CPU20によって実行されるコンピュータプログラムであり、後に説明される「経路切替機能」をサーバ10に実装する。仮想化ソフトウェアやフロー制御プログラムPROGは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。フロー制御プログラムPROGは、仮想化ソフトウェアに組み込まれていてもよい。
[0026]
図5は、本実施の形態に係るサーバ10の構成を概念的に示すブロック図である。サーバ10は、処理装置40と、処理装置40に接続されたネットワークアダプタ100とを備えている。処理装置40は、上述のCPU20、メインメモリ30、仮想化ソフトウェア及びフロー制御プログラムPROGの協働により実現され、仮想環境に基づく様々な機能を備える。具体的には、処理装置40は、ハイパーバイザ50、仮想スイッチ200、及び少なくとも1台の仮想マシン(仮想サーバ)300を備える。ハイパーバイザ50は、各仮想マシン300の動作を管理し、また、仮想マシン300間の通信伝送路を提供する。ハイパーバイザ50は、仮想マシンモニタ(VMM: Virtual Machine Monitor)とも呼ばれる。仮想スイッチ200は、仮想マシン300が送受信するパケットを外部との間で中継する。仮想スイッチ200は、制御用の仮想マシン(Control VM)上で動作してもよいし(図1A参照)、ハイパーバイザ50上で動作してもよい(図1B参照)。各仮想マシン300(Guest VM)上では、それぞれのアプリケーションが稼働する。制御用の仮想マシン(Control VM)は、入出力処理用の仮想マシン(IOVM)とも呼ばれる。
[0027]
本実施の形態では、ネットワークアダプタ100による「NICオフロード」が可能である。つまり、仮想スイッチ200を介することなく、ネットワークアダプタ100と仮想マシン300との間で直接データのやりとりが可能である。
[0028]
図6は、本実施の形態に係るネットワークアダプタ100の基本構成を示すブロック図である。ネットワークアダプタ100は、仮想NIC(図中、破線枠で示されている)、受信フィルタ110、送信フィルタ120、記憶装置130、及びデータ直接伝送機能140を備えている。データ直接伝送機能140は、仮想スイッチ200を介することなく仮想マシン300に対してパケットを直接送受信する機能である。詳細には、データ直接伝送機能140は、ネットワークアダプタ100の送受信キューと仮想マシン300が利用するアドレス空間との間で直接データ転送を行う。
[0029]
仮想NICは、仮想マシン300(VM1,VM2・・・)毎に設けられる。各仮想NICは、受信キュー101と送信キュー102を含んでいる。受信キュー101には、ネットワークアダプタ100がデータリンクから受け取った受信パケットが格納される。受信キュー101に格納された受信パケットは、データ直接伝送機能140によって、対応する仮想マシン300に直接送られる。また、ネットワークアダプタ100がデータ直接伝送機能140によって仮想マシンから直接受け取った送信パケットは、その仮想マシンに対応する送信キュー102に格納される。
[0030]
また、仮想NICは、仮想スイッチ200に対しても設けられる。仮想スイッチ200とつながる仮想NICの受信キュー101及び送信キュー102は、以下、受信キュー101-S及び送信キュー102-Sとそれぞれ参照される。受信キュー101-Sには、ネットワークアダプタ100が外部データリンクから受け取った受信パケットが格納される。受信キュー101-Sに格納された受信パケットは、仮想スイッチ200に送られる。また、ネットワークアダプタ100が仮想スイッチ200から受け取った送信パケットは、送信キュー102-Sに格納される。
[0031]
送信フィルタ120は、それぞれの送信キュー102、102-Sを所定の順序/タイミングで選択する。そして、送信フィルタ120は、選択した送信キュー102あるいは102-Sから送信パケットを取り出し、その送信パケットをデータリンクへ送出する。尚、送信キュー102には、パケット自体のデータでなく、パケットを格納している仮想マシン300内のアドレスなど、パケットのメタデータのみを格納することもできる。この場合、送信フィルタ120は、次にパケットを取り出す送信キュー102を選択すると、該当キューに格納されたパケットのメタデータを用いて、当該パケットを仮想マシン300から転送するよう、データ直接伝送機能140に指示する。
[0032]
受信フィルタ110は、データリンクから受信パケットを受け取る。受信フィルタ110は、その受信パケットをどの受信キュー101あるいは101-Sに格納するかを判定する。その判定に用いられるのが、「受信フィルタテーブルFILT1」である。受信フィルタテーブルFILT1は、記憶装置130に格納されている。記憶装置130の例としては、DRAM、SRAM、連想メモリ(CAM: Content Addressable Memory)等が挙げられる。
[0033]
受信フィルタテーブルFILT1は、フローと受信アクションとの対応関係を示すテーブルである。受信フィルタ110は、その受信フィルタテーブルFILT1を参照し、受信パケットのフローに対応付けられた受信アクションを受信パケットに対して行う。受信アクションとしては、2パターン考えられる。第1受信アクションは、「データ直接伝送機能140を用いることによって、受信パケットを指定された仮想マシン300に直接送信すること」である。この場合、受信フィルタ110は、受信パケットを、指定された受信キュー101に格納する。第2受信アクションは、「受信パケットを仮想スイッチ200へ送信すること」である。この場合、受信フィルタ110は、受信パケットを、仮想スイッチ200宛の受信キュー101-Sに格納する。
[0034]
図7は、受信フィルタテーブルFILT1の一例を示している。受信フィルタテーブルFILT1は、複数のフィルタエントリを有している。各フィルタエントリは、フローを識別するためのキー(Key)と該当フローの受信パケットに対して行われる受信アクション(Action)を示している。キーは、フロー識別情報であり、受信パケットのヘッダ情報中の所定のプロトコルヘッダフィールドの組み合わせで構成される。このキーは、例えば、OpenFlowSwitch(http://www.openflowswitch.org/を参照)のフローテーブルにおけるキーと同様である。受信アクションには、受信パケットの格納先となる受信キューが記述されている。例えば、「受信アクション:VM1」は、仮想マシンVM1宛の受信キュー101を意味し、上述の第1受信アクションに相当する。また、「受信アクション:vswitch」は、仮想スイッチ200宛の受信キュー101-Sを意味し、上述の第2受信アクションに相当する。
[0035]
受信フィルタ110は、受信パケットを受け取ると、その受信パケットのヘッダ情報を用いて受信フィルタテーブルFILT1中のイグザクトマッチエントリ(exact match entry)を検索する。受信パケットのフローにマッチするイグザクトマッチエントリが有る場合、受信フィルタ110は、そのイグザクトマッチエントリで指定された第1受信アクションを受信パケットに対して行う。例えば、図7の例において、受信フィルタ110は、フローflow1に属する受信パケットを、仮想マシンVM1宛の受信キュー101に格納する。一方、受信パケットのフローにマッチするイグザクトマッチエントリが無い場合、受信フィルタ110は、第2受信アクションを受信パケットに対して行う、すなわち、受信パケットを仮想スイッチ200宛の受信キュー101-Sに格納する。このようにして、NICオフロードが可能となる。
[0036]
本実施の形態に係るサーバ10は、更に、「経路切替部60」を備えている。図8は、本実施の形態に係る経路切替部60の機能を説明するための概略図である。本実施の形態において、経路切替部60は、仮想マシン300が送受信するパケットの伝送経路を“動的”に切り替える。
[0037]
より詳細には、仮想マシン300が送受信するパケットの伝送経路には、2パターン考えられる。第1の経路パターンでは、上述のネットワークアダプタ100のデータ直接伝送機能140によって、仮想スイッチ200を介することなくネットワークアダプタ100と仮想マシン300との間で直接パケットが送受信される(NICオフロード)。一方、第2の経路パターンでは、少なくとも仮想スイッチ200を介して仮想マシン300に対してパケットが送受信される。第1及び第2の経路パターンのフローは、以下、それぞれ、「第1経路パターンフロー」及び「第2経路パターンフロー」と参照される。
[0038]
経路切替部60は、仮想マシン300が送受信するパケットのフロー経路を、第1の経路パターンあるいは第2の経路パターンに設定する。更に、経路切替部60は、その経路設定を、所定の条件に応じて動的に切り替える。すなわち、経路切替部60は、仮想マシン300が送受信するパケットのフローを、第1経路パターンフローあるいは第2経路パターンフローに動的に切り替える(分別する)。そして、経路切替部60は、第1経路パターンフローをネットワークアダプタ100のデータ直接伝送機能140に処理させ、一方、第2経路パターンフローを仮想スイッチ200に処理させる。
[0039]
このように、本実施の形態によれば、全てのフローが固定的に仮想スイッチ200をバイパスするわけではない。所望のフロー(第1経路パターンフロー)のみがNICオフロードされ、仮想スイッチ200をバイパスする。他のフロー(第2経路パターンフロー)は、通常通り、仮想スイッチ200を通して伝送される。その結果、仮想スイッチ200を利用した柔軟なトラフィック制御の利点を享受しつつ、仮想スイッチ200へのトラフィックの集中を抑制することが可能となる。
[0040]
尚、経路切替部60は、サーバ10(CPU20)がフロー制御プログラムPROGを実行することにより実現される。経路切替部60は、図5に示されるように処理装置40に組み込まれていてもよい。あるいは、経路切替部60は、ネットワークアダプタ100に組み込まれていてもよい。典型的には、経路切替部60は、処理装置40の仮想スイッチ200あるいはハイパーバイザ50に組み込まれる。但し、それに限定されない。
[0041]
以下、本実施の形態に係る経路切替処理を更に詳しく説明する。
[0042]
図9は、本実施の形態に係る経路切替処理の一例を説明するための概念図である。本処理例では、ネットワークアダプタ100に、受信フィルタテーブルFILT1だけでなく、「送信フィルタテーブルFILT2」も設けられる。受信フィルタテーブルFILT1と同様に、送信フィルタテーブルFILT2も記憶装置130に格納される。尚、受信フィルタテーブルFILT1と送信フィルタテーブルFILT2は、まとめて「フィルタテーブルFILT」と参照される場合がある。
[0043]
送信フィルタテーブルFILT2は、フローと送信アクションとの対応関係を示すテーブルである。送信フィルタ120は、その送信フィルタテーブルFILT2を参照し、送信パケットのフローに対応付けられた送信アクションを送信パケットに対して行う。送信アクションとしては、2パターン考えられる。第1送信アクションは、「送信パケットを外部のデータリンクへ送信すること」である。この場合、送信フィルタ120は、送信パケットをデータリンクへ送出する。第2送信アクションは、「送信パケットを受信パケットとして受信フィルタ110(受信経路)へループバックさせること」である。この場合、送信フィルタ120は、送信パケットを受信パケットとして受信フィルタ110(受信経路)へループバックさせる。
[0044]
図10は、送信フィルタテーブルFILT2の一例を示している。送信フィルタテーブルFILT2は、複数のフィルタエントリを有している。各フィルタエントリは、フローを識別するためのキー(Key)と該当フローの送信パケットに対して行われる送信アクション(Action)を示している。キーは、フロー識別情報であり、送信パケットのヘッダ情報中の所定のプロトコルヘッダフィールドの組み合わせで構成される。このキーは、例えば、OpenFlowSwitch(http://www.openflowswitch.org/を参照)のフローテーブルにおけるキーと同様である。送信アクションには、第1送信アクション「out」あるいは第2送信アクション「loopback」が記述されている。
[0045]
送信フィルタ120は、選択した送信キュー102から送信パケットを取り出すと、その送信パケットのヘッダ情報を用いて送信フィルタテーブルFILT2中のイグザクトマッチエントリ(exact match entry)を検索する。送信パケットのフローにマッチするイグザクトマッチエントリが有る場合、送信フィルタ120は、そのイグザクトマッチエントリで指定された第1送信アクション(out)を送信パケットに対して行う、すなわち、送信パケットをデータリンクに送出する。一方、送信パケットのフローにマッチするイグザクトマッチエントリが無い場合、送信フィルタ120は、第2送信アクション(loopback)を送信パケットに対して行う、すなわち、送信パケットを受信パケットとして受信フィルタ110(受信経路)へループバックさせる。
[0046]
図9及び図11を参照して、2つの経路パターンを説明する。図9及び図11の例では、受信フィルタテーブルFILT1において、フローflow1、flow2だけが第1受信アクションに対応付けられており、その他のフローは第2受信アクションに対応付けられている。また、送信フィルタテーブルFILT2において、フローflow1、flow2だけが第1送信アクションに対応付けられており、その他のフローは第2送信アクションに対応付けられている。
[0047]
本処理例において、仮想マシン300から送出される送信パケットは、まず、ネットワークアダプタ100に入力される。このとき、その送信パケットは、ネットワークアダプタ100のデータ直接伝送機能140によって、仮想スイッチ200を介することなくネットワークアダプタ100に直接入力される。送信フィルタ120は、選択した送信キュー102から送信パケットを取り出す。
[0048]
送信パケットがフローflow1あるいはflow2に属する場合、送信フィルタテーブルFILT2中のイグザクトマッチエントリがヒットする。従って、送信フィルタ120は、その送信パケットをデータリンクに送出する。つまり、当該送信パケットは、仮想スイッチ200を通過することなく、仮想マシン300からネットワークアダプタ100を介して外部に送信される。これは、上述の第1の経路パターンに相当する。
[0049]
一方、送信パケットがその他のフローに属する場合、送信フィルタテーブルFILT2中のいずれのイグザクトマッチエントリもヒットしない。従って、送信フィルタ120は、その送信パケットを受信パケットとして受信フィルタ110にループバックする。受信フィルタテーブルFILT1においても、いずれのイグザクトマッチエントリもヒットしない。従って、受信フィルタ110は、その受信パケットを受信キュー101-Sを介して仮想スイッチ200へ送る。つまり、当該パケットは、一旦ネットワークアダプタ100に入力された後、仮想スイッチ200によって処理されることになる。これは、上述の第2の経路パターンに相当する。
[0050]
データリンクから受け取る受信パケットに関しては、次の通りである。受信パケットがフローflow1あるいはflow2に属する場合、受信フィルタテーブルFILT1中のイグザクトマッチエントリがヒットする。従って、受信フィルタ110は、その受信パケットを、対応する仮想マシン300宛の受信キュー101に格納する。その受信パケットは、データ直接伝送機能140によって、仮想スイッチ200を介することなく、対応する仮想マシン300に直接送られる。これは、上述の第1の経路パターンに相当する。
[0051]
一方、受信パケットがその他のフローに属する場合、受信フィルタテーブルFILT1中のいずれのイグザクトマッチエントリもヒットしない。従って、受信フィルタ110は、その受信パケットを、仮想スイッチ200宛の受信キュー101-Sに格納する。よって、その受信パケットは、仮想スイッチ200によって処理されることになる。これは、上述の第2の経路パターンに相当する。
[0052]
尚、図12に示されるように、受信フィルタテーブルFILT1と送信フィルタテーブルFILT2とは組み合わされて、単一の送受信フィルタテーブルとして提供されてもよい。図12の例では、第2受信アクションと第2送信アクションは共通であり、「vswitch:パケットを仮想スイッチ200宛の受信キュー101-Sに格納すること」である。これによっても、受信経路への送信パケットのループバックが実現される。
[0053]
以上に説明されたように、受信フィルタテーブルFILT1及び送信フィルタテーブルFILT2におけるエントリ設定により、仮想マシン300が送受信するパケットのフロー経路を、第1の経路パターンあるいは第2の経路パターンに設定することができる。そして、受信フィルタテーブルFILT1及び送信フィルタテーブルFILT2におけるエントリ設定を変更することによって、フロー経路を“動的”に切り替えることも可能である。そのようなエントリ設定及び設定変更を行うのが、経路切替部60である。
[0054]
具体的には、経路切替部60は、仮想マシン300が送受信するパケットのフローを、所定の基準に基いて、第1経路パターンフローあるいは第2経路パターンフローに割り当てる。その割り当ては、動的に変更可能である。そして、経路切替部60は、第1経路パターンフローが上述の第1受信アクションに対応付けられ、第2経路パターンフローが上述の第2受信アクションに対応付けられるように、受信フィルタテーブルFILT1を設定する。また、経路切替部60は、第1経路パターンフローが上述の第1送信アクションに対応付けられ、第2経路パターンフローが上述の第2送信アクションに対応付けられるように、送信フィルタテーブルFILT2を設定する。その結果、第1経路パターンフローは、仮想スイッチ200を介することなく処理される、すなわち、NICオフロードされる。一方、第2経路パターンフローは、仮想スイッチ200によって処理されることになる。」

(オ)「[0061] 2. Switch Offloading
When a commercially-available network adapter 100 is used, there is a case that the flow resolution of the filter tables FILT is insufficient for desired processing. For example, a commercially-available NIC may only afford 5 tuples although OpenFlow requires 12 tuples. When the flow resolution of the network adapter 100 is insufficient, this may make the NIC-offloading inapplicable to a desired flow.
[0062] When the storage region assigned to the filter tables FILT is small, an overflow of the filter tables FILT easily occurs, and the overflow of the filter tables FILT makes it impossible to add a new filter entry to the filter tables FILT. This also constitutes a limiting factor for desired NIC-offloading.
[0063] As thus discussed, desired NIC-offloading may not be achieved when the function of the filter tables FILT of the network adapter 100 is insufficient. In such case, the concentration of the traffic on the virtual switch 200 is not sufficiently suppressed.
[0064] In this embodiment, an offloading based on a physical switch connected to the network adapter 100 is also implemented in order to compensate the function insufficiency of the filter tables FILT of the network adapter 100. Such offloading based on a physical switch is referred to as "switch offloading", hereinafter. In summary, not only "NIC-offloading" but also "switch offloading" are dynamically controlled in this embodiment. This effectively compensates the function insufficiency of the filter tables FILT of the network adapter 100. In the following, a description is given of the configuration and processing related to the switch offloading.
[0065] 2-1. Overall Configuration
Fig. 14 is a block diagram schematically showing the configuration of the network system 10 of the present embodiment. The network system 1 includes servers 10 (one shown), switches 400 (one shown) and a controller 500. The switches 400 are ToR (Top of Rack) switches connected to the servers 10. The controller 500 is connected to the servers 10 and the switches 400 and controls the functions of the servers 10 and the switches 400. In an OpenFlow network system, for example, the switches 400 are physical OpenFlow switches (POFSs) and the controller 500 is an OpenFlow controller (OFC).
[0066] 2-2. Servers 10
The servers 10 each include a network adapter 100, a virtual switch 200 and virtual machines 300 (one shown). As described above, the network adapter 100 is configured to handle packets in units of flows in accordance with the filter tables FILT.
[0067] Furthermore, the network adapter 100 has the "NIC-offloading function" for transmitting and receiving packets to and from the virtual machines 300 without using the virtual switch 200, as described above. The enabling/disenabling of the NIC-offloading function for a desired flow can be achieved by appropriately setting the filter entry associated with the desired flow in the filter tables FILT. In other words, the enabling/disenabling of the NIC-offloading function can be dynamically controlled for each flow by the settings of the filter tables FILT. As described above, the settings of the filter tables FILT are achieved by the route switcher 60. In the above-described example, the virtual switch 200 functions as the route switch 200, and the filter tables FILT are configured or modified through the virtual switch 200.
[0068] 2-3. Switches 400
The switches 400 each includes a flow table 440. The flow table 440 has a flow entry for each flow. Each flow entry indicates flow identification information (Key) and an action (Action) to be performed on packets of the relevant flow. The packet processing (such as, output to a specified port) specified by the corresponding action (Action) is performed on packets which matches the flow identification information (Key). The switches 400 perform packet processing for each flow in accordance with the flow table 400 thus configured.
[0069] In detail, the switches 400 each include a table management section 410, a switch processing section 420, a controller communication section 430 and a plurality of ports 450. The table management section 410 manages the flow table 440 (such as, modification of the settings). The table management section 410 includes a storage device and the flow table 440 is stored in this storage device. The switch processing section 420 receives packets via one of the ports 450 (input port). Also, the switch processing section 420 refers to the flow table 440 and performs packet processing on the received packets. Furthermore, the switch processing section 420 transmits packets via another of the ports 450 (output port). The controller 430 has the function of communicating with the controller 500. In an OpenFlow network system, the SecureChannel corresponds to the controller communication section 430.
[0070] 2-4. Tunneling process
The network adapter 100, the virtual machines 300 and the switches 400 of the present embodiment support "tunneling process". In the tunneling process, the network adapter 100 transfers packets between the virtual machines 300 and the switches 400 without identifying the flow of each packet. In other words, the network adapter 100 transfers packets between the virtual machines 300 and the switches 400 without referring to the filter tables FILT.
[0071] The tunneling process is further described in detail with reference to Fig. 15. As shown in Fig. 15, virtual ports 451 which are dedicated to the tunneling process (hereinafter, referred to as tunneling-dedicated ports 451) are provided for a certain physical port 450 of each switch 400. The tunneling-dedicated ports 451 are respectively prepared for the virtual machines 300. In Fig. 15, for example, the tunneling-dedicated ports 451-1 to 451-3 are associated with the virtual machines 300-1 to 300-3, respectively. In the tunneling process, the switch 400 transmits and receives packets to and from the virtual machines 300 via the associated tunneling dedicated ports 451. Here, the network adapter 100 transfers the packets between the switch 400 and the virtual machines 300 without referring to the filter tables FILT. More specifically, the network adapter 100 retrieves the MAC address of the MAC headers of the packets and determines the transmission destinations of the packets by referring the MAC table 180.
[0072] As thus described, the network adapter 100 performs packet transfer based on the MAC addresses of packets in the tunneling process without identifying the flows thereof. In other words, the tunneling process achieves packet transfer between the virtual machines 300 and the switch 400 without referring to the filter tables FILT. Such processing is equivalent to "switch offloading".
[0073] The flows on which the tunneling process (or switch offloading) is to be performed can be selected by appropriately setting the flow table 440 of the switch 400. More specifically, when the tunneling process is desired to be applied to a desired flow, this is achieved by setting the relevant flow entry of the flow table 440 so that packets of the desired flow are inputted and outputted via any of the tunneling-dedicated ports 451. On the contrary, when the tunneling process is not desired to be applied to a desired flow, this is achieved by setting the relevant flow entry of the flow table 440 so that packets of the desired flow are not inputted and outputted via any of the tunneling-dedicated ports 451. In this way, the enabling/disenabling of the tunneling process (switch offloading) can be controlled for each flow through setting the flow table 440 of the switch 400.
[0074] As thus described, the filter tables FILT of the network adapter 100 are not referred to in performing the tunneling process (switch offloading); instead, the flow table 440 of the switch 400 is used for the flow control. Accordingly, if the function of the filter tables FILT of the network adapter 100 is insufficient, this can be compensated by appropriately using the flow table 440 of the switch 400.
[0075] When the flow resolution of the filter tables FILT of the network adapter 100 is insufficient, for example, the use of the flow table 440 of the switch 400 which has a higher flow resolution allows performing the offloading processing on desired flows (the switch offloading instead of the NIC-offloading). This implies that the function insufficiency of filter tables FILT of the network adapter 100 is compensated by the flow table 440 of the switch 400.
[0076] Also, the use of the switch offloading effectively reduces the consumption of the entries of the filter tables FILT of the network adapter 100. This suppresses occurrence of an overflow of the filter tables FILT of the network adapter 100. Such approach is especially effective in a case that only a small storage region is allocated to the filter tables FILT. This also implies that the function insufficiency of filter tables FILT of the network adapter 100 is compensated by the flow table 440 of the switch 400.
[0077] 2-5. Controller
In the present embodiment, the enabling/disenabling of the NIC-offloading by the network adapter 100 is dynamically controlled for each flow. In addition, the enabling/disenabling of the tunneling process (the switch offloading) is also dynamically controlled for each flow. These dynamic controls are both done by the controller 500.
[0078] As shown in Fig. 14, the controller 500 includes a storage device 510, a flow controller 520 and a communication section 530. The communication section 530 achieves data communication with the servers 10 and the switches 400. In an OpenFLow network system, the SecureChannel corresponds to the communication section 530.
[0079] The storage device 510 stores therein an offloading policy table 540. The offloading policy table 540 defines policies (or standards) related to the enabling/disenabling of the NIC-offloading and the enabling/disenabling of the tunneling process. The contents of the offloading policy table 540 are rewritable by the user. In accordance with the policies defined in the offloading policy table 540, the flow controller 520 dynamically controls the enabling/disenabling of the NIC-offloading and the enabling/disenabling of the tunneling process.
[0080] Fig. 16 is a schematic diagram showing the dynamic controls of the NIC-offloading and the tunneling process in the present embodiment.
[0081] The enabling/disenabling of the NIC-offloading with respect to a certain flow can be achieved by appropriately setting the filter entry associated with the flow in the filter tables FILT of the network adapter 100. Accordingly, the controller 500 dynamically controls the enabling/disenabling of the NIC-offloading for each flow through the settings of the filter tables FILT of the network adapter 100. In detail, the controller 500 issues a filter table setting instruction to the route switcher 60 of the virtual switch 200 to modify the settings of the filter tables FILT of the network adapter 100. This allows dynamically enabling/disenabling the application of the NIC-offloading to a desired flow.
[0082] Also, the enabling/disenabling of the tunneling process (switch offloading) for a certain flow can be achieved by appropriately setting the flow entry associated with the flow in the flow table 400 of the switch 400. Accordingly, the controller 500 dynamically controls the enabling/disenabling of the tunneling process through the settings of the flow table 440 of the switch 400. In detail, the controller 500 sets the flow table 400 so that packets of a desired flow are inputted to and outputted from any of the tunneling-dedicated ports 251. This allows dynamically enabling/disenabling the application of the tunneling process (switch offloading) to a desired flow.
[0083] It should be noted that the controller 500 performs the dynamic controls referring to the communication status (e.g. the throughput) of each flow. As shown in Fig. 16, for example, the switch 400 transmits statistical information STAT indicating the communication status of each flow to the controller 500 at predetermined intervals. The controller 500 refers to the statistical information STAT received from the switch 400 and applies NIC-offloading or switch-offloading to desired flows depending on the necessity. When the offloading policy table 540 determines that "the switch offloading is applied to a flow which has a throughput higher than a predetermined threshold", the controller 500 refers to the statistical information STAT and applies the switch offloading to necessary flows.
[0084] Fig. 17 is a flowchart showing the processing done by the controller 500 in the present embodiment. The controller 500 receives the statistical information STAT from the switch 400 at predetermined intervals (Step S10).
[0085] The controller 500 determines, on the basis of the statistical information STAT and the contents of the offloading policy table 540, whether or not setting modification of the NIC-offloading is necessary (Step S20). When setting modification is necessary (Step S20; Yes), the controller 500 enables/disenables the application of the NIC-offloading to desired flows by rewriting the filter tables FILT of the network adapter 100.
[0086] Also, the controller 500 determines, on the basis of the statistical information STAT and the contents of the offloading policy table 540, whether or not modification of the setting of the switch offloading is necessary (Step S40). When modification of the setting is necessary (Step S40; Yes), the controller 500 enables/disenables the application of the tunneling process to desired flows by rewriting the flow table 440 of the switch 400.
[0087] It should be noted that the procedure shown in Fig. 17 may be achieved by executing a flow control program by the controller 500. The flow control program is a computer program executed by the controller 500. The flow control program may be recorded in a non-transitory computer-readable recording medium.
[0088] The enabling/disenabling of the NIC-offloading may be performed by the virtual switch 200, instead of being directly done by the controller 500. In detail, out of the information stored in the offloading policy table 540 contained in the controller 500, information related to a flow to be handled by the virtual switch 200 is transmitted to the virtual switch 200.
The virtual switch 200 includes a route switcher 60 which controls the enabling/disenabling of the NIC-offloading. The route switcher 60 determines the enabling/disenabling of the NIC-offload based on the above-described information, referring to statistic information measured by the virtual switch 200 itself. This approach allows the virtual switch 200 to perform autonomous control of the NIC-offloading in accordance with the offloading policy, and eliminates the need for the controller 500 to control the offloading for the entire system. This effectively reduces the load imposed on the controller 500, and allows switching the enabling/disenabling of the offloading with a high accuracy in the time domain.」

「(当審訳)
[0061]
2.スイッチオフロード
市販のネットワークアダプタ100が使用される場合、フィルタテーブルFILTのフロー分解能が所望の処理には不足している可能性がある。例えば、オープンフローは12tupleを必要とするが、市販のNICでは5tupleしかマッチングに使えない場合がある。このようにネットワークアダプタ100のフロー分解能が不足していると、所望のフローにNICオフロードを適用することができなくなる。
[0062]
また、フィルタテーブルFILTに割り当てられている記憶領域が小さい場合、フィルタテーブルFILTのオーバーフローがすぐに発生しやすい。フィルタテーブルFILTのオーバーフローが発生すると、新たなフィルタエントリをフィルタテーブルFILTに追加することができなくなる。このことも、好適なNICオフロードを阻害する要因となる。
[0063]
このように、ネットワークアダプタ100のフィルタテーブルFILTの機能が不足している場合、所望のNICオフロードを実現できなくなる可能性がある。その場合、仮想スイッチ200へのトラフィックの集中を十分に抑制することができなくなる。
[0064]
そこで、本実施の形態によれば、ネットワークアダプタ100のフィルタテーブルFILTの機能不足を補うために、そのネットワークアダプタ100に接続された物理スイッチを用いたオフロードも実施される。そのような物理スイッチを用いたオフロードは、以下「スイッチオフロード」と参照される。すなわち、本実施の形態によれば、「NICオフロード」が動的に制御されるだけでなく、「スイッチオフロード」も動的に制御される。それにより、ネットワークアダプタ100のフィルタテーブルFILTの機能不足を補うことが可能となる。以下、スイッチオフロードに関連する構成及び処理を説明する。
[0065]
2-1.全体構成
図14は、本実施の形態に係るネットワークシステム1の構成を概略的に示すブロック図である。ネットワークシステム1は、サーバ10、スイッチ400及びコントローラ500を備えている。スイッチ400は、サーバ10に接続されたToR(Top of Rack)スイッチである。コントローラ500は、サーバ10及びスイッチ400に接続されており、サーバ10及びスイッチ400の機能を制御する。例えばオープンフローの場合、スイッチ400はオープンフロースイッチ(POFS:Pysical Open Flow Switch)であり、コントローラ500はオープンフローコントローラ(OFC:Open Flow Controller)である。
[0066]
2-2.サーバ10
サーバ10は、ネットワークアダプタ100、仮想スイッチ200及び仮想マシン300を備えている。上述の通り、ネットワークアダプタ100は、フィルタテーブルFILTに従って、フロー毎にパケットを処理するように構成されている。
[0067]
更に、上述の通り、ネットワークアダプタ100は、仮想スイッチ200を介することなく仮想マシン300に対してパケットを送受信する「NICオフロード機能」を有している。所望のフローに関してNICオフロード機能を有効化/無効化するには、フィルタテーブルFILTにおいて当該所望のフローに関するフィルタエントリを適切に設定すればよい。すなわち、フィルタテーブルFILTの設定を通して、NICオフロード機能の有効化/無効化をフロー毎に動的に制御することができる。フィルタテーブルFILTの設定は、上述の通り、経路切替部60によって行われる。上述の例では、仮想スイッチ200が経路切替部60の機能を有しており、仮想スイッチ200を通してフィルタテーブルFILTの設定・変更が可能である。
[0068]
2-3.スイッチ400
スイッチ400は、フローテーブル440を有している。フローテーブル440は、フロー毎にフローエントリを有する。各フローエントリは、フロー識別情報(Key)と、該当フローのパケットに対して行われるアクション(Action)を示している。フロー識別情報(Key)にマッチするパケットに対しては、アクション(Action)で指定されるパケット処理(例えば、指定ポートへの出力)が実施される。スイッチ400は、そのようなフローテーブル440に従って、フロー毎にパケット処理を行う。
[0069]
より詳細には、スイッチ400は、テーブル管理部410、スイッチ処理部420、コントローラ通信部430、及び複数のポート450を備えている。テーブル管理部410は、フローテーブル440の管理(設定変更、等)を行う。テーブル管理部410は記憶装置を含んでおり、フローテーブル440はその記憶装置に格納される。スイッチ処理部420は、ポート450(入力ポート)を通してパケットを受信する。また、スイッチ処理部420は、フローテーブル440を参照して、その受信パケットに対してパケット処理を行う。更に、スイッチ処理部420は、ポート450(出力ポート)を通してパケットを送信する。コントローラ通信部430は、コントローラ500との通信機能を有している。オープンフローの場合、SecureChannelがコントローラ通信部430に相当する。
[0070]
2-4.トンネル処理
本実施の形態に係るネットワークアダプタ100、仮想マシン300及びスイッチ400は、「トンネル処理」をサポートしている。トンネル処理の場合、ネットワークアダプタ100は、フローを認識することなく、仮想マシン300とスイッチ400との間でパケット転送を行う。つまり、ネットワークアダプタ100は、フィルタテーブルFILTを参照することなく、仮想マシン300とスイッチ400との間でパケット転送を行う。
[0071]
図15を参照して、トンネル処理を更に詳しく説明する。図15に示されるように、スイッチ400のある物理ポート450には、トンネル処理専用の仮想ポート451(以下、「トンネル処理用ポート451」と参照される)が設けられる。そのトンネル処理用ポート451は、仮想マシン300毎に用意される。例えば図15では、仮想マシン300-1?300-3のそれぞれに、トンネル処理用ポート451-1?451-3が対応付けられている。トンネル処理において、スイッチ400は、トンネル処理用ポート451を通して、対応する仮想マシン300との間でパケットを送受信する。このとき、ネットワークアダプタ100は、フィルタテーブルFILTを参照することなく、当該パケットをスイッチ400と仮想マシン300との間で転送する。具体的には、ネットワークアダプタ100は、パケットのMACヘッダからMACアドレスを抽出し、更に、MACテーブル180を参照することによって当該パケットの転送先を決定する。
[0072]
このように、トンネル処理において、ネットワークアダプタ100は、フローを認識することなく、パケットのMACアドレスに基づいてパケット転送を行う。すなわち、トンネル処理の場合、フィルタテーブルFILTを参照することなく、仮想マシン300とスイッチ400との間でパケット転送が可能である。これが、「スイッチオフロード」に相当する。
[0073]
どのフローに対してトンネル処理(スイッチオフロード)を適用するかは、スイッチ400のフローテーブル440を適宜設定することにより制御可能である。具体的には、所望のフローに対してトンネル処理を適用する場合、当該所望のフローのパケットがトンネル処理用ポート451から入出力されるようにフローテーブル440のフローエントリを設定すればよい。逆に、所望のフローに対してトンネル処理を適用しない場合、当該所望のフローのパケットがトンネル処理用ポート451から入出力されないようにフローテーブル440のフローエントリを設定すればよい。このように、スイッチ400のフローテーブル440の設定を通して、トンネル処理(スイッチオフロード)の有効化/無効化をフロー毎に制御することが可能である。
[0074]
以上に説明されたように、トンネル処理(スイッチオフロード)の場合、ネットワークアダプタ100のフィルタテーブルFILTは参照されず、その代わりに、スイッチ400のフローテーブル440がフロー制御に利用される。従って、ネットワークアダプタ100のフィルタテーブルFILTの機能が不足していたとしても、スイッチ400のフローテーブル440を適宜利用することにより、その機能不足を補うことができる。
[0075]
例えば、ネットワークアダプタ100のフィルタテーブルFILTのフロー分解能が不足している場合であっても、よりフロー分解能の高いスイッチ400のフローテーブル440を利用することによって、所望のフローにオフロード処理(NICオフロードの代わりにスイッチオフロード)を適用することが可能となる。これは、ネットワークアダプタ100のフィルタテーブルFILTの機能不足をスイッチ400のフローテーブル440で補っていることを意味する。
[0076]
また、スイッチオフロードを利用することにより、ネットワークアダプタ100のフィルタテーブルFILTにおけるエントリ消費を減らすことができる。これにより、ネットワークアダプタ100のフィルタテーブルFILTのオーバーフローが発生しにくくなる。これは、フィルタテーブルFILTに割り当てられている記憶領域が小さい場合に、特に有効である。このことも、ネットワークアダプタ100のフィルタテーブルFILTの機能不足をスイッチ400のフローテーブル440で補っていることを意味する。
[0077]
2-5.コントローラ
本実施の形態によれば、ネットワークアダプタ100によるNICオフロードの有効化/無効化が、フロー毎に動的に制御される。また、トンネル処理(スイッチオフロード)の有効化/無効化が、フロー毎に動的に制御される。これら動的制御を一括して行うのが、コントローラ500である。
[0078]
図14に示されるように、コントローラ500は、記憶装置510、フロー制御部520、及び通信部530を備えている。通信部530は、サーバ10やスイッチ400との間でデータ通信を行う。オープンフローの場合、SecureChannelが通信部530に相当する。
[0079]
記憶装置510には、オフロードポリシテーブル540が格納されている。オフロードポリシテーブル540は、NICオフロードの有効化/無効化、及び、トンネル処理の有効化/無効化に関するポリシ(基準)を規定している。オフロードポリシテーブル540の内容は、ユーザによって書き換え可能である。フロー制御部520は、そのオフロードポリシテーブル540に規定されているポリシに従って、NICオフロードの有効化/無効化を動的に制御し、且つ、トンネル処理の有効化/無効化を動的に制御する。
[0080]
図16は、本実施の形態におけるNICオフロード及びトンネル処理の動的制御を示す概念図である。
[0081]
あるフローに関してNICオフロードを有効化/無効化するには、ネットワークアダプタ100のフィルタテーブルFILTにおいて当該フローに関するフィルタエントリを適切に設定すればよい。よって、コントローラ500は、ネットワークアダプタ100のフィルタテーブルFILTの設定を通して、NICオフロードの有効化/無効化をフロー毎に動的に制御する。より詳細には、コントローラ500は、仮想スイッチ200の経路切替部60にフィルタテーブル設定指示を出し、ネットワークアダプタ100のフィルタテーブルFILTの設定変更を行わせる。これにより、所望のフローに対するNICオフロードの適用を、動的に有効化/無効化することができる。
[0082]
また、あるフローに関してトンネル処理(スイッチオフロード)を有効化/無効化するには、スイッチ400のフローテーブル440において当該フローに関するフローエントリを適切に設定すればよい。よって、コントローラ500は、スイッチ400のフローテーブル440の設定を通して、トンネル処理の有効化/無効化をフロー毎に動的に制御する。より詳細には、コントローラ500は、所望のフローのパケットがトンネル処理用ポート451から入出力されるようにフローテーブル440を設定する。これにより、所望のフローに対するトンネル処理(スイッチオフロード)の適用を、動的に有効化/無効化することが可能となる。
[0083]
尚、コントローラ500は、各フローの通信状態(例:スループット)を参照して動的制御を行ってもよい。例えば、図16に示されるように、スイッチ400は、フロー毎の通信状態を示す統計情報STATを、所定のインターバルでコントローラ500に通知する。コントローラ500は、スイッチ400から受け取った統計情報STATを参照し、必要に応じてNICオフロードやスイッチオフロードを適用する。例えば、「スループットが所定の閾値を超えたフローにスイッチオフロードを適用する」ということがオフロードポリシテーブル540に規定されている場合、コントローラ500は、統計情報STATを参照して、必要なフローにスイッチオフロードを適用する。
[0084]
図17は、本実施の形態におけるコントローラ500による処理を示すフローチャートである。コントローラ500は、所定のインターバルで、スイッチ400から統計情報STATを受け取る(ステップS10)。
[0085]
コントローラ500は、統計情報STATとオフロードポリシテーブル540に基づいて、NICオフロードの設定変更が必要かどうかを決定する(ステップS20)。設定変更が必要な場合(ステップS20;Yes)、コントローラ500は、ネットワークアダプタ100のフィルタテーブルFILTを書き換えることにより、所望のフローに対するNICオフロードの適用を有効化/無効化する。
[0086]
また、コントローラ500は、統計情報STATとオフロードポリシテーブル540に基づいて、スイッチオフロードの設定変更が必要かどうかを決定する(ステップS40)。設定変更が必要な場合(ステップS40;Yes)、コントローラ500は、スイッチ400のフローテーブル440を書き換えることにより、所望のフローに対するトンネル処理の適用を有効化/無効化する。
[0087]
尚、図17で示された処理フローは、コントローラ500がフロー制御プログラムを実行することによって実現されてもよい。フロー制御プログラムは、コントローラ500によって実行されるコンピュータプログラムである。フロー制御プログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。
[0088]
ここで、コントローラ500がNICオフロードの有効化/無効化を直接制御する代わりに、次のように仮想スイッチ200に行わせることもできる。すなわち、コントローラ500が保持するオフロードポリシテーブル540の情報のうち、仮想スイッチ200が処理するフローに関連する情報を仮想スイッチ200に伝達する。仮想スイッチ200は、NICオフロードの有効化/無効化を制御する経路切替部60を備えている。仮想スイッチ200自身が計測する統計情報を参照して、経路切替部60は、上記情報に基づいてNICオフロードの有効化/無効化を判定する。このようにすることで、オフロードポリシに従って、仮想スイッチ200が自律的にNICオフロードの制御を行うことができるようになり、コントローラ500で全てのオフロード制御を行う必要がなくなる。これにより、コントローラ500にかかる負荷を分散することができる。更に、より時間的に高い精度で、オフロードの有効化/無効化を切り替えることができるようになる。」

(カ)上記(ア)?(オ)より、特に下線部に着目すると、上記引用文献1には、次の発明(以下、「引用発明」という。)が記載されていると認められる。

「ネットワークシステムにおけるフロー制御方法であって、
ネットワークシステム1は、ネットワークに接続された複数のサーバ10を備えており、
サーバ10間には、複数のスイッチが配置されており、
サーバ10は、処理装置40と、処理装置40に接続されたネットワークアダプタ100とを備えており、
処理装置40は、ハイパーバイザ50、仮想スイッチ200、及び少なくとも1台の仮想マシン(仮想サーバ)300を備えており、
ネットワークアダプタ100は、仮想NIC、受信フィルタ110、送信フィルタ120、記憶装置130、及びデータ直接伝送機能140を備えており、
データ直接伝送機能140は、仮想スイッチ200を介することなく仮想マシン300に対してパケットを直接送受信する機能であり、
仮想NICは、仮想マシン300(VM1,VM2・・・)毎に設けられており、各仮想NICは、受信キュー101と送信キュー102を含んでおり、受信キュー101には、ネットワークアダプタ100がデータリンクから受け取った受信パケットが格納され、受信キュー101に格納された受信パケットは、データ直接伝送機能140によって、対応する仮想マシン300に直接送られ、また、ネットワークアダプタ100がデータ直接伝送機能140によって仮想マシンから直接受け取った送信パケットは、その仮想マシンに対応する送信キュー102に格納され、
また、仮想NICは、仮想スイッチ200に対しても設けられており、仮想スイッチ200とつながる仮想NICの受信キュー101及び送信キュー102は、以下、受信キュー101-S及び送信キュー102-Sとそれぞれ参照され、受信キュー101-Sには、ネットワークアダプタ100が外部データリンクから受け取った受信パケットが格納され、受信キュー101-Sに格納された受信パケットは、仮想スイッチ200に送られ、また、ネットワークアダプタ100が仮想スイッチ200から受け取った送信パケットは、送信キュー102-Sに格納され、
受信フィルタテーブルFILT1は、記憶装置130に格納されており、
受信フィルタテーブルFILT1は、フローと受信アクションとの対応関係を示すテーブルであり、
受信フィルタ110は、その受信フィルタテーブルFILT1を参照し、受信パケットのフローに対応付けられた受信アクションを受信パケットに対して行い、
受信アクションとしては、2パターン考えられ、第1受信アクションは、「データ直接伝送機能140を用いることによって、受信パケットを指定された仮想マシン300に直接送信すること」であり、この場合、受信フィルタ110は、受信パケットを、指定された受信キュー101に格納し、第2受信アクションは、「受信パケットを仮想スイッチ200へ送信すること」であり、この場合、受信フィルタ110は、受信パケットを、仮想スイッチ200宛の受信キュー101-Sに格納し、
送信フィルタテーブルFILT2も記憶装置130に格納されており、
送信フィルタテーブルFILT2は、フローと送信アクションとの対応関係を示すテーブルであり、
送信フィルタ120は、その送信フィルタテーブルFILT2を参照し、送信パケットのフローに対応付けられた送信アクションを送信パケットに対して行い、
送信アクションとしては、2パターン考えられ、第1送信アクションは、「送信パケットを外部のデータリンクへ送信すること」であり、この場合、送信フィルタ120は、送信パケットをデータリンクへ送出し、第2送信アクションは、「送信パケットを受信パケットとして受信フィルタ110(受信経路)へループバックさせること」であり、この場合、送信フィルタ120は、送信パケットを受信パケットとして受信フィルタ110(受信経路)へループバックさせ、
仮想マシン300から送出される送信パケットは、まず、ネットワークアダプタ100に入力され、このとき、その送信パケットは、ネットワークアダプタ100のデータ直接伝送機能140によって、仮想スイッチ200を介することなくネットワークアダプタ100に直接入力され、送信フィルタ120は、選択した送信キュー102から送信パケットを取り出し、
送信パケットがフローflow1あるいはflow2に属する場合、送信フィルタテーブルFILT2中のイグザクトマッチエントリがヒットし、従って、送信フィルタ120は、その送信パケットをデータリンクに送出し、つまり、当該送信パケットは、仮想スイッチ200を通過することなく、仮想マシン300からネットワークアダプタ100を介して外部に送信され、
一方、送信パケットがその他のフローに属する場合、送信フィルタテーブルFILT2中のいずれのイグザクトマッチエントリもヒットせず、従って、送信フィルタ120は、その送信パケットを受信パケットとして受信フィルタ110にループバックし、受信フィルタテーブルFILT1においても、いずれのイグザクトマッチエントリもヒットせず、従って、受信フィルタ110は、その受信パケットを受信キュー101-Sを介して仮想スイッチ200へ送り、つまり、当該パケットは、一旦ネットワークアダプタ100に入力された後、仮想スイッチ200によって処理されることになり、
サーバ10は、更に、「経路切替部60」を備え、経路切替部60は、処理装置40の仮想スイッチ200あるいはハイパーバイザ50に組み込まれており、
受信フィルタテーブルFILT1及び送信フィルタテーブルFILT2におけるエントリ設定を変更することによって、フロー経路を“動的”に切り替えることも可能であり、そのようなエントリ設定及び設定変更を行うのが、経路切替部60であり、
ネットワークアダプタ100のフィルタテーブルFILTの機能不足を補うために、そのネットワークアダプタ100に接続された物理スイッチを用いたオフロードも実施され、
ネットワークシステム1は、サーバ10、スイッチ400及びコントローラ500を備えており、スイッチ400は、サーバ10に接続されたToR(Top of Rack)スイッチであり、
スイッチ400は、フローテーブル440を有しており、フローテーブル440は、フロー毎にフローエントリを有し、各フローエントリは、フロー識別情報(Key)と、該当フローのパケットに対して行われるアクション(Action)を示しており、フロー識別情報(Key)にマッチするパケットに対しては、アクション(Action)で指定されるパケット処理(例えば、指定ポートへの出力)が実施され、スイッチ400は、そのようなフローテーブル440に従って、フロー毎にパケット処理を行うものであり、
スイッチ400は、テーブル管理部410、スイッチ処理部420、コントローラ通信部430、及び複数のポート450を備えており、テーブル管理部410は、フローテーブル440の管理(設定変更、等)を行い、テーブル管理部410は記憶装置を含んでおり、フローテーブル440はその記憶装置に格納され、
ネットワークアダプタ100、仮想マシン300及びスイッチ400は、「トンネル処理」をサポートしており、トンネル処理の場合、ネットワークアダプタ100は、フローを認識することなく、仮想マシン300とスイッチ400との間でパケット転送を行い、
スイッチ400のある物理ポート450には、トンネル処理専用の仮想ポート451(以下、「トンネル処理用ポート451」と参照される)が設けられており、そのトンネル処理用ポート451は、仮想マシン300毎に用意され、トンネル処理において、スイッチ400は、トンネル処理用ポート451を通して、対応する仮想マシン300との間でパケットを送受信し、このとき、ネットワークアダプタ100は、フィルタテーブルFILTを参照することなく、当該パケットをスイッチ400と仮想マシン300との間で転送し、具体的には、ネットワークアダプタ100は、パケットのMACヘッダからMACアドレスを抽出し、更に、MACテーブル180を参照することによって当該パケットの転送先を決定し、
どのフローに対してトンネル処理(スイッチオフロード)を適用するかは、スイッチ400のフローテーブル440を適宜設定することにより制御可能であり、具体的には、所望のフローに対してトンネル処理を適用する場合、当該所望のフローのパケットがトンネル処理用ポート451から入出力されるようにフローテーブル440のフローエントリを設定すればよく、逆に、所望のフローに対してトンネル処理を適用しない場合、当該所望のフローのパケットがトンネル処理用ポート451から入出力されないようにフローテーブル440のフローエントリを設定すればよく、このように、スイッチ400のフローテーブル440の設定を通して、トンネル処理(スイッチオフロード)の有効化/無効化をフロー毎に制御することが可能であり、
コントローラ500は、記憶装置510、フロー制御部520、及び通信部530を備えており、通信部530は、サーバ10やスイッチ400との間でデータ通信を行い、
記憶装置510には、オフロードポリシテーブル540が格納されており、オフロードポリシテーブル540は、NICオフロードの有効化/無効化、及び、トンネル処理の有効化/無効化に関するポリシ(基準)を規定しており、
フロー制御部520は、そのオフロードポリシテーブル540に規定されているポリシに従って、NICオフロードの有効化/無効化を動的に制御し、且つ、トンネル処理の有効化/無効化を動的に制御し、
コントローラ500は、仮想スイッチ200の経路切替部60にフィルタテーブル設定指示を出し、ネットワークアダプタ100のフィルタテーブルFILTの設定変更を行わせ、これにより、所望のフローに対するNICオフロードの適用を、動的に有効化/無効化することができ、
コントローラ500は、所望のフローのパケットがトンネル処理用ポート451から入出力されるようにフローテーブル440を設定し、これにより、所望のフローに対するトンネル処理(スイッチオフロード)の適用を、動的に有効化/無効化することが可能となり、
スイッチ400は、フロー毎の通信状態を示す統計情報STATを、所定のインターバルでコントローラ500に通知し、コントローラ500は、スイッチ400から受け取った統計情報STATを参照し、必要に応じてNICオフロードやスイッチオフロードを適用するものであり、例えば、「スループットが所定の閾値を超えたフローにスイッチオフロードを適用する」ということがオフロードポリシテーブル540に規定されている場合、コントローラ500は、統計情報STATを参照して、必要なフローにスイッチオフロードを適用し、
コントローラ500は、統計情報STATとオフロードポリシテーブル540に基づいて、NICオフロードの設定変更が必要かどうかを決定し、設定変更が必要な場合、コントローラ500は、ネットワークアダプタ100のフィルタテーブルFILTを書き換えることにより、所望のフローに対するNICオフロードの適用を有効化/無効化し、
コントローラ500は、統計情報STATとオフロードポリシテーブル540に基づいて、スイッチオフロードの設定変更が必要かどうかを決定し、設定変更が必要な場合、コントローラ500は、スイッチ400のフローテーブル440を書き換えることにより、所望のフローに対するトンネル処理の適用を有効化/無効化する、方法。」

第5 対比・判断
1.本願発明1について
(1)対比

本願発明1と引用発明とを対比すると、次のことがいえる。

(ア)引用発明は、「ネットワークシステムにおけるフロー制御方法」であるところ、フロー制御においてデータパケットの処理が行われることは明らかであるから、引用発明と本願発明1とは、「ネットワークでデータパケットを処理するための方法」である点で共通している。

(イ)引用発明の「コントローラ500」は、「スループットが所定の閾値を超えたフローにスイッチオフロードを適用する」ということが「オフロードポリシテーブル540」に規定されている場合に、「統計情報STATを参照して、必要なフローにスイッチオフロードを適用」するものであって、「スイッチオフロードの設定変更が必要かどうかを決定し、設定変更が必要な場合、コントローラ500は、スイッチ400のフローテーブル440を書き換える」ものであるから、「コントローラ500」は、統計情報STATを参照して、スループットが所定の閾値を超えるフローであってスイッチオフロードが適用されるフローと、スイッチオフロードが適用されないフローとに、フローを分類しているといえる。
また、本願発明1の「閾値」は、フローのデータパケット数に基づいてフローを分類するためのパラメーターであると理解することができ、一方、引用発明の「閾値」は、フローのスループットに基づいてフローを分類するためのパラメーターであるといえるから、両者は、「特定の分類パラメーター」に従ってフローを分類するものであって、前記「特定の分類パラメーター」は、データパケットの量に関する閾値である、という点で共通している。
そうすると、引用発明と本願発明1の「データパケットを含んでいるフローを、特定の分類パラメーターに従って、エレファント・フローとマイス・フローに分類するステップであって、1つのエレファント・フローには1つのマイス・フローよりも多くのデータパケットを含んでおり、前記特定の分類パラメーターは閾値であり」とは、「データパケットを含んでいるフローを、特定の分類パラメーターに従って分類するステップであって、前記特定の分類パラメーターはデータパケットの量に関する閾値である」との構成を備える点で共通している。

(ウ)引用発明の「ネットワークアダプタ100」が備える「送信フィルタ120」は、「送信パケットがその他のフローに属する場合」、「その送信パケットを受信パケットとして受信フィルタ110にループバック」し、「受信フィルタ110は、その受信パケットを受信キュー101-Sを介して仮想スイッチ200へ送」るものであるから、引用発明と本願発明1の「前記分類された前記エレファント・フローと前記マイス・フローをサーバーにおける仮想スイッチに送信するステップ」とは、「データパケットを含んでいるフローをサーバにおける仮想スイッチに送信するステップ」を備える点で共通している。

(エ)引用発明の「スイッチ400」は、サーバ10に接続されたToR(Top of Rack)スイッチであるから、本願発明1の「ハードウェア・スイッチ」に相当する。そして、引用発明の「スイッチ400」は、トンネル処理において「トンネル処理用ポート451を通して、対応する仮想マシン300との間でパケットを送受信」するものであるから、引用発明と本願発明1の「前記仮想スイッチに送信されたエレファント・フローと前記処理されたマイス・フローをネットワークにおけるハードウェア・スイッチに送信するステップ」とは、「データパケットをネットワークにおけるハードウェア・スイッチに送信するステップ」を備える点で共通している。

したがって、本願発明1と引用発明との間には、次の一致点、相違点があるといえる。

(一致点)
「ネットワークでデータパケットを処理するための方法であって、
データパケットを含んでいるフローを、特定の分類パラメーターに従って分類するステップであって、前記特定の分類パラメーターはデータパケットの量に関する閾値であり、
データパケットを含んでいるフローをサーバにおける仮想スイッチに送信するステップと、
データパケットをネットワークにおけるハードウェア・スイッチに送信するステップと
を含む方法。」

(相違点)
(相違点1)本願発明1は、「データパケットを含んでいるフローを、特定の分類パラメーターに従って、エレファント・フローとマイス・フローに分類」し、「前記分類された前記エレファント・フローと前記マイス・フローをサーバーにおける仮想スイッチに送信」し、「前記仮想スイッチで前記マイス・フローを処理」し、「前記仮想スイッチに送信されたエレファント・フローと前記処理されたマイス・フローをネットワークにおけるハードウェア・スイッチに送信する」という一連のステップを備えるのに対し、引用発明は、データパケットを含んでいるフローを閾値に従って分類するステップと、データパケットを含んでいるフローをサーバにおける仮想スイッチに送信するステップと、データパケットをネットワークにおけるハードウェア・スイッチに送信するステップとを有するものではあるが、フローを「エレファント・フローとマイス・フロー」に分類すること、「前記分類された前記エレファント・フローと前記マイス・フロー」を仮想スイッチに送信すること、「前記仮想スイッチで前記マイス・フローを処理」すること、及び、「前記仮想スイッチに送信されたエレファント・フローと前記処理されたマイス・フロー」をハードウェア・スイッチに送信すること、については記載されていない点。
すなわち、本願発明1は、仮想スイッチにフローを送信する前にフローを分類し、分類されたフローの全てを仮想スイッチに送信するのに対し、引用発明は、仮想スイッチを介することなく仮想マシンに対してパケットを送受信するオフロード処理の適用のためにフローを分類するものであるため、分類されたフローの全てが仮想スイッチに送信されるわけではない点。

(相違点2)本願発明1は、データパケットの量に関する閾値が、フローのデータパケット数に関する閾値であるのに対し、引用発明は、データパケットの量に関する閾値が、フローのスループット(すなわち単位時間あたりのパケットの量)に関する閾値である点。

(相違点3)本願発明1は、「前記ハードウェア・スイッチで前記エレファント・フローを処理し、前記マイス・フローを処理せず、処理されたエレファント・フローと受信したマイス・フローを転送するステップ」を備えるのに対し、引用発明はそのような構成を備えていない点。

(相違点4)本願発明1は、仮想スイッチでマイス・フローを処理するステップは、「フロー情報をバッファリングするステップ、パケット・ヘッダを置き換えるステップ、カプセル化するステップ、およびカプセル化解除するステップのうちの1つまたは複数を含む」という構成を備えるのに対し、引用発明はそのような構成を備えていない点。

(2)相違点についての判断
ア 相違点1について
引用発明の「コントローラ500」は、「スループットが所定の閾値を超えたフローにスイッチオフロードを適用する」ということが「オフロードポリシテーブル540」に規定されている場合に、「統計情報STATを参照して、必要なフローにスイッチオフロードを適用」するものであるから、「コントローラ500」は、スループットが所定の閾値を超えるフローであってスイッチオフロードが適用されるフローと、スイッチオフロードが適用されないフローとに、フローを分類しているといえる。
しかしながら、引用発明においては、フローを「エレファント・フローとマイス・フロー」に分類し、「前記分類された前記エレファント・フローと前記マイス・フロー」を仮想スイッチに送信することは記載も示唆もされていない。また、引用発明の、仮想スイッチを介することなく仮想マシンに対してパケットを送受信するオフロード機能を所望のフローに対して適用できるようにするという目的からすれば、分類されたフローの全てを仮想スイッチに対して送信する構成を引用発明に適用することには技術的な阻害要因があるといえる。
さらに、引用文献1には、「ネットワークアダプタ100」が、受信フィルタテーブルFILT1に基づいて受信パケットを「仮想スイッチ200」へ送信すること、及び、「仮想マシン300」が、トンネル処理においてトンネル処理用ポート451を通して「スイッチ400」にパケットを送信することが記載されているものの、「仮想スイッチ」において「前記マイス・フローを処理」して、「前記仮想スイッチに送信されたエレファント・フロー」と「前記処理されたマイス・フロー」とをハードウェア・スイッチに送信するという一連の処理は、記載も示唆もされておらず、これらの処理は周知技術であるとも認められない。
なお、原査定において、引用発明の「経路切替部60」を何処に置くかは設計事項に過ぎず、引用発明のスイッチオフロードにおいて、「経路切替部60」を仮想スイッチ200に置くことにより、オフロードされるフローも、オフロードされないフローも、仮想スイッチ200に送られ、その仮想スイッチ200の中の経路切替部60で、オフロードされるフローと、オフロードされないフローとが、経路切替されることを指摘した上で、エレファント・フローおよびマイス・フローがいずれも仮想スイッチを経由してハードウェア・スイッチに送られることは設計事項に過ぎないと判断している。しかしながら、引用発明の「経路切替部60」は、ネットワークアダプタ100が備える受信フィルタテーブルFILT1及び送信フィルタテーブルFILT2におけるエントリ設定及び設定変更を行うものであるから、仮に、当該「経路切替部60」を仮想スイッチ200に置いたとしても、「オフロードされるフローも、オフロードされないフローも、仮想スイッチ200に送られ」ることにはならず、相違点1に係る本願発明1の構成には到達しない。
したがって、引用発明から当業者が相違点1に係る本願発明1の構成を想到することはできない。

イ 相違点3について
引用発明においては、「前記ハードウェア・スイッチで前記エレファント・フローを処理し、前記マイス・フローを処理せず、処理されたエレファント・フローと受信したマイス・フローを転送する」ことは記載も示唆もされておらず、当該事項は周知技術であるとも認められない。
したがって、引用発明から当業者が相違点3に係る本願発明1の構成を想到することはできない。

ウ まとめ
したがって、上記相違点2、4について判断するまでもなく、本願発明1は、当業者であっても引用発明に基づいて容易に発明できたものであるとはいえない。

2.本願発明2-6について
本願発明2-6も、相違点1、3に係る本願発明1の構成を備えるものであるから、本願発明1と同じ理由により、当業者であっても、引用発明に基づいて容易に発明できたものとはいえない。

3.本願発明7、8について
本願発明7は、本願発明1-6に対応するシステムの発明であり、また、本願発明8は、本願発明1-6に対応するコンピュータ・プログラムの発明であり、いずれも、相違点1、3に係る本願発明1の構成を備えるものであるから、本願発明1と同様の理由により、当業者であっても、引用発明に基づいて容易に発明できたものとはいえない。

第6 原査定について
原査定は、請求項1-21について上記引用文献1に基づいて、当業者が容易に発明できたものであるから、特許法第29条第2項の規定により特許を受けることができないというものである。
しかしながら、令和元年10月17日付けの手続補正により補正された特許請求の範囲の請求項1-8は、上記相違点1及び相違点3に係る、「データパケットを含んでいるフローを、特定の分類パラメーターに従って、エレファント・フローとマイス・フローに分類」し、「前記分類された前記エレファント・フローと前記マイス・フローをサーバーにおける仮想スイッチに送信」し、「前記仮想スイッチで前記マイス・フローを処理」し、「前記仮想スイッチに送信されたエレファント・フローと前記処理されたマイス・フローをネットワークにおけるハードウェア・スイッチに送信」し、「前記ハードウェア・スイッチで前記エレファント・フローを処理し、前記マイス・フローを処理せず、処理されたエレファント・フローと受信したマイス・フローを転送する」という構成を有するものとなっており、上記のとおり、引用発明に基づいて、当業者が容易に発明できたものではない。
したがって、原査定を維持することはできない。

第7 むすび
以上のとおり、原査定の理由によっては、本願を拒絶することはできない。
また、他に本願を拒絶すべき理由を発見しない。
よって、結論のとおり審決する。
 
審決日 2020-11-25 
出願番号 特願2016-530322(P2016-530322)
審決分類 P 1 8・ 121- WY (H04L)
最終処分 成立  
前審関与審査官 野元 久道  
特許庁審判長 角田 慎治
特許庁審判官 北川 純次
林 毅
発明の名称 データ・パケットを処理するための方法、システム、およびコンピュータ・プログラム  
代理人 上野 剛史  
代理人 太佐 種一  
  • この表をプリントする

プライバシーポリシー   セキュリティーポリシー   運営会社概要   サービスに関しての問い合わせ