added future idea docs, apologies if there are any typos will be fixed in future versions
This commit is contained in:
82
Docs/diagrams/P2PRCRemoteNodes.drawio
Normal file
82
Docs/diagrams/P2PRCRemoteNodes.drawio
Normal file
@@ -0,0 +1,82 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15" version="26.0.6">
|
||||
<diagram name="Page-1" id="D9MDhD-JVaS0pL1oCc8_">
|
||||
<mxGraphModel dx="954" dy="647" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-15" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="370" y="305" width="150" height="115" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-14" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="370" y="310" width="150" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-1" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="330" y="250" width="440" height="220" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-2" value="<h1 style="margin-top: 0px;">Home network</h1>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="460" y="260" width="180" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-3" value="P2PRC n1&nbsp;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="380" y="320" width="120" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-4" value="P2PRC n2&nbsp;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="380" y="380" width="120" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" edge="1" parent="1" target="qpEPyUIO_lfUjYMVJA4N-3">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="585" y="365" as="sourcePoint" />
|
||||
<mxPoint x="515" y="335" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-5" value="Morello board" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="570" y="350" width="120" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-7" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="qpEPyUIO_lfUjYMVJA4N-5" target="qpEPyUIO_lfUjYMVJA4N-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="370" as="sourcePoint" />
|
||||
<mxPoint x="440" y="310" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="540" y="365" />
|
||||
<mxPoint x="540" y="390" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-8" value="Group of Root Nodes" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="110" y="130" width="170" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-9" value="Node Accessing Morello&nbsp;<div>board outside the home network&nbsp;</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="20" y="300" width="150" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-11" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.46;exitY=-0.02;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" edge="1" parent="1" source="qpEPyUIO_lfUjYMVJA4N-9">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="390" y="360" as="sourcePoint" />
|
||||
<mxPoint x="110" y="150" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="90" y="150" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-13" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="qpEPyUIO_lfUjYMVJA4N-4" target="qpEPyUIO_lfUjYMVJA4N-8">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="390" y="360" as="sourcePoint" />
|
||||
<mxPoint x="260" y="370" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="300" y="395" />
|
||||
<mxPoint x="300" y="155" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="qpEPyUIO_lfUjYMVJA4N-17" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" edge="1" parent="1" source="qpEPyUIO_lfUjYMVJA4N-3" target="qpEPyUIO_lfUjYMVJA4N-8">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="390" y="360" as="sourcePoint" />
|
||||
<mxPoint x="290" y="150" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="300" y="335" />
|
||||
<mxPoint x="300" y="155" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
BIN
Docs/docs.odt
Normal file
BIN
Docs/docs.odt
Normal file
Binary file not shown.
@@ -1,6 +1,18 @@
|
||||
* Chapter 1: Introduction
|
||||
#+SETUPFILE: https://fniessen.github.io/org-html-themes/org/theme-readtheorg.setup
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://fniessen.github.io/org-html-themes/src/readtheorg_theme/css/search.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style.css"/>
|
||||
|
||||
|
||||
#+ATTR_HTML: :align right
|
||||
#+ATTR_ORG: :align center
|
||||
#+ATTR_ORG: :width
|
||||
[[../artwork/p2prc-logos/Colored-On-Light-Image.png]]
|
||||
|
||||
|
||||
* Introduction
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: chapter-1-introduction
|
||||
:CUSTOM_ID: chapter1-introduction
|
||||
:END:
|
||||
|
||||
** Abstract
|
||||
@@ -191,7 +203,6 @@ GLOBAL OPTIONS:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: start-as-a-server
|
||||
:END:
|
||||
Do ensure you have Docker installed for this
|
||||
|
||||
#+begin_example
|
||||
p2prc -s
|
||||
@@ -391,12 +402,23 @@ configuration module.
|
||||
{
|
||||
"ip_address": [
|
||||
{
|
||||
"ipv4": "<ipv4 address>",
|
||||
"latency": "<latency>",
|
||||
"download": "<download>",
|
||||
"upload": "<upload>"
|
||||
"port no": "<server port no>",
|
||||
}
|
||||
"Name": "<hostname of the machine>",
|
||||
"MachineUsername": "<machine username>",
|
||||
"IPV4": "<ipv4 address>",
|
||||
"IPV6": "<ipv6 address (Not used)>",
|
||||
"Latency": <latency to the server>,
|
||||
"Download": <download speed (Not used)>,
|
||||
"Upload": <upload speed (Not used)>,
|
||||
"ServerPort": "<server port no>",
|
||||
"BareMetalSSHPort": "<Baremetal ssh port no>",
|
||||
"NAT": "<boolean representing if the node is behind NAT or not>",
|
||||
"EscapeImplementation": "<NAT traversal implementation>",
|
||||
"ProxyServer": "<If the node listed is acting as a proxy server>",
|
||||
"UnSafeMode": <Unsafe mode if turned on will allow all nodes in the network public keys to be
|
||||
added to that particular node>",
|
||||
"PublicKey": "<Public key of that particular node>",
|
||||
"CustomInformation": "<custom information passed in through all the nodes in the network>"
|
||||
}
|
||||
]
|
||||
}
|
||||
#+end_src
|
||||
@@ -704,7 +726,7 @@ The Abstractions package consists of black-boxed functions for P2PRC.
|
||||
- =ViewIPTable()=: View the IP table which about nodes in the network.
|
||||
- =UpdateIPTable()=: Force update IP table to learn about new nodes
|
||||
faster.
|
||||
|
||||
|
||||
* NAT Traversal
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: nat-traversal
|
||||
@@ -723,7 +745,7 @@ there are 2 actions performed. The first one is =/FRPPort= to the TURN
|
||||
server to receive a port which is used to generate the external port
|
||||
from the TURN server. The flow below describes the workflow.
|
||||
|
||||
*** Client mode
|
||||
* Client mode
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: client-mode
|
||||
:END:
|
||||
@@ -755,3 +777,55 @@ func main() {
|
||||
}
|
||||
}
|
||||
#+end_src
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* Ideas for future potencial features
|
||||
Consists of personal loideas for the future of P2PRC.
|
||||
At moment only has main contributors writiing to this.
|
||||
|
||||
** To support hetrogenous set of Nodes that cannot run P2PRC
|
||||
This stems from a personal issue I have when doing research
|
||||
on [[https://github.com/CTSRD-CHERI/cheribsd][CheriBSD]] kernel. For my research I am using the ARM morello
|
||||
which is a 128bit ARMv8 processor. At the moment Go programs
|
||||
can cannot compile and run inside the CPU. This means I cannot
|
||||
run P2PRC at the moment inside the ARM morello to remotely access
|
||||
it when it's behind NAT using P2PRC. This would indeed be a common
|
||||
problem when running against various Architectures that do not
|
||||
support running P2PRC. As you will see soon this also creates
|
||||
oppurtunity space to scale faster to nodes in a local network
|
||||
and would introduce a new layer fault tolerance within a local
|
||||
network nodes.
|
||||
|
||||
*** Assumptions:
|
||||
- I have a Morello board that cannot run P2PRC
|
||||
- The Morello has a local IP address (ex: 192.168.0.10)
|
||||
- I have 2 laptops running P2PRC in that local network.
|
||||
- This means I have 2 ways to access the Morello board: Which is to SSH
|
||||
into either 2 laptops and then SSH into 192.168.0.10 to gain access
|
||||
to the board. Wouldn't it be great to automate this whole layer and
|
||||
as well look into custom tasks into the hetrogenous hardware.
|
||||
*** Set of interesting possible:
|
||||
We build a cool set possibilities before and use this to build up the implementation
|
||||
plan.
|
||||
- We can use P2PRC access the morello board remotely in a single command.
|
||||
- We can use the P2PRC protocol to run servers inside the morello board via traversed
|
||||
node locally which can access that Node.
|
||||
- Spin servers on node not running P2PRC using the P2PRC standard abstractions.
|
||||
- Auto-setup P2PRC nodes with just SSH access via potencially a DSL.
|
||||
- A neat use case for CHERI for instance would be use the architecture to run light
|
||||
weight hypervisors.
|
||||
*** Implementation
|
||||
- To use implementations similar to [[https://linux.die.net/man/1/socat][socat]] to ensure we can bind address of local
|
||||
nodes to a node running P2PRC and the node running P2PRC can do a local map port.
|
||||
- We are working on hardening the implementation of the --mp (Map port) to even
|
||||
map ports to machines which remotely running P2PRC. This means of instance I
|
||||
can issue a command to the Morello board without the morello board being in
|
||||
my local network.
|
||||
- We would want to implement the exsisting P2PRC public key mechanism as well so that
|
||||
other nodes can access the Morello board who have permission access.
|
||||
|
||||
#+CAPTION: Implementation idea (To be improved upon)
|
||||
[[./images/P2PRCRemoteNodes.png]]
|
||||
|
||||
BIN
Docs/images/P2PRCRemoteNodes.png
Normal file
BIN
Docs/images/P2PRCRemoteNodes.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
25
Docs/style.css
Normal file
25
Docs/style.css
Normal file
@@ -0,0 +1,25 @@
|
||||
#table-of-contents h2{
|
||||
z-index: 200;
|
||||
background-color: #b96c29;
|
||||
text-align: center;
|
||||
padding: 0.809em;
|
||||
display: block;
|
||||
color: #fcfcfc;
|
||||
font-size: 100%;
|
||||
margin-bottom: 0.809em;
|
||||
}
|
||||
|
||||
#search-results li {
|
||||
background-color: #b96c29;
|
||||
color: white;
|
||||
margin-bottom: 5px;
|
||||
padding: 5px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
h4,h5,h6{
|
||||
color: #b96c29;
|
||||
font-weight:300;
|
||||
}
|
||||
Reference in New Issue
Block a user