Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
R
railgun-routing-client
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Railgun
railgun-routing-client
Commits
7e384573
Commit
7e384573
authored
Aug 18, 2021
by
神楽坂玲奈
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
# Conflicts: # src/RouteWriter.ts # src/Server.ts
parents
83b41c06
786fbf24
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
28 additions
and
18 deletions
+28
-18
Dockerfile
Dockerfile
+8
-9
package-lock.json
package-lock.json
+1
-0
src/RouteWriter.ts
src/RouteWriter.ts
+11
-3
src/Server.ts
src/Server.ts
+4
-6
table.sh
table.sh
+4
-0
No files found.
Dockerfile
View file @
7e384573
FROM
node
RUN
apt-get update
RUN
apt-get
install
-y
kmod ipset gettext
RUN
mkdir
-p
/usr/src/app
WORKDIR
/usr/src/app
FROM
node:16.3.0-alpine3.13
RUN
apk add
--no-cache
iproute2
COPY
package.json /usr/src/app/
RUN
npm
install
COPY
. /usr/src/app
WORKDIR
/app
CMD
[ "./start.sh" ]
COPY
package*.json ./
RUN
npm ci
COPY
. .
CMD
[ "./node_modules/.bin/ts-node", "src/main.ts"]
package-lock.json
View file @
7e384573
...
...
@@ -5,6 +5,7 @@
"requires"
:
true
,
"packages"
:
{
""
:
{
"name"
:
"railgun-routing-client"
,
"version"
:
"0.0.1"
,
"devDependencies"
:
{
"@types/node"
:
"^16.6.1"
,
...
...
src/RouteWriter.ts
View file @
7e384573
import
config
from
'
../config/config.json
'
;
import
routers
from
'
../config/routers.json
'
;
import
child_process
from
'
child_process
'
;
export
class
RouteWriter
{
static
input
:
string
[]
=
[];
static
reset
()
{
console
.
log
(
`route flush table
${
config
.
table
}
proto
${
config
.
proto
}
`
);
for
(
const
peer
of
routers
.
filter
(
r
=>
r
.
id
!==
parseInt
(
process
.
env
.
RAILGUN_ID
)
&&
r
.
interface
))
{
this
.
input
.
push
(
`route flush table
${
config
.
table
}
proto
${
config
.
proto
}
`
);
for
(
const
peer
of
routers
.
filter
(
(
r
)
=>
r
.
id
!==
parseInt
(
process
.
env
.
RAILGUN_ID
)
&&
r
.
interface
))
{
this
.
set
(
peer
.
id
,
peer
.
id
);
}
}
...
...
@@ -15,7 +17,13 @@ export class RouteWriter {
const
to
=
routers
.
find
(
r
=>
r
.
id
===
toId
);
const
via
=
routers
.
find
(
r
=>
r
.
id
===
viaId
);
for
(
const
address
of
[
to
.
address
,
...
to
.
subnets
])
{
console
.
log
(
`route replace
${
address
}
dev
${
via
.
interface
}
`
);
this
.
input
.
push
(
`route replace
${
address
}
dev
${
via
.
interface
}
table
${
config
.
table
}
proto
${
config
.
proto
}
`
);
}
}
static
commit
()
{
// 可能改成异步的会更好点
child_process
.
execFileSync
(
'
ip
'
,
[
'
-batch
'
,
'
-
'
],
{
input
:
this
.
input
.
join
(
'
\n
'
)
});
this
.
input
=
[];
}
}
src/Server.ts
View file @
7e384573
...
...
@@ -21,7 +21,7 @@ export class Server {
for
(
const
[
to
,
via
]
of
Object
.
entries
(
message
.
via
))
{
RouteWriter
.
set
(
parseInt
(
to
),
via
);
}
RouteWriter
.
commit
();
this
.
ack
=
message
.
seq
+
1
;
const
response
:
UploadMessage
=
{
...
...
@@ -46,12 +46,10 @@ export class Server {
continue
;
}
const
reliability
=
(
peer
.
reliability
*
(
config
.
timeout
-
step
))
/
config
.
timeout
;
const
{
id
,
delay
}
=
peer
;
//
jitter 还
没算
p
[
id
]
=
{
delay
,
jitter
:
0
,
reliability
};
const
reliability
=
(
peer
.
reliability
*
(
config
.
timeout
-
step
))
/
config
.
timeout
;
//
TODO: jitter
没算
p
[
id
]
=
{
delay
:
Math
.
round
(
delay
)
,
jitter
:
0
,
reliability
};
}
const
message
:
UploadMessage
=
{
id
:
self
.
id
,
ack
:
this
.
ack
,
peers
:
p
};
...
...
table.sh
View file @
7e384573
ip rule del pref 70
ip route flush table 2
ip rule add ipproto udp sport 495 dport 495 lookup 2 pref 70
ip route add unreachable default table 2
ip route add 10.198.0.1 dev mc-yangtze table 2
ip route add 10.198.0.3 dev mc-south table 2
ip route add 10.198.0.7 dev mc-fractal table 2
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment