/** * A2A Rate Limiter and DDoS Protection System * * Implements advanced rate limiting and DDoS protection: * - Token bucket algorithm with burst capacity * - Sliding window rate limiting * - Adaptive throttling based on system load * - Circuit breakers for fault isolation * - Geofencing and IP reputation scoring * - Behavioral analysis for anomaly detection * - Distributed rate limiting across nodes * - Auto-scaling thresholds and backpressure */ /// import { EventEmitter } from "events"; export interface RateLimitRule { ruleId: string; name: string; agentPattern: string | RegExp; limits: { requestsPerSecond: number; requestsPerMinute: number; requestsPerHour: number; requestsPerDay: number; burstCapacity: number; concurrentRequests: number; }; priority: number; enabled: boolean; exemptions?: string[]; conditions?: { timeWindows?: string[]; messageTypes?: string[]; capabilities?: string[]; }; } export interface CircuitBreakerConfig { failureThreshold: number; recoveryTimeout: number; halfOpenMaxRequests: number; monitoringWindow: number; autoRecovery: boolean; } export interface AdaptiveThrottlingConfig { enabled: boolean; cpuThreshold: number; memoryThreshold: number; responseTimeThreshold: number; backpressureMultiplier: number; recoveryRate: number; } export interface DDoSProtectionConfig { enabled: boolean; detectionWindow: number; anomalyThreshold: number; behaviorAnalysis: boolean; ipReputation: boolean; geofencing: { enabled: boolean; allowedRegions: string[]; blockedRegions: string[]; }; autoMitigation: { enabled: boolean; blockDuration: number; escalationLevels: number[]; }; } export interface RateLimitingConfig { defaultLimits: { requestsPerSecond: number; requestsPerMinute: number; requestsPerHour: number; requestsPerDay: number; burstCapacity: number; concurrentRequests: number; }; circuitBreaker: CircuitBreakerConfig; adaptiveThrottling: AdaptiveThrottlingConfig; ddosProtection: DDoSProtectionConfig; distributedMode: { enabled: boolean; syncInterval: number; consensusThreshold: number; }; monitoring: { metricsWindow: number; alertThresholds: { highUsage: number; rateLimitHit: number; ddosDetected: number; }; }; } export interface RateLimitState { agentId: string; tokens: number; lastRefill: number; requestCounts: { perSecond: number[]; perMinute: number[]; perHour: number[]; perDay: number[]; }; concurrentRequests: number; circuitState: "closed" | "open" | "half-open"; lastCircuitStateChange: number; reputationScore: number; behaviorProfile: BehaviorProfile; } export interface BehaviorProfile { requestPatterns: Map; timeDistribution: number[]; messageTypeDistribution: Map; averagePayloadSize: number; errorRate: number; suspiciousBehaviorCount: number; lastAnalysis: number; } export interface RateLimitResult { allowed: boolean; reason?: string; retryAfter?: number; tokensRemaining?: number; quotaResetTime?: number; circuitState?: string; adaptiveMultiplier?: number; } export interface SystemMetrics { cpuUsage: number; memoryUsage: number; averageResponseTime: number; activeConnections: number; requestRate: number; errorRate: number; timestamp: number; } export declare class A2ARateLimiter extends EventEmitter { private logger; private cache; private config; private rateLimitRules; private agentStates; private globalState; private circuitBreakers; private systemMetrics; private metricsHistory; private suspiciousIPs; private behaviorAnalyzer; private ipReputationService; private adaptiveMultiplier; private lastAdaptiveAdjustment; private processingMetrics; constructor(config?: Partial); /** * Initialize configuration with defaults */ private initializeConfig; /** * Initialize global rate limiting state */ private initializeGlobalState; /** * Initialize default rate limiting rules */ private initializeDefaultRules; /** * Initialize system monitoring */ private initializeSystemMonitoring; /** * Initialize DDoS protection components */ private initializeDDoSProtection; /** * Check if request is allowed under rate limits */ checkRateLimit(agentId: string, messageType?: string, payloadSize?: number, sourceIP?: string): Promise; /** * Release resources when request completes */ releaseRequest(agentId: string, success?: boolean): Promise; /** * Check DDoS protection measures */ private checkDDoSProtection; /** * Token bucket rate limiting check */ private checkTokenBucket; /** * Sliding window rate limiting check */ private checkSlidingWindows; /** * Concurrent request limiting check */ private checkConcurrentRequests; /** * Apply adaptive throttling based on system metrics */ private applyAdaptiveThrottling; /** * Helper methods */ private createAgentState; private findApplicableRule; private multiplyLimits; private updateRequestCounters; private updateBehaviorProfile; private trackFailure; private getOrCreateCircuitBreaker; private calculateQuotaResetTime; private getIPRegion; private collectSystemMetrics; private startMaintenanceTasks; private cleanupOldStates; private resetCounters; private syncWithDistributedNodes; /** * Public API methods */ addRule(rule: RateLimitRule): void; removeRule(ruleId: string): boolean; getRules(): RateLimitRule[]; getAgentState(agentId: string): RateLimitState | null; getSystemMetrics(): SystemMetrics; getProcessingMetrics(): { requestsProcessed: number; requestsBlocked: number; ddosAttacksDetected: number; circuitBreakersTripped: number; adaptiveAdjustments: number; averageProcessingTime: number; }; blockAgent(agentId: string, duration?: number): Promise; unblockAgent(agentId: string): Promise; } //# sourceMappingURL=a2a-rate-limiter.d.ts.map