Loading .gitlab-ci.yml +11 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,17 @@ build:container: - docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG - docker rmi $CI_REGISTRY_IMAGE:$DOCKER_TAG build:container_tcp: stage: build tags: - docker script: - export DOCKER_TAG=$(echo "$CI_BUILD_REF_NAME""_tcp" | sed 's#/#_#' | sed 's#^master$#latest#') - docker build -t $CI_REGISTRY_IMAGE:$DOCKER_TAG --build-arg http_proxy=http://www-proxy.uni-saarland.de:3128 -f docker/Dockerfile_tcp . - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG - docker rmi $CI_REGISTRY_IMAGE:$DOCKER_TAG test:prrt_mem: stage: test dependencies: Loading README.md +17 −14 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ ## Features * Hybrid error control (FEC + ARQ) using systematic Vandermonde codes * Congestion control using a variant of [BBR](https://groups.google.com/forum/#!forum/bbr-dev) * Clock synchronization between sending stack and receiving stack * Applications can specify packet-level expiration times * Different receive modes for ASAP and time-synchronized operation Loading @@ -29,9 +30,9 @@ port = int(sys.argv[1]) s = prrt.PrrtSocket(port=port) while True: d = s.recv() d = s.recv().decode("utf8") if d != "Close": print d print(d) else: break ``` Loading @@ -44,25 +45,27 @@ import prrt host = sys.argv[1] port = int(sys.argv[2]) localport = int(sys.argv[3]) s = prrt.PrrtSocket(port=port) s = prrt.PrrtSocket(port=localport) s.connect(host, port) for i in range(10): s.send("Packet {}".format(i)) s.send("Close") s.send("Packet {}".format(i).encode("utf8")) s.send("Close".encode("utf8")) ``` Start the receiver by: ```bash python receiver.py 5000 python3 receiver.py 5000 ``` In a separate terminal, run: ```bash python sender.py 127.0.0.1 5000 python3 sender.py 127.0.0.1 5000 6000 ``` This should generate the following output in the receiver console: Loading dissect/prrt.lua +10 −3 Original line number Diff line number Diff line Loading @@ -89,9 +89,16 @@ local ex_type = Field.new("prrt.type") local function getType() return ex_type()() end local function getTypeName() return prrtPacketTypeNames[getType()] end local ex_index = Field.new("prrt.index") local function getIndex() return ex_index()() end local ex_data_length = Field.new("prrt.data.length") local function getDataLength() return ex_data_length()() end local ex_red_baseseqno = Field.new("prrt.redundancy.baseSequenceNumber") local function getRedBaseSeqNo() return ex_red_baseseqno()() end local ex_red_n = Field.new("prrt.redundancy.n") local function getRedN() return ex_red_n()() end Loading @@ -109,7 +116,7 @@ local function dissect_data(buffer, pinfo, root) tree:add(pf_data_groupRTprop, buffer:range(8,4)) tree:add(pf_data_packettimeout, buffer:range(12,4)) local label = "DATA Len=" .. getDataLength() local label = "[D] Idx=" .. getIndex() .. " Len=" .. getDataLength() tree:set_text(label) pinfo.cols.info:set(label) end Loading @@ -121,7 +128,7 @@ local function dissect_redundancy(buffer, pinfo, root) tree:add(pf_red_n, buffer:range(6,1)) tree:add(pf_red_k, buffer:range(7,1)) local label = "REDUNDANCY n=" .. getRedN() .. " k=" .. getRedK() local label = "[R] Idx=" .. getIndex() .. " b=" .. getRedBaseSeqNo() .. " n=" .. getRedN() .. " k=" .. getRedK() tree:set_text(label) pinfo.cols.info:set(label) end Loading @@ -139,7 +146,7 @@ local function dissect_feedback(buffer, pinfo, root) tree:add(pf_fb_acktype, buffer:range(20,1)) tree:add(pf_fb_ackSeqN, buffer:range(21, 2)) local label = "FEEDBACK" local label = "[F]" tree:set_text(label) pinfo.cols.info:set(label) end Loading docker/Dockerfile +8 −5 Original line number Diff line number Diff line Loading @@ -2,9 +2,13 @@ FROM gcc:5 MAINTAINER Andreas Schmidt <schmidt@nt.uni-saarland.de> RUN apt-get update \ && apt-get upgrade -y \ && apt-get install -y cmake ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install --yes --force-yes \ bc \ cmake \ traceroute \ tshark COPY CMakeLists.txt /prrt/ COPY prrt /prrt/prrt Loading @@ -15,8 +19,7 @@ WORKDIR /prrt RUN cmake . \ && make ENV PATH /prrt/bin:$PATH WORKDIR /prrt/bin ENV PATH /prrt:$PATH VOLUME /output Loading docker/Dockerfile_tcp 0 → 100644 +26 −0 Original line number Diff line number Diff line FROM gcc:5 MAINTAINER Andreas Schmidt <schmidt@nt.uni-saarland.de> ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install --yes --force-yes \ bc \ cmake \ traceroute \ tshark COPY CMakeLists.txt /prrt/ COPY prrt /prrt/prrt COPY tests /prrt/tests COPY docker/entrypoint.sh / WORKDIR /prrt RUN cmake -DTCP=1 . \ && make ENV PATH /prrt:$PATH VOLUME /output ENTRYPOINT ["/entrypoint.sh"] Loading
.gitlab-ci.yml +11 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,17 @@ build:container: - docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG - docker rmi $CI_REGISTRY_IMAGE:$DOCKER_TAG build:container_tcp: stage: build tags: - docker script: - export DOCKER_TAG=$(echo "$CI_BUILD_REF_NAME""_tcp" | sed 's#/#_#' | sed 's#^master$#latest#') - docker build -t $CI_REGISTRY_IMAGE:$DOCKER_TAG --build-arg http_proxy=http://www-proxy.uni-saarland.de:3128 -f docker/Dockerfile_tcp . - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push $CI_REGISTRY_IMAGE:$DOCKER_TAG - docker rmi $CI_REGISTRY_IMAGE:$DOCKER_TAG test:prrt_mem: stage: test dependencies: Loading
README.md +17 −14 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ ## Features * Hybrid error control (FEC + ARQ) using systematic Vandermonde codes * Congestion control using a variant of [BBR](https://groups.google.com/forum/#!forum/bbr-dev) * Clock synchronization between sending stack and receiving stack * Applications can specify packet-level expiration times * Different receive modes for ASAP and time-synchronized operation Loading @@ -29,9 +30,9 @@ port = int(sys.argv[1]) s = prrt.PrrtSocket(port=port) while True: d = s.recv() d = s.recv().decode("utf8") if d != "Close": print d print(d) else: break ``` Loading @@ -44,25 +45,27 @@ import prrt host = sys.argv[1] port = int(sys.argv[2]) localport = int(sys.argv[3]) s = prrt.PrrtSocket(port=port) s = prrt.PrrtSocket(port=localport) s.connect(host, port) for i in range(10): s.send("Packet {}".format(i)) s.send("Close") s.send("Packet {}".format(i).encode("utf8")) s.send("Close".encode("utf8")) ``` Start the receiver by: ```bash python receiver.py 5000 python3 receiver.py 5000 ``` In a separate terminal, run: ```bash python sender.py 127.0.0.1 5000 python3 sender.py 127.0.0.1 5000 6000 ``` This should generate the following output in the receiver console: Loading
dissect/prrt.lua +10 −3 Original line number Diff line number Diff line Loading @@ -89,9 +89,16 @@ local ex_type = Field.new("prrt.type") local function getType() return ex_type()() end local function getTypeName() return prrtPacketTypeNames[getType()] end local ex_index = Field.new("prrt.index") local function getIndex() return ex_index()() end local ex_data_length = Field.new("prrt.data.length") local function getDataLength() return ex_data_length()() end local ex_red_baseseqno = Field.new("prrt.redundancy.baseSequenceNumber") local function getRedBaseSeqNo() return ex_red_baseseqno()() end local ex_red_n = Field.new("prrt.redundancy.n") local function getRedN() return ex_red_n()() end Loading @@ -109,7 +116,7 @@ local function dissect_data(buffer, pinfo, root) tree:add(pf_data_groupRTprop, buffer:range(8,4)) tree:add(pf_data_packettimeout, buffer:range(12,4)) local label = "DATA Len=" .. getDataLength() local label = "[D] Idx=" .. getIndex() .. " Len=" .. getDataLength() tree:set_text(label) pinfo.cols.info:set(label) end Loading @@ -121,7 +128,7 @@ local function dissect_redundancy(buffer, pinfo, root) tree:add(pf_red_n, buffer:range(6,1)) tree:add(pf_red_k, buffer:range(7,1)) local label = "REDUNDANCY n=" .. getRedN() .. " k=" .. getRedK() local label = "[R] Idx=" .. getIndex() .. " b=" .. getRedBaseSeqNo() .. " n=" .. getRedN() .. " k=" .. getRedK() tree:set_text(label) pinfo.cols.info:set(label) end Loading @@ -139,7 +146,7 @@ local function dissect_feedback(buffer, pinfo, root) tree:add(pf_fb_acktype, buffer:range(20,1)) tree:add(pf_fb_ackSeqN, buffer:range(21, 2)) local label = "FEEDBACK" local label = "[F]" tree:set_text(label) pinfo.cols.info:set(label) end Loading
docker/Dockerfile +8 −5 Original line number Diff line number Diff line Loading @@ -2,9 +2,13 @@ FROM gcc:5 MAINTAINER Andreas Schmidt <schmidt@nt.uni-saarland.de> RUN apt-get update \ && apt-get upgrade -y \ && apt-get install -y cmake ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install --yes --force-yes \ bc \ cmake \ traceroute \ tshark COPY CMakeLists.txt /prrt/ COPY prrt /prrt/prrt Loading @@ -15,8 +19,7 @@ WORKDIR /prrt RUN cmake . \ && make ENV PATH /prrt/bin:$PATH WORKDIR /prrt/bin ENV PATH /prrt:$PATH VOLUME /output Loading
docker/Dockerfile_tcp 0 → 100644 +26 −0 Original line number Diff line number Diff line FROM gcc:5 MAINTAINER Andreas Schmidt <schmidt@nt.uni-saarland.de> ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install --yes --force-yes \ bc \ cmake \ traceroute \ tshark COPY CMakeLists.txt /prrt/ COPY prrt /prrt/prrt COPY tests /prrt/tests COPY docker/entrypoint.sh / WORKDIR /prrt RUN cmake -DTCP=1 . \ && make ENV PATH /prrt:$PATH VOLUME /output ENTRYPOINT ["/entrypoint.sh"]