# FCE lagg and "no carrier"?



## Orum (Nov 17, 2009)

I have a HP 2424M, which only supports 3 types of link aggregation: "Trunk" (SA/DA), "SA-Trunk" (Source-Address Distribution), and "FEC" (Fast EtherChannel).  Since the only type of link aggregation it has in common with FBSD is FEC, I have configured my FBSD machine for FEC over lagg (with 2 100mbit Ethernet ports, vr0 and vr1).  Vlans are configured to run over the lagg interface.

```
uname -mrs
FreeBSD 7.2-RELEASE-p4 i386

*** relevant lines in rc.conf:

cloned_interfaces="lagg0 vlan1 vlan2 vlan3 vlan4"

ifconfig_lagg0="laggproto fec laggport vr0 laggport vr1"

ifconfig_vlan1="vlan 1 vlandev lagg0"
ifconfig_vlan2="vlan 2 vlandev lagg0"
ifconfig_vlan3="vlan 3 vlandev lagg0"
ifconfig_vlan4="inet 192.168.0.126/26 vlan 4 vlandev lagg0"
```
What's odd is that even though the switch reports the FEC as being up (for what it's worth), and FBSD reports both physical interfaces as being up and running in 100mbit/FDx, the lagg interface always reports "no carrier".  The interface never comes up despite bringing vr0/1 up/down, deletion/recreation, and even removal of any trunking on the interface.  As such, none of the vlan interface associated with it will come up either.  Any ideas on how to solve this?

```
ifconfig (see highlighted line):

vr0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2808<VLAN_MTU,WOL_UCAST,WOL_MAGIC>
        ether 00:40:63:e0:6a:1c
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        lagg: laggdev lagg0
vr1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2808<VLAN_MTU,WOL_UCAST,WOL_MAGIC>
        ether 00:40:63:e0:6a:1c
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        lagg: laggdev lagg0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
pfsync0: flags=0<> metric 0 mtu 1460
        syncpeer: 224.0.0.240 maxupd: 128
pflog0: flags=0<> metric 0 mtu 33204
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2808<VLAN_MTU,WOL_UCAST,WOL_MAGIC>
        ether 00:40:63:e0:6a:1c
        media: Ethernet autoselect
        [color="Red"]status: no carrier[/color]
        laggproto fec
        laggport: vr1 flags=0<>
        laggport: vr0 flags=0<>
vlan1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:40:63:e0:6a:1c
        media: Ethernet autoselect
        status: no carrier
        vlan: 1 parent interface: lagg0
vlan2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:40:63:e0:6a:1c
        media: Ethernet autoselect
        status: no carrier
        vlan: 2 parent interface: lagg0
vlan3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:40:63:e0:6a:1c
        media: Ethernet autoselect
        status: no carrier
        vlan: 3 parent interface: lagg0
vlan4: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:40:63:e0:6a:1c
        inet 192.168.0.126 netmask 0xffffffc0 broadcast 192.168.0.127
        media: Ethernet autoselect
        status: no carrier
        vlan: 4 parent interface: lagg0
```


----------



## Orum (Nov 17, 2009)

The device driver is compiled into the kernel, but just like the vlan device you need to create virtual interfaces to work with the TCP/IP stack.


----------



## DutchDaemon (Nov 17, 2009)

FWIW, related problem:
http://forums.freebsd.org/showthread.php?t=7668

And an open lagg/vlan ticket (for different driver though):
http://www.freebsd.org/cgi/query-pr.cgi?pr=132715

BTW: the above reply was to an erroneous response I'd already removed


----------



## DutchDaemon (Nov 17, 2009)

By the way: do you 'up' your vr0/vr1 devices before or after the lagg0 ifconfig? Don't know how relevant this still might be:
http://www.mail-archive.com/freebsd-questions@freebsd.org/msg190767.html

Plus a random thread:
http://lists.freebsd.org/pipermail/freebsd-stable/2009-September/051921.html


----------



## Orum (Nov 17, 2009)

Yeah, I did see the related problem, but he is using lacp and a different interface, so I'm not sure how much that applies to my situation.

I don't manually up the lagg interface, but on the console I can see it come up as soon as one of the vr adapters does.  I've tried bringing both of the vr adapters down and then back up, with no avail.  I haven't tried down/up on the lagg interface, but I'm willing to give it a shot.  Interestingly, ifconfig reports the device as up even though it says no carrier.  Perhaps it means no physical carrier?  Either way, traffic is certainly not able to pass over the FEC interface, vlans or not.

I'll play around some more with bringing lagg down and back up.


----------



## DutchDaemon (Nov 17, 2009)

Yes, an interface can be perfectly 'up' without any ethernet connection (e.g. an unplugged ethernet cable on a physical interface). I don't know how this plays out on a virtual interface  Perhaps it can't find the 'physical backend'.


----------



## DutchDaemon (Nov 17, 2009)

I know lagg0 shows as 'up', but could you try


```
ifconfig_lagg0="laggproto fec laggport vr0 laggport vr1 [B]up[/B]"
```

?


----------



## Orum (Nov 17, 2009)

I tried down/up on lagg, and up in rc.conf as you suggested, and neither seemed to help.  To test behavior, I also changed lagg to failover instead of FEC, and it _still_ had the issue of "no carrier", which makes me suspicious that something in either the lagg driver or the vr driver is at fault (and not specifically the FEC part), or some connection between the two.

If you can think of anything else to try, let me know.  I'm dumbfounded at this point.


----------



## Orum (Nov 18, 2009)

Problem solved!  It was like you suggested, in that the vr interfaces have to be up before the lagg interface is created.  What's weird is that even if I deleted the lagg interface, and then recreated it after bringing them up, it didn't seem to come up at all (would have to test this again to verify, that machine has been rebooted quite a few times trying to get this to work).

But, if I put in rc.conf:

```
ifconfig_vr0="up polling"
ifconfig_vr1="up polling"
```

Things work just fine!  Before, I was manually upping them after lagg was created (as the interfaces aren't automatically upped unless you assign an address to them).  I'll play around with this more later to try and pinpoint recreation of the problem.

Now the only issue is the lack of altq for vlan interfaces...


----------



## DutchDaemon (Nov 18, 2009)

New topic, new thread  I'll mark this one [solved].


----------

