{ "info": { "author": "Zihua Ye", "author_email": "zihua.ye@gmail.com zihua.ye@qq.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Topic :: Internet :: Name Service (DNS)", "Topic :: Internet :: Proxy Servers", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: System :: Filesystems" ], "description": "##3xsd\n3xsd is a native epoll server serving TCP/UDP connections, a high performance static web server, a\nfailover dns server, a http-based distributed file server, a load-balance proxy-cache server, and\na 'warp drive' server. Written in python, take the full power of multi-cores.\n\n##Features in detail:\n\n###3wsd - web server\n supporting: static files, event driven(epoll), using mmap & sendfile to send files,\n in-mem xcache, transparent gzip content transfer with fixed length(small file) & \n chunked(large file), persistent storage of gzip files,\n partial support of WebDAV(PUT/DELETE), pipelining support\n \n###3nsd - dns server\n supporting: only A record resolution, domainname failover(refer to conf file),\n ip icmp probe & hide when fail, round robbin ip resolving\n global DNS Left-Right Range Resolve(LRRR)(experimental)\n \n###3zsd - proxy server\n supporting: load balance backend servers, in-mem file caching & \n persistent cache file storage\n\n###3fsd - distribute web file system\n supporting: mass unlimitted file storage, easy to expand,\n O(1) location algorithm, non-centralized, can work with standard web server(WebDAV)\n in proxy mode, file redundancy, file persistent caching\n\n###3wdd - 'warp drive' server\n supporting: data tunneling over UDT and tun,\n better congestion control than TCP/UDP over wan link,\n better thoughput(above 80%) over wan link, refer to this report:\n http://www.c-s-a.org.cn/ch/reader/create_pdf.aspx?file_no=20091035\n tunnel ip/mtu/txqueuelen/route define, auto create/recreate/destroy\n encrypt packages through AES-128-ECB/CBC/CFB/CTR and Blowfish-CBC/CFB/CTR\n tunnel on-the-fly compress with zlib/lzo, tunnel data relaying\n route metric, routing data through different path, depending on tunnel rtt(choose the best one)\n\nMore to find in .conf file.\n\n##Performance:\n\n###3wsd:\n Small file under 1KB single process test(full in-mem), contrast with nginx configuring\n accept_mutex off, 80% performance.\n Multi processes test, with reuse_port enabling kernel, 95% performance of nginx(and beyond,\n may be 105% or more, based on process number, I tested 2-4).\n The tests above is not quite strict\uff0c but I just want to say that it's fast enough.\n\n And with pipelining enabled, 3wsd will perform better with 3-4 requests/send(5%-10%\n performance increase), 2 requests/send have the same speed with non-piplining.\n\n###3zsd:\n About 80% performance of 3wsd.\n \n###3nsd:\n Fast enough...about 2800-3000 queries/s per processes, with 1GHz bcm2709 4-cores ARMv7\n cpu testing, better when multi-processes with reuse_port enabling kernel.\n \n###3fsd:\n Same with 3zsd.\n \n###3wdd:\n Early testing indicated that:\n UDT tunnel(no encrypt) performing 50%-60% speed of direct TCP connection with ZetaTCP,\n and package lost rate remaining below 0.6%, while direct connection has 1.4%-3%.\n (Test CN-US WAN link with 150ms-280ms latency, through the always-jammed CUCN submarine cable)\n However, UDT tunnel beats normal TCP connection without ZetaTCP, with 50% - 4 times\n (commonly 1-2 times) outperforming.(v)(Test link like above)\n\n Update:\n And an encrypted UDT tunnel with AES-CBC/CFB will has 50% performance decrease (because the \n method itself processes doubled size of data, and extra iv/padding data transfer).\n Now with a Blowfish-CTR method, tunnel data transfer performance is closed to raw non-encrypt \n tunnel. I believe that with a intel AES-NI supported CPU(like XEON E3-1240/1270), AES-128-CTR\n can also do it.\n\n###More performance:\nThere are at lease two ways to increase the performance of 3xsd:\n\n 1.Install Cython, and rename _3xsd.py to _3xsd.pyx, run it. \n Cython will compile _3xsd.py lib into a _3xsd.so file, using static type\n declarations. This can gain about 5%-6% performance increasement.\n 2.Use PyPy.This can gain about 10%-15% performance increasement(or more).\n\n#OS requirement & install: \n\nCentOS 6/7 with python 2.6/2.7, Debian 6/7. Python 2.7 recommended.\n\nDoing this before running the program(minimal requirement):\n\n yum install python-gevent pysendfile python-setproctitle python-psutil python-pip\n \n (python-pip is optional if install dpkt)\n \nDpkt module is also needed when running 3nsd DNS server, pip install it.\n\nIf you want to use 3wdd, python-pytun, pyudt4, pycrypto, python-lzo are also needed.\n\n yum install python-crypto2.6 python-lzo (for centos6)\n yum install python2-crypto (for centos7)\n\nwill quickly install pycrypto(probably do some 'linking' works) and lzo. The other two depended on pip install.\n\nProbably you need this easy-install.pth file in python's site-packages dir:\n\n import sys; sys.__plen = len(sys.path)\n ./pycrypto-2.6.1-py2.6-linux-x86_64.egg\n ./pyudt4-0.6.0-py2.6-linux-x86_64.egg\n import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)\n\nI provide pre-compiled package [pyudt_tun-centos6-x86_64.tar.gz](https://github.com/zihuaye/3xsd/blob/master/pyudt_tun-centos6-x86_64.tar.gz) and [pyudt_tun_lzo-centos7-x86_64.tar.gz](https://github.com/zihuaye/3xsd/blob/master/pyudt_tun_lzo-centos7-x86_64.tar.gz) to simplify\nthe installation procedure of pyudt4 & python-pytun.\n\nBe aware of pyudt4 having some bugs, you'd better download it's source code of epoll-fixes branch and \napply the patch I offered. See changelog.txt v0.0.20 2016.03.07 fixed section for detail.\n(Already included in [pyudt_tun-centos6-x86_64.tar.gz](https://github.com/zihuaye/3xsd/blob/master/pyudt_tun-centos6-x86_64.tar.gz) and [pyudt_tun_lzo-centos7-x86_64.tar.gz](https://github.com/zihuaye/3xsd/blob/master/pyudt_tun_lzo-centos7-x86_64.tar.gz))\n\nOr, of cause you can let pip do it all for you(not including patching pyudt4):\n\n pip install 3xsd\n\nIn a debian, you can use apt-get to install python-pip(pip) or python-setuptools(easy_install),\nthen to install the packages following.\n\nPython Packages(Modules) version reference:\n\n gevent==0.13.8(1.0.1, 1.1)\n greenlet==0.4.2\n pysendfile==2.0.1\n setproctitle==1.0.1\n psutil==0.6.1\n dpkt==1.6(1.8.6)\n python-pytun==2.2.1\n pyudt4==0.6.0(epoll-fixes branch)\n pycrypto==2.6.1\n python-lzo==1.8\n\nSystem libs version reference:\n\n libevent-1.4.13-4(not actually used, just needed for gevent to function)\n udt-4.11-6\n lzo-2.03-3.1\n\nTo install a module of specific version(like gevent 0.13.8), you can:\n\n pip install gevent==0.13.8\n\nThis will install the latest version of gevent(pypy will need it):\n\n pip install git+git://github.com/surfly/gevent.git#egg=gevent\n\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zihuaye/3xsd", "keywords": null, "license": "GPLv2", "maintainer": null, "maintainer_email": null, "name": "3xsd", "package_url": "https://pypi.org/project/3xsd/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/3xsd/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/zihuaye/3xsd" }, "release_url": "https://pypi.org/project/3xsd/0.0.26/", "requires_dist": null, "requires_python": null, "summary": "3xsd is a native epoll server serving TCP/UDP connections, a high performance static web server, a failover dns server, a http-based distributed file server, a load-balance proxy-cache server, and a warp-drive server. Written in python, take the full power of multi-cores.", "version": "0.0.26" }, "last_serial": 2430119, "releases": { "0.0.20": [ { "comment_text": "", "digests": { "md5": "02184e4c625ed0979155ed0a59564525", "sha256": "eb0172106144f18ba403dab01182662a1df110820941ab238c06f02f407968a7" }, "downloads": -1, "filename": "3xsd-0.0.20-1.tar.gz", "has_sig": false, "md5_digest": "02184e4c625ed0979155ed0a59564525", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35228, "upload_time": "2016-03-07T02:55:35", "url": "https://files.pythonhosted.org/packages/57/9e/374030409d3956ce1f4f387a49cc4d3f37b2c39dd8547e90f7e0974f8f04/3xsd-0.0.20-1.tar.gz" } ], "0.0.21": [ { "comment_text": "", "digests": { "md5": "34dbfb3f83d94bd671996624ac70fac9", "sha256": "183e5174e55e8237d619f68ad283f81cda4228c6b5ab50e0742ed768d2eb36fd" }, "downloads": -1, "filename": "3xsd-0.0.21.tar.gz", "has_sig": false, "md5_digest": "34dbfb3f83d94bd671996624ac70fac9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35330, "upload_time": "2016-03-13T13:24:09", "url": "https://files.pythonhosted.org/packages/c4/69/0f1f32a04410c65852c8c943ac4aa4e46ab7e58126b607d950f90bf53ecb/3xsd-0.0.21.tar.gz" } ], "0.0.22": [ { "comment_text": "", "digests": { "md5": "5c986d17360651cb8babc24f7adbca5d", "sha256": "3fc5a2adf427c8b3ec1713623f15454117ba6f1088adaa6497e66fac90b031ec" }, "downloads": -1, "filename": "3xsd-0.0.22.tar.gz", "has_sig": false, "md5_digest": "5c986d17360651cb8babc24f7adbca5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35954, "upload_time": "2016-03-21T03:18:52", "url": "https://files.pythonhosted.org/packages/1e/60/9507193a031c3c06e0c58e68bcf44a8031ef92f2b4bf6f265d5975d2c383/3xsd-0.0.22.tar.gz" } ], "0.0.23": [ { "comment_text": "", "digests": { "md5": "9b6d079aee33f40029005ca19c655515", "sha256": "24cec573d166bb41c5b4e9f94d04d10e9a7a04df077a7fdc7be25b38882908e1" }, "downloads": -1, "filename": "3xsd-0.0.23.tar.gz", "has_sig": false, "md5_digest": "9b6d079aee33f40029005ca19c655515", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37541, "upload_time": "2016-04-02T09:00:58", "url": "https://files.pythonhosted.org/packages/a5/2b/70ed58f0df654ef38b2b4c5b0511af78c6af0fd2cf3a8de4931d7cae8a27/3xsd-0.0.23.tar.gz" } ], "0.0.24": [ { "comment_text": "", "digests": { "md5": "0fc7f72f034903caa38ec3b8a2e88591", "sha256": "b2d6417b2fd3fb4febaafebb466b9c861bd36a960306092e0c4bba7d890f0b78" }, "downloads": -1, "filename": "3xsd-0.0.24.tar.gz", "has_sig": false, "md5_digest": "0fc7f72f034903caa38ec3b8a2e88591", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41590, "upload_time": "2016-06-12T02:57:44", "url": "https://files.pythonhosted.org/packages/cc/a8/b17fdf594992c293b1a74b46d0d10f912e1515d2396a06b0b0914a43020a/3xsd-0.0.24.tar.gz" } ], "0.0.25": [ { "comment_text": "", "digests": { "md5": "10e4bc28e3dd39651f11f95c25608d99", "sha256": "d9e4585ab86ce0e340cbf80128cd5091f64cd4b1d2768ad0089f4ed27076ae65" }, "downloads": -1, "filename": "3xsd-0.0.25.tar.gz", "has_sig": false, "md5_digest": "10e4bc28e3dd39651f11f95c25608d99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41842, "upload_time": "2016-07-11T17:20:40", "url": "https://files.pythonhosted.org/packages/2a/3c/db7d0de51d0110e3650515a7da8b68f3bb44a785bd98330023458a117560/3xsd-0.0.25.tar.gz" } ], "0.0.26": [ { "comment_text": "", "digests": { "md5": "72650e1707e4d9ed622c952237faaa41", "sha256": "122d097499c2d442084275714cfb31c9f83cc5ca838fc32a7c4e694aab65a4e7" }, "downloads": -1, "filename": "3xsd-0.0.26.tar.gz", "has_sig": false, "md5_digest": "72650e1707e4d9ed622c952237faaa41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43059, "upload_time": "2016-10-29T06:33:01", "url": "https://files.pythonhosted.org/packages/73/f8/a01fc72e7e9361d4c5aa32c3988b799e73405b6aecb912decf7f54705562/3xsd-0.0.26.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "72650e1707e4d9ed622c952237faaa41", "sha256": "122d097499c2d442084275714cfb31c9f83cc5ca838fc32a7c4e694aab65a4e7" }, "downloads": -1, "filename": "3xsd-0.0.26.tar.gz", "has_sig": false, "md5_digest": "72650e1707e4d9ed622c952237faaa41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43059, "upload_time": "2016-10-29T06:33:01", "url": "https://files.pythonhosted.org/packages/73/f8/a01fc72e7e9361d4c5aa32c3988b799e73405b6aecb912decf7f54705562/3xsd-0.0.26.tar.gz" } ] }