【事件の表示】
　特願２０１６−５１８８１８「パケットを処理するための方法およびフォワーダ」拒絶査定不服審判事件〔平成２６年１２月１８日国際公開、ＷＯ２０１４／１９８０６４、平成２８年　８月１２日国内公表、特表２０１６−５２４４１２、請求項の数（２８）〕について、次のとおり審決する。
【結　論】
　原査定を取り消す。
　本願の発明は、特許すべきものとする。
【理　由】
第１　手続の経緯
　本願は、２０１３年（平成２５年）６月１４日を国際出願日とする出願であって、平成２８年４月５日に手続補正がなされ、平成２９年３月３０日付けで拒絶理由通知がされ、平成２９年１０月１１日に意見書が提出されるとともに手続補正がされたが、平成３０年３月１４日付けで拒絶査定がなされ、これに対して、平成３０年７月２０日に拒絶査定不服審判の請求がされると同時に手続補正がされ、令和元年９月１０日付けで拒絶理由通知（以下、「当審拒絶理由通知」という。）がされ、令和２年２月１７日付けで意見書が提出されるとともに手続補正がされたものである。
第２　原査定の概要
　原査定（平成３０年３月１４日付け拒絶査定）の概要は次のとおりである。
　本願請求項１−３０に係る発明は、以下の引用文献Ａ−Ｄに基づいて、その発明の属する技術の分野における通常の知識を有する者（以下、「当業者」という。）が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができない。
引用文献等一覧
　Ａ．前田繁章、“OpenFlow　ver1.1およびver1.2の追加機能と活用例”、２０１２年２月２３日、https://thinkit.co.jp/story/2012/02/23/3388
　Ｂ．特表２０１３−５１９２５０号公報
　Ｃ．国際公開第２０１１／０４３３１２号
　Ｄ．国際公開第２０１２／０４９９６０号
第３　当審拒絶理由の概要
　当審拒絶理由の概要は次のとおりである。
　本願請求項１−２８に係る発明は、以下の引用文献１に基づいて、当業者が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができない。
引用文献等一覧
　１．Open Networking Foundation、OpenFlow Switch Specification Version 1.3.2、２０１３年４月２５日、ｐ．１−１３１
第４　本願発明
　本願請求項１−２８に係る発明（以下、それぞれ「本願発明１」−「本願発明２８」という。）は、令和２年２月１７日付けの手続補正で補正された特許請求の範囲の請求項１−２８に記載された事項により特定される発明であり、本願発明１は以下のとおりの発明である。
「【請求項１】
　フォワーダにより実行される、ソフトウェア・デファインド・ネットワーク（Ｓｏｆｔｗａｒｅ　Ｄｅｆｉｎｅｄ　Ｎｅｔｗｏｒｋ）においてパケットを処理するための方法であって、
　入力パケットを受信するステップと、
　前記入力パケットに従って、前記入力パケットが属するフローを決定するステップと、　フローとコンテキスト識別子セットとの間の第１の対応に従って、前記入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップであって、前記第１の対応における各フローに対応するコンテキスト識別子セットは少なくとも１つのコンテキスト識別子を含む、決定するステップと、
　コンテキスト識別子とコンテキストとの間の第２の対応に従って、前記コンテキスト識別子セットに対応するコンテキストを決定するステップと、
　前記コンテキスト識別子セットに対応するコンテキストに従って、前記入力パケットを処理するステップと
を含み、
　当該方法はさらに、
　コントローラにより送信されたフロー削除メッセージを受信するステップであって、前記フロー削除メッセージは削除対象のフローに関する情報を含む、受信するステップと、
　前記削除対象のフローに関する情報および前記削除対象のフローに対応するコンテキスト識別子セットを前記第１の対応から削除するステップと、
を含み、
　前記コンテキスト識別子セットが複数のコンテキスト識別子を含むときに、前記コンテキスト識別子セットに対応するコンテキストに従って、前記入力パケットを処理するステップは、予め設定されたコンテキストシーケンスで実行され、
　当該方法はさらに、
　前記コントローラに能力交渉リクエストメッセージを送信するステップであって、前記能力交渉リクエストメッセージは前記フォワーダによってサポートされるコンテキスト能力リストを含み、これにより、前記コントローラは前記フォワーダがサポート可能ないくつかの又は全てのコンテキストを前記フォワーダに送信する、送信するステップを含む方法。」
　なお、本願発明２−２８の概要は以下のとおりである。
　本願発明２−１６は、本願発明１を減縮した発明である。
　本願発明１７は、「フォワーダにより実行される、ソフトウェア・デファインド・ネットワーク（Ｓｏｆｔｗａｒｅ　Ｄｅｆｉｎｅｄ　Ｎｅｔｗｏｒｋ）においてパケットを処理するための方法」の発明である本願発明１に対応する、「ソフトウェア・デファインド・ネットワーク（Ｓｏｆｔｗａｒｅ　Ｄｅｆｉｎｅｄ　Ｎｅｔｗｏｒｋ）で使用されるフォワーダ」の発明である。
　本願発明１８−２８は、本願発明１７を減縮した発明である。
第５　引用文献１及び引用発明
１　引用文献１
　当審拒絶理由に引用した引用文献１（Open Networking Foundation、OpenFlow Switch Specification Version 1.3.2、２０１３年４月２５日、ｐ．１−１３１）には、図面とともに、以下の記載がある（下線は、特に着目した箇所を示す。以下同様。）。
（１）「
An OpenFlow Switch consists of one or more flow tables and a group table, which perform packet lookups and forwarding
Using the OpenFlow protocol, the controller can add, update, and delete flow entries in flow tables
　　　・・・（中略）・・・
Instructions associated with each flow entry either contain actions or modify pipeline processing (see 5.9). Actions included in instructions describe packet forwarding, packet modification and group table processing.
　　　・・・（中略）・・・
The group table contains group entries; each group entry contains a list of action buckets with specific semantics dependent on group type (see 5.6.1). The actions in one or more action buckets are applied to packets sent to the group.」（８−９ページ）
（当審訳：
　
OpenFlowスイッチは、１つ又はそれ以上のフローテーブルと、グループテーブル（パケットの参照と転送を実行する）
から成
　
OpenFlowプロトコルを使用することで、コントローラは、フローテーブル内のフローエントリを
追加、更新、削除
　　　・・・（中略）・・・
　各フローエントリに関連付けられたインストラクションは、アクションを含むか、パイプライン処理を修正する（5.9参照）。インストラクションに含まれるアクションは、パケットの転送、パケットの修正、及び、グループテーブルの処理を記述する。
　　　・・・（中略）・・・
　グループテーブルは、グループエントリを含んでおり、各グループエントリは、グループタイプに応じた特定のセマンティクスとともに、アクションバケットのリストを含む（5.6.1参照）。１つ又はそれ以上のアクションバケット内におけるアクションは、そのグループに送られたパケットに適用される。）
（２）「4.1 OpenFlow Ports
OpenFlow ports are the network interfaces for passing packets between OpenFlow processing and the rest of the network. 
OpenFlow switches connect logically to each other via their OpenFlow ports
（当審訳：
4.1 OpenFlowポート
OpenFlowポートは、OpenFlow処理とネットワークの残りの部分との間で、パケットを通過させるためのネットワークインタフェースである。
OpenFlowスイッチは、それらのOpenFlowポートによって論理的に互いに接続し
（３）「5.2 Flow Table
A flow table consists of flow entries
　　（Table 1：略）
Each flow table entry
contains
　・
match fields
to match against packets
　・priority: matching precedence of the flow entry.
　・counters: updated when packets are matched.
　・
instructions
　・timeouts: maximum amount of time or idle time before flow is expired by the switch.
　・cookie: opaque data value chosen by the controller. May be used by the controller to filter flow statistics, flow modification and flow deletion. Not used when processing packets.」（１４ページ）
（当審訳：
5.2 フローテーブル
　
フローテーブルは、フローエントリから成
　　（表１：略）
　
各フローテーブルエントリ
は、
を含
　　・
マッチフィールド
パケットに対してマッチするため
　　・優先度：フローエントリをマッチする順序。
　　・カウンタ：パケットがマッチしたときに更新される。
　　・
インストラクション
　　・タイムアウト：フローがスイッチによって満了されるまでの最大時間又はアイドル時間。
　　・クッキー：コントローラによって選択される不明瞭なデータ値。コントローラによって、フロー統計、フロー修正、フロー削除をフィルタするために用いられてよい。パケットを処理するときには用いられない。）
（４）「5.3 Matching
　　　（Figure3：略）
On receipt of a packet, an OpenFlow Switch
starts by performing a table lookup in the first flow table
Packet match fields are extracted from the packet. Packet match fields used for table lookups depend on the packet type
（当審訳：
5.3 マッチング
　　　（図３：略）
　
パケットを受信すると、OpenFlowスイッチは
最初のフローテーブルにおいてテーブル参照を実行することによって開始し
　
パケットマッチフィールドは、パケットから抽出され
テーブル参照に使用されるパケットマッチフィールドは、パケットタイプに従い
（５）「5.5 Flow Removal
Flow entries are removed from flow tables in two ways, either at the request of the controller or via the switch flow expiry mechanism.
　　　・・・（中略）・・・
The controller may
remove flow entries from flow tables by sending delete flow table modification messages (OFPFC_DELETE or OFPFC_DELETE_STRICT
（当審訳：
5.5 フロー削除
　フローエントリは、コントローラからの要求、又は、スイッチのフロー期限切れ機構という２つの方法のいずれかによって、フローテーブルから削除される。
　　　・・・（中略）・・・
　
コントローラは、deleteフローテーブル修正メッセージ（OFPFC_DELETE 又は OFPFC_DELETE_STRICT
）を送信することによって、フローテーブルからフローエントリを
削除し
（６）「5.6 Group Table
A group table consists of group entries
　　　（Table 2：略）
Each group entry
　・
group identifier
　・group type: to determine group semantics (see Section 5.6.1)
　・counters: updated when packets are processed by a group
　・
action buckets
where each action bucket contains a set of actions to execute
（当審訳：
5.6 グループテーブル
　
グループテーブルは、グループエントリから成
　　　（表２：略）
各グループエントリ
は、そのグループ識別子によって識別され、
を含
　・
グループ識別子
　・グループタイプ：グループのセマンティクスを決定するため（5.6.1参照）。
　・カウンタ：パケットをグループが処理する際に更新される。
　・
アクションバケット
各アクションバケットは、実行されるアクションのセット
を含
（７）「5.6.1 Group Types
A switch
support
group types
        ・・・（中略）・・・
　・Required: 
indirect
Execute the one defined bucket in this group
（当審訳：
5.6.1 グループタイプ
スイッチは、
のグループタイプをサポート
　　　・・・（中略）・・・
　・要求される(Required)：
indirect
のグループの中で１つの定義されたバケットを実行
（８）「5.9 Instructions
Each flow entry contains a set of instructions that are executed when a packet matches the entry
A switch is not required to support all instruction types, just those marked Required Instruction below. The controller can also query the switch about which of the Optional Instruction types it supports.
　　　・・・（中略）・・・
　・Optional Instruction: Apply-Actions action(s): Applies the specific action(s) immediately, without any change to the Action Set. This instruction may be used to modify the packet between two tables or to execute multiple actions of the same type. The actions are specified as an action list (see 5.11).」（２１ページ）
（当審訳：
5.9 インストラクション
　
各フローエントリは、パケットがエントリにマッチしたときに実行されるインストラクションのセットを含
　スイッチは、全てのインストラクションタイプをサポートすることを要求されず、以下で要求されるインストラクションと記されたものだけでよい。コントローラは、どの「任意のインストラクション」タイプをサポートするかをスイッチに問うこともできる。
　　　・・・（中略）・・・
　・任意のインストラクション：Apply-Actions action(s)：アクションセットの変更を伴うことなく、特定のアクションを即やかに適用する。このインストラクションは、２つのテーブル間でパケットを修正するために、又は、同じタイプの複数アクションを実行するために用いられてもよい。アクションは、アクションリストとして特定される（5.11参照）。）
（９）「5.10 Action Set
・・・（中略）・・・The actions in an action set are applied in the order specified below, regardless of the order that they were added to the set. If an acion set contaions a group action, the actions in the appropriate action bucket of the group are also applied in the order specified below. The switch may support arbitrary action execution order through the action list of the Apply-Actions instruction.
　1. copy TTL inwards:...
　2. pop: 
　　・・・（中略）・・・
　11. output:...」（２１−２２ページ）
（当審訳：
5.10 アクションセット
　・・・（中略）・・・　
アクションセット内のアクションは、セットに追加された順にかかわらず、以下に特定される順で適用される
アクションリストを介して任意のアクションの実行順序をサポートしてもよい
　１．内側へのＴＴＬ値コピー：…、
　２．ｐｏｐ処理：
　　・・・（中略）・・・、
　１１．出力：…）
（１０）「5.11 Action List
The Apply-Actions instruction
include an action list
The actions of an action list are executed in the order specified by the list
（当審訳：
5.11 アクションリスト
　
Apply-Actionsインストラクション
は、アクションリストを含
アクションリスト内の複数のアクションは、リストによって特定される順で実行され
（１１）「5.12 Actions
A switch
support
action type
　　　・・・（中略）・・・
Required Action: 
Group. Process the packet through the specified group. The exact interpretation depends on group type
（当審訳：
5.12 アクション
　
スイッチは、
のアクションタイプをサポート
　　　・・・（中略）・・・
要求される
アクション
Group
特定のグループを通じてパケットを処理
（１２）「6.4 Flow Table Modification Massage
　　Flow table modification messages can have the following types:
enum ofp_flow_mod_command {
　　OFPFC_ADD　　　　　　 = 0, /* New flow. */
　　OFPFC_MODIFY　　　　　= 1, /* Modify all matching flows. */
　　OFPFC_MODIFY_STRICT　 = 2, /* Modify entry strictly matching wildcards and priority. */
　　OFPFC_DELETE　　　　　= 3, /* Delete all matching flows. */
　　OFPFC_DELETE_STRICT　 = 4, /* Delete entry strictly matching wildcards and priority. */
};
　　　・・・（中略）・・・
For delete requests (OFPFC_DELETE or OFPFC_DELETE_STRICT), if a matching entry exists in the table, it 
be deleted
（当審訳：
6.4 フローテーブル修正メッセージ
　フローテーブル修正メッセージは、以下のタイプを持つ。
enum ofp_flow_mod_command {
　　OFPFC_ADD　　　　　 = 0, /* New flow. */
　　OFPFC_MODIFY　　　　 = 1, /* Modify all matching flows. */
　　OFPFC_MODIFY_STRICT　= 2, /* Modify entry strictly matching 
　　　　　　　　　　　　　　　　　wildcards and priority. */
　　OFPFC_DELETE　　　　 = 3, /* Delete all matching flows. */
　　OFPFC_DELETE_STRICT　= 4, /* Delete entry strictly matching 
　　　　　　　　　　　　　　　　　wildcards and priority. */
};
　　　　・・・（中略）・・・
　
削除要求（OFPFC_DELETE 又は OFPFC_DELETE_STRICT）に関しては、テーブル内にマッチするエントリが存在すると、そのエントリは削除され
（１３）「7.2.5 Action Structure
　　　・・・（中略）・・・
A Group action
/* Action structure for OFPAT_GROUP. */
struct ofp_action_group { 
　　uint16_t type; 　　　　/* OFPAT_GROUP. */ 
　　uint16_t len; 　　　　 /* Length is 8. */ 
　　uint32_t group_id; 　　/* 
Group identifier
}; 
OFP_ASSERT(sizeof(struct ofp_action_group) == 8); 
The group_id indicates the group used to process this packet. The set of buckets to apply depends on the group type.」（５７−５９ページ）
（当審訳：
7.2.5 アクション構造
　　　・・・（中略）・・・
　
グループアクションは、
/* Action structure for OFPAT_GROUP. */
struct ofp_action_group { 
　　uint16_t type; 　　　　/* OFPAT_GROUP. */ 
　　uint16_t len; 　　　　 /* Length is 8. */ 
　　uint32_t group_id; 　　/* 
グループ識別子
}; 
OFP_ASSERT(sizeof(struct ofp_action_group) == 8);
　group_idは、このパケットを処理するために用いられるグループを示す。適用するバケットのセットは、グループタイプに従う。）
（１４）「7.3.4.1 Modify Flow Entry Message
Modifications to a flow table from the controller
/* Flow setup and teardown (controller - datapath). */
struct 
ofp_flow_mod
　　　・・・（中略）・・・
　uint8_t 
command
One of OFPFC_*.
　　　・・・（中略）・・・
　struct ofp_match 
match
Fields to match
　　　・・・（中略）・・・
};
OFP_ASSERT(sizeof(struct ofp_flow_mod) == 56);」（６５−６６ページ）
（当審訳：
　7.3.4.1 フローエントリ修正メッセージ
　
コントローラからフローテーブルへの修正
OFPT_FLOW_MODメッセージを用いて
/* Flow setup and teardown (controller - datapath). */
struct 
ofp_flow_mod
　　　・・・（中略）・・・
　uint8_t 
command
OFPFC_*の一つ
　　　・・・（中略）・・・
　struct ofp_match 
match
マッチするためのフィールド
・・・（中略）・・・
};
OFP_ASSERT(sizeof(struct ofp_flow_mod) == 56);）
２　引用発明
　よって、上記各記載事項を関連図面に照らし、下線部に着目すれば、引用文献１には、次の発明（以下、「引用発明」という。）が開示されているといえる。
「OpenFlowスイッチは、１つ又はそれ以上のフローテーブルと、グループテーブル（パケットの参照と転送を実行する）から成り、
　OpenFlowプロトコルを使用することで、コントローラは、フローテーブル内のフローエントリを、追加、更新、削除し、
　OpenFlowスイッチは、それらのOpenFlowポートによって論理的に互いに接続し、
　フローテーブルは、フローエントリから成り、
　各フローテーブルエントリは、パケットに対してマッチするためのマッチフィールドとインストラクションを含み、
　パケットを受信すると、OpenFlowスイッチは、最初のフローテーブルにおいてテーブル参照を実行することによって開始し、
　パケットマッチフィールドは、パケットから抽出され、テーブル参照に使用されるパケットマッチフィールドは、パケットタイプに従い、
　コントローラは、deleteフローテーブル修正メッセージ（OFPFC_DELETE 又は OFPFC_DELETE_STRICT）を送信することによって、フローテーブルからフローエントリを削除し、
　グループテーブルは、グループエントリから成り、
　各グループエントリは、そのグループ識別子によって識別され、グループ識別子とアクションバケットを含み、
　各アクションバケットは、実行されるアクションのセットを含み、
　スイッチは、indirectのグループタイプをサポートし、indirectのグループの中で１つの定義されたバケットを実行し、
　各フローエントリは、パケットがエントリにマッチしたときに実行されるインストラクションのセットを含み、
　Apply-Actionsインストラクションは、アクションリストを含み、アクションリスト内の複数のアクションは、リストによって特定される順で実行され、
　スイッチは、Groupのアクションタイプをサポートし、Groupアクションは、特定のグループを通じてパケットを処理し、
　削除要求（OFPFC_DELETE 又は OFPFC_DELETE_STRICT）に関しては、テーブル内にマッチするエントリが存在すると、そのエントリは削除され、
　グループアクションは、グループ識別子を含み、
　コントローラからフローテーブルへの修正に用いられるOFPT_FLOW_MODメッセージは、OFPFC_*の１つを示すコマンドと、マッチするためのフィールドを含む、
方法。」
第６　対比・判断
１　本願発明１について
（１）対比
　本願発明１と、引用発明とを対比すると以下のことがいえる。
ア．引用発明の「OpenFlowスイッチ」は、「パケット」を「転送」するものであるから、本願発明の「フォワーダ」に相当する。
イ．引用発明の「OpenFlowスイッチ」同士は、「互いに接続」するものであるから、「ネットワーク」を構成するといえる。
　また、引用発明の「OpenFlowスイッチ」で構成される「ネットワーク」が、スイッチ動作がソフトウェア的に設定可能な、いわゆる「ソフトウェア・デファインド・ネットワーク（Ｓｏｆｔｗａｒｅ　Ｄｅｆｉｎｅｄ　Ｎｅｔｗｏｒｋ）」と呼べることは明らかである。
ウ．引用発明において、「パケット」を「転送」することは、本願発明の「パケットを処理」することに相当する。
　以上のことから、引用発明は「フォワーダにより実行される、ソフトウェア・デファインド・ネットワーク（Ｓｏｆｔｗａｒｅ　Ｄｅｆｉｎｅｄ　Ｎｅｔｗｏｒｋ）においてパケットを処理するための方法」であるといえる。
（２）  引用発明の「パケットを受信する」ことは、本願発明の「入力パケットを受信するステップ」に相当する。
（３）  引用発明の「フローエントリ」に含まれる「マッチフィールド」は、「パケットに対してマッチするため」のものであり、「テーブル参照」における参照用キーとなるものであるから、本願発明の「フロー」に相当する。したがって、引用発明において、「パケットを受信」し、「テーブル参照に使用されるパケットマッチフィールド」を「パケットから抽出」することは、本願発明の「前記入力パケットに従って、前記入力パケットが属するフローを決定するステップ」に相当する。
（４）ア．引用発明における「フローエントリ」は、「マッチフィールドとインストラクション」とを含むことから、「フローエントリ」を含む「フローテーブル」は、「マッチフィールドとインストラクション」を対応付けるものといえる。
イ．引用発明において、「Apply-Actionsインストラクションは、アクションリストを含」むこと、及び、「アクションリスト内」に「複数のアクション」が含まれることから、「Apply-Actionsインストラクション」は「複数のアクション」を含むものといえる。
　さらに、「グループアクションは、グループ識別子を含」むことから、「Apply-Actionsインストラクション」が、「複数のアクション」として、特に、複数の「グループアクション」を含むとき、「Apply-Actionsインストラクション」は「複数のグループ識別子」を含むものといえる。
ウ．引用発明の「グループ識別子」は、「実行されるアクションのセットを含」む「アクションバケット」を、「グループテーブル」によって特定するものであるから、本願発明の「コンテキスト識別子」に相当し、「Apply-Actionsインストラクション」に含まれる「複数のグループ識別子」は、本願発明の「コンテキスト識別子セット」に相当する。
エ．引用発明において、「フローエントリ」が、「Apply-Actionsインストラクション」として「複数のグループ識別子」を含むとき、当該「フローエントリ」を含み、「マッチフィールド」と「Apply-Actionsインストラクション」とを対応付ける「フローテーブル」は、「マッチフィールド」と「複数のグループ識別子」とを対応付けるといえるから、本願発明の「フローとコンテキスト識別子セットとの間の第１の対応」に相当する。
　また、当該「フローテーブル」に対して「テーブル参照を実行」することは、本願発明の「前記入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップ」に相当する。
オ．以上のことから、引用発明は「フローとコンテキスト識別子セットとの間の第１の対応に従って、前記入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップであって、前記第１の対応における各フローに対応するコンテキスト識別子セットは少なくとも１つのコンテキスト識別子を含む、決定するステップ」を含むといえる。
（５）ア．引用発明の「グループエントリ」は、「グループ識別子とアクションバケットを含」むこと、及び、「グループタイプ」が、特に、「indirect」であるとき、「グループの中で１つの定義されたバケットを実行」することから、「グループタイプ」が「indirect」であるとき、「グループエントリ」を含む「グループテーブル」は、「グループ識別子とアクションバケット」とを対応付けるものであるいえる。
イ．引用発明の「アクションバケット」は、「実行されるアクションのセットを含」むものであるから、本願発明の「コンテキスト」に相当する。
ウ．引用発明において、「グループタイプ」が「indirect」であるとき、「グループ識別子とアクションバケット」とを対応付ける「グループテーブル」は、本願発明の「コンテキスト識別子とコンテキストとの間の第２の対応」に相当する。
エ．引用発明において、「Apply-Actionsインストラクション」が「複数のグループ識別子」を含み、さらに、「グループタイプ」が「indirect」であるとき、「複数のグループ識別子」各々に対応付けられた「アクションバケット」を特定することは、本願発明の「前記コンテキスト識別子セットに対応するコンテキストを決定するステップ」に相当する。
オ．引用発明において、特定された「アクションバケット」に含まれる「アクションのセット」を実行することは、本願発明の「前記コンテキスト識別子セットに対応するコンテキストに従って、前記入力パケットを処理するステップ」に相当する。
カ．以上のことから、引用発明は、「コンテキスト識別子とコンテキストとの間の第２の対応に従って、前記コンテキスト識別子セットに対応するコンテキストを決定するステップ」、及び、「前記コンテキスト識別子セットに対応するコンテキストに従って、前記入力パケットを処理するステップ」を含むといえる。
（６）  　引用発明の「OFPT_FLOW_MODメッセージ」は、「コントローラからフローテーブルへの修正に用いられる」ものであり、「OFPFC_*の１つを示すコマンド」として、特に、「フローテーブルからフローエントリを削除」するために「コントローラ」により送信される「OFPFC_DELETE 又は OFPFC_DELETE_STRICT」を含むとき、本願発明の「フロー削除メッセージ」に相当する。
　そして、当該「OFPT_FLOW_MODメッセージ」に含まれる「マッチするためのフィールド」は、「マッチするエントリ」を削除するためのものであるから、本願発明の「削除対象のフローに関する情報」に相当する。
　また、「コントローラ」により送信された「OFPT_FLOW_MODメッセージ」は、「フローテーブル」を保持する「OpenFlowスイッチ」が受信するものといえる。
　以上のことから、引用発明は「コントローラにより送信されたフロー削除メッセージを受信するステップであって、前記フロー削除メッセージは削除対象のフローに関する情報を含む、受信するステップ」を含むといえる。
（７）  引用発明において、「Apply-Actionsインストラクション」が「複数のグループ識別子」を含むとき、「そのエントリを削除」することは、「そのエントリ」に含まれる「マッチフィールド」と、「Apply-Actionsインストラクション」に含まれる「複数のグループ識別子」を削除することであるといえるから、「Apply-Actionsインストラクション」が「複数のグループ識別子」を含むとき、「そのエントリを削除」することは、本願発明の「前記削除対象のフローに関する情報および前記削除対象のフローに対応するコンテキスト識別子セットを前記第１の対応から削除するステップ」に相当する。
（８）　上記「（４）イ．」記載のとおり、引用発明において、フローエントリの「Apply-Actionsインストラクション」が、「複数のアクション」として、特に、複数の「グループアクション」を含むとき、「Apply-Actionsインストラクション」は「複数のグループ識別子」を含むものといえる。
　よって、上記の「Apply-Actionsインストラクション」が「複数のグループ識別子」を含む場合に、「Apply-Actionsインストラクションは、アクションリストを含み、アクションリスト内の複数のアクションは、
リストによって特定される順で
予め設定されたコンテキストシーケンスで実行される
（９）　よって、本願発明１と引用発明との一致点及び相違点は次のとおりであるといえる。
［一致点］
　「フォワーダにより実行される、ソフトウェア・デファインド・ネットワーク（Ｓｏｆｔｗａｒｅ　Ｄｅｆｉｎｅｄ　Ｎｅｔｗｏｒｋ）においてパケットを処理するための方法であって、
　　入力パケットを受信するステップと、
　前記入力パケットに従って、前記入力パケットが属するフローを決定するステップと、
　フローとコンテキスト識別子セットとの間の第１の対応に従って、前記入力パケットが属するフローに対応するコンテキスト識別子セットを決定するステップであって、前記第１の対応における各フローに対応するコンテキスト識別子セットは少なくとも１つのコンテキスト識別子を含む、決定するステップと、
　コンテキスト識別子とコンテキストとの間の第２の対応に従って、前記コンテキスト識別子セットに対応するコンテキストを決定するステップと、
　前記コンテキスト識別子セットに対応するコンテキストに従って、前記入力パケットを処理するステップと
を含み、
　当該方法はさらに、
　コントローラにより送信されたフロー削除メッセージを受信するステップであって、前記フロー削除メッセージは削除対象のフローに関する情報を含む、受信するステップと、
　前記削除対象のフローに関する情報および前記削除対象のフローに対応するコンテキスト識別子セットを前記第１の対応から削除するステップと、
を含み、
　前記コンテキスト識別子セットが複数のコンテキスト識別子を含むときに、前記コンテキスト識別子セットに対応するコンテキストに従って、前記入力パケットを処理するステップは、実行される
方法。」
［相違点１］
　「前記コンテキスト識別子セットに対応するコンテキストに従って、前記入力パケットを処理するステップ」について、本願発明１では、「予め設定されたコンテキストシーケンスで実行される」のに対し、引用発明では、「予め設定されたコンテキストシーケンスで実行される」ことが特定されていない点。
［相違点２］
　本願発明１では、「当該方法はさらに、前記コントローラに能力交渉リクエストメッセージを送信するステップであって、前記能力交渉リクエストメッセージは前記フォワーダによってサポートされるコンテキスト能力リストを含み、これにより、前記コントローラは前記フォワーダがサポート可能ないくつかの又は全てのコンテキストを前記フォワーダに送信する、送信するステップを含む」のに対し、引用発明では、「フォワーダによってサポートされるコンテキスト能力リストを含」むような、「コントローラに能力交渉リクエストメッセージを送信するステップ」が特定されていない点。
（２）　当審の判断
　事案に鑑みて、上記［相違点２］について先に検討する。
　上記「（１）対比　（５）イ」記載のように、本願発明１の「コンテキスト」に対応する引用発明の構成要素は、「アクションバケット」である。
　ここで、引用発明には、スイッチ（「フォワーダ」）によってサポートされるアクションバケット（「コンテキスト」）能力リストを含むような、「能力交渉リクエストメッセージ」を、スイッチ（「フォワーダ」）から「コントローラ」に向けて送信し、「前記コントローラは前記フォワーダがサポート可能ないくつかの又は全てのコンテキストを前記フォワーダに送信する」というステップは、記載も示唆もない。
　また、引用文献１のOpenFlowプロトコル規格書における他の記載を参照しても、セクション６．１（２５−２７ページ）に、通常、コントローラとスイッチ間のメッセージのやり取りは、コントローラから開始して、スイッチはメッセージに応答すること（セクション６．１．１参照）、スイッチが開始できるメッセージは、「非対称な（Asynchronous）メッセージ」と呼ばれ、「パケット−イン」メッセージ、「フロー削除」メッセージ、「ポート状態」メッセージ、「エラー」メッセージという主要な４タイプがあること（セクション６．１．２参照）、スイッチとコントローラのいずれも開始できるメッセージは、「対称な（Synchronous）メッセージ」と呼ばれ、「ハロー」メッセージ、「エコー」メッセージ、「実験者の(Experimenter)」メッセージの３タイプがあること（セクション６．１．３参照）は記載があるものの、上記［相違点２］の構成に対応する、スイッチ（「フォワーダ」）によってサポートされるアクションバケット（「コンテキスト」）能力リストを含むような、「能力交渉リクエストメッセージ」を、スイッチ（「フォワーダ」）から「コントローラ」に向けて送信し、「前記コントローラは前記フォワーダがサポート可能ないくつかの又は全てのコンテキストを前記フォワーダに送信する」というステップは、上記引用文献１に記載されておらず、本願出願前において周知技術であるともいえない。
　よって、上記［相違点２］に係る構成は、引用発明及び周知技術に基づいて容易に発明できたものであるとはいえない。
　したがって、本願発明１は、上記［相違点１］について検討するまでもなく、当業者であっても引用発明及び周知技術に基づいて容易に発明できたものであるとはいえない。
２　本願発明２−２８について
　本願発明２−１６は、本願発明１を減縮した発明であり、また、本願発明１７は、本願発明１に対応する「フォワーダ」の発明であり、本願発明１８−２８は、本願発明１７を減縮した発明であり、本願発明１の「当該方法はさらに、前記コントローラに能力交渉リクエストメッセージを送信するステップであって、前記能力交渉リクエストメッセージは前記フォワーダによってサポートされるコンテキスト能力リストを含み、これにより、前記コントローラは前記フォワーダがサポート可能ないくつかの又は全てのコンテキストを前記フォワーダに送信する、送信するステップを含む」構成と、実質的に同一の構成を備えるものであるから、本願発明２−２８も、本願発明１と同様の理由により、当業者であっても、引用発明及び周知技術に基づいて容易に発明できたものであるとはいえない。
第７　原査定についての判断
　令和２年２月１７日付けの補正により補正された請求項１−２８は、実質的に「当該方法はさらに、前記コントローラに能力交渉リクエストメッセージを送信するステップであって、前記能力交渉リクエストメッセージは前記フォワーダによってサポートされるコンテキスト能力リストを含み、これにより、前記コントローラは前記フォワーダがサポート可能ないくつかの又は全てのコンテキストを前記フォワーダに送信する、送信するステップを含む」という技術事項を有するものとなり、当該技術的事項は、原査定における引用文献Ａ−引用文献Ｄには記載されておらず、本願出願前における周知技術でもないので、本願発明１−２８は、原査定における引用文献Ａ−Ｄ及び周知技術に基づいて容易に発明をすることができたものではない。
　したがって、原査定を維持することはできない。
第８　むすび
　以上のとおり、原査定の理由によって、本願を拒絶することはできない。
　他に本願を拒絶すべき理由を発見しない。
　よって、結論のとおり審決する。