Se en filial komma tillbaka efter ett länkfel och gatewayen ser något som aldrig dyker upp en vanlig dag: dussintals bärbara datorer anländer samtidigt från en enda offentlig adress. Var och en är en legitim enhet och var och en startar ett IKE-utbyte som ännu inte är klart. Om den vågen lyckas beror på gränser som inte har något att göra med hur många anställda servern kan bära. Vågen är kort, och det är just den arbetsbelastning som antagningsvägen byggdes för att klara.

Följ en bärbar dator tillbaka in i nätet

Klienten skickar en första förfrågan och väntar, och tills utbytet är klart håller gatewayen antagningstillstånd för det försöket. Andra enheter bakom samma adress anländer medan den första fortfarande väntar, och de ställer sig i kö bakom en gräns som räknar adresser i stället för användare. Utifrån är symptomet en handfull användare som ansluter och en större grupp som får timeout.

Ingenting i den sekvensen är ett fel. Det är antagningsvägen som gör det den konfigurerades för.

Räkna halvöppet arbete som en egen resurs

strongSwan skiljer två populationer: associationer som är fullt etablerade, och försök som fortfarande ansluter eller väntar på behandling. Blockeringströskeln gäller halvöppna associationer som hänförs till en peer-adress, och cookie-trösklarna gäller globalt och per adress. Dessa räknare skyddar daemonen från att förbrukas av oautentiserat arbete, vilket är precis formen på en återanslutningsstorm. Inget av det tillståndet syns i en lista över etablerade tunnlar.

Att läsa dem som ett tak för anställdas sessioner är felet som leder till att höja allt på en gång. En server som bär fyrahundra etablerade tunnlar kan inte automatiskt absorbera fyrahundra samtidiga första paket, eftersom de två kostnaderna landar på olika ställen.

Autentiseringsfördröjningen avgör hur länge varje försök stannar i antalet halvöppna. En backend som svarar långsamt förvandlar en kort våg till en lång kö även när ankomsttakten är blygsam.

swanctl --stats
swanctl --list-sas | grep -c ESTABLISHED

Läs antagningsinställningarna innan du ändrar dem

Hitta de värden som den körande daemonen faktiskt laddade innan du bildar dig en uppfattning om dem. Konfigurationen är ofta uppdelad mellan en huvudfil och en katalog med utdrag per plugin, så ett värde du sätter på ett ställe kan skrivas över på ett annat. Sökningen nedan visar varje fil som nämner dessa inställningar.

Bestäm sedan vilket tal som är för litet. Om en adress legitimt representerar ett helt kontor är blockeringströskeln per adress det värde som måste rymma den koncentrationen. En global cookie-tröskel skyddar daemonen mot en bredare flod och bör inte luckras upp för att en plats återansluter. Jämför det värdet per adress med den största plats du faktiskt har.

Håll cookie-mekanismen aktiverad. Cookies får en klient att bevisa att den kan ta emot på den adress den hävdar innan daemonen lägger verkligt arbete på utbytet, och att stänga av dem är inte en neutral kapacitetsuppgradering. Höj en tröskel bara med en uppmätt ankomsttakt och en deklarerad autentiseringsbudget bakom.

grep -rn -E 'block_threshold|cookie_threshold' /etc/strongswan.conf /etc/strongswan.d/
swanctl --stats | grep -i half

Planera för återkomsten, inte bara för det stabila tillståndet

Ett tillgänglighetsmål som bara räknar etablerade sessioner beskriver en lugn eftermiddag, inte en återhämtning. Fråga i stället hur den avsedda populationen kommer tillbaka efter en delad nätverkshändelse, och om antagningsvägen kan absorbera den formen.

Att sprida återanslutningen över en hanterad flotta är ofta billigare än att utöka gränserna, eftersom det tar bort den konstgjorda vågen i stället för att betala för den permanent. Övervaka halvöppet tillstånd och antagningshändelser vid sidan av lyckade etableringar, och behandla ett stigande antal halvöppna med platta framgångar som en tidig varning snarare än en kuriositet.

Leverantörens referens för dessa inställningar är dokumentationen för strongswan.conf, som namnger räknarna och utgåvan som införde cookie-tröskeln per adress. Läs avsnittet för din installerade version i stället för den nyaste sidan, eftersom standardvärden flyttar sig mellan utgåvor.

Relaterade artiklar