Stop dumping match count before update, users can get it if they want
[flowspec-xdp] / README.md
index b788661d452fd51ce6a2de1c78e4b5f6fefd831d..9ed1c187174ece2125df9b5d5cf5c742b261988d 100644 (file)
--- a/README.md
+++ b/README.md
@@ -4,7 +4,22 @@ FlowSpec -> XDP Conversion Utility
 This utility allows you to convert flowspec rules (extracted from a local BIRD instance with birdc)
 to an XDP program. It currently supports the entire flowspec match grammar, rate limits, traffic
 action packet match counting (sample bit) and terminal bit, and traffic marking. The redirect
-community is not supported
+community is not supported.
+
+Note that correctly sorting rules is *not* fully implemented as it requires implementing the
+flowspec wire serialization format and it may better be done inside bird/birdc. Thus, be vary
+careful using the terminal bit in the traffict action community.
+
+In addition to the communities specified in RFC 8955, two additional communities are supported which
+provide rate-limiting on a per-source basis. When the upper two bytes in an extended community are
+0x8306 (rate in bytes) or 0x830c (rate in packets), we rate limit the same as 0x8006 or 0x800c
+except that the rate limit is applied per source address. The encoding mirrors the non-per-source
+encoding in that the last 4 octets are the floating-point rate limit. Instead of a 2 octet
+AS/ignored value, the third octet is the maximum number of source IPs tracked (plus one, times 4096)
+and the fourth octet is a prefix length mask, which is applied to the source IP before rate-limiting.
+
+See `collision_prob.py` for collision probabilities in the hash table to estimate the size you
+should use.
 
 `install.sh` provides a simple example script which will compile and install a generated XDP program
 from the rules in bird's `flowspec4` and `flowspec6` routing tables. It will drop any packets which