[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MirageOS-devel] Routing.No_route_to_destination_address running Mirage web server



On 3 June 2015 at 20:02, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote:
> On 1 Jun 2015, at 19:45, Thomas Leonard <talex5@xxxxxxxxx> wrote:
>>
>> On 1 June 2015 at 18:02, Carlos Oviedo <psxlco@xxxxxxxxxxxxxxxx> wrote:
>>> Hi,
>>>
>>> I have a similar problem, please find the code (a revised http-fetch
>>> version) in the following repo:
>>> https://github.com/lcoviedo/mirage-http-fetch
>>>
>>> The unikernel only works fine when runs as a unix backend using socket
>>> network stack, otherwise I get the errors below (DHCP full process is run
>>> twice, and crashes after ARP timeout).
>>>
>>> Interestingly, packet capture on eth0 shows the gw replying to arp requests.
>>> Also, removing ctx from HTTP.get that makes use of default resolver builds
>>> and runs but results in "name resolution failed unknown endpoint type",
>>> however the arp timeout and twice-dhcp process problems do not persist.
>>>
>>> Help is much appreciated.
>>>
>>>
>>> Parsing config from http-fetch.xl
>>> Xen Minimal OS!
>>>  start_info: 00000000004f6000(VA)
>>>    nr_pages: 0x10000
>>>  shared_inf: 0x96cf4000(MA)
>>>     pt_base: 00000000004f9000(VA)
>>> nr_pt_frames: 0x7
>>>    mfn_list: 0000000000476000(VA)
>>>   mod_start: 0x0(VA)
>>>     mod_len: 0
>>>       flags: 0x0
>>>    cmd_line:
>>>       stack: 0000000000455780-0000000000475780
>>> MM: Init
>>>      _text: 0000000000000000(VA)
>>>     _etext: 000000000025b1ff(VA)
>>>   _erodata: 00000000002d3000(VA)
>>>     _edata: 0000000000419460(VA)
>>> stack start: 0000000000455780(VA)
>>>       _end: 0000000000475780(VA)
>>>  start_pfn: 503
>>>    max_pfn: 10000
>>> Mapping memory range 0x800000 - 0x10000000
>>> setting 0000000000000000-00000000002d3000 readonly
>>> skipped 1000
>>> MM: Initialise page allocator for 57f000(57f000)-10000000(10000000)
>>> MM: done
>>> Demand map pfns at 10001000-0000002010001000.
>>> Initialising timer interface
>>> Initialising console ... done.
>>> gnttab_table mapped at 0000000010001000.
>>> getenv(OCAMLRUNPARAM) -> null
>>> getenv(CAMLRUNPARAM) -> null
>>> getenv(PATH) -> null
>>> Unsupported function lseek called in Mini-OS kernel
>>> Unsupported function lseek called in Mini-OS kernel
>>> Unsupported function lseek called in Mini-OS kernel
>>> getenv(OCAMLRUNPARAM) -> null
>>> getenv(CAMLRUNPARAM) -> null
>>> getenv(TMPDIR) -> null
>>> getenv(TEMP) -> null
>>> Netif: add resume hook
>>> Netif.connect 0
>>> Netfront.create: id=0 domid=0
>>> MAC: aa:aa:aa:aa:aa:aa
>>> Attempt to open(/dev/urandom)!
>>> Manager: connect
>>> Manager: configuring
>>> DHCP: start discovery
>>>
>>> Sending DHCP broadcast (length 552)
>>> DHCP response:
>>> input ciaddr 0.0.0.0 yiaddr 10.0.20.67
>>> siaddr 0.0.0.0 giaddr 0.0.0.0
>>> chaddr aaaaaaaaaaaa00000000000000000000 sname  file
>>> DHCP: offer received: 10.0.20.67
>>> DHCP options: Offer : Broadcast(10.0.20.255), DNS
>>> servers(10.0.21.232,10.0.21.233,10.0.21.234,10.0.20.29), Routers(10.0.20.1),
>>> Subnet mask(255.255.255.0), Lease time(7200), Server identifer(10.0.23.135)
>>> Sending DHCP broadcast (length 552)
>>> DHCP response:
>>> input ciaddr 0.0.0.0 yiaddr 10.0.20.67
>>> siaddr 0.0.0.0 giaddr 0.0.0.0
>>> chaddr aaaaaaaaaaaa00000000000000000000 sname  file
>>> DHCP: offer received
>>>                    IPv4: 10.0.20.67
>>>                                       Netmask: 255.255.255.0
>>>                                                             Gateways:
>>> [10.0.20.1]
>>> sg:true gso_tcpv4:true rx_copy:true rx_flip:false smart_poll:false
>>> ARP: sending gratuitous from 10.0.20.67
>>> DHCP offer received and bound to 10.0.20.67 nm 255.255.255.0 gw [10.0.20.1]
>>> Manager: configuration done
>>> Attempt to open(/dev/urandom)!
>>> Manager: connect
>>> Manager: configuring
>>> DHCP: start discovery
>>>
>>> Sending DHCP broadcast (length 552)
>>> DHCP response:
>>> input ciaddr 0.0.0.0 yiaddr 10.0.20.67
>>> siaddr 0.0.0.0 giaddr 0.0.0.0
>>> chaddr aaaaaaaaaaaa00000000000000000000 sname  file
>>> DHCP: offer received: 10.0.20.67
>>> DHCP options: Offer : Broadcast(10.0.20.255), DNS servers(10.0.21.232),
>>> Routers(10.0.20.1), Subnet mask(255.255.255.0), Lease time(7200), Server
>>> identifer(10.0.23.135)
>>> Sending DHCP broadcast (length 552)
>>> DHCP response:
>>> input ciaddr 0.0.0.0 yiaddr 10.0.20.67
>>> siaddr 0.0.0.0 giaddr 0.0.0.0
>>> chaddr aaaaaaaaaaaa00000000000000000000 sname  file
>>> DHCP: offer received
>>>                    IPv4: 10.0.20.67
>>>                                       Netmask: 255.255.255.0
>>>                                                             Gateways:
>>> [10.0.20.1]
>>> ARP: sending gratuitous from 10.0.20.67
>>> DHCP offer received and bound to 10.0.20.67 nm 255.255.255.0 gw [10.0.20.1]
>>> Manager: configuration done
>>> Resolving in 1s using DNS server 8.8.8.8
>>> Fetching http://anil.recoil.org with Cohttp:
>>> Attempt to open(/dev/urandom)!
>>> ARP: transmitting probe -> 10.0.20.1
>>> ARP: updating 10.0.20.1 -> 00:1b:d5:f4:1d:c4
>>> ARP: transmitting probe -> 10.0.20.1
>>> ARP: updating 10.0.20.1 -> 00:1b:d5:f4:1d:c4
>>> ARP: retrying 10.0.20.1 (n=1)
>>
>> It looks like you're running two instances of the TCP/IP stack. One is
>> working and the other is failing. This is probably a bug in the mirage
>> tool, because you only created a single stack in your config.ml, but
>> check the generated main.ml to see what it actually did...
>>
>> As a work-around, you could just pass the stack to your unikernel and
>> have it create conduit and the resolver.
>
> Is there an upstream bug for this on GitHub?  If not, creating one
> would be appreciated Carlos -- we do need to make sure that the Mirage
> tool handles multiple interfaces cleanly.

I've added one here:

  https://github.com/mirage/mirage/issues/414

(note that the problem seems to be trying to handle the same interface twice)


-- 
Dr Thomas Leonard        http://roscidus.com/blog/
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.