Um - don't make it more difficult than it needs to be; IOW, if your ISP does not use PPPOE don't mess with it. If you have a "simple" connection it requires a custom kernel with (at least) IP_FIREWALL and IP_DIVERT in addition to enabling/configuring NAT in rc.conf.
As ksemat said, it's well documented at the FreeBSD site.
craig