બે લેબલ એવી રીતે વપરાય છે જાણે તે એક જ વસ્તુ હોય: હાર્ડવેર-એક્સલરેટેડ અને કર્નેલ-ઓફલોડેડ. એક વર્ણવે છે કે લાઇબ્રેરીની AES રૂટિન કઈ સૂચનાઓ ચલાવે છે, અને બીજું વર્ણવે છે કે પેકેટ પ્રોસેસિંગ ક્યાં થાય છે. VPN પાસે પ્રથમ હોઈ શકે બીજા વગર, બીજું પ્રથમ વગર, અથવા બંને સાથે. પ્રદર્શન વિશેનો કોઈપણ નિર્ણય એ નામ આપવાથી શરૂ થવો જોઈએ કે તમે ખરેખર બેમાંથી કયું બદલી રહ્યા છો.

બે અક્ષ, એક સ્કોર નહીં

પ્રથમ અક્ષ અમલીકરણ છે: AES-256-GCM કરતો કોડ પ્રોસેસરની સમર્પિત સૂચનાઓ વાપરતી આવૃત્તિ તરફ જાય છે કે સામાન્ય ગણિત તરીકે ચલાવતી પોર્ટેબલ રૂટિન તરફ. એ પસંદગી ક્રિપ્ટોગ્રાફિક લાઇબ્રેરીની અંદર રહે છે અને તે શરૂ થાય ત્યારે લેવાય છે.

બીજી અક્ષ સ્થાન છે: પેકેટ કર્નેલના રૂપાંતરણ માર્ગમાંથી પસાર થાય છે, અથવા યુઝર-સ્પેસનો ડિમન ટનલ ઉપકરણમાંથી વાંચે છે, એન્ક્રિપ્ટ કરે છે અને પાછું લખે છે.

કોઈ પણ અક્ષ બીજીને મર્યાદિત કરતી નથી. AES સૂચનાઓ ધરાવતા CPU પર યુઝર-સ્પેસ VPN તેમને આખો સમય વાપરી શકે છે, અને તેમના વગરના CPU પર કર્નેલ માર્ગ સોફ્ટવેર અમલીકરણ પર પાછો ફરે છે. વેન્ડર સામગ્રીમાં લેબલ આ તફાવત ભાગ્યે જ દર્શાવે છે, તેથી બે પરિસ્થિતિઓ વચ્ચે નકલ કરાયેલી ટ્યુનિંગ સલાહ ઘણી વાર કંઈ કરતી નથી.

અક્ષ એક: એન્ક્રિપ્શન કયો કોડ કરે છે

OpenSSL શરૂઆત દરમિયાન પ્રોસેસરની વિશેષતાઓ શોધે છે અને પરિણામનો ઉપયોગ ઑપ્ટિમાઇઝ્ડ કોડ માર્ગ પસંદ કરવા માટે કરે છે, જેમ x86 ક્ષમતાઓનું દસ્તાવેજ વર્ણવે છે. AES-NI એ તે ડિસ્પેચ પાછળની દસ્તાવેજી ક્ષમતાઓમાંથી એક છે. આમાંથી કંઈ પણ લાઇબ્રેરીને કર્નેલ ઘટક બનવાની જરૂર મૂકતું નથી.

ઝડપી માર્ગ વપરાય છે એમ ધારવા પહેલાં ખાતરી કરો કે વિશેષતા પ્રોસેસને દેખાય છે. Linux પર સ્રોત /proc/cpuinfo નું flags ક્ષેત્ર છે, અને ગેસ્ટની અંદર તે હાઇપરવાઇઝર જે ખુલ્લું કરે છે તે દર્શાવે છે, ભૌતિક હોસ્ટનું મોડેલ નામ નહીં.

grep -m1 '^flags' /proc/cpuinfo | grep -o '\baes\b'
openssl list -providers -verbose

બીજો આદેશ તે બિલ્ડમાં લોડ થયેલા પ્રોવાઇડર્સના નામ આપે છે. તે તમને કહેતું નથી કે VPN સેવાએ કઈ લાઇબ્રેરી લિંક કરી છે, અને એક હોસ્ટ બે OpenSSL ઇન્સ્ટોલેશન રાખી શકે છે જ્યારે ચાલતી પ્રક્રિયા તેમાંથી માત્ર એક જ વાપરે છે.

અક્ષ બે: પેકેટ માર્ગ ક્યાં ચાલે છે

કર્નેલમાં સ્થાન એટલે રૂપાંતરણ કર્નેલની પોતાની IPsec મશીનરીમાં અથવા કર્નેલની અંદરના ટનલ ડ્રાઇવરમાં થાય છે, તેથી પેકેટને દરેક બેચ માટે યુઝર-સ્પેસ પ્રક્રિયા દ્વારા આવ-જા કરવાની જરૂર નથી. તે નકલો અને સંદર્ભ ફેરબદલ ઘટાડી શકે છે, અને એક-થ્રેડ ડિમન જે કરી શકતું નથી તે રીતે કામને કોરોમાં ફેલાવી શકે છે. તે કાઉન્ટર અને ટ્રેસ પણ ખસેડે છે જે તમે થ્રુપુટ ઘટે ત્યારે વાંચશો, કારણ કે કામ હવે એ સીમાની બીજી બાજુ થાય છે જે તમે નિયંત્રિત કરતા નથી. તેને ડિબગિંગ ખર્ચ ગણો, ફક્ત પ્રદર્શન નિર્ણય નહીં.

તે સૂચના સપોર્ટ બનાવતું નથી, સાઇફર ગોઠવતું નથી અને હાલનો માર્ગ કામ કરતો નથી.

વર્ચ્યુઅલાઇઝેશન આ અક્ષ પર પણ એક ગડી ઉમેરે છે. ગેસ્ટને એવું માસ્ક કરેલું CPU મોડેલ મળી શકે છે જે હોસ્ટ પાસેની વિશેષતાઓ છુપાવે છે, અને નેસ્ટેડ ગેસ્ટ વધુ ઓછું જોઈ શકે છે. ક્ષમતાનું દૃશ્ય VPN ખરેખર જ્યાં ચાલે છે તે પર્યાવરણની અંદરથી વાંચો, હાઇપરવાઇઝર કન્સોલમાંથી નહીં.

દરેક પસંદગી શું ખરીદે છે, અને શું કરી શકતી નથી

વ્યવહારુ પ્રશ્ન એ છે કે સમય ક્યાં જાય છે. જો એક વ્યસ્ત થ્રેડ, વારંવાર બફર નકલો અથવા દરેક પેકેટ માટે સિસ્ટમ કૉલ થ્રુપુટ મર્યાદિત કરે, તો રૂપાંતરણને એ ખર્ચ દૂર કરતા માર્ગ પર ખસેડવાથી મદદ મળી શકે, જો કર્નેલ તમને જોઈતું રૂપાંતરણ અમલમાં મૂકે.

જો મર્યાદા ભીડવાળો અપલિંક, નુકસાનવાળો માર્ગ, લાંબો આવ-જા સમય, ભરાયેલી ગંતવ્ય સેવા અથવા એક કોર સાથે પિન થયેલો એક થ્રેડ હોય, તો સ્થાન કંઈ મહત્વનું બદલતું નથી. સૂચના પસંદગી માટે પણ એ જ લાગુ પડે છે: સમર્પિત હાર્ડવેર પર AES ખૂટતો માર્ગ સુધારી શકતું નથી અને જો નામ રિઝોલ્યુશન નિષ્ફળ જવાથી ટનલ નિષ્ક્રિય હોય તો મદદ કરશે નહીં.

જ્યાં બંને લાગુ પડે છે ત્યાં તે ભેગા થાય છે. કર્નેલ માર્ગ કર્નેલના ક્રિપ્ટો APIની અંદર એ જ સૂચના-સ્તરનું ડિસ્પેચ વાપરી શકે છે, અને સારી રીતે પસંદ કરાયેલી લાઇબ્રેરી સાથેનો યુઝર-સ્પેસ માર્ગ તેને પહેલેથી વાપરી રહ્યો છે. નિર્ણય એ નથી કે અમૂર્ત રીતે કયું ઝડપી છે; નિર્ણય એ છે કે કયા ખર્ચ માટે તમારી પાસે પુરાવો છે.

કંઈપણ બદલતા પહેલાં ચાર હકીકતો લખો

સેવાની બાઇનરી અને તે જે ક્રિપ્ટો લાઇબ્રેરી સાથે લિંક થયેલી છે તે લખો, કારણ કે તે અક્ષ એક નક્કી કરે છે. પછી સંમત થયેલું ડેટા સંરક્ષણ નોંધો, કારણ કે સમર્પિત સૂચના માર્ગ વગરનું સાઇફર તેના કરતાં અલગ વર્તે છે, અને સ્યુટ બંને પક્ષો પસંદ કરે છે.

ત્યારપછી, ચાલતા પર્યાવરણની અંદરથી ક્ષમતાનું દૃશ્ય, અને અંતે સક્રિય પેકેટ માર્ગ સાથે પુરાવો કે તમે સક્ષમ માનો છો તે મોડ ખરેખર એવો જ છે. લોડ થયેલું મોડ્યુલ એ પુરાવો નથી કે પ્રોફાઇલ તેને વાપરે છે, અને કન્ફિગરેશન લાઇન એ પુરાવો નથી કે કર્નેલે તેને સ્વીકારી.

એક વસ્તુ બદલો, પછી સમાન અંતિમ બિંદુઓ અને સમાન સ્થાનાંતરણ દિશા સાથે સુસંગત કાર્યભાર સાથે તુલના કરો. તમે માપ્યો ન હોય તેવો ઝડપનો દાવો એ નોંધ કરતાં ઓછું મૂલ્ય ધરાવે છે કે બેકએન્ડ ક્યારેય શંકામાં નહોતું.

સંબંધિત લેખો