A load sharing method, comprising: configuring public network addresses in a form of address pools so that the difference of the number of public network addresses shared by each of Central Processing Units, CPUs, in each of the address pools is 1 at most; after receiving traffic transmitted by user devices, grouping the user devices according to traffic models transmitted by the user devices so that the difference of the number of user devices shared by each of the CPUs is 1 at most; and allocating, by CPUs, the public network addresses for the grouped user devices, and translating private network addresses of the user devices into the public network addresses, wherein each of the address pools comprises a plurality of address blocks, each of the plurality of address blocks corresponds to a different CPU, each user group comprises a plurality of user blocks, and each of the plurality of user blocks corresponds to a different CPU; wherein the implementation of the difference of the number of user devices shared by each of the CPUs being 1 at most comprises: allocating a number of user devices to each of the CPUs, wherein the number of the allocated user devices is a product of multiplying an integer value, which is a maximal integer no more than a quotient acquired by dividing the total number of user devices of a current user group by the square of the number of the CPUs, by the number of the CPUs; if there are still remaining user devices, allocating a number of user devices to each of the CPUs, wherein the number of the allocated user devices is an integer value acquired by dividing the remaining user devices by the number of the CPUs; if there are still remaining user devices, allocating the remaining user devices in each user group as a whole so that the difference of the number of user devices shared by each of the CPUs is 1 at most. configuring public network addresses in a form of address pools so that the difference of the number of public network addresses shared by each of Central Processing Units, CPUs, in each of the address pools is 1 at most; after receiving traffic transmitted by user devices, grouping the user devices according to traffic models transmitted by the user devices so that the difference of the number of user devices shared by each of the CPUs is 1 at most; and allocating, by CPUs, the public network addresses for the grouped user devices, and translating private network addresses of the user devices into the public network addresses, wherein each of the address pools comprises a plurality of address blocks, each of the plurality of address blocks corresponds to a different CPU, each user group comprises a plurality of user blocks, and each of the plurality of user blocks corresponds to a different CPU; wherein the implementation of the difference of the number of user devices shared by each of the CPUs being 1 at most comprises: allocating a number of user devices to each of the CPUs, wherein the number of the allocated user devices is a product of multiplying an integer value, which is a maximal integer no more than a quotient acquired by dividing the total number of user devices of a current user group by the square of the number of the CPUs, by the number of the CPUs; if there are still remaining user devices, allocating a number of user devices to each of the CPUs, wherein the number of the allocated user devices is an integer value acquired by dividing the remaining user devices by the number of the CPUs; if there are still remaining user devices, allocating the remaining user devices in each user group as a whole so that the difference of the number of user devices shared by each of the CPUs is 1 at most.