QUIC, a multiplexed stream transport over UDP

Overview

QUIC, a multiplexed stream transport over UDP

QUIC is an experimental protocol aimed at reducing web latency over that of TCP. On the surface, QUIC is very similar to TCP+TLS+SPDY implemented on UDP. Because TCP is implemented in operating system kernels, and middlebox firmware, making significant changes to TCP is next to impossible. However, since QUIC is built on top of UDP, it suffers from no such limitations.

Key features of QUIC over existing TCP+TLS+SPDY include

  • Dramatically reduced connection establishment time
  • Improved congestion control
  • Multiplexing without head of line blocking
  • Forward error correction
  • Connection migration

See Chromium QUIC Page for detailed information.

libquic

This repository is sources and dependencies extracted from Chromium's QUIC Implementation with a few modifications and patches to minimize dependencies needed to build QUIC library.

Notable and only dependency is BoringSSL. The BoringSSL sources is already embedded in this repository and linked with CMake build file. You don't need any kind of dependency installs.

Language Bindings

This library is intended as an essential reference point for other language bindings and possibly for integration with other C/C++ codebase such as HTTP servers like Apache or nginx.

Currently there is only one experimental language binding:

Getting Started

How to build

Building with CMake and Ninja (Recommended):

$ mkdir build/
$ cd build/
$ cmake -GNinja ..
$ ninja

Building with CMake and Make:

$ mkdir build/
$ cd build/
$ cmake ..
$ make -j 4

make -j limits the number of simultaneously executed Recepies. Adapt this number to the capabilities of your build machine.

libquic.a library file will be generated. libssl.a, libcrypto.a will be located in build/boringssl directory.

To do release builds run $ cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. instead of $ cmake -GNinja ...

How to integrate

In order to integrate libquic to your code, your best source of documentation is official Chromium QUIC toy client and server. Golang binding will help too.

Syncing from Upstream

Great effort has been made to make syncing from upstream Chromium sources as effortless as possible. See DEPS file for all the dependencies. See manage.py script for actual syncing.

If you want to apply upstream changes,

  1. Clone & Checkout chromium upstream.
  2. Build QUIC server: cd out/Debug; ninja quic_server
  3. Update "chromium_revision" var at DEPS to your chromium source code revision.
  4. Do ./sync.py <CHROMIUM_GIT_ROOT> All necessary files will be updated to new ones without patches applied.
  5. Temporarily commit here.
  6. Do ./sync.py <CHROMIUM_GIT_ROOT>--patch All the patches will be applied. Some patches will be rejected.
  7. If there is any patch collision, manually apply the rejected patches. Open the *.rej files and carefully apply the rejected hunks manually.
  8. Try build, and you'll find that you may need to add additional modifications to make build successful. There may be added or deleted source files. Update CMakeLists.txt accordingly.
  9. If the build is successful, make a patch by: git diff src/ > patch/basepatch.patch (Make sure you don't include custom/ directory sources to the patch)
  10. Add patch file to DEPS or update existing patch files. Amend previous commit.
  11. Commit DEPS, new patch, and source changes
Comments
  • make failed

    make failed

    [ 11%] Building ASM object boringssl/crypto/chacha/CMakeFiles/chacha.dir/chacha-x86_64.S.o /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S: Assembler messages: /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1002: Error: no such instruction: vbroadcasti128 .Lsigma(%rip),%ymm11' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1003: Error: no such instruction:vbroadcasti128 (%rcx),%ymm3' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1004: Error: no such instruction: vbroadcasti128 16(%rcx),%ymm15' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1005: Error: no such instruction:vbroadcasti128 (%r8),%ymm7' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1011: Error: suffix or operands invalid for vpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1012: Error: suffix or operands invalid forvpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1014: Error: suffix or operands invalid for vpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1016: Error: suffix or operands invalid forvpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1020: Error: suffix or operands invalid for vpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1021: Error: suffix or operands invalid forvpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1023: Error: suffix or operands invalid for vpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1025: Error: suffix or operands invalid forvpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1029: Error: suffix or operands invalid for vpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1030: Error: suffix or operands invalid forvpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1032: Error: suffix or operands invalid for vpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1034: Error: suffix or operands invalid forvpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1038: Error: suffix or operands invalid for vpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1039: Error: suffix or operands invalid forvpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1040: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1041: Error: suffix or operands invalid forvpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1043: Error: suffix or operands invalid for vpshufd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1067: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1072: Error: no such instruction: vbroadcasti128 (%r10),%ymm15' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1079: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1080: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1081: Error: suffix or operands invalid forvpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1082: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1083: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1084: Error: suffix or operands invalid for vpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1085: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1086: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1087: Error: suffix or operands invalid forvpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1088: Error: suffix or operands invalid for vpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1089: Error: suffix or operands invalid forvpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1090: Error: no such instruction: vbroadcasti128 (%r11),%ymm14' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1091: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1092: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1093: Error: suffix or operands invalid forvpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1094: Error: suffix or operands invalid for vpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1095: Error: suffix or operands invalid forvpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1096: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1097: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1098: Error: suffix or operands invalid for vpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1099: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1100: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1101: Error: suffix or operands invalid forvpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1102: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1103: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1104: Error: suffix or operands invalid for vpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1105: Error: suffix or operands invalid forvpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1106: Error: suffix or operands invalid for vpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1107: Error: no such instruction:vbroadcasti128 (%r10),%ymm15' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1108: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1109: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1110: Error: suffix or operands invalid for vpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1111: Error: suffix or operands invalid forvpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1112: Error: suffix or operands invalid for vpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1117: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1118: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1119: Error: suffix or operands invalid forvpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1120: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1121: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1122: Error: suffix or operands invalid for vpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1123: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1124: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1125: Error: suffix or operands invalid forvpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1126: Error: suffix or operands invalid for vpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1127: Error: suffix or operands invalid forvpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1128: Error: no such instruction: vbroadcasti128 (%r11),%ymm14' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1129: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1130: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1131: Error: suffix or operands invalid forvpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1132: Error: suffix or operands invalid for vpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1133: Error: suffix or operands invalid forvpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1134: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1135: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1136: Error: suffix or operands invalid for vpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1137: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1138: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1139: Error: suffix or operands invalid forvpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1140: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1141: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1142: Error: suffix or operands invalid for vpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1143: Error: suffix or operands invalid forvpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1144: Error: suffix or operands invalid for vpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1145: Error: no such instruction:vbroadcasti128 (%r10),%ymm15' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1146: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1147: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1148: Error: suffix or operands invalid for vpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1149: Error: suffix or operands invalid forvpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1150: Error: suffix or operands invalid for vpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1151: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1152: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1153: Error: suffix or operands invalid forvpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1154: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1155: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1156: Error: suffix or operands invalid for vpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1157: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1158: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1159: Error: suffix or operands invalid forvpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1160: Error: suffix or operands invalid for vpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1161: Error: suffix or operands invalid forvpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1162: Error: no such instruction: vbroadcasti128 (%r11),%ymm14' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1163: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1164: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1165: Error: suffix or operands invalid forvpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1166: Error: suffix or operands invalid for vpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1167: Error: suffix or operands invalid forvpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1168: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1169: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1170: Error: suffix or operands invalid for vpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1171: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1172: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1173: Error: suffix or operands invalid forvpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1174: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1175: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1176: Error: suffix or operands invalid for vpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1177: Error: suffix or operands invalid forvpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1178: Error: suffix or operands invalid for vpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1179: Error: no such instruction:vbroadcasti128 (%r10),%ymm15' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1180: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1181: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1182: Error: suffix or operands invalid for vpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1183: Error: suffix or operands invalid forvpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1184: Error: suffix or operands invalid for vpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1189: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1190: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1191: Error: suffix or operands invalid forvpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1192: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1193: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1194: Error: suffix or operands invalid for vpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1195: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1196: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1197: Error: suffix or operands invalid forvpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1198: Error: suffix or operands invalid for vpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1199: Error: suffix or operands invalid forvpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1200: Error: no such instruction: vbroadcasti128 (%r11),%ymm14' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1201: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1202: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1203: Error: suffix or operands invalid forvpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1204: Error: suffix or operands invalid for vpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1205: Error: suffix or operands invalid forvpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1206: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1207: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1208: Error: suffix or operands invalid for vpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1209: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1210: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1211: Error: suffix or operands invalid forvpshufb' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1212: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1213: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1214: Error: suffix or operands invalid for vpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1215: Error: suffix or operands invalid forvpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1216: Error: suffix or operands invalid for vpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1217: Error: no such instruction:vbroadcasti128 (%r10),%ymm15' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1218: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1219: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1220: Error: suffix or operands invalid for vpslld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1221: Error: suffix or operands invalid forvpsrld' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1222: Error: suffix or operands invalid for vpor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1227: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1228: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1229: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1230: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1232: Error: suffix or operands invalid forvpunpckldq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1233: Error: suffix or operands invalid for vpunpckldq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1234: Error: suffix or operands invalid forvpunpckhdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1235: Error: suffix or operands invalid for vpunpckhdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1236: Error: suffix or operands invalid forvpunpcklqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1237: Error: suffix or operands invalid for vpunpckhqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1238: Error: suffix or operands invalid forvpunpcklqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1239: Error: suffix or operands invalid for vpunpckhqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1240: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1241: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1242: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1243: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1245: Error: suffix or operands invalid forvpunpckldq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1246: Error: suffix or operands invalid for vpunpckldq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1247: Error: suffix or operands invalid forvpunpckhdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1248: Error: suffix or operands invalid for vpunpckhdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1249: Error: suffix or operands invalid forvpunpcklqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1250: Error: suffix or operands invalid for vpunpckhqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1251: Error: suffix or operands invalid forvpunpcklqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1252: Error: suffix or operands invalid for vpunpckhqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1253: Error: no such instruction:vperm2i128 $0x20,%ymm1,%ymm9,%ymm15' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1254: Error: no such instruction: vperm2i128 $0x31,%ymm1,%ymm9,%ymm1' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1255: Error: no such instruction:vperm2i128 $0x20,%ymm10,%ymm14,%ymm9' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1256: Error: no such instruction: vperm2i128 $0x31,%ymm10,%ymm14,%ymm10' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1257: Error: no such instruction:vperm2i128 $0x20,%ymm3,%ymm11,%ymm14' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1258: Error: no such instruction: vperm2i128 $0x31,%ymm3,%ymm11,%ymm3' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1259: Error: no such instruction:vperm2i128 $0x20,%ymm0,%ymm8,%ymm11' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1260: Error: no such instruction: vperm2i128 $0x31,%ymm0,%ymm8,%ymm0' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1266: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1267: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1268: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1269: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1271: Error: suffix or operands invalid forvpunpckldq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1272: Error: suffix or operands invalid for vpunpckldq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1273: Error: suffix or operands invalid forvpunpckhdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1274: Error: suffix or operands invalid for vpunpckhdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1275: Error: suffix or operands invalid forvpunpcklqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1276: Error: suffix or operands invalid for vpunpckhqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1277: Error: suffix or operands invalid forvpunpcklqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1278: Error: suffix or operands invalid for vpunpckhqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1279: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1280: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1281: Error: suffix or operands invalid forvpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1282: Error: suffix or operands invalid for vpaddd' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1284: Error: suffix or operands invalid forvpunpckldq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1285: Error: suffix or operands invalid for vpunpckldq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1286: Error: suffix or operands invalid forvpunpckhdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1287: Error: suffix or operands invalid for vpunpckhdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1288: Error: suffix or operands invalid forvpunpcklqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1289: Error: suffix or operands invalid for vpunpckhqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1290: Error: suffix or operands invalid forvpunpcklqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1291: Error: suffix or operands invalid for vpunpckhqdq' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1292: Error: no such instruction:vperm2i128 $0x20,%ymm5,%ymm13,%ymm8' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1293: Error: no such instruction: vperm2i128 $0x31,%ymm5,%ymm13,%ymm5' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1294: Error: no such instruction:vperm2i128 $0x20,%ymm15,%ymm2,%ymm13' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1295: Error: no such instruction: vperm2i128 $0x31,%ymm15,%ymm2,%ymm15' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1296: Error: no such instruction:vperm2i128 $0x20,%ymm7,%ymm9,%ymm2' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1297: Error: no such instruction: vperm2i128 $0x31,%ymm7,%ymm9,%ymm7' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1298: Error: no such instruction:vperm2i128 $0x20,%ymm4,%ymm12,%ymm9' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1299: Error: no such instruction: vperm2i128 $0x31,%ymm4,%ymm12,%ymm4' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1306: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1307: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1308: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1309: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1317: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1318: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1319: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1320: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1328: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1329: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1330: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1331: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1339: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1340: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1341: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1342: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1378: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1379: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1394: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1395: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1396: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1397: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1414: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1415: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1416: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1417: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1418: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1419: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1438: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1439: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1440: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1441: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1442: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1443: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1444: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1445: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1466: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1467: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1468: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1469: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1470: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1471: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1472: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1473: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1474: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1475: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1498: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1499: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1500: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1501: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1502: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1503: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1504: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1505: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1506: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1507: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1508: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1509: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1534: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1535: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1536: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1537: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1538: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1539: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1540: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1541: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1542: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1543: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1544: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1545: Error: suffix or operands invalid for vpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1546: Error: suffix or operands invalid forvpxor' /home/yazhou.yang/libquic/build/boringssl/crypto/chacha/chacha-x86_64.S:1547: Error: suffix or operands invalid for `vpxor' make[2]: *** [boringssl/crypto/chacha/CMakeFiles/chacha.dir/chacha-x86_64.S.o] Error 1 make[1]: *** [boringssl/crypto/chacha/CMakeFiles/chacha.dir/all] Error 2

    @hodduc @serialx

    Can you help me, thanks.

    opened by y123456yz 7
  • error:Could not find Go

    error:Could not find Go

    When I input cmake -GNinja in the shell, it shows an error as follows: 2015-06-16 22 10 06

    2015-06-16 23 57 28

    I am not skillful and strong, what should i do to solve this problem? Looking forward to your help sincerely, thanks very much!

    opened by pengkunlunHIT 3
  • Faild to build libquic in ubuntu-64bit

    Faild to build libquic in ubuntu-64bit

    I try to build the project on Ubuntu 64bit, but every time when make reach 89%, the machine will reboot. Did you see this happend? (32bit is OK and I do my work in VMware Workstation)

    opened by chqiwang 3
  • compile the newest version error!!

    compile the newest version error!!

    libcrypto.a(err.c.o): In function ERR_reason_error_string': /root/yangyazhou/libquic-syngit/libquic/boringssl/crypto/err/err.c:547: undefined reference tokOpenSSLReasonValuesLen' /root/yangyazhou/libquic-syngit/libquic/boringssl/crypto/err/err.c:547: undefined reference to kOpenSSLReasonStringData' /root/yangyazhou/libquic-syngit/libquic/boringssl/crypto/err/err.c:547: undefined reference tokOpenSSLReasonValues' collect2: error: ld returned 1 exit status make[2]: *** [boringssl/crypto/constant_time_test] Error 1 make[1]: *** [boringssl/crypto/CMakeFiles/constant_time_test.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs....

    opened by y123456yz 2
  • Unable to parse the header

    Unable to parse the header

    Hello,

    I am using QUIC reverse proxy and would like to check its performance by using quicbench. I tried to request a 2K text file but I got following error:

    ./quicbench -u https://myserver/text/2K.txt -k=true -c 1 -r 1
    Dispatching 1 clients
    Waiting for results...
    [0818/102023:WARNING:quic_framer.cc(1938)] DecryptPacket failed for packet_number:4
    [0818/102023:ERROR:spdy_utils.cc(158)] Parsed content length 2048 is inconsistent with previously detected content length 5808101
    [0818/102023:ERROR:go_quic_spdy_client_stream.cc(82)] Failed to parse header list: { :version=HTTP/1.1, :status=200, date=Thu, 18 Aug 2016 03:20:06 GMT, content-type=text/plain, last-modified=Tue, 16 Aug 2016 06:50:31 GMT, etag="57b2b7b7-800", server=nginx/1.10.0 (Ubuntu), content-length=2048, accept-ranges=bytes, }
    

    After looking into libquic source code, I see that the error was thrown from this. The new_value value was correct (2048) while the *content_length value (5808101) was wrong.

    I am not sure if this is problem with libquic itself or not. Can someone give me a suggestion?

    FYI: My request header with curl

    curl -I https://myserver/text/2K.txt
    HTTP/1.1 200 OK
    Accept-Ranges: bytes
    Alt-Svc: quic=":443"; ma=86400; v="34,33,32,31,30"
    Alternate-Protocol: 443:quic
    Content-Length: 2048
    Content-Type: text/plain
    Date: Thu, 18 Aug 2016 03:29:08 GMT
    Etag: "57b2b7b7-800"
    Last-Modified: Tue, 16 Aug 2016 06:50:31 GMT
    Server: nginx/1.10.0 (Ubuntu)
    

    Regards,

    opened by ngoduykhanh 2
  • Fix build failed on Arch Linux

    Fix build failed on Arch Linux

    Update socker_helper.c to latest version ( https://boringssl.googlesource.com/boringssl/+/241364c6f4d44165ce2dc707b9ad141dcc880d1b/crypto/bio/socket_helper.c )

    opened by typcn 2
  • Is there any API of the three *.a file generated by building libquic?

    Is there any API of the three *.a file generated by building libquic?

    libquic.a, libssl.a, libcrypto.a are generated after building libquic. I know .a file is static library,and I have also seen goquic and gospdyquic.These project use the libquic as a base,and there are the .a files in goquic's lib file.
    But how to use these .a files? Is there any API which introduce the provided function detailedly?

    opened by pengkunlunHIT 2
  • Error:  undefined:bufio.NewScanner    and   undefined reference to 'kOpenSSLFunctionXXXX'

    Error: undefined:bufio.NewScanner and undefined reference to 'kOpenSSLFunctionXXXX'

    There were two kinds of errors when i build libquic by Ninja and make

    1)When i input Ninja in the shell,it begins building,but it ends with an error as follow: undefined bufio newscanner

    i go to see the code ,it it as follow: code

    2)When i input make -j 1 in the shell,the error is as follow: make

    Looking forward to your help sincerely, thanks very much! :)

    opened by pengkunlunHIT 2
  • Fix osx linkage

    Fix osx linkage

    This ensures that the Security framework is linked in on OSX (& not iOS) and that linking against quic correctly links in any necessary dependent libraries.

    opened by vlovich 1
  • ‘INT64_C’ was not declared in this scope

    ‘INT64_C’ was not declared in this scope

    Hi,all: When i run make as specified in the readme.md, some error occurred. The error is mainly due to the lack of declaration of INT64_C and UINT64_C. I find the reported missing declaration existed in the included file stdint.h. Can anyone tell me why the error occurred and how to fix it? My Os is Ubuntu 12.04.3 LTS。

    opened by brickz 1
  • Patch to compile on FreeBSD

    Patch to compile on FreeBSD

    diff --git a/boringssl/ssl/test/CMakeLists.txt b/boringssl/ssl/test/CMakeLists.txt
    index 9992360..464e551 100644
    --- a/boringssl/ssl/test/CMakeLists.txt
    +++ b/boringssl/ssl/test/CMakeLists.txt
    @@ -11,6 +11,6 @@ add_executable(
     )
    
     target_link_libraries(bssl_shim ssl crypto)
    -if (NOT APPLE AND NOT WIN32)
    +if (NOT APPLE AND NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
       target_link_libraries(bssl_shim dl)
     endif()
    
    opened by larseggert 1
  • CVE-2007-4559 Patch

    CVE-2007-4559 Patch

    Patching CVE-2007-4559

    Hi, we are security researchers from the Advanced Research Center at Trellix. We have began a campaign to patch a widespread bug named CVE-2007-4559. CVE-2007-4559 is a 15 year old bug in the Python tarfile package. By using extract() or extractall() on a tarfile object without sanitizing input, a maliciously crafted .tar file could perform a directory path traversal attack. We found at least one unsantized extractall() in your codebase and are providing a patch for you via pull request. The patch essentially checks to see if all tarfile members will be extracted safely and throws an exception otherwise. We encourage you to use this patch or your own solution to secure against CVE-2007-4559. Further technical information about the vulnerability can be found in this blog.

    If you have further questions you may contact us through this projects lead researcher Kasimir Schulz.

    opened by TrellixVulnTeam 0
  • Example on how to easily decode QUIC SNI field

    Example on how to easily decode QUIC SNI field

    Hi there,

    my use case is the following:

    • I get the packet bytes from the network or PCAP file
    • I would like to extract SNI field related to that specific session that the packet belongs to
    • session management is done by my side

    Is it possible? How would the example look like?

    Thanks and regards

    opened by m-peko 0
  • Warnings as errors causing gcc 10 to fail to compile.

    Warnings as errors causing gcc 10 to fail to compile.

    Line 30 in CMakelists.txt:

    set(C_CXX_FLAGS "-Wall -Werror -Wformat=2 -Wsign-compare -Wmissing-field-initializers -ggdb -fvisibility=hidden")

    is causing the library to fail to compile on a recent kernel and gcc version.

    Setting to:

    set(C_CXX_FLAGS "-Wall -Wformat=2 -Wsign-compare -Wmissing-field-initializers -ggdb -fvisibility=hidden")

    i.e. removing -Werror allows for compilation to proceed.

    opened by smaudet 0
  • Compilation error on MAC inside BoringSSL

    Compilation error on MAC inside BoringSSL

    [ 50%] Building CXX object boringssl/crypto/aes/CMakeFiles/aes_test.dir/aes_test.cc.o
    /Users/bogdan/tools/libquic/boringssl/crypto/aes/aes_test.cc:97:5: error: bool literal returned from
          'main' [-Werror,-Wmain]
        return false;
        ^      ~~~~~
    1 error generated
    

    It seems aes_test.cc has a warning, and because of -Werror, compilation fails.

    OS: Mac 10.14.5 CMake: 3.14.4 Compiler: Apple LLVM version 10.0.1 (clang-1001.0.46.4)

    opened by Warchant 1
  • Conan package for libquic

    Conan package for libquic

    Hello, Do you know about Conan? Conan is modern dependency manager for C++. And will be great if your library will be available via package manager for other developers.

    Here you can find example, how you can create package for the library.

    If you have any questions, just ask :-)

    opened by zamazan4ik 0
Releases(v0.0.3-6e3a05d)
GnuTLS implements the TLS/SSL (Transport Layer Security aka Secure Sockets Layer) protocol

GnuTLS implements the TLS/SSL (Transport Layer Security aka Secure Sockets Layer) protocol

Jonathan Bastien-Filiatrault 3 Jun 3, 2021
XQUIC Library released by Alibaba is a cross-platform implementation of QUIC and HTTP/3 protocol.

XQUIC 简体中文文档 README-zh-CN Introduction XQUIC Library released by Alibaba is … … a client and server implementation of QUIC and HTTP/3 as specified by

Alibaba 1.3k Nov 28, 2022
Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. P2P networking / NAT traversal. Encryption.

GameNetworkingSockets GameNetworkingSockets is a basic transport layer for games. The features are: Connection-oriented API (like TCP) ... but message

Valve Software 6.3k Nov 29, 2022
(Test assignment) Transfer files over the network using a homegrown UDP protocol

Требования Linux x86_64 gcc >= 4.9 (C++11) Сборка $ make Запуск $ make run -j5 -j5 позволяет серверу и четырём клиентам запуститься одновременно. В

Alexander Batischev 2 Dec 18, 2021
A protocol for secure client/server connections over UDP

netcode netcode is a simple connection based client/server protocol built on top of UDP. It has the following features: Encrypted and signed packets S

The Network Protocol Company 2.2k Nov 24, 2022
A protocol for secure client/server connections over UDP

netcode netcode is a simple connection based client/server protocol built on top of UDP. It has the following features: Encrypted and signed packets S

The Network Protocol Company 2.2k Nov 24, 2022
Dohd is a minimalist DNS-over-HTTPS daemon that redirects all DoH queries to a local DNS server running on localhost:53 (UDP)

dohd Dohd (pron. doh-dee) is a minimalist DNS-over-HTTPS daemon that redirects all DoH queries to a local DNS server running on localhost:53 (UDP). Fe

Dyne.org 15 Nov 1, 2022
Stream server (serial-to-wifi bridge) for ESPHome

Stream server for ESPHome Custom component for ESPHome to expose a UART stream over WiFi or Ethernet. Can be used as a serial-to-wifi bridge as known

Oxan van Leeuwen 72 Nov 14, 2022
This is a small library that allows to stream a Dear ImGui scene to multiple WebSocket clients at once

imgui-ws Dear ImGui over WebSockets This is a small library that allows to stream a Dear ImGui scene to multiple WebSocket clients at once. This is ac

Georgi Gerganov 313 Nov 24, 2022
Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution

CppServer Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and

Ivan Shynkarenka 931 Nov 19, 2022
ENet reliable UDP networking library

Please visit the ENet homepage at http://enet.bespin.org for installation and usage instructions. If you obtained this package from github, the quick

Lee Salzman 2.2k Nov 28, 2022
A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols.

evpp Introduction 中文说明 evpp is a modern C++ network library for developing high performance network services using TCP/UDP/HTTP protocols. evpp provid

Qihoo 360 3.1k Nov 18, 2022
Mongoose Embedded Web Server Library - a multi-protocol embedded networking library with TCP/UDP, HTTP, WebSocket, MQTT built-in protocols, async DNS resolver, and non-blocking API.

Mongoose - Embedded Web Server / Embedded Networking Library Mongoose is a networking library for C/C++. It implements event-driven non-blocking APIs

Cesanta Software 8.9k Nov 21, 2022
Built a client-server application using TCP and UDP sockets, in which the clients can subscribe/unsubscribe to various topics.

Built a client-server application using TCP and UDP sockets, in which the clients can subscribe/unsubscribe to various topics.

null 1 Jun 22, 2022
Winpcap-based network packet capture tool, support TLS (part), UDP, ICMP, TCP, ARP, DNS and other protocol analysis, interface reference wireshark.

Winpcap-based network packet capture tool, support TLS (part), UDP, ICMP, TCP, ARP, DNS and other protocol analysis, interface reference wireshark.

null 53 Nov 20, 2022
Provide translation, currency conversion, and voting services. First using telnet you create a connection to a TCP socket, then the server connects to 3 UDP sockets hosted on other servers to do tasks.

to run micro servers g++ translator.cpp -o translator ./translator <port 1> g++ voting.cpp -o voting ./voting <port 2> g++ currency_converter.cpp -o c

Jacob Artuso 1 Oct 29, 2021
A TCP / UDP program supporting multiple test scenarios

sock_test A TCP / UDP program supporting multiple test scenarios The current communication protocol only supports UDP. TCP will be supported later. Ho

null 4 Mar 8, 2022
Simple local P2P chat on UDP sockets

Local P2P Chat This is a fully decentralized chat. To communicate, simply run it on computers in a single local network (using one port). All messages

Anton Khalitov 17 Nov 7, 2022
Wrapper for linux TCP/UDP/unix/USB socket connections

Socket Connection wrapper shared library Shared library that realize sockets connections and could transfer data-packages. Navigation Navigation Insta

Dmitry Golgovsky 7 Dec 21, 2021