OpenSSL ನಲ್ಲಿ AES-NI ಬನಾಮ್ ಕರ್ನಲ್ ಆಫ್ಲೋಡ್: ನಿಮಗೆ ಯಾವುದು ಬೇಕು?
CPU ಸೂಚನಾ ಬೆಂಬಲವನ್ನು ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಎಲ್ಲಿ ಸಂಸ್ಕರಿಸಲಾಗುತ್ತದೆ ಎಂಬುದರಿಂದ ಬೇರ್ಪಡಿಸಿ: ಟ್ಯೂನ್ ಮಾಡುವ ಮೊದಲು ಕ್ರಿಪ್ಟೋ ಬ್ಯಾಕೆಂಡ್, ಒಪ್ಪಿದ ಸೈಫರ್ ಮತ್ತು ಸಕ್ರಿಯ ಮಾರ್ಗವನ್ನು ಪರಿಶೀಲಿಸಿ.
ಎರಡು ಲೇಬಲ್ಗಳನ್ನು ಒಂದೇ ವಸ್ತುವಿನಂತೆ ಬಳಸಲಾಗುತ್ತದೆ: ಹಾರ್ಡ್ವೇರ್-ವೇಗವರ್ಧಿತ ಮತ್ತು ಕರ್ನಲ್ಗೆ ವರ್ಗಾಯಿಸಲಾದ. ಒಂದು ಗ್ರಂಥಾಲಯದ 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 ಒಳಗಿನ ಅದೇ ಸೂಚನಾ-ಮಟ್ಟದ ರವಾನೆಯನ್ನು ಬಳಸಬಹುದು, ಮತ್ತು ಚೆನ್ನಾಗಿ ಆಯ್ಕೆಮಾಡಿದ ಗ್ರಂಥಾಲಯವಿರುವ ಬಳಕೆದಾರ ಸ್ಥಳದ ಮಾರ್ಗವು ಅದನ್ನು ಈಗಾಗಲೇ ಬಳಸುತ್ತಿದೆ. ನಿರ್ಧಾರವು ಅಮೂರ್ತವಾಗಿ ಯಾವುದು ವೇಗವಲ್ಲ; ಯಾವ ವೆಚ್ಚಕ್ಕೆ ನಿಮ್ಮಲ್ಲಿ ಸಾಕ್ಷ್ಯವಿದೆ ಎಂಬುದು.
ಏನನ್ನಾದರೂ ಬದಲಿಸುವ ಮೊದಲು ನಾಲ್ಕು ಸಂಗತಿಗಳನ್ನು ಬರೆಯಿರಿ
ಸೇವೆಯ ಬೈನರಿ ಮತ್ತು ಅದು ಲಿಂಕ್ ಆಗಿರುವ ಕ್ರಿಪ್ಟೋ ಗ್ರಂಥಾಲಯವನ್ನು ಬರೆಯಿರಿ, ಏಕೆಂದರೆ ಅವು ಮೊದಲ ಅಕ್ಷವನ್ನು ನಿರ್ಧರಿಸುತ್ತವೆ. ನಂತರ ಒಪ್ಪಿದ ದತ್ತಾಂಶ ಸಂರಕ್ಷಣೆಯನ್ನು ದಾಖಲಿಸಿ, ಏಕೆಂದರೆ ಮೀಸಲು ಸೂಚನಾ ಮಾರ್ಗವಿಲ್ಲದ ಸೈಫರ್ ಅದನ್ನು ಹೊಂದಿರುವುದಕ್ಕಿಂತ ಬೇರೆ ರೀತಿ ವರ್ತಿಸುತ್ತದೆ, ಮತ್ತು ಸೂಟ್ ಅನ್ನು ಎರಡೂ ಪಕ್ಷಗಳು ಆಯ್ಕೆ ಮಾಡುತ್ತವೆ.
ನಂತರ, ಚಾಲನೆಯಲ್ಲಿರುವ ಪರಿಸರದ ಒಳಗಿನಿಂದ ಸಾಮರ್ಥ್ಯಗಳ ನೋಟ, ಮತ್ತು ಕೊನೆಯದಾಗಿ ಸಕ್ರಿಯ ಪ್ಯಾಕೆಟ್ ಮಾರ್ಗದೊಂದಿಗೆ ನೀವು ಸಕ್ರಿಯವೆಂದು ಭಾವಿಸುವ ಮೋಡ್ ನಿಜವಾಗಿಯೂ ಹಾಗಿದೆ ಎಂಬ ಸಾಕ್ಷ್ಯ. ಲೋಡ್ ಆದ ಮಾಡ್ಯೂಲ್ ಒಂದು ಪ್ರೊಫೈಲ್ ಅದನ್ನು ಬಳಸುತ್ತದೆ ಎಂಬ ಸಾಕ್ಷ್ಯವಲ್ಲ, ಮತ್ತು ಸಂರಚನಾ ಸಾಲು ಕರ್ನಲ್ ಅದನ್ನು ಸ್ವೀಕರಿಸಿದೆ ಎಂಬ ಸಾಕ್ಷ್ಯವಲ್ಲ.
ಒಂದು ವಿಷಯವನ್ನು ಬದಲಿಸಿ, ನಂತರ ಅದೇ ಅಂತ್ಯ ಬಿಂದುಗಳು ಮತ್ತು ಅದೇ ವರ್ಗಾವಣೆ ದಿಕ್ಕಿನ ಸ್ಥಿರ ಕೆಲಸದ ಹೊರೆಯೊಂದಿಗೆ ಹೋಲಿಸಿ. ನೀವು ಅಳೆಯದ ವೇಗದ ಪ್ರತಿಪಾದನೆಯು ಬ್ಯಾಕೆಂಡ್ ಎಂದಿಗೂ ಸಂದೇಹದಲ್ಲಿಲ್ಲ ಎಂಬ ಟಿಪ್ಪಣಿಗಿಂತ ಕಡಿಮೆ ಮೌಲ್ಯದ್ದು.