โปรแกรม TurboVNC
ภาพจาก : https://www.nhr.kit.edu/userdocs/horeka/visualization/
TurboVNC (โปรแกรม Remote Desktop ประสิทธิภาพสูง) : TurboVNC เป็นโปรแกรมที่พัฒนาต่อยอดมาจากโปรแกรม Virtual Network Computing (VNC) โดยมีจุดประสงค์เพื่อเพิ่มประสิทธิภาพการทำงานให้เหมาะสมกับการทำงานกราฟิก 3 มิติ และวิดีโอ โดยเริ่มต้นจากการเป็น Fork ของโปรแกรม TightVNC เวอร์ชัน 1.3.x อย่างไรก็ตาม ปัจจุบันเปลี่ยนมาใช้โค้ดของ X server จาก X.org ที่มีความทันสมัยมากขึ้นแทน รวมถึงเพิ่มคุณสมบัติใหม่ ๆ เข้าไปอีกมากมาย และแก้ไขบั๊กต่าง ๆ ที่เคยมีอยู่ใน TightVNC 1.3.x
โปรแกรม VNC ทุกตัวรวมถึง TurboVNC ต่างก็ใช้ โปรโตคอล (Protocol) Remote Framebuffer (RFB) เพื่อส่ง การอัปเดตเฟรมบัฟเฟอร์ (Framebuffer Update) จากเซิร์ฟเวอร์ VNC ไปยังเครื่องที่เป็นตัวรับ (Client) โดยการอัปเดตแต่ละครั้งประกอบด้วยหลาย "Rectangle" หรือพื้นที่ที่หน้าจอมีการเปลี่ยนแปลง ซึ่ง TurboVNC จะวิเคราะห์ Rectangle แต่ละส่วน แล้วแยกออกเป็น "Subrectangle" แล้วเลือกวิธี เข้ารหัส (Encoding) ที่เหมาะสมตามจำนวนสีที่ใช้ใน Subrectangle นั้น ๆ
รูปแบบการเข้ารหัสที่ถูกใช้ใน TurboVNC
- Solid Subencoding : ใช้ Bounding Box และเติมสี หากเป็นพื้นที่แบบทึบ
- Mono Subencoding: ใช้ 1 บิตต่อพิกเซล หากมีแค่ 2 สี
- Indexed Color Subencoding : ใช้พาเลตสี และ 8 บิตต่อพิกเซล ถ้าจำนวนสีมีไม่มาก
- Raw/JPEG Subencoding : หากจำนวนสีเยอะ จะใช้ ไฟล์ JPEG หรือข้อมูลดิบของพิกเซล RGB
- รองรับการบีบอัดเพิ่มเติมด้วย ".zlib" สำหรับบาง Subencoding
ด้วยเทคนิคการเข้ารหัสเหล่านี้ ร่วมกับการตัดกระบวนการตรวจสอบความเนียน (Smoothness Detection) ที่กินทรัพยากรของ หน่วยประมวลผลกลาง (CPU) ออกจาก TightVNC ทำให้ประสิทธิภาพในการสตรีมภาพทำได้เร็วขึ้นกว่าเดิมมาก โดยที่ยังคงรักษาคุณภาพเอาไว้ได้
คุณสมบัติ และความสามารถของ โปรแกรม TurboVNC
ประสิทธิภาพ
- การควบคุมการไหลขั้นสูง และการอัปเดตอย่างต่อเนื่อง (Advanced Flow Control And Continuous Updates) ช่วยให้โปรแกรม TurboVNC Viewer สามารถรับข้อมูลการอัปเดตของ Framebuffer ได้โดยไม่จำเป็นต้องร้องขอใหม่ทุกครั้ง ส่งผลให้ประสิทธิภาพของการแสดงผลเพิ่มขึ้นอย่างมีนัยสำคัญ โดยเฉพาะในกรณีที่ใช้งานผ่านเครือข่ายที่มีความหน่วงสูง
- การผสานรวมโดยตรงกับ VirtualGL ช่วยให้สามารถใช้งาน OpenGL ที่เร่งด้วยหน่วยประมวลผลกราฟิก (GPU-Accelerated OpenGL) ได้ตลอดทั้ง Session ของ TurboVNC ซึ่งช่วยยกระดับประสิทธิภาพในการแสดงผลแอปพลิเคชันกราฟิก 3 มิติ จากระยะไกล
- รองรับ DRI3
- Lossless refresh ช่วยให้ TurboVNC Server ส่งข้อมูลภาพของเดสก์ท็อประยะไกล ที่เคยส่งด้วย JPEG ได้อีกครั้ง ในรูปแบบที่ไม่มีการสูญเสียข้อมูล ทั้งทางคณิตศาสตร์ หรือที่ตาเปล่ามองเห็น เหมาะสำหรับการใช้งานแอปพลิเคชันที่ต้องการความคมชัดของภาพสูง แม้ในเครือข่ายที่มีแบนด์วิธต่ำจนไม่สามารถส่งภาพคุณภาพสูงในทุกเฟรมได้
- การเข้ารหัส/ถอดรหัส แบบ Tight อย่างมีประสิทธิภาพ
- รองรับการเข้ารหัสแบบหลายเธรด (Multithreaded Encoding)
- เร่งการเข้ารหัส/ถอดรหัส JPEG ด้วย SIMD โดยใช้ libjpeg-turbo
- เร่งการบีบอัด zlib ด้วย SIMD โดยใช้ zlib-ng
- การเปรียบเทียบเฟรม (Interframe Comparison) ช่วยลดการส่งข้อมูล Framebuffer ซ้ำโดยไม่จำเป็น
- ควบคุมคุณภาพ JPEG อย่างละเอียด สามารถกำหนดระดับคุณภาพของภาพ JPEG และระดับของการลดความละเอียดสี (Chrominance Subsampling)
- Double Buffering ฝั่งผู้ใช้ (Client-Side Double Buffering) ลดปัญหาภาพฉีกขาด (Tearing Artifacts) ในแอปพลิเคชัน 3 มิติ หรือวิดีโอ
ระบบความปลอดภัย
- TurboVNC Session Manager
- ให้ผู้ใช้เลือก Session ที่ต้องการเชื่อมต่อได้อย่างสะดวก สามารถเริ่ม หรือหยุด Session จากระยะไกลได้
- รองรับการเริ่ม Session แบบ Single Sign-On (SSO) โดยใช้ SSH Tunneling และ รหัสผ่านแบบใช้ครั้งเดียว (OTP)
- SSH ในตัว
- มี SSH Client ในตัว รองรับการตั้งค่าจากไฟล์ OpenSSH Config
- รองรับการยืนยันตัวตนแบบไม่ใช้รหัสผ่าน ด้วย "ssh-agent" หรือ "Pageant"
- รองรับ Multi-Level SSH Tunneling (Jump Hosts)
- มีระบบจัดการ SSH Key ภายในตัว
- รองรับวิธีการแลกเปลี่ยน SSH Key Exchange (KEX) ที่ทันสมัย ไม่ว่าจะเป็น Message Authentication Code (MAC) Algorithms, Ciphers หรือ Signature Schemes
- สามารถเลือกใช้ SSH Client ภายนอก พร้อมกำหนดคำสั่งการเชื่อมต่อได้เอง
- รองรับ Unix Domain Socket
- TurboVNC Server สามารถรับการเชื่อมต่อจาก Unix Domain Socket แทนพอร์ต TCP ได้
- TurboVNC Viewer และ Session Manager สามารถเชื่อมต่อผ่าน SSH Tunneling ไปยัง Session ที่อยู่ใน Unix Socket ได้เช่นกัน
- สามารถกำหนดนโยบายการยืนยันตัวตน/ความปลอดภัยแบบกำหนดตามโฮสต์ (per-host) เพื่อใช้กับผู้ใช้ทั้งหมด
- รองรับการเข้ารหัสการเชื่อมต่อแบบ Transport Layer Security (TLS) ผ่าน VeNCrypt
- เข้ารหัสการเชื่อมต่อของ TurboVNC อย่างเข้มงวด เมื่อไม่ได้ใช้ SSH Tunneling หรือ TurboVNC Session Manager
- รองรับ TLS แบบไม่ระบุตัวตน หรือใช้ใบรับรองแบบ X.509
- สามารถบังคับใช้ชุดรหัสเข้ารหัส (TLS Cipher Suites) และ ความยาวกุญแจเข้ารหัส ตามนโยบายความปลอดภัย การยืนยันตัวตนของแต่ละโฮสต์
- สามารถกำหนดประเภท TLS Cipher และขนาดกุญแจได้ตามนโยบายของโฮสต์
- ระบบยืนยันตัวตน
- รองรับรหัสผ่านแบบใช้ครั้งเดียว หรือยืนยันด้วยบัญชี Unix
- สามารถแชร์ Session ให้ผู้ใช้เฉพาะกลุ่มได้ โดยกำหนดสิทธิ์ดูอย่างเดียวหรือควบคุมเต็มรูปแบบ
- WebSockets ในตัว
- รองรับการเชื่อมต่อจาก Viewer ผ่านเว็บเบราว์เซอร์ เช่น noVNC ได้โดยไม่ต้องใช้ Proxy
- รองรับ WSS (WebSocket Over TLS) พร้อมใบรับรอง X.509
- การจัดการความล้มเหลวของการยืนยันตัวตน
- สามารถบล็อก IP ชั่วคราว หากพบความพยายามล้มเหลวเกินกำหนด เพื่อป้องกันการโจมตีแบบ Brute Force
- มีตัวเลือก Timeout สำหรับ Session ที่ไม่ใช้งาน
- รองรับ UltraVNC Repeater (โหมด I และ II)
- รองรับ IPv6 เต็มรูปแบบ
- มีระบบจัดการเวอร์ชันที่เหมาะกับการใช้ในรูปแบบองค์กร
เงื่อนไขการใช้งาน โปรแกรม TurboVNC
TurboVNC เป็นซอฟต์แวร์แบบ โอเพ่นซอร์ส (Open-Source) ภายใต้เงื่อนไขของสัญญาอนุญาต GNU General Public License การพัฒนาเป็นแบบอิสระโดยไม่ขึ้นกับองค์กรใด รายได้มาจากการสนับสนุนผ่าน GitHub เท่านั้น
หากต้องการค้นหาข้อมูลเพิ่มเติม สามารถติดต่อกับทางผู้พัฒนาโปรแกรมนี้ได้ผ่านทางช่องทางเว็บไซต์ (Website) : https://turbovnc.org/ (ภาษาอังกฤษ) ได้เลย
คำบรรยายภาษาอังกฤษ (English Descriptions)
TurboVNC is a software solution developed as an extension of Virtual Network Computing (VNC), with the aim of optimizing performance for 3D graphics and video workloads. It originated as a fork of TightVNC version 1.3.x. However, the current version has been modernized to adopt the X server code base from X.org, along with numerous added features and bug fixes that address limitations in TightVNC 1.3.x.
All VNC-based software, including TurboVNC, utilizes the Remote Framebuffer (RFB) protocol to deliver framebuffer updates from the VNC server to the client device. Each update comprises multiple “rectangles,” or screen regions that have changed since the previous update. TurboVNC analyzes each rectangle, subdivides it into “subrectangles,” and selects the most appropriate encoding method based on the number of colors present in each subregion.