From a8a87d0ef8cf794b11eb33234bb5de8b9dd306c6 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Fri, 2 Feb 2024 11:51:52 -0800 Subject: [PATCH 01/13] adds rpc description --- network/p2p/inspector/README.MD | 44 +++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 network/p2p/inspector/README.MD diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD new file mode 100644 index 00000000000..dd1fb4e72d4 --- /dev/null +++ b/network/p2p/inspector/README.MD @@ -0,0 +1,44 @@ +# Control Message Validation Inspector Overview + +## Component Overview +The Control Message Validation Inspector (`ControlMsgValidationInspector`) is an injectable component responsible for asynchronous inspection of incoming GossipSub RPC. +It is entirely developed and maintained at Flow blockchain codebase and is injected into the GossipSub protocol of libp2p at the startup of the node. +All incoming RPC messages are passed through this inspection to ensure their validity and compliance with the Flow protocol semantics. + +The inspector performs two primary functions: +1. **RPC truncation (blocking)**: It truncates size of incoming RPC messages to prevent excessive resource consumption, if needed. This is done by sampling the messages and reducing their size to a configurable threshold. +2. **RPC inspection (non-blocking)**: It inspects the truncated or original RPC messages for compliance with the Flow protocol semantics. This includes validation of message structure, topic, sender, and other relevant attributes. + +## What is an RPC? +RPC stands for Remote Procedure Call. In the context of GossipSub, it is a message that is sent from one peer to another peer over the GossipSub protocol. +The message is sent in the form of a protobuf message and is used to communicate information about the state of the network, such as topic membership, message propagation, and other relevant information. +It encapsulates various types of messages and commands that peers exchange to implement the GossipSub protocol, a pub-sub (publish-subscribe) messaging system. +Remember that the purpose of GossipSub is to efficiently disseminate messages to interested subscribers in the network without requiring a central broker or server. +Here is what an RPC message looks like in the context of GossipSub: +```protobuf +type RPC struct { + Subscriptions []*RPC_SubOpts `protobuf:"bytes,1,rep,name=subscriptions" json:"subscriptions,omitempty"` + Publish []*Message `protobuf:"bytes,2,rep,name=publish" json:"publish,omitempty"` + Control *ControlMessage `protobuf:"bytes,3,opt,name=control" json:"control,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} +``` + +Here's a breakdown of the components within the GossipSub's `RPC` struct: +1. **Subscriptions (`[]*RPC_SubOpts`)**: This field contains a list of subscription options (`RPC_SubOpts`). + Each `RPC_SubOpts` represents a peer's intent to subscribe or unsubscribe from a topic. + This allows peers to dynamically adjust their interest in various topics and manage their subscription list. +2. **Publish (`[]*Message`)**: The `Publish` field contains a list of messages that the peer wishes to publish (or gossip) to the network. + Each `Message` is intended for a specific topic, and peers subscribing to that topic should receive the message. + This field is essential for the dissemination of information and data across the network. +3. **Control (`*ControlMessage`)** + The `Control` field holds a control message, which contains various types of control information required for the operation of the GossipSub protocol. + This can include information about grafting (joining a mesh for a topic), pruning (leaving a mesh), + and other control signals related to the maintenance and optimization of the pub-sub network. + The control messages play a crucial role in the mesh overlay maintenance, ensuring efficient and reliable message propagation. +4. **XXX Fields** These fields (`XXX_NoUnkeyedLiteral`, `XXX_unrecognized`, and `XXX_sizecache`) are generated by the protobuf compiler and are not directly used by the GossipSub protocol. + They are used internally by the protobuf library for various purposes like caching and ensuring correct marshalling and unmarshalling of the protobuf data. + + From 7877bf3a771372638509f0aaf3c52fe36138132f Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Fri, 2 Feb 2024 12:15:10 -0800 Subject: [PATCH 02/13] adds gossip sub control messages --- network/p2p/inspector/README.MD | 41 ++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index dd1fb4e72d4..5384cb4e36a 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -15,7 +15,7 @@ The message is sent in the form of a protobuf message and is used to communicate It encapsulates various types of messages and commands that peers exchange to implement the GossipSub protocol, a pub-sub (publish-subscribe) messaging system. Remember that the purpose of GossipSub is to efficiently disseminate messages to interested subscribers in the network without requiring a central broker or server. Here is what an RPC message looks like in the context of GossipSub: -```protobuf +```go type RPC struct { Subscriptions []*RPC_SubOpts `protobuf:"bytes,1,rep,name=subscriptions" json:"subscriptions,omitempty"` Publish []*Message `protobuf:"bytes,2,rep,name=publish" json:"publish,omitempty"` @@ -41,4 +41,43 @@ Here's a breakdown of the components within the GossipSub's `RPC` struct: 4. **XXX Fields** These fields (`XXX_NoUnkeyedLiteral`, `XXX_unrecognized`, and `XXX_sizecache`) are generated by the protobuf compiler and are not directly used by the GossipSub protocol. They are used internally by the protobuf library for various purposes like caching and ensuring correct marshalling and unmarshalling of the protobuf data. +### Closer Look at the Control Message +In GossipSub, a Control Message is a part of the `RPC` structure and plays a crucial role in maintaining and optimizing the network. +It contains several fields, each corresponding to different types of control information. +The primary purpose of these control messages is to manage the mesh overlay that underpins the GossipSub protocol, +ensuring efficient and reliable message propagation. +At the core, the control messages are used to maintain the mesh overlay for each topic, allowing peers to join and leave the mesh as their interests and network connectivity change. +The control messages include the following types: + +1. **IHAVE (`[]*ControlIHave`)**: the `IHAVE` messages are used to advertise to peers that the sender has certain messages. + This is part of the message propagation mechanism. + When a peer receives an `IHAVE` message and is interested in the advertised messages (because it doesn't have them yet), + it can request those messages from the sender using an `IWANT` message. + +2. **IWANT (`[]*ControlIWant`)**: the `IWANT` messages are requests sent to peers to ask for specific messages previously + advertised in an `IHAVE` message. + This mechanism ensures that messages propagate through the network, + reaching interested subscribers even if they are not directly connected to the message's original publisher. + +3. **GRAFT (`[]*ControlGraft`)**: The `GRAFT` messages are used to express the sender's intention to join the mesh for a specific topic. + In GossipSub, each peer maintains a local mesh network for each topic it is interested in. + Each local mesh is a subset of the peers in the network that are interested in the same topic. The complete mesh for a topic is formed by the union of all local meshes, which must be connected to ensure efficient message propagation + (the peer scoring ensures that the mesh is well-connected and that peers are not overloaded with messages) + Sending a `GRAFT` message is a way to join the local mesh of a peer, indicating that the sender wants to receive and forward messages for the specific topic. + +4. **PRUNE (`[]*ControlPrune`)**: conversely, `PRUNE` messages are sent when a peer wants to leave the local mesh for a specific topic. + This could be because the peer is no longer interested in the topic or is optimizing its network connections. + Upon receiving a `PRUNE` message, peers will remove the sender from their mesh for the specific topic. + +```go +type ControlMessage struct { + Ihave []*ControlIHave `protobuf:"bytes,1,rep,name=ihave" json:"ihave,omitempty"` + Iwant []*ControlIWant `protobuf:"bytes,2,rep,name=iwant" json:"iwant,omitempty"` + Graft []*ControlGraft `protobuf:"bytes,3,rep,name=graft" json:"graft,omitempty"` + Prune []*ControlPrune `protobuf:"bytes,4,rep,name=prune" json:"prune,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} +``` From 34da907022d455ffbc562fc5a40a98857aea652f Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Mon, 5 Feb 2024 10:56:48 -0800 Subject: [PATCH 03/13] adds why we need rpc inspection --- network/p2p/inspector/README.MD | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index 5384cb4e36a..d2ad1d4a6cd 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -81,3 +81,14 @@ type ControlMessage struct { XXX_sizecache int32 `json:"-"` } ``` + +## Why is RPC Inspection Necessary? +In the context of the Flow blockchain, RPC inspection is necessary for the following reasons: +1. **Security**: The inspection process mitigates potential security risks such as spamming, message replay attacks, or malicious content dissemination, and provides complementing feedbacks for the internal GossipSub scoring system. + +2. **Resource Management**: By validating and potentially truncating incoming RPC messages, the system manages its computational and memory resources more effectively. + This prevents resource exhaustion attacks where an adversary might attempt to overwhelm the system by sending a large volume of non-compliant or oversized messages. + +3. **Metrics and Monitoring**: The inspection process provides valuable insights into the network's health and performance. + By monitoring the incoming RPC messages, the system can collect metrics and statistics about message propagation, topic membership, and other relevant network attributes. + From 609cb2e21cdb8bc6bc221d00f409824491dca775 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Mon, 5 Feb 2024 11:11:34 -0800 Subject: [PATCH 04/13] adds rpc truncation explanation --- network/p2p/inspector/README.MD | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index d2ad1d4a6cd..43e2e5046a8 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -92,3 +92,25 @@ In the context of the Flow blockchain, RPC inspection is necessary for the follo 3. **Metrics and Monitoring**: The inspection process provides valuable insights into the network's health and performance. By monitoring the incoming RPC messages, the system can collect metrics and statistics about message propagation, topic membership, and other relevant network attributes. +## RPC Truncation +The Control Message Validation Inspector is responsible for truncating the size of incoming RPC messages to prevent excessive resource consumption. This is done by sampling the messages and reducing their size to a configurable threshold. +The truncation process is entirely done in a blocking manner, i.e., it is performed at the entry point of the GossipSub through an injected interceptor, and the incoming RPC messages are modified before they are further processed by the GossipSub protocol. +The truncation process is applied to different components of the RPC message, specifically the control message types (`GRAFT`, `PRUNE`, `IHAVE`, `IWANT`) and their respective message IDs. +Truncation is triggered if the count of messages or message IDs exceeds certain configured thresholds, ensuring that the system resources are not overwhelmed. +When the number of messages or message IDs exceeds the threshold, a random sample of messages or message IDs is selected, and the rest are discarded. + +### Message vs Message ID Truncation +In the context of GossipSub RPC inspection, there is a subtle distinction between the count of messages and the count of message IDs: + +1. **Count of Messages:** + - This refers to the number of control messages (like `GRAFT`, `PRUNE`, `IHAVE`, `IWANT`) that are part of the `ControlMessage` structure within an RPC message, i.e., size of the `Graft`, `Prune`, `Ihave`, and `Iwant` slice fields. + - Each control message type serves a different purpose in the GossipSub protocol (e.g., `GRAFT` for joining a mesh for a topic, `PRUNE` for leaving a mesh). + - When we talk about the "count of messages," we're referring to how many individual control messages of each type are included in the RPC. + - Truncation based on the count of messages ensures that the number of control messages of each type doesn't exceed a configured threshold, preventing overwhelming the receiving peer with too many control instructions at once. + +2. **Count of Message IDs:** + - This refers to the number of unique identifiers for actual published messages that are being referenced within control messages like `IHAVE` and `IWANT`. + - `IHAVE` messages contain IDs of messages that the sender has and is announcing to peers. `IWANT` messages contain IDs of messages that the sender wants from peers. + - Each _individual_ `IHAVE` or `IWANT` control message can reference multiple message IDs. The "count of message IDs" is the total number of such IDs contained within each `IHAVE` or `IWANT` control message. + - Truncation based on the count of message IDs ensures that each `IHAVE` or `IWANT` control message doesn't reference an excessively large number of messages. This prevents a scenario where a peer might be asked to process an overwhelming number of message requests at once, which could lead to resource exhaustion. + From 8f58e26e165f201267b7c1044ae49caaa88bd2c4 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Mon, 5 Feb 2024 12:42:01 -0800 Subject: [PATCH 05/13] adds graft and prune validation explanation --- network/p2p/inspector/README.MD | 41 ++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index 43e2e5046a8..564c40862e3 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -92,7 +92,7 @@ In the context of the Flow blockchain, RPC inspection is necessary for the follo 3. **Metrics and Monitoring**: The inspection process provides valuable insights into the network's health and performance. By monitoring the incoming RPC messages, the system can collect metrics and statistics about message propagation, topic membership, and other relevant network attributes. -## RPC Truncation +## RPC Truncation (Blocking) The Control Message Validation Inspector is responsible for truncating the size of incoming RPC messages to prevent excessive resource consumption. This is done by sampling the messages and reducing their size to a configurable threshold. The truncation process is entirely done in a blocking manner, i.e., it is performed at the entry point of the GossipSub through an injected interceptor, and the incoming RPC messages are modified before they are further processed by the GossipSub protocol. The truncation process is applied to different components of the RPC message, specifically the control message types (`GRAFT`, `PRUNE`, `IHAVE`, `IWANT`) and their respective message IDs. @@ -114,3 +114,42 @@ In the context of GossipSub RPC inspection, there is a subtle distinction betwee - Each _individual_ `IHAVE` or `IWANT` control message can reference multiple message IDs. The "count of message IDs" is the total number of such IDs contained within each `IHAVE` or `IWANT` control message. - Truncation based on the count of message IDs ensures that each `IHAVE` or `IWANT` control message doesn't reference an excessively large number of messages. This prevents a scenario where a peer might be asked to process an overwhelming number of message requests at once, which could lead to resource exhaustion. +## RPC Validation (Non-Blocking) +The Control Message Validation Inspector is also responsible for inspecting the truncated or original RPC messages for compliance with the Flow protocol semantics. +The inspection process is done post truncation and is entirely non-blocking, i.e., it does not prevent the further processing of the RPC messages by the GossipSub protocol. +In other words, the RPC messages are passed through after truncation for further processing by the GossipSub protocol, regardless of whether they pass the inspection or not. +At the same time, each incoming RPC message is queued for asynchronous inspection, and the results of the inspection are used for internal metrics, logging, and feedback to the GossipSub scoring system. +This means that even a non-compliant RPC message is allowed to proceed through the GossipSub protocol to the Flow node. However, based on the result of the asynchronous inspection, +the message may be scored negatively, and the sender may be penalized in the peer scoring system. Hence, its future messages may be de-prioritized or ignored by the GossipSub protocol. +This follows the principle that post truncation, as far as the RPC size is within the configured limits, a single (or few) non-compliant RPCs do not drastically affect the system's health, +hence, the RPCs are allowed to proceed for further processing. However, the sender's reputation and future message propagation are affected based on the inspection results. + +The queued RPCs are picked by a pool of worker threads, and the inspection is performed in parallel to the GossipSub protocol's processing of the RPC messages. +Each RPC message is inspected for the following attributes sequentially, and once a non-compliance is detected, the inspection process is terminated with a failure result. A failure result +will cause an _invalid control message notification_ (`p2p.InvCtrlMsgNotif`) to be sent to the `GossipSubAppSpecificScoreRegistry`, which will then be used for penalizing the sender in the peer scoring system. +The `GossipSubAppSpecificScoreRegistry` is a Flow-level component that decides on part of the individual peer's scoring based on their Flow-specific behavior. +It directly provides feedback to the GossipSub protocol for scoring the peers. + +The [order of inspections for a single RPC](https://github.com/onflow/flow-go/blob/master/network/p2p/inspector/validation/control_message_validation_inspector.go#L270-L323) is as follows: +1. `GRAFT`s validation: Each RPC contains one or more `GRAFT` messages. Each `GRAFT` message contains a topic ID indicating the mesh the peer wants to join. + The validation process involves iterating through each `GRAFT` message received in the (potentially truncated) RPC. + For each `GRAFT` message, the topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. + Topic validation might involve checking if the topic is known, if it's within the scope of the peer's interests or subscriptions, and if it aligns with the network's current configuration (e.g., checking against the active spork ID). + If the topic is cluster-prefixed, additional validations ensure that the topic is part of the active cluster IDs. + If (even one) topic ID is invalid or unrecognized, the `GRAFT` message is flagged as invalid, and the inspection process is terminated with a failure result. + In future we may relax this condition to allow for a certain number of invalid topics, but for now, a single invalid topic results in a failure. + The inspection process also system keeps track of the topics seen in the `GRAFT` messages of the same RPC. + If a topic is repeated (i.e., if there are duplicate topics in the `GRAFT` messages), this is usually a sign of a protocol violation or misbehavior. + The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result, i.e., + an invalid control message notification is sent to the `GossipSubAppSpecificScoreRegistry`. +2. `PRUNE`s validation: Similar to `GRAFT`s, each RPC contains one or more `PRUNE` messages. Each `PRUNE` message contains a topic ID indicating the mesh the peer wants to leave. + The validation process involves iterating through each `PRUNE` message received in the (potentially truncated) RPC. + For each `PRUNE` message, the topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. + Topic validation might involve checking if the topic is known, if it's within the scope of the peer's interests or subscriptions, and if it aligns with the network's current configuration (e.g., checking against the active spork ID). + If the topic is cluster-prefixed, additional validations ensure that the topic is part of the active cluster IDs. + If (even one) topic ID is invalid or unrecognized, the `PRUNE` message is flagged as invalid, and the inspection process is terminated with a failure result. + In future we may relax this condition to allow for a certain number of invalid topics, but for now, a single invalid topic results in a failure. + The inspection process also system keeps track of the topics seen in the `PRUNE` messages of the same RPC. + If a topic is repeated (i.e., if there are duplicate topics in the `PRUNE` messages), this is usually a sign of a protocol violation or misbehavior. + The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result, i.e., + an invalid control message notification is sent to the `GossipSubAppSpecificScoreRegistry`. From ff11cebb2f0393c6619f55039709c31b3d98f276 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Mon, 5 Feb 2024 13:01:16 -0800 Subject: [PATCH 06/13] adds ihave and iwant inspection explanation --- network/p2p/inspector/README.MD | 34 ++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index 564c40862e3..91b754c7063 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -130,7 +130,9 @@ will cause an _invalid control message notification_ (`p2p.InvCtrlMsgNotif`) to The `GossipSubAppSpecificScoreRegistry` is a Flow-level component that decides on part of the individual peer's scoring based on their Flow-specific behavior. It directly provides feedback to the GossipSub protocol for scoring the peers. -The [order of inspections for a single RPC](https://github.com/onflow/flow-go/blob/master/network/p2p/inspector/validation/control_message_validation_inspector.go#L270-L323) is as follows: +The [order of inspections for a single RPC](https://github.com/onflow/flow-go/blob/master/network/p2p/inspector/validation/control_message_validation_inspector.go#L270-L323) is as follows. Note that in the +descriptions below, when we say an RPC is flagged as invalid or the inspection process is terminated with a failure result, and an _invalid control message notification_ is sent to the `GossipSubAppSpecificScoreRegistry`, which +will then be used for penalizing the sender in the peer scoring system. 1. `GRAFT`s validation: Each RPC contains one or more `GRAFT` messages. Each `GRAFT` message contains a topic ID indicating the mesh the peer wants to join. The validation process involves iterating through each `GRAFT` message received in the (potentially truncated) RPC. For each `GRAFT` message, the topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. @@ -139,9 +141,8 @@ The [order of inspections for a single RPC](https://github.com/onflow/flow-go/bl If (even one) topic ID is invalid or unrecognized, the `GRAFT` message is flagged as invalid, and the inspection process is terminated with a failure result. In future we may relax this condition to allow for a certain number of invalid topics, but for now, a single invalid topic results in a failure. The inspection process also system keeps track of the topics seen in the `GRAFT` messages of the same RPC. - If a topic is repeated (i.e., if there are duplicate topics in the `GRAFT` messages), this is usually a sign of a protocol violation or misbehavior. - The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result, i.e., - an invalid control message notification is sent to the `GossipSubAppSpecificScoreRegistry`. + If a topic is repeated (i.e., if there are duplicate topics in the `GRAFT` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. + The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. 2. `PRUNE`s validation: Similar to `GRAFT`s, each RPC contains one or more `PRUNE` messages. Each `PRUNE` message contains a topic ID indicating the mesh the peer wants to leave. The validation process involves iterating through each `PRUNE` message received in the (potentially truncated) RPC. For each `PRUNE` message, the topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. @@ -150,6 +151,25 @@ The [order of inspections for a single RPC](https://github.com/onflow/flow-go/bl If (even one) topic ID is invalid or unrecognized, the `PRUNE` message is flagged as invalid, and the inspection process is terminated with a failure result. In future we may relax this condition to allow for a certain number of invalid topics, but for now, a single invalid topic results in a failure. The inspection process also system keeps track of the topics seen in the `PRUNE` messages of the same RPC. - If a topic is repeated (i.e., if there are duplicate topics in the `PRUNE` messages), this is usually a sign of a protocol violation or misbehavior. - The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result, i.e., - an invalid control message notification is sent to the `GossipSubAppSpecificScoreRegistry`. + If a topic is repeated (i.e., if there are duplicate topics in the `PRUNE` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. + The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. +3. `IWANT`s validation: Each RPC contains one or more `IWANT` messages. Each `IWANT` message contains a list of message IDs that the sender wants from the receiver as the result of an `IHAVE` message. + The validation process involves iterating through each `IWANT` message received in the (potentially truncated) RPC. + For each `IWANT` message, the message IDs are validated to ensure they correspond to a valid message ID that recently advertised by the sender in an `IHAVE` message. + We define an `IWANT` cache miss as the event of an `IWANT` message ID does not correspond to a valid recently advertised `IHAVE` message ID. + When number of `IWANT` cache misses exceeds a certain threshold, the `IWANT` message is flagged as invalid, and the inspection process is terminated with a failure result. + The inspection process also system keeps track of the message IDs seen in the `IWANT` messages of the same RPC. + If a message ID is repeated (i.e., if there are duplicate message IDs in the `IWANT` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. + The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. +4. `IHAVE`s validation: Each RPC contains one or more `IHAVE` messages. Each `IHAVE` message contains a list of message IDs that the sender has and is advertising to the receiver. + The validation process involves iterating through each `IHAVE` message received in the (potentially truncated) RPC. + Each `IHAVE` message is composed of a topic ID as well as the list of message IDs advertised for that topic. + Each topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. + Topic validation might involve checking if the topic is known, if it's within the scope of the peer's interests or subscriptions, and if it aligns with the network's current configuration (e.g., checking against the active spork ID). + If the topic is cluster-prefixed, additional validations ensure that the topic is part of the active cluster IDs. + If (even one) topic ID is invalid or unrecognized, the `IHAVE` message is flagged as invalid, and the inspection process is terminated with a failure result. + The inspection process also system keeps track of the topics seen in the `IHAVE` messages of the same RPC. When a topic is repeated (i.e., if there are duplicate topics in the `IHAVE` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. + The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. + The message IDs advertised in the `IHAVE` messages are also validated ensure there are no duplicates. When a message ID is repeated (i.e., if there are duplicate message IDs in the `IHAVE` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. + The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. + From b7751d526178d542d7bf8172039e308673ee2d83 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Tue, 6 Feb 2024 17:14:38 -0800 Subject: [PATCH 07/13] adds publish message inspection --- network/p2p/inspector/README.MD | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index 91b754c7063..38c1335052b 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -133,7 +133,7 @@ It directly provides feedback to the GossipSub protocol for scoring the peers. The [order of inspections for a single RPC](https://github.com/onflow/flow-go/blob/master/network/p2p/inspector/validation/control_message_validation_inspector.go#L270-L323) is as follows. Note that in the descriptions below, when we say an RPC is flagged as invalid or the inspection process is terminated with a failure result, and an _invalid control message notification_ is sent to the `GossipSubAppSpecificScoreRegistry`, which will then be used for penalizing the sender in the peer scoring system. -1. `GRAFT`s validation: Each RPC contains one or more `GRAFT` messages. Each `GRAFT` message contains a topic ID indicating the mesh the peer wants to join. +1. `GRAFT` messages validation: Each RPC contains one or more `GRAFT` messages. Each `GRAFT` message contains a topic ID indicating the mesh the peer wants to join. The validation process involves iterating through each `GRAFT` message received in the (potentially truncated) RPC. For each `GRAFT` message, the topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. Topic validation might involve checking if the topic is known, if it's within the scope of the peer's interests or subscriptions, and if it aligns with the network's current configuration (e.g., checking against the active spork ID). @@ -143,7 +143,7 @@ will then be used for penalizing the sender in the peer scoring system. The inspection process also system keeps track of the topics seen in the `GRAFT` messages of the same RPC. If a topic is repeated (i.e., if there are duplicate topics in the `GRAFT` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. -2. `PRUNE`s validation: Similar to `GRAFT`s, each RPC contains one or more `PRUNE` messages. Each `PRUNE` message contains a topic ID indicating the mesh the peer wants to leave. +2. `PRUNE` messages validation: Similar to `GRAFT`s, each RPC contains one or more `PRUNE` messages. Each `PRUNE` message contains a topic ID indicating the mesh the peer wants to leave. The validation process involves iterating through each `PRUNE` message received in the (potentially truncated) RPC. For each `PRUNE` message, the topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. Topic validation might involve checking if the topic is known, if it's within the scope of the peer's interests or subscriptions, and if it aligns with the network's current configuration (e.g., checking against the active spork ID). @@ -153,7 +153,7 @@ will then be used for penalizing the sender in the peer scoring system. The inspection process also system keeps track of the topics seen in the `PRUNE` messages of the same RPC. If a topic is repeated (i.e., if there are duplicate topics in the `PRUNE` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. -3. `IWANT`s validation: Each RPC contains one or more `IWANT` messages. Each `IWANT` message contains a list of message IDs that the sender wants from the receiver as the result of an `IHAVE` message. +3. `IWANT` messages validation: Each RPC contains one or more `IWANT` messages. Each `IWANT` message contains a list of message IDs that the sender wants from the receiver as the result of an `IHAVE` message. The validation process involves iterating through each `IWANT` message received in the (potentially truncated) RPC. For each `IWANT` message, the message IDs are validated to ensure they correspond to a valid message ID that recently advertised by the sender in an `IHAVE` message. We define an `IWANT` cache miss as the event of an `IWANT` message ID does not correspond to a valid recently advertised `IHAVE` message ID. @@ -161,7 +161,7 @@ will then be used for penalizing the sender in the peer scoring system. The inspection process also system keeps track of the message IDs seen in the `IWANT` messages of the same RPC. If a message ID is repeated (i.e., if there are duplicate message IDs in the `IWANT` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. -4. `IHAVE`s validation: Each RPC contains one or more `IHAVE` messages. Each `IHAVE` message contains a list of message IDs that the sender has and is advertising to the receiver. +4. `IHAVE` messages validation: Each RPC contains one or more `IHAVE` messages. Each `IHAVE` message contains a list of message IDs that the sender has and is advertising to the receiver. The validation process involves iterating through each `IHAVE` message received in the (potentially truncated) RPC. Each `IHAVE` message is composed of a topic ID as well as the list of message IDs advertised for that topic. Each topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. @@ -172,4 +172,15 @@ will then be used for penalizing the sender in the peer scoring system. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. The message IDs advertised in the `IHAVE` messages are also validated ensure there are no duplicates. When a message ID is repeated (i.e., if there are duplicate message IDs in the `IHAVE` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. - +5. `Publish` messages validation: Each RPC contains a list of `Publish` messages that are intended to be gossiped to the network. + The validation process involves iterating through each `Publish` message received in the (potentially truncated) RPC. + The validation of each `Publish` message involves several steps: (1) whether the sender is a valid (staked) Flow node, + (2) whether the topic ID is a valid based on the Flow protocol semantics, and (3) whether the local peer has a valid subscription to the topic. + Failure in any of these steps results in a validation error for the `Publish` message. + However, validation error for a single `Publish` message does not cause inspection process to terminate with a failure result for the entire RPC. + Rather the inspection process continues to validate the rest of the `Publish` messages in the sampled RPC. + Once the entire sampled RPC is validated, the inspection process is terminated with a success if the number of validation errors is within a certain threshold. + Otherwise, when the number of validation errors exceeds the threshold, the inspection process is terminated with a failure result, which + will cause an _invalid control message notification_ to be sent to the `GossipSubAppSpecificScoreRegistry`, which will then be used for penalizing the sender in the peer scoring system. + As this is the last step in the inspection process, when an RPC reaches this step, it means that the RPC has passed all the previous inspections and is only being validated for the `Publish` messages. + Hence, result of this step is used to determine the final result of the inspection process. \ No newline at end of file From f67369e42b78ce46722b146715861bf036be1fbd Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Tue, 6 Feb 2024 17:19:19 -0800 Subject: [PATCH 08/13] adds sampling description for publish --- network/p2p/inspector/README.MD | 2 ++ 1 file changed, 2 insertions(+) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index 38c1335052b..c934894ca8c 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -174,6 +174,8 @@ will then be used for penalizing the sender in the peer scoring system. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. 5. `Publish` messages validation: Each RPC contains a list of `Publish` messages that are intended to be gossiped to the network. The validation process involves iterating through each `Publish` message received in the (potentially truncated) RPC. + To validate the `Publish` messages of an RPC, the inspector samples a subset of the `Publish` messages and validates them for compliance with the Flow protocol semantics. + This is done to avoid adding excessive computational overhead to the inspection process, as the number of `Publish` messages in an RPC can be large, and validating each message can be resource-intensive. The validation of each `Publish` message involves several steps: (1) whether the sender is a valid (staked) Flow node, (2) whether the topic ID is a valid based on the Flow protocol semantics, and (3) whether the local peer has a valid subscription to the topic. Failure in any of these steps results in a validation error for the `Publish` message. From 0e3c7b7ff1dff05f1411eefeee17b5c10d37d3c3 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Tue, 6 Feb 2024 17:25:05 -0800 Subject: [PATCH 09/13] adds sampling description for the rest --- network/p2p/inspector/README.MD | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index c934894ca8c..88d78c451bc 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -143,6 +143,8 @@ will then be used for penalizing the sender in the peer scoring system. The inspection process also system keeps track of the topics seen in the `GRAFT` messages of the same RPC. If a topic is repeated (i.e., if there are duplicate topics in the `GRAFT` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. + Note that all `GRAFT` messages on the same (potentially truncated) RPC are validated together, without any sampling, as the number of `GRAFT` messages is usually assumed small, and validating + them is not assumed to be resource-intensive. 2. `PRUNE` messages validation: Similar to `GRAFT`s, each RPC contains one or more `PRUNE` messages. Each `PRUNE` message contains a topic ID indicating the mesh the peer wants to leave. The validation process involves iterating through each `PRUNE` message received in the (potentially truncated) RPC. For each `PRUNE` message, the topic ID is validated to ensure it corresponds to a valid and recognized topic within the Flow-network. @@ -153,6 +155,8 @@ will then be used for penalizing the sender in the peer scoring system. The inspection process also system keeps track of the topics seen in the `PRUNE` messages of the same RPC. If a topic is repeated (i.e., if there are duplicate topics in the `PRUNE` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. + Note that all `PRUNE` messages on the same (potentially truncated) RPC are validated together, without any sampling, as the number of `PRUNE` messages is usually assumed small, and validating + them is not assumed to be resource-intensive. 3. `IWANT` messages validation: Each RPC contains one or more `IWANT` messages. Each `IWANT` message contains a list of message IDs that the sender wants from the receiver as the result of an `IHAVE` message. The validation process involves iterating through each `IWANT` message received in the (potentially truncated) RPC. For each `IWANT` message, the message IDs are validated to ensure they correspond to a valid message ID that recently advertised by the sender in an `IHAVE` message. @@ -161,6 +165,8 @@ will then be used for penalizing the sender in the peer scoring system. The inspection process also system keeps track of the message IDs seen in the `IWANT` messages of the same RPC. If a message ID is repeated (i.e., if there are duplicate message IDs in the `IWANT` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. + Note that all `IWANT` messages on the same (potentially truncated) RPC are validated together, without any sampling, as the number of `IWANT` messages is usually assumed small, and validating + them is not assumed to be resource-intensive. 4. `IHAVE` messages validation: Each RPC contains one or more `IHAVE` messages. Each `IHAVE` message contains a list of message IDs that the sender has and is advertising to the receiver. The validation process involves iterating through each `IHAVE` message received in the (potentially truncated) RPC. Each `IHAVE` message is composed of a topic ID as well as the list of message IDs advertised for that topic. @@ -172,7 +178,9 @@ will then be used for penalizing the sender in the peer scoring system. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. The message IDs advertised in the `IHAVE` messages are also validated ensure there are no duplicates. When a message ID is repeated (i.e., if there are duplicate message IDs in the `IHAVE` messages of the same RPC), this is usually a sign of a protocol violation or misbehavior. The validation process counts these duplicates and, if the number exceeds a certain threshold, it flags RPC message as invalid and terminates the inspection process with a failure result. -5. `Publish` messages validation: Each RPC contains a list of `Publish` messages that are intended to be gossiped to the network. + Note that all `IHAVE` messages on the same (potentially truncated) RPC are validated together, without any sampling, as the number of `IHAVE` messages is usually assumed small, and validating + them is not assumed to be resource-intensive. +5. `Publish` messages validation: Each RPC contains a list of `Publish` messages that are intended to be gossiped to the network. The validation process involves iterating through each `Publish` message received in the (potentially truncated) RPC. To validate the `Publish` messages of an RPC, the inspector samples a subset of the `Publish` messages and validates them for compliance with the Flow protocol semantics. This is done to avoid adding excessive computational overhead to the inspection process, as the number of `Publish` messages in an RPC can be large, and validating each message can be resource-intensive. From 6546eff8380e1bc0f4cf8bd81a1876296d1e8a88 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Tue, 6 Feb 2024 17:25:47 -0800 Subject: [PATCH 10/13] adds aka inspection validation --- network/p2p/inspector/README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index 88d78c451bc..a397b8c731e 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -7,7 +7,7 @@ All incoming RPC messages are passed through this inspection to ensure their val The inspector performs two primary functions: 1. **RPC truncation (blocking)**: It truncates size of incoming RPC messages to prevent excessive resource consumption, if needed. This is done by sampling the messages and reducing their size to a configurable threshold. -2. **RPC inspection (non-blocking)**: It inspects the truncated or original RPC messages for compliance with the Flow protocol semantics. This includes validation of message structure, topic, sender, and other relevant attributes. +2. **RPC inspection (aka validation) (non-blocking)**: It inspects (aka validates) the truncated or original RPC messages for compliance with the Flow protocol semantics. This includes validation of message structure, topic, sender, and other relevant attributes. ## What is an RPC? RPC stands for Remote Procedure Call. In the context of GossipSub, it is a message that is sent from one peer to another peer over the GossipSub protocol. From 1102e27e489da700bf975147d5af3a04b490d0f4 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Wed, 7 Feb 2024 12:23:27 -0800 Subject: [PATCH 11/13] adds diagram --- .../p2p/inspector/rpc-inspection-process.png | Bin 0 -> 244234 bytes network/p2p/libp2pNode.go | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 network/p2p/inspector/rpc-inspection-process.png diff --git a/network/p2p/inspector/rpc-inspection-process.png b/network/p2p/inspector/rpc-inspection-process.png new file mode 100644 index 0000000000000000000000000000000000000000..eac93e112c20c5b0ddf97851ef0e7d974cd60d1f GIT binary patch literal 244234 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

d^2DJ8R)Z(b(gZ=+PS$^507+L zL)q(-hi6qxvJ>YEg`C*Cjy8(&yVC4Q|3UER!ymU^{&C}u#J_(0h*f>p`%05w_VU}A zvfueCm%^YUX)WoaCb3aHBhje@U7kqoM%!lWNk68@jV*$dDsH+tva8(ae70NJorCjO zii70TG1upFCAq`{$|q%U_LW-fZa(a#JCz&8ox^c*{W>%T9UJ5c8#J=}!?4x!D&81^_kVP+Ns$Xo7Dm$RXvaXBD`gGX2 zfY7o0Oqyo{47KZ~9;eE1S8X^Li}}@O1IMs#9n`2pDQ5%Fyb1AAC5ty@DdkNb@>>jcOyZ#-~CSJbDts)adIBg6#k-k$U4t!Zjz|7C1~WWx#ak znJALJ;I0ToJwKi9Yu}ZzTV6V6^7EZ*2*J#+EeFEUkLy6&F-;#YQo}7e02#Wb)MZ|u zGuQ)dL7Is`e5R^;k*LRqU*} z)Fx74czi}UUOXPzRzOm*(jII@$CA78wuzmXh+#Z{&%2ImZHp6m zzlFs!FdC2|tFuxDxg%x`>{Iq(rL&2Kw<*ZnH1~33iz-7Nk)RwItk@z+EguT^Xc8e9 zBRI%66;;J&_u@4N9tytHyE$$CX0W}pkFm;*wn?XTr{JBjzURcnF9PCE&6ZppWKv^e zFekNBODBEfsla^ossmWIYSm|G$dbVXlSYfdewbXpW}{+mrRA5+4<3u)?3~TI^Cb}@ zzulV@#@){ye#u8V;){eF=D^Za$Ld*M+GFKIeRv1S6dPryv#wP8IPTm^Wqjirx1%tn zd3U?>Pu-yIz=pLe#oRai!+=+}R6@0%s)&OVYJth3Ch38r6gSljJxY5oA~^3==JUE> zFIPxhM$eF|JCY?~(1oam&shP!l(G8kDaqeXBnQeKYa%n9mvjP|EeT)o$G$>5n|Dg1 zX!1&)qZ0@D9sy~pX0j(I?Fz5-p^{E5e0tE4PdODMNkYsm@d|fk*?K0OS|oZVgYDsp z_M@19$Y+mvMUZ3p+?Kwk$f<}d_TYwXlKcpxv?7NuOsvQ-P~gHD=oK*_S3XH?16$bO z`^9JVi_6ul&EQ%8(@BhTpb}*3vVUAdK4b=@HP#=8joIy#2fQ@!sc@P0kFQdl3XwC> z|AZ7JfT?<_MN&T9C1=xk?`V}RNlOCTEd7${0~IR!;tpQkHHekc&@p$s%wZy`_R$hq zvZAP#CQ&gB$j>(EuQ9Ckw+lgB7Lq*k-pQs=U2K8@OTJt*pQ^sU3neeKZOA+=%%n0` zx+&(Bl1Finvzi!kRu5Ppa zNduF8IBBM%A!#;v33hVci!9A|!;R*@-QA5lXI2E2wV`bxO7T9VZgM?;KgWtIBaB;% z;_Ej%3Jp$8o;JZkD6J0<@Pw|^64N~F_6!RllWRcR_PJ4bo0L9&TkVI;~i!Q zxx?X>xIy}*%LH=G_vsUkFH1|QjX5fU)?8^;m*YC zH*V`aPsYOT7`aE%WUmN}%H)rU9C|n{bUZC|6?JOaFVe_3r4;5J+$zcy&Z;0gS@HuL zBw$t}E-T@&He(Ua=X`}ox?`6-ZrcpWY!c(;}QTTGej*uA9nesrK8jvG_ zvk`ws=d)*f)ZX!meuu`aVmN=QO~1m7#LcD=DH;RToyLHxo&2!|S8($A*+7cl0dHjA zw*^mKssjF9XD@aN6FpWHetjw%jab1BsD6M*(z4yGYZO&jn)edu?de^UI%htU=9SQlZmeia*F!#Np%0DP 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 z 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 literal 0 HcmV?d00001 diff --git a/network/p2p/libp2pNode.go b/network/p2p/libp2pNode.go index aa4b1a3a408..e38342aacb7 100644 --- a/network/p2p/libp2pNode.go +++ b/network/p2p/libp2pNode.go @@ -87,7 +87,7 @@ type Routable interface { // UnicastManagement abstracts the unicast management capabilities of the node. type UnicastManagement interface { - // OpenProtectedStream opens a new stream to a peer with a protection tag. The protection tag can be used to ensure + // OpenAndWriteOnStream opens a new stream to a peer with a protection tag. The protection tag can be used to ensure // that the connection to the peer is maintained for a particular purpose. The stream is opened to the given peerID // and writingLogic is executed on the stream. The created stream does not need to be reused and can be inexpensively // created for each send. Moreover, the stream creation does not incur a round-trip time as the stream negotiation happens From 569f1d9c143e3fa2784b6595ba29bb4988c08ec8 Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Wed, 7 Feb 2024 12:30:13 -0800 Subject: [PATCH 12/13] adds explanation to the diagram --- network/p2p/inspector/README.MD | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/network/p2p/inspector/README.MD b/network/p2p/inspector/README.MD index a397b8c731e..df09b36d3e8 100644 --- a/network/p2p/inspector/README.MD +++ b/network/p2p/inspector/README.MD @@ -9,6 +9,18 @@ The inspector performs two primary functions: 1. **RPC truncation (blocking)**: It truncates size of incoming RPC messages to prevent excessive resource consumption, if needed. This is done by sampling the messages and reducing their size to a configurable threshold. 2. **RPC inspection (aka validation) (non-blocking)**: It inspects (aka validates) the truncated or original RPC messages for compliance with the Flow protocol semantics. This includes validation of message structure, topic, sender, and other relevant attributes. +Figure below shows the high-level overview of the Control Message Validation Inspector and its interaction with the GossipSub protocol and the Flow node. +The blue box represents the GossipSub protocol, which is responsible for handling the pub-sub messaging system and is an external dependency of the Flow node. +The green boxes represent various components of the Flow node's networking layer that are involved in the inspection and processing of incoming RPC messages. +The steps that are marked with an asterisk (*) are performed concurrently, while the rest are performed sequentially. +As shown in this figure, an incoming RPC message is passed by GossipSub to the Control Message Validation Inspector, which then performs the blocking truncation process and queues the RPC for asynchronous non-blocking inspection processes. +As soon as the RPC is queued for inspection, it is also passed to the GossipSub protocol for further processing. The results of the inspection are used for internal metrics, logging, and feedback to the GossipSub scoring system. +Once the GossipSub processes the RPC it passes the message to the libp2p node component of the networking layer of the Flow node, which then processes the message and sends it to the rest of the Flow node for further processing. +Note that the validation process is non-blocking, hence even a malformed RPC is allowed to proceed through the GossipSub protocol to the Flow node. +However, based on the result of the asynchronous inspection, the message may be scored negatively, and the sender may be penalized in the peer scoring system. +The rationale behind this is that post truncation, as far as the RPC size is within the configured limits, a single (or few) non-compliant RPCs do not drastically affect the system's health, hence, the RPCs are allowed to proceed for further processing. +What matters is the persistent behavior of the sender, and the sender's reputation and future message propagation are _eventually_ affected based on the inspection results. +![rpc-inspection-process.png](rpc-inspection-process.png) ## What is an RPC? RPC stands for Remote Procedure Call. In the context of GossipSub, it is a message that is sent from one peer to another peer over the GossipSub protocol. The message is sent in the form of a protobuf message and is used to communicate information about the state of the network, such as topic membership, message propagation, and other relevant information. From a2a384afef3ffeb592b52679a19ea19302484fca Mon Sep 17 00:00:00 2001 From: Yahya Hassanzadeh Date: Wed, 7 Feb 2024 12:36:00 -0800 Subject: [PATCH 13/13] adds directory of readmes for networking layer --- network/README.MD | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 network/README.MD diff --git a/network/README.MD b/network/README.MD new file mode 100644 index 00000000000..706a7655a6b --- /dev/null +++ b/network/README.MD @@ -0,0 +1,13 @@ + +# Networking Layer + +## Configuration +- [Resource Management](..%2Fconfig%2Fdocs%2FresourceManager.MD) + +## Protocols +- [Unicast (1:1 connections)](p2p%2Funicast%2FREADME.MD) + +## Security Protections +- [Application Layer Spam Prevention (ALSP)](alsp%2Freadme.md) +- [GossipSub Peer Scoring](p2p%2Fscoring%2FREADME.md) +- [GossipSub RPC Inspection](p2p%2Finspector%2FREADME.MD) \ No newline at end of file