A computer-implemented method for enabling in-service software upgrades at a network device, the method comprising: creating (34, 36), at the network device, an active software container and a standby software container for a single supervisor of a host operating system at the network device, wherein an instance of a Kernel Loadable Module, KLM, can service only one of the active and standby software containers at a given time, wherein the operating system comprises an active kernel name space associated with instances of KLMs servicing said active software container and a standby kernel name space associated with instances of KLMs servicing said standby software container; inserting, at the network device, a prefix identifier into KLM names to distinguish between instances of KLMs servicing said active software container and instances of KLMs servicing said standby software container, wherein said prefix identifier is automatically generated to prevent symbol clashes between instances of KLMs servicing said active software container and instances of KLMs servicing said standby software container; instantiating, at the network device, instances of KLMs in an active role for servicing said active software container; instantiating, at the network device, instances of KLMs in a standby role for servicing said standby container, wherein one or more of said instances of KLMs servicing said standby container comprise upgraded versions of said instances of KLMs servicing said active container; obtaining a current running state of the active software container by the standby software container; switching, at the network device, said standby software container to an active state, whereby an in-service upgrade of KLMs for the operating system has been performed at the network device; and either deleting, at the network device, the previous active software container or changing, at the network device, the previous active software container to a new standby software container. creating (34, 36), at the network device, an active software container and a standby software container for a single supervisor of a host operating system at the network device, wherein an instance of a Kernel Loadable Module, KLM, can service only one of the active and standby software containers at a given time, wherein the operating system comprises an active kernel name space associated with instances of KLMs servicing said active software container and a standby kernel name space associated with instances of KLMs servicing said standby software container; inserting, at the network device, a prefix identifier into KLM names to distinguish between instances of KLMs servicing said active software container and instances of KLMs servicing said standby software container, wherein said prefix identifier is automatically generated to prevent symbol clashes between instances of KLMs servicing said active software container and instances of KLMs servicing said standby software container; instantiating, at the network device, instances of KLMs in an active role for servicing said active software container; instantiating, at the network device, instances of KLMs in a standby role for servicing said standby container, wherein one or more of said instances of KLMs servicing said standby container comprise upgraded versions of said instances of KLMs servicing said active container; obtaining a current running state of the active software container by the standby software container; switching, at the network device, said standby software container to an active state, whereby an in-service upgrade of KLMs for the operating system has been performed at the network device; and either deleting, at the network device, the previous active software container or changing, at the network device, the previous active software container to a new standby software container.