Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Starry 支持和主机通信 #11

Open
Azure-stars opened this issue Jul 22, 2024 · 2 comments
Open

Starry 支持和主机通信 #11

Azure-stars opened this issue Jul 22, 2024 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@Azure-stars
Copy link
Contributor

Azure-stars commented Jul 22, 2024

Starry 已经支持和同局域网下的其他主机通信,但是目前不支持和所在的主机(IP 为 10.0.2.2)通信。

hello_world测例运行方式:

  • 在主机上运行:

    $ netcat -l -p 6142
  • 在 QEMU 中将 Starry 执行指令修改为:./hello_world,并且运行如下指令:

    $ make A=apps/monolithic_userboot LOG=info FEATURES=img,sched_rr ACCEL=n APP_FEATURES=batch run NET_DUMP=y

    这里的hello_world是修改了源码,将目标地址从127.0.0.1:6142改为了10.0.2.2:6142,从而能够让 QEMU 访问主机上某一个端口。(原理是 QEMU 自己建立了一个子网,10.0.2.15是它的地址,10.0.2.2 是网关(本机)的地址)

    在当前的 Starry,他会在第一次 connect 返回 EINPROGRESS 之后进入 Futex,但是始终不会解锁。分析 Linux 上该程序的表现发现虽然也是返回 EINPROGRESS,但是 Futex 不久之后就会解锁,从而完成链接。这里关键是解决 Futex 为何不解锁的问题。

另外还有一个测例:echo_outside,运行方式为:

  • 在主机上运行:

    $ ./connect 127.0.0.1:8080
  • 在 QEMU 中将 Starry 执行指令修改为:./echo_outside,并且运行如下指令:

    $ make A=apps/monolithic_userboot LOG=info FEATURES=img,sched_rr ACCEL=n APP_FEATURES=batch run NET_DUMP=y

    其中echo_outside是将 echo.rs 的源码的目标地址从 127.0.0.1 修改为 10.0.2.2 之后编译成的可执行文件。在主机上进行输入,期望能够在按下回车之后将输入内容重新输出。但 Starry 目前无法完成链接。

@Azure-stars Azure-stars converted this from a draft issue Jul 22, 2024
@Azure-stars Azure-stars added the enhancement New feature or request label Jul 22, 2024
@YanLien
Copy link

YanLien commented Jul 29, 2024

poll

原来的实现,先进行本地回环的poll,再进行以太网卡的poll。有些包会被本地回环先取走,但是如果不是 127.0.0.1 的包,取走了是无法处理的,导致丢包。两个poll 的顺序对调,目的就是让 eth 先取,但是这样也会有相同的丢包问题,能暂时性通过测例。不能从根本解决问题。

@YanLien
Copy link

YanLien commented Sep 14, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Todo
Development

No branches or pull requests

2 participants