Patents by Inventor Robert Soule
Robert Soule has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 11720373Abstract: A method for verifying data plane programs is provided in some embodiments. Because the behavior of a data plane program (e.g., a program written in the P4 language) is determined in part by the control plane populating match-action tables with specific forwarding rules, in some embodiments, programmers are provided with a way to document assumptions about the control plane using annotations (e.g., in the form of “assertions” or “assumptions” about the state based on the unknown control plane contribution). In some embodiments, annotations are added automatically to verify common properties, including checking that every header read or written is valid, that every expression has a well-defined value, and that all standard metadata is manipulated correctly. The method in some embodiments translates programs from a first language (e.g., P4) to a second language (e.g., Guarded Command Language (GCL)) for verification by a satisfiability modulo theory (SMT) solver.Type: GrantFiled: November 29, 2021Date of Patent: August 8, 2023Assignee: Barefoot Networks, Inc.Inventors: Jeongkeun Lee, Cole Nathan Schlesinger, John Nathan Foster, Han Wang, Robert Soule, William Hallahan, Steffen Julif Smolka, Mon Jed Liu
-
Publication number: 20230176934Abstract: Examples described herein relate to a network interface device that includes packet processing circuitry and circuitry. In some examples, the circuitry is to execute a first process to provide a remote procedure call (RPC) interface for a second process. In some examples, the second process comprises a business logic. In some examples, resource and deployment definitions of the first and second processes are based on an Interface Description Language (IDL) and a memory allocation. In some examples, the memory allocation among the processes provides share at least one RPC message as at least one formatted object accessible from memory.Type: ApplicationFiled: December 28, 2022Publication date: June 8, 2023Inventors: Robert SOULE, Rajit MANOHAR, Jr-Shian TSAI, Edmund CHEN, Uri V. CUMMINGS, Pietro BRESSANA, Rui LI
-
Publication number: 20220083352Abstract: A method for verifying data plane programs is provided in some embodiments. Because the behavior of a data plane program (e.g., a program written in the P4 language) is determined in part by the control plane populating match-action tables with specific forwarding rules, in some embodiments, programmers are provided with a way to document assumptions about the control plane using annotations (e.g., in the form of “assertions” or “assumptions” about the state based on the unknown control plane contribution). In some embodiments, annotations are added automatically to verify common properties, including checking that every header read or written is valid, that every expression has a well-defined value, and that all standard metadata is manipulated correctly. The method in some embodiments translates programs from a first language (e.g., P4) to a second language (e.g., Guarded Command Language (GCL)) for verification by a satisfiability modulo theory (SMT) solver.Type: ApplicationFiled: November 29, 2021Publication date: March 17, 2022Inventors: Jeongkeun LEE, Cole Nathan Schlesinger, John Nathan FOSTER, Han Wang, Robert SOULE, William Hallahan, Steffen Julif Smolka, Mon Jed LIU
-
Patent number: 11188355Abstract: A method for verifying data plane programs is provided in some embodiments. Because the behavior of a data plane program (e.g., a program written in the P4 language) is determined in part by the control plane populating match-action tables with specific forwarding rules, in some embodiments, programmers are provided with a way to document assumptions about the control plane using annotations (e.g., in the form of “assertions” or “assumptions” about the state based on the unknown control plane contribution). In some embodiments, annotations are added automatically to verify common properties, including checking that every header read or written is valid, that every expression has a well-defined value, and that all standard metadata is manipulated correctly. The method in some embodiments translates programs from a first language (e.g., P4) to a second language (e.g., Guarded Command Language (GCL)) for verification by a satisfiability modulo theory (SMT) solver.Type: GrantFiled: June 28, 2018Date of Patent: November 30, 2021Assignee: Barefoot Networks, Inc.Inventors: Jeongkeun Lee, Cole Nathan Schlesinger, John Nathan Foster, Han Wang, Robert Soule, William Hallahan, Steffen Julif Smolka, Mon Jed Liu
-
Patent number: 10826815Abstract: Some embodiments provide a method for a forwarding element (FE) operating in a network of FEs. The method receives a data message with an access control list (ACL) rule and a first digest for the ACL rule appended to the data message. The ACL rule specifies that the packet is allowed to be sent through the network. The method verifies the ACL rule by computing a second digest from the ACL rule using a secret key and comparing the first digest to the second digest. The method determines whether the packet matches the ACL rule by comparing values in headers of the data message to values specified in the ACL rule. The method only forwards the data message if the ACL rule is verified and the packet matches the ACL rule.Type: GrantFiled: April 9, 2018Date of Patent: November 3, 2020Assignee: Barefoot Networks, Inc.Inventors: Changhoon Kim, Jeongkeun Lee, Milad Sharif, Robert Soule
-
Patent number: 10764170Abstract: Some embodiments provide a method for a particular FE in a network of FEs. The method receives a data message at a first port of the FE. The data message includes a header that specifies an egress port for each FE along a path from a source of the data message to a destination of the data message and an ingress port for at least each FE along the path that the data message has previously traversed. The method determines that the particular egress port specified for the FE is a second port that is not operational. The method generates a path failure message specifying that the second port is not operational and including a header that uses the egress ports and ingress ports in the data message. The method sends the path failure message out of the first port for delivery to the source of the data message.Type: GrantFiled: April 9, 2018Date of Patent: September 1, 2020Assignee: Barefoot Networks, Inc.Inventors: Changhoon Kim, Jeongkeun Lee, Milad Sharif, Robert Soule
-
Patent number: 10757005Abstract: Some embodiments provide a method for a particular forwarding element (FE) in a network of FEs. The method receives a packet at the particular FE. The packet includes a packet header that includes, for each of multiple FEs along a path from a source of the packet to a destination of the packet, (i) an identifier for the FE and (ii) a set of one or more actions for the FE to perform on the packet. The method parses the packet header to identify the set of actions for the particular FE. The method performs the identified set of actions.Type: GrantFiled: April 9, 2018Date of Patent: August 25, 2020Assignee: Barefoot Networks, Inc.Inventors: Changhoon Kim, Jeongkeun Lee, Milad Sharif, Robert Soule
-
Patent number: 10700959Abstract: Some embodiments provide a network that includes (i) multiple forwarding elements, (ii) a set of one or more global control plane (GCP) servers, and (iii) multiple end-node machines. The GCP servers maintain topological information about connections between the forwarding elements. Each of the end-node machines receives the topological information, identifies a source-routing path for a message sent by the machine, and embeds the source-routing path in a source-routing message header that includes an egress port for each forwarding element along the path.Type: GrantFiled: April 9, 2018Date of Patent: June 30, 2020Assignee: Barefoot Networks, Inc.Inventors: Changhoon Kim, Jeongkeun Lee, Milad Sharif, Robert Soule
-
Publication number: 20200134308Abstract: Some embodiments of the invention provide a data plane circuit for a network forwarding element that searches for one or more patterns of characters stored in data messages received by the data plane circuit. In some embodiments, the data plane circuit analyzes the data messages as it processes the data messages to forward the data messages to their destinations in a network. Because the data messages are already flowing through the network, it is optimal to search the data messages for the character patterns as the data messages pass through the network, instead of performing these operations on a separate set of servers that typically perform these searches at slower rates. In other embodiments, the data plane circuit does not perform its character pattern searches in conjunction with its forwarding operations, as it receives the data messages from a set of servers just for the purpose of performing its character pattern searches, in order to offload some or all of these searches from the server set.Type: ApplicationFiled: October 1, 2019Publication date: April 30, 2020Inventors: Masoud Moshref Javadi, Robert Soule, Changhoon Kim, Jeongkeun Lee, John Nathan Foster, Daniel A. Alvarez, Theodore Jepsen
-
Publication number: 20190182154Abstract: Some embodiments provide a method for a forwarding element (FE) operating in a network of FEs. The method receives a data message with an access control list (ACL) rule and a first digest for the ACL rule appended to the data message. The ACL rule specifies that the packet is allowed to be sent through the network. The method verifies the ACL rule by computing a second digest from the ACL rule using a secret key and comparing the first digest to the second digest. The method determines whether the packet matches the ACL rule by comparing values in headers of the data message to values specified in the ACL rule. The method only forwards the data message if the ACL rule is verified and the packet matches the ACL rule.Type: ApplicationFiled: April 9, 2018Publication date: June 13, 2019Inventors: Changhoon Kim, Jeongkeun Lee, Milad Sharif, Robert Soule
-
Publication number: 20190182149Abstract: Some embodiments provide a method for a particular FE in a network of FEs. The method receives a data message at a first port of the FE. The data message includes a header that specifies an egress port for each FE along a path from a source of the data message to a destination of the data message and an ingress port for at least each FE along the path that the data message has previously traversed. The method determines that the particular egress port specified for the FE is a second port that is not operational. The method generates a path failure message specifying that the second port is not operational and including a header that uses the egress ports and ingress ports in the data message. The method sends the path failure message out of the first port for delivery to the source of the data message.Type: ApplicationFiled: April 9, 2018Publication date: June 13, 2019Inventors: Changhoon Kim, Jeongkeun Lee, Milad Sharif, Robert Soule
-
Publication number: 20190182143Abstract: Some embodiments provide a network that includes (i) multiple forwarding elements, (ii) a set of one or more global control plane (GCP) servers, and (iii) multiple end-node machines. The GCP servers maintain topological information about connections between the forwarding elements. Each of the end-node machines receives the topological information, identifies a source-routing path for a message sent by the machine, and embeds the source-routing path in a source-routing message header that includes an egress port for each forwarding element along the path.Type: ApplicationFiled: April 9, 2018Publication date: June 13, 2019Inventors: Changhoon Kim, Jeongkeun Lee, Milad Sharif, Robert Soule
-
Publication number: 20190182367Abstract: Some embodiments provide a method for a particular forwarding element (FE) in a network of FEs. The method receives a packet at the particular FE. The packet includes a packet header that includes, for each of multiple FEs along a path from a source of the packet to a destination of the packet, (i) an identifier for the FE and (ii) a set of one or more actions for the FE to perform on the packet. The method parses the packet header to identify the set of actions for the particular FE. The method performs the identified set of actions.Type: ApplicationFiled: April 9, 2018Publication date: June 13, 2019Inventors: Changhoon Kim, Jeongkeun Lee, Milad Sharif, Robert Soule
-
Publication number: 20190108045Abstract: A method for verifying data plane programs is provided in some embodiments. Because the behavior of a data plane program (e.g., a program written in the P4 language) is determined in part by the control plane populating match-action tables with specific forwarding rules, in some embodiments, programmers are provided with a way to document assumptions about the control plane using annotations (e.g., in the form of “assertions” or “assumptions” about the state based on the unknown control plane contribution). In some embodiments, annotations are added automatically to verify common properties, including checking that every header read or written is valid, that every expression has a well-defined value, and that all standard metadata is manipulated correctly. The method in some embodiments translates programs from a first language (e.g., P4) to a second language (e.g., Guarded Command Language (GCL)) for verification by a satisfiability modulo theory (SMT) solver.Type: ApplicationFiled: June 28, 2018Publication date: April 11, 2019Inventors: Jeongkeun Lee, Cole Nathan Schlesinger, John Nathan Foster, Han Wang, Robert Soule
-
Patent number: 10248708Abstract: An instance of a consensus protocol in initiated by a processor initiating an application program interface to submit a value and obtaining the value. The processor sends a message including the value to one or more hardware components communicatively coupled to the processor. Logic in the hardware components obtains the message and appends the message with a sequence number, where the sequence number identifies the instance. Logic in the hardware accepts the value and supplies the value to the processor. The processor replicates the value for the instance and returns the value to the application via a callback.Type: GrantFiled: August 11, 2016Date of Patent: April 2, 2019Assignee: Universita della Svizzera italianaInventors: Robert Soule, Fernando Pedone, Marco Canini, Huynh T. Dang
-
Publication number: 20170316073Abstract: An instance of a consensus protocol in initiated by a processor initiating an application program interface to submit a value and obtaining the value. The processor sends a message including the value to one or more hardware components communicatively coupled to the processor. Logic in the hardware components obtains the message and appends the message with a sequence number, where the sequence number identifies the instance. Logic in the hardware accepts the value and supplies the value to the processor. The processor replicates the value for the instance and returns the value to the application via a callback.Type: ApplicationFiled: August 11, 2016Publication date: November 2, 2017Inventors: Robert Soule, Fernando Pedone, Marco Canini, Huynh T. Dang
-
Patent number: 8499292Abstract: A virtual execution environment (VEE) for a streaming Intermediate Language (IL), wherein the streaming IL represents a streaming program, communicates streaming data in queues, stores data-at-rest in variables, and determines data by functions, where inputs are read from the queues and the variables, and outputs are written to the queues and the variables.Type: GrantFiled: March 8, 2010Date of Patent: July 30, 2013Assignee: International Business Machines CorporationInventors: Henrique Andrade, Jim Challenger, Bugra Gedik, Robert Grimm, Martin J. Hirzel, Vibhore Kumar, Robert Soule, Kun-Lung Wu
-
Patent number: 8326821Abstract: A method of transforming relational queries of a database into on a data processing system includes receiving a series of relational queries, transforming first parts of the queries into a continuous query embodied as a streaming application, sending parameters in second parts of the queries in the series to the streaming application as a data stream, and executing the continuous query based on the received data stream to generate query results for the series of relational queries. Each query in the series includes a first part and a second part. The first parts are a pattern common to all the queries in the series and the second parts each have one or more parameters that are not common to all of the queries in the series.Type: GrantFiled: August 25, 2010Date of Patent: December 4, 2012Assignee: International Business Machines CorporationInventors: Henrique Andrade, Bugra Gedik, Martin J. Hirzel, Robert Soule, Hua Yong Wang, Kun-Lung Wu, Qiong Zou
-
Publication number: 20120054173Abstract: A method of transforming relational queries of a database into on a data processing system includes receiving a series of relational queries, transforming first parts of the queries into a continuous query embodied as a streaming application, sending parameters in second parts of the queries in the series to the streaming application as a data stream, and executing the continuous query based on the received data stream to generate query results for the series of relational queries. Each query in the series includes a first part and a second part. The first parts are a pattern common to all the queries in the series and the second parts each have one or more parameters that are not common to all of the queries in the series.Type: ApplicationFiled: August 25, 2010Publication date: March 1, 2012Applicant: International Business Machines CorporationInventors: Henrique Andrade, Bugra Gedik, Martin J. Hirzel, Robert Soule, Hua Yong Wang, Kun-Lung Wu, Qiong Zou
-
Publication number: 20110219362Abstract: A virtual execution environment (VEE) for a streaming Intermediate Language (IL), wherein the streaming IL represents a streaming program, communicates streaming data in queues, stores data-at-rest in variables, and determines data by functions, where inputs are read from the queues and the variables, and outputs are written to the queues and the variables.Type: ApplicationFiled: March 8, 2010Publication date: September 8, 2011Applicant: International Business Machines CorporationInventors: Henrique Andrade, Jim Challenger, Bugra Gedik, Robert Grimm, Martin J. Hirzel, Vibhore Kumar, Robert Soule, Kun-Lung Wu