|
@@ -0,0 +1,191 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+
|
|
|
+# Compute analytical formulas for the bytes used per epoch by the
|
|
|
+# various modes
|
|
|
+
|
|
|
+import sympy
|
|
|
+
|
|
|
+A, R_B, R_N, R, logR, C_B, C_N, C, gamma, circ, P_Delta, \
|
|
|
+DirAuthConsensusMsg, DirAuthENDIVEDiffMsg, DirAuthGetConsensusMsg, \
|
|
|
+DirAuthGetENDIVEDiffMsg, DirAuthUploadDescMsg, DirAuthENDIVEMsg, \
|
|
|
+DirAuthGetENDIVEMsg, DirAuthUploadDescMsg, RelayConsensusMsg, \
|
|
|
+RelayDescMsg, RelayGetConsensusMsg, RelayGetDescMsg, \
|
|
|
+SinglePassCreateCircuitMsgNotLast, SinglePassCreateCircuitMsgLast, \
|
|
|
+SinglePassCreatedCircuitCellLast, SinglePassCreatedCircuitCellMiddle, \
|
|
|
+SinglePassCreatedCircuitCellFirst, TelescopingCreateCircuitMsg, \
|
|
|
+TelescopingCreatedCircuitCell, TelescopingExtendCircuitCell, \
|
|
|
+TelescopingExtendedCircuitCell, VanillaCreateCircuitMsg, \
|
|
|
+VanillaCreatedCircuitCell, VanillaExtendCircuitCell, \
|
|
|
+VanillaExtendedCircuitCell, DirAuthGetConsensusDiffMsg, \
|
|
|
+DirAuthConsensusDiffMsg, RelayGetConsensusDiffMsg, \
|
|
|
+RelayConsensusDiffMsg \
|
|
|
+= sympy.symbols("""
|
|
|
+A, R_B, R_N, R, logR, C_B, C_N, C, gamma, circ, P_Delta,
|
|
|
+DirAuthConsensusMsg, DirAuthENDIVEDiffMsg, DirAuthGetConsensusMsg,
|
|
|
+DirAuthGetENDIVEDiffMsg, DirAuthUploadDescMsg, DirAuthENDIVEMsg,
|
|
|
+DirAuthGetENDIVEMsg, DirAuthUploadDescMsg, RelayConsensusMsg,
|
|
|
+RelayDescMsg, RelayGetConsensusMsg, RelayGetDescMsg,
|
|
|
+SinglePassCreateCircuitMsgNotLast, SinglePassCreateCircuitMsgLast,
|
|
|
+SinglePassCreatedCircuitCellLast, SinglePassCreatedCircuitCellMiddle,
|
|
|
+SinglePassCreatedCircuitCellFirst, TelescopingCreateCircuitMsg,
|
|
|
+TelescopingCreatedCircuitCell, TelescopingExtendCircuitCell,
|
|
|
+TelescopingExtendedCircuitCell, VanillaCreateCircuitMsg,
|
|
|
+VanillaCreatedCircuitCell, VanillaExtendCircuitCell,
|
|
|
+VanillaExtendedCircuitCell, DirAuthGetConsensusDiffMsg,
|
|
|
+DirAuthConsensusDiffMsg, RelayGetConsensusDiffMsg,
|
|
|
+RelayConsensusDiffMsg
|
|
|
+""")
|
|
|
+
|
|
|
+globalsubs = [
|
|
|
+ (A , 9),
|
|
|
+ (R_N , R - R_B),
|
|
|
+ (R_B , 0.010 * R),
|
|
|
+ (C_N , C - C_B),
|
|
|
+ (C_B , 0.16 * C),
|
|
|
+ (circ , gamma * C),
|
|
|
+ (gamma , 8.9),
|
|
|
+ (C , 2500000*R/6500),
|
|
|
+ (P_Delta, 0.019),
|
|
|
+]
|
|
|
+
|
|
|
+# The actual sizes in bytes of each message type were logged by
|
|
|
+# uncommenting this line in network.py:
|
|
|
+ # logging.info("%s size %d", type(self).__name__, sz)
|
|
|
+
|
|
|
+singlepass_merkle_subs = [
|
|
|
+ (DirAuthConsensusMsg, 877),
|
|
|
+ (DirAuthGetConsensusMsg, 41),
|
|
|
+ (DirAuthGetENDIVEMsg, 38),
|
|
|
+ (DirAuthGetENDIVEDiffMsg, 42),
|
|
|
+ (DirAuthENDIVEDiffMsg, (P_Delta * DirAuthENDIVEMsg).subs(globalsubs)),
|
|
|
+ (DirAuthENDIVEMsg, 274 * R),
|
|
|
+ (DirAuthUploadDescMsg, 425),
|
|
|
+ (RelayConsensusMsg, 873),
|
|
|
+ (RelayDescMsg, 415),
|
|
|
+ (RelayGetConsensusMsg, 37),
|
|
|
+ (RelayGetDescMsg, 32),
|
|
|
+ (SinglePassCreateCircuitMsgLast, 187),
|
|
|
+ (SinglePassCreateCircuitMsgNotLast, 239),
|
|
|
+ (SinglePassCreatedCircuitCellFirst, 1426+82*logR),
|
|
|
+ (SinglePassCreatedCircuitCellMiddle, 903+41*logR),
|
|
|
+ (SinglePassCreatedCircuitCellLast, 190),
|
|
|
+]
|
|
|
+
|
|
|
+singlepass_threshsig_subs = [
|
|
|
+ (DirAuthConsensusMsg, 789),
|
|
|
+ (DirAuthGetConsensusMsg, 41),
|
|
|
+ (DirAuthGetENDIVEMsg, 38),
|
|
|
+ (DirAuthGetENDIVEDiffMsg, 42),
|
|
|
+ (DirAuthENDIVEDiffMsg, DirAuthENDIVEMsg),
|
|
|
+ (DirAuthENDIVEMsg, 348*R),
|
|
|
+ (DirAuthUploadDescMsg, 425),
|
|
|
+ (RelayConsensusMsg, 784),
|
|
|
+ (RelayDescMsg, 415),
|
|
|
+ (RelayGetConsensusMsg, 37),
|
|
|
+ (RelayGetDescMsg, 32),
|
|
|
+ (SinglePassCreateCircuitMsgLast, 187),
|
|
|
+ (SinglePassCreateCircuitMsgNotLast, 239),
|
|
|
+ (SinglePassCreatedCircuitCellFirst, 1554),
|
|
|
+ (SinglePassCreatedCircuitCellMiddle, 969),
|
|
|
+ (SinglePassCreatedCircuitCellLast, 190),
|
|
|
+]
|
|
|
+
|
|
|
+telescoping_merkle_subs = [
|
|
|
+ (DirAuthConsensusMsg, 877),
|
|
|
+ (DirAuthGetConsensusMsg, 41),
|
|
|
+ (DirAuthGetENDIVEMsg, 38),
|
|
|
+ (DirAuthGetENDIVEDiffMsg, 42),
|
|
|
+ (DirAuthENDIVEDiffMsg, (P_Delta * DirAuthENDIVEMsg).subs(globalsubs)),
|
|
|
+ (DirAuthENDIVEMsg, 234 * R),
|
|
|
+ (DirAuthUploadDescMsg, 372),
|
|
|
+ (RelayConsensusMsg, 873),
|
|
|
+ (RelayGetConsensusMsg, 37),
|
|
|
+ (RelayGetDescMsg, 32),
|
|
|
+ (RelayDescMsg, 362),
|
|
|
+ (TelescopingCreateCircuitMsg, 120),
|
|
|
+ (TelescopingCreatedCircuitCell, 179),
|
|
|
+ (TelescopingExtendCircuitCell, 122),
|
|
|
+ (TelescopingExtendedCircuitCell, 493+41*logR),
|
|
|
+]
|
|
|
+
|
|
|
+telescoping_threshsig_subs = [
|
|
|
+ (DirAuthConsensusMsg, 789),
|
|
|
+ (DirAuthGetConsensusMsg, 41),
|
|
|
+ (DirAuthGetENDIVEMsg, 38),
|
|
|
+ (DirAuthGetENDIVEDiffMsg, 42),
|
|
|
+ (DirAuthENDIVEDiffMsg, DirAuthENDIVEMsg),
|
|
|
+ (DirAuthENDIVEMsg, 307*R),
|
|
|
+ (DirAuthUploadDescMsg, 372),
|
|
|
+ (RelayConsensusMsg, 788),
|
|
|
+ (RelayGetConsensusMsg, 37),
|
|
|
+ (RelayGetDescMsg, 32),
|
|
|
+ (RelayDescMsg, 362),
|
|
|
+ (TelescopingCreateCircuitMsg, 120),
|
|
|
+ (TelescopingCreatedCircuitCell, 179),
|
|
|
+ (TelescopingExtendCircuitCell, 122),
|
|
|
+ (TelescopingExtendedCircuitCell, 556),
|
|
|
+]
|
|
|
+
|
|
|
+vanilla_subs = [
|
|
|
+ (DirAuthConsensusDiffMsg, (P_Delta * DirAuthConsensusMsg).subs(globalsubs)),
|
|
|
+ (DirAuthConsensusMsg, RelayConsensusMsg),
|
|
|
+ (DirAuthGetConsensusDiffMsg, 45),
|
|
|
+ (DirAuthGetConsensusMsg, 41),
|
|
|
+ (DirAuthUploadDescMsg, 372),
|
|
|
+ (RelayConsensusDiffMsg, (P_Delta * RelayConsensusMsg).subs(globalsubs)),
|
|
|
+ (RelayConsensusMsg, 219*R),
|
|
|
+ (RelayGetConsensusDiffMsg, 41),
|
|
|
+ (RelayGetConsensusMsg, 37),
|
|
|
+ (VanillaCreateCircuitMsg, 116),
|
|
|
+ (VanillaCreatedCircuitCell, 175),
|
|
|
+ (VanillaExtendCircuitCell, 157),
|
|
|
+ (VanillaExtendedCircuitCell, 176),
|
|
|
+]
|
|
|
+
|
|
|
+# The formulas were output by bytecounts.py
|
|
|
+
|
|
|
+singlepass_totrelay = \
|
|
|
+ R_N * ( DirAuthConsensusMsg + DirAuthENDIVEDiffMsg + DirAuthGetConsensusMsg + DirAuthGetENDIVEDiffMsg + A*DirAuthUploadDescMsg ) \
|
|
|
++ R_B * ( DirAuthConsensusMsg + DirAuthENDIVEMsg + DirAuthGetConsensusMsg + DirAuthGetENDIVEMsg + A*DirAuthUploadDescMsg ) \
|
|
|
++ C * ( RelayConsensusMsg + RelayDescMsg + RelayGetConsensusMsg + RelayGetDescMsg ) \
|
|
|
++ circ * ( 3*SinglePassCreateCircuitMsgNotLast + 2*SinglePassCreateCircuitMsgLast + 2*SinglePassCreatedCircuitCellLast + 2*SinglePassCreatedCircuitCellMiddle + SinglePassCreatedCircuitCellFirst + 20 )
|
|
|
+
|
|
|
+singlepass_totclient = \
|
|
|
+ C * ( RelayConsensusMsg + RelayDescMsg + RelayGetConsensusMsg + RelayGetDescMsg ) \
|
|
|
++ circ * ( SinglePassCreateCircuitMsgNotLast + SinglePassCreatedCircuitCellFirst + 4 )
|
|
|
+
|
|
|
+telescoping_totrelay = \
|
|
|
+ R_N * ( DirAuthConsensusMsg + DirAuthENDIVEDiffMsg + DirAuthGetConsensusMsg + DirAuthGetENDIVEDiffMsg + A*DirAuthUploadDescMsg ) \
|
|
|
++ R_B * ( DirAuthConsensusMsg + DirAuthENDIVEMsg + DirAuthGetConsensusMsg + DirAuthGetENDIVEMsg + A*DirAuthUploadDescMsg ) \
|
|
|
++ C * ( RelayConsensusMsg + RelayDescMsg + RelayGetConsensusMsg + RelayGetDescMsg ) \
|
|
|
++ circ * ( 5*TelescopingCreateCircuitMsg + 5*TelescopingCreatedCircuitCell + 4*TelescopingExtendCircuitCell + 4*TelescopingExtendedCircuitCell + 52 )
|
|
|
+
|
|
|
+telescoping_totclient = \
|
|
|
+ C * ( RelayConsensusMsg + RelayDescMsg + RelayGetConsensusMsg + RelayGetDescMsg ) \
|
|
|
++ circ * ( TelescopingCreateCircuitMsg + TelescopingCreatedCircuitCell + 2*TelescopingExtendCircuitCell + 2*TelescopingExtendedCircuitCell + 20 )
|
|
|
+
|
|
|
+vanilla_totrelay = \
|
|
|
+ R_N * ( DirAuthConsensusDiffMsg + DirAuthGetConsensusDiffMsg + A*DirAuthUploadDescMsg ) \
|
|
|
++ R_B * ( DirAuthConsensusMsg + DirAuthGetConsensusMsg + A*DirAuthUploadDescMsg ) \
|
|
|
++ C_N * ( RelayConsensusDiffMsg + RelayGetConsensusDiffMsg ) \
|
|
|
++ C_B * ( RelayConsensusMsg + RelayGetConsensusMsg ) \
|
|
|
++ circ * ( 5*VanillaCreateCircuitMsg + 5*VanillaCreatedCircuitCell + 4*VanillaExtendCircuitCell + 4*VanillaExtendedCircuitCell + 52 )
|
|
|
+
|
|
|
+vanilla_totclient = \
|
|
|
+ C_N * ( RelayConsensusDiffMsg + RelayGetConsensusDiffMsg ) \
|
|
|
++ C_B * ( RelayConsensusMsg + RelayGetConsensusMsg ) \
|
|
|
++ circ * ( VanillaCreateCircuitMsg + VanillaCreatedCircuitCell + 2*VanillaExtendCircuitCell + 2*VanillaExtendedCircuitCell + 20 )
|
|
|
+
|
|
|
+# Copy the output into plotdats.py, replacing 'R' by 'x' and 'logR' by
|
|
|
+# 'cail(log(x)/log(2))'
|
|
|
+
|
|
|
+print('singlepass_merkle_relay =', (singlepass_totrelay/C).subs(globalsubs).subs(singlepass_merkle_subs).simplify())
|
|
|
+print('singlepass_merkle_client =', (singlepass_totclient/C).subs(globalsubs).subs(singlepass_merkle_subs).simplify())
|
|
|
+print('singlepass_threshsig_relay =', (singlepass_totrelay/C).subs(globalsubs).subs(singlepass_threshsig_subs).simplify())
|
|
|
+print('singlepass_threshsig_client =', (singlepass_totclient/C).subs(globalsubs).subs(singlepass_threshsig_subs).simplify())
|
|
|
+print('telescoping_merkle_relay =', (telescoping_totrelay/C).subs(globalsubs).subs(telescoping_merkle_subs).simplify())
|
|
|
+print('telescoping_merkle_client =', (telescoping_totclient/C).subs(globalsubs).subs(telescoping_merkle_subs).simplify())
|
|
|
+print('telescoping_threshsig_relay =', (telescoping_totrelay/C).subs(globalsubs).subs(telescoping_threshsig_subs).simplify())
|
|
|
+print('telescoping_threshsig_client =', (telescoping_totclient/C).subs(globalsubs).subs(telescoping_threshsig_subs).simplify())
|
|
|
+print('vanilla_relay =', (vanilla_totrelay/C).subs(globalsubs).subs(vanilla_subs).simplify())
|
|
|
+print('vanilla_client =', (vanilla_totclient/C).subs(globalsubs).subs(vanilla_subs).simplify())
|