Commit Graph

42 Commits

Author SHA1 Message Date
Raphael Tryster
79300a9a53
Increase min-links limit for portchannel from 128 to 1024. (#7265)
#### Why I did it

Restrict the min-links parameter in "config portchannel" to the range 1-1024.
Fixes Azure/sonic-buildimage#6781 in conjunction with https://github.com/Azure/sonic-buildimage/pull/1630.
Align YANG model with limits in libteam and sonic-utilties.

#### How I did it

PR 1630 in sonic-utilities prevents CLI user from entering a value outside the allowed range.  This PR does the following:

- Increases the maximum value of min-links from 128 to 1024.
- Provides validation in libteam, incorporating as a patch the code in https://git.kernel.org/pub/scm/linux/kernel/git/jpirko/libteam.git/commit/?id=69a7494bb77dc10bb27076add07b380dbd778592.
- Updates the Yang model upper limit from 128 to 1024 (was inconsistent with libteam value).
- Updates the Yang model lower limit from 1 to 0, since 0 is set as default in sonic-utilities which would fail its new range check otherwise.
- Added Yang tests for valid and invalid value.

#### How to verify it

config portchannel add PortChannel0004 --min-links 1024

Command should be accepted.

show interfaces portchannel

Output should show PortChannel0004, no errors on CLI.

config portchannel add PortChannel0005 --min-links 1025

Command should be rejected

show interfaces portchannel

Output should not show PortChannel0005 , no errors on CLI.

#### Which release branch to backport (provide reason below if selected)


#### Description for the changelog

Updates YANG model to allow up to 1024 min_links for portchannel.  Fixes Azure/sonic-buildimage#6781 in conjunction with https://github.com/Azure/sonic-buildimage/pull/1630.
2021-07-08 08:28:58 -07:00
lguohan
ab2ae41212
[build]: fix dpkg admindir corruption issue in parallel build (#6408)
Fix #119

when parallel build is enable, multiple dpkg-buildpackage
instances are running at the same time. /var/lib/dpkg is shared
by all instances and the /var/lib/dpkg/updates could be corrupted
and cause the build failure.

the fix is to use overlay fs to mount separate /var/lib/dpkg
for each dpkg-buildpackage instance so that they are not affecting
each other.

Signed-off-by: Guohan Lu <lguohan@gmail.com>
2021-01-12 06:03:12 -08:00
pavel-shirshov
83d090f42c
[teamd]: Remove extensive debug output for libteamdctl (#5870) 2020-11-10 19:12:51 -08:00
Joe LeVeque
c6365e7abe
Reorganize .gitignore files (#4707)
- Add .gitignore files in each subdirectory of src/, so as to reduce the size of the .gitignore file in the project root, and also make it easier to maintain (i.e., if a directory in src/ is removed, there will not be outdated entries in the root .gitignore file.

- Also add missing .gitignore entries and remove outdated entries and duplicates.
2020-06-09 21:04:55 -07:00
pavel-shirshov
fc91f81dab
[libteam]: Update libteam to the latest master (#4216) 2020-03-09 16:13:49 -07:00
pavel-shirshov
b5b68c75e5
teamd: fix possible race in master ifname callback (#4109)
- What I did
Ported a fix from libteam master to our master.
Fixes #4070
Fixes #3649

- How I did it
Applied patch jpirko/libteam@c723737 from upstream.

- How to verify it
Build image for your DUT and warm-reboot your DUT 10 times. Check that all PortChannels are up and no error messages in teamd.log
2020-02-05 01:09:16 -08:00
Haiyang Zheng
7988deb288 [teamd] fix lacp fallback mode in teamd v1.28 (#3572)
In teamd v1.28, the port can only be enabled if sync bit is set
in recveived LACPDU from partner by the following commit
"teamd: lacp: update port state according to partner's sync bit"
(54f137c105)

However, lacp fallback feature needs to enable port even if partner
LACPDU is not received within a given period and fallback cfg is enabled.
To fix the lacp fallback breakage, we have to bypass the sync bit
check in lacp fallback mode.

Signed-off-by: Haiyang Zheng <haiyang.z@alibaba-inc.com>
2019-10-11 08:15:12 -07:00
pavel-shirshov
8971b899b8 [libteam]: Keep member ports parts of a team when teamd quits in FR and WR (#3544) 2019-10-02 15:35:11 -07:00
pavel-shirshov
ff7ef851d5
Regular quit needs to clean the ports two (#3531) 2019-09-27 14:49:44 -07:00
pavel-shirshov
504cf62bfc [libteam]: Use last fixes from libteam master repo (#3513) 2019-09-26 16:39:48 -07:00
pavel-shirshov
a577a80b05 Flush port in both worm-reboot and fast-reboot mode on exit. Otherwise teamd will stuck (#3512) 2019-09-25 16:08:44 -07:00
pavel-shirshov
c60278de58
[libteam]: Add Fast-Reboot mode for teamd (#3490)
* [libteam]: add special Fast-Reboot teamd stop mode

* Fix last packet sending

* Update sonic-utilities module
2019-09-20 15:33:40 -07:00
pavel-shirshov
1c06ae6f2a [libteam]: timerfd read() could return 0 fix (#3393)
* Update sonic-quagga submodule

* [libteam]: timerfd read() could return 0
2019-08-29 14:14:12 -07:00
Shuotian Cheng
f1a88cd105 [libteam]: Fix libteam race condition when interface is created and enslaved (#3250)
The race condition could happen like this:
When an interface is enslaved into the port channel immediately after
it is created, the order of creating the ifinfo and linking the ifinfo to
the port is not guaranteed.

Please check the patch commit message to get full details.

Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
2019-07-31 16:44:35 -07:00
arheneus@marvell.com
50fe458592 [build]: SONiC buildimage ARM arch support (#2980)
ARM Architecture support in SONIC

make configure platform=[ASIC_VENDOR_ARCH] PLATFORM_ARCH=[ARM_ARCH]
SONIC_ARCH: default amd64
armhf - arm32bit
arm64 - arm64bit

Signed-off-by: Antony Rheneus <arheneus@marvell.com>
2019-07-25 22:06:41 -07:00
Renuka Manavalan
76bf5a0bc4 [build]: Added debug symbols to many debug dockers. (#3098)
* Added debug symbols to many debug dockers.

* For debug images *only*:
1) Archive source files into debug image
2) Archived source is copied into /src
3) Created an empty dir /debug
4) Mount both /src as ro & /debug as rw into every docker
5) Login banner will give some details on /src & /debug
6) Devs can copy core file into /debug and view it from inside a container.
7) Dev may create all gdb logs and other data directly into /debug.

* Dropped redundant REDIS_TOOLS per review comments.

* Added debug symbols to frr package and hence FRR based BGP docker.

* 1) Moved dbg_files.sh to scripts/
2) Src directories to archive are now collected from individual Makefiles.
3) Added few more debug symbols
4) Added few more debug dockers.

Here after no more changes except per review comments.

To debug:
Install required version of debug image in Switch or VM.
Copy core file into /debug of host
Get into Docker
gdb /usr/bin/<daemon> -c /debug/<your core file>
set directory /src/... <-- inside gdb to get the source

For non-in-depth debugging:

Download corresponding debug Docker image (docker-...-dbg.gz) to your VM
Load the image
Run image with entrypoint as 'bash' with dir containing core mapped in.
Run gdb on the core.
2019-07-03 22:13:55 -07:00
pavel-shirshov
466334a8c9
[libteam]: Reimplement Warm-Reboot procedure (#3016)
* Update sonic-quagga submodule

* [libteam]: Reimplement Warm-Reboot procedure
2019-06-14 17:26:58 -07:00
yorke
6dbae0e3cd [libteam] Upgrade libteam to 1.28-1 and reorganize patches (#2956)
Signed-off-by: yorke <yorke.yuan@asterfusion.com>
2019-06-04 12:55:26 -07:00
pavel-shirshov
3f4de49e3d
[libteam] Send updates as soon as we need to update the LACP partner about changes (#2955) 2019-05-30 13:26:32 -07:00
Phanindra TV
df149cd1fc [teamd]: Administratively shutdown port channel has member ports in deselected state and traffic is not forwarded. #1771 (#2882) 2019-05-28 22:43:04 -07:00
Ying Xie
b9ddae8443
[teamd] do not process lacpdu before the port ifinfo is set (#2815)
Port libteam patch which fixes the race condition we observed during
warm reboot.

Remove early patches: 0006, 0008, 0009.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-04-29 17:56:42 -07:00
pavel-shirshov
452e75c951
Downport the netlink patch to libteam1.26. Increase netlink buffers (#2822) 2019-04-25 16:16:22 -07:00
pavel-shirshov
1f516920e1
teamd: lacp: update port state according to partner's sync bit (#2793)
Backport of
54f137c105

According to 6.4.15 of IEEE 802.1AX-2014, Figure 6-22, the state that the
port is selected moves MUX state from DETACHED to ATTACHED.

But ATTACHED state does not mean that the port can send and receive user
frames. COLLECTING_DISTRIBUTION state is the state that the port can send
and receive user frames. To move MUX state from ATTACHED to
COLLECTING_DISTRIBUTION, the partner state should be sync as well as the
port selected.

In function lacp_port_actor_update(), only INFO_STATE_SYNCHRONIZATION
should be set to the actor.state when the port is selected.
INFO_STATE_COLLECTING and INFO_STATE_DISTRIBUTING should be set to false
with ATTACHED mode and set to true when INFO_STATE_SYNCHRONIZATION of
partner.state is set.

In function lacp_port_should_be_{enabled, disabled}(), we also need to
check the INFO_STATE_SYNCHRONIZATION bit of partner.state.

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
2019-04-16 19:11:24 -07:00
Ying Xie
fd3f61167d
[teamd] prevent re-entrance of port priv change handler (#2723)
When adding a lag member dynamically after system boots up, teamd
port priv change handler could re-entrant itself and causing adding
operation to fail.

While handling PORT_CHANGE event, teamd_per_port.c port priv change
handler was called, it will then call runner_lacp to add port to lag,
the later causes IFINFO_CHANGE to be notified and calls the priv change
handler again, this re-entrance would cause runner_lacp port_added to
be called again and messes up with the previous adding sequence. Then
fails the lag member adding operation.

Prevent per port priv change handler re-entrance solves the problem.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-04-01 16:51:30 -07:00
Ying Xie
80d65943eb
[teamd] retry creating team_port after interface info changed (#2699)
Race condition has been noticed after warm reboot: sometimes when
port_changed notification was received, the link message didn't
have the device name. Without device name, creating team port
would fail.

Registering to the interface information change notification, so
later when device name becomes available, retry creating team port.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-03-28 09:57:06 -07:00
Jipan Yang
4e3bb4d47a [libteam]: Skip setting the same hwaddr to lag port to avoid disrupting neighbor… (#2602)
* Skip setting the same hwaddr to lag port to avoid disrupting neighbor entries

Signed-off-by: Jipan Yang <jipan.yang@alibaba-inc.com>
2019-03-23 12:20:22 -07:00
Ying Xie
60968cf95b
[make file] managing teamd patches with stg (#2689)
Just so that the folder will be clean and make working on new patches
much easier.

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2019-03-21 18:11:57 -07:00
Shuotian Cheng
09b9db03d3 [libteam]: Fix libteam race condition when interface is created and enslaved (#2449)
The race condition could happen like this:
When an interface is enslaved into the port channel immediately after
it is created, the order of creating the ifinfo and linking the ifinfo to
the port is not guaranteed.

Please check the patch commit message to get full details.

Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
2019-01-16 00:02:16 -08:00
Ying Xie
bff316562e [teamd] avoid using actor port number 0 in teamd config (#2327)
When using actor port number 0 in lag configuration, IO cannot be sent to
peer. Increase actor port number by 1 to keep uniqueness and at the same
time, avoid using actor port number 0.

Ref. 802.1AX 6.3.4 Port identification

Signed-off-by: Ying Xie <ying.xie@microsoft.com>
2018-12-01 02:11:41 -08:00
pavel-shirshov
c7d18f1edc [teamd]: Fix teamd patch issues, which prevented system WR (#2321)
- What I did

Fixed vanilla teamd bug, which prevented teamd to have a correct view of kernel state. Check bug #2 from the message
Changed schema for LACP port id.
Changed severity of an error message.
Removed logic to disable warm_start_read mode, when teamd started. It didn't work in system restart mode, because interfaces were added one by one, and it's impossible to say when everything is added.

- How I did it

I've added team_refresh() on every port addition
I extract port id from the port name. Currently I support only "EthernetX" scheme. We need to add more schemes if we change port scheme.
_err -> _info
...

- How to verify it
Build the image, install on your DUT, reboot it once, then reboot it on WR mode checking LACP state on remote side. The state shouldn't flip.
2018-11-29 19:19:26 -08:00
pavel-shirshov
f6f8880ae7
Don't put down LAG interface when it starts in WR mode (#2257)
* Don't put down LAG interface when it starts in WR mode

* Change logic. Don't touch carrier in WR mode. Until it could be in UP mode

* Change control plane restore logic in WR mode
2018-11-19 18:29:26 -08:00
pavel-shirshov
cc6e6b5ea3 [teamd]: Update hwaddr_orig unconditionally. (#2254)
SONiC uses same mac address for both phy ports and LAGs
2018-11-14 01:14:05 -08:00
pavel-shirshov
c61c1d5695 Fix teamd behavior for Warm-reboot mode (#2241)
* Fix teamd behavior for Warm-reboot mode

* Don't save 'read' state into the struct. Try to read a lacp file everytime when a port starts.

* Fix filename for access()
2018-11-13 10:53:20 -08:00
pavel-shirshov
4157f1d230
[teamd] Add Warm-reboot startup and shutdown mode for teamd (#2173)
* Add Warm-reboot startup and shutdown mode for teamd

* Address comments, fix some bugs

* Use tab instead of 8 spaces
2018-11-05 16:37:57 -08:00
Qi Luo
a6d2d777c4
Fix links of debian git server (#1755) 2018-05-31 18:38:12 -07:00
Haiyang Zheng
2abdf8dc58 [libteam] Add fallback support for single-member-port LAG (#1118)
* [libteam] Add fallback support for single-member-port LAG

* Allow the port to be selected if the LAG is configured
with fallback and port is in defaulted state due to missing
LACP PDUs from remote end
* Only enable port if LAG is admin up and the member port
is link up

* [team] Add lacp fallback config to teamd.j2 template

* [teamd] Resolve config conflict between fallback and minlink

* Remove min_link config if fallback is configured
* Add support for fallback config in minigraph

* [teamd] Only enable fallback if it is single-member-port LAG

Signed-off-by: Haiyang Zheng <haiyang.z@alibaba-inc.com>

* [teamd] Removing the admin status check in lacp_port_link_update

Will submit another pull request to fix this issue.

Signed-off-by: Haiyang Zheng <haiyang.z@alibaba-inc.com>
2017-12-16 11:28:18 -08:00
pavel-shirshov
e0513d213b lacp runner will send lacp update right after it received SIGINT (#969) 2017-09-21 09:17:29 -07:00
Marian Pritsak
51cab5d4ed [config]: Add SONIC_CONFIG_MAKE_JOBS (#784)
* [config]: Add SONIC_CONFIG_MAKE_JOBS

This config option allows user to specify -j value that will be passed
to each package build.

Signed-off-by: marian-pritsak <marianp@mellanox.com>
2017-07-07 15:32:50 +03:00
Shuotian Cheng
667ef1d766 [libteam]: Add 0002-libteam-Temporarily-remove-redundant-debug-mes.patch (#357)
Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-02 13:34:37 -08:00
Shuotian Cheng
09f61a4894 [libteam]: Add patch 0001-libteam-Add-team_get_port_enabled-function.patch (#205) 2017-01-22 22:19:43 -08:00
Marian Pritsak
e9098b99fb Build improvements (#80)
* Build improvements

Fix dependencies
Add configuration options
Automatically build sonic-slave

* Set default number of jobs to 1

* Auto generate target/debs directory

Signed-off-by: marian-pritsak <marianp@mellanox.com>

* Automatically remove sonic-slave container after exit

* Silence clean-logs

* Add SONIC_CLEAN_TARGETS to clean

* Use second expansion for clean dependencies

* Avoid creating empty log files

Remove log file on flush instead of writing empty string

* Put dpkg install inside lock

Use same lock as debian install targets do to avoid
race condition in dpkg installation

* Remove redirect to log from docker save

* Add .platform dependency to all and clean targets

* Remove header and footer from clean targets

* Disable messages for SONIC_CLEAN_TARGETS

* Exit with error if dpkg-buildpackage fails

* Set new location for debs in build_debian.sh

* Add recipe for docker-database

* Update redis version to 3.2.4

* Add support for p4 platform

* Add recipe for snmpd

* Add slave targets to phony and make all target default

* Remove build.sh from thrift

* Add versioning to team, nl, hiredis and initramfs

* Change sonic-slave to support snmpd build from sources

* Remove src/tenjin

* Add recipe for lldpd

* Add recipe for mpdecimal

* Remove hiredis directory on rebuild

* Add recipe for Mellanox hw management

* Remove generic image from all targets for Mellanox

* Add support for python wheels

* Add lldp and snmp dockers

* Sync docker-database to include libjemalloc

* Fix asyncsnmp variable name

* Change default build configuration

Redirect output to log files by default
Set number of jobs to nproc value
Do not print dependencies
Fix logging to print log of failed job into console

* Use docker inspect to check if sonic-slave image exists

* Use config in slave.mk directly

* Disable color output by default

* Remove sswsdk dependency from lldp and snmp dockers

* Fix comment in py wheels install targets

* Add dependency between two versions of sswsdk

* Add containers to mellanox platform

lldp, snmp and database containers

* Add recipe for team docker

* Add team docker to mellanox platform

* Encrypt password passed to build_debian.sh

* Update mellanox SAI version

Make version and revision setting only in main recipe

* Fix error handling in makefiles

As makefiles use .ONESHELL we should add -e
option to shell options in order to exit after any command fails

* Add recipe for platform monitor image

* Add platfotm monitor to mellanox targets

* Ignore submodules when building base image
2016-12-05 11:12:19 -08:00
Shuotian Cheng
4373c518cf libteam: Adding build.sh script and docker-team (#18) 2016-10-07 10:41:44 -07:00