This can be done using MIBS. The two MIBS listed below give you the total number of octets sent out or received every 5 minutes. You can manually calculate the difference to figure out the utilization.
.1.3.6.1.2.1.2.2.1.10
ifInOctets OBJECT-TYPE
-- FROM RFC1213-MIB
SYNTAX Counter
MAX-ACCESS read-only
STATUS Mandatory
DESCRIPTION "The total number of octets received on the
interface, including framing characters."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) interfaces(2) ifTable(2) ifEntry(1) 10 }
.1.3.6.1.2.1.2.2.1.16
ifOutOctets OBJECT-TYPE
-- FROM RFC1213-MIB
SYNTAX Counter
MAX-ACCESS read-only
STATUS Mandatory
DESCRIPTION "The total number of octets transmitted out of the
interface, including framing characters."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) interfaces(2) ifTable(2) ifEntry(1) 16 }
On tunnel interfaces, a different set of MIBS called "ALTIGA-MIB" need to be used. I feel you should also have a look at the document "How To Calculate Bandwidth Utilization Using SNMP".
http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a008009496e.shtml